Commit Graph

5454 Commits

Author SHA1 Message Date
Claude
6cb31d1f96
Fix review page preview video stretch by adding object-contain
VideoPreview's <video> had aspect-video + size-full, but size-full overrides
the aspect-ratio constraint, leaving object-fit at the default fill.
Adding object-contain preserves the video's natural aspect ratio in event cards.

https://claude.ai/code/session_01EwdaKGsrRLZ74smmCQ1MgW
2026-03-13 11:57:56 +00:00
Claude
abcb31e30c
Fix History preview video stretch by adding object-contain
PreviewVideoPlayer's <video> had no explicit object-fit, so browsers
applied the CSS default (fill), stretching the video when the container
aspect ratio (detect resolution) didn't match the actual preview video.
Adding object-contain preserves aspect ratio in the recording/history view.

https://claude.ai/code/session_01EwdaKGsrRLZ74smmCQ1MgW
2026-03-13 11:39:52 +00:00
Claude
93a5f2691c
Use fill object-fit in draggable grid, contain elsewhere
Grid tiles explicitly set --frigate-mse-object-fit:fill so video stretches
to fill the card without preserving aspect ratio. The MsePlayer default
is contain, so History preview and all other contexts keep correct proportions.

https://claude.ai/code/session_01EwdaKGsrRLZ74smmCQ1MgW
2026-03-13 11:24:08 +00:00
Claude
b400bd4b96
Fix History preview video stretch by restoring contain as default object-fit
The MSE player default was set to 'fill' which stretches video in all contexts.
Only the draggable grid should use 'cover' (via --frigate-mse-object-fit:cover).
Changing the fallback to 'contain' restores aspect-ratio-preserving behaviour
everywhere else (History preview, etc.) while keeping the grid fill intact.

https://claude.ai/code/session_01EwdaKGsrRLZ74smmCQ1MgW
2026-03-13 11:20:52 +00:00
ibs0d
682d816f19
Merge pull request #45 from ibs0d/claude/analyze-video-storage-OeT89
Claude/analyze video storage oe t89
2026-03-13 20:41:56 +11:00
Claude
5ba7802316
Serve preview files from non-default recording roots via nginx
When cameras are configured with recording paths outside /media/frigate
(e.g. /video1, /video2), preview mp4 files generated there had no
corresponding nginx location block — requests returned 404.

At nginx startup, get_nginx_settings.py now extracts unique recording
roots outside /media/frigate from the Frigate config. The nginx run
script uses a new extra_recordings.gotmpl template to generate
location blocks (e.g. /video1/preview/) with alias directives for
each such root, included via extra_recordings.conf.

The API already returns correct src URLs for these paths (the existing
replace(BASE_DIR, "") leaves non-media paths unchanged), so no API
changes are needed.

https://claude.ai/code/session_016bxjbVpx8DqpjysnGYmXdx
2026-03-13 09:01:56 +00:00
Claude
6248dbf12f
Delete preview files when emergency storage cleanup removes recordings
When reduce_storage_consumption deletes old recording segments to free
disk space, it now also deletes preview files that overlap the same
time range. Without this, preview mp4 files on the same disk continued
to consume space, causing the storage maintainer to delete progressively
newer recordings while old previews accumulated — resulting in archives
where older periods had previews but no video.

This is particularly impactful for multi-path setups where each camera's
preview directory shares a disk with its recordings.

https://claude.ai/code/session_016bxjbVpx8DqpjysnGYmXdx
2026-03-13 08:51:42 +00:00
Claude
8433e16558
Fix preview frame tracking and partial file cleanup
- write_frame_to_cache() now returns bool; callers only append the
  timestamp to output_frames when cv2.imwrite() actually succeeded,
  preventing dangling timestamps that cause ffmpeg "Impossible to open"
  errors when the cache disk is full
- FFMpegConverter removes the partial output mp4 on ffmpeg failure so
  stale partial files don't accumulate on the recording disk

https://claude.ai/code/session_016bxjbVpx8DqpjysnGYmXdx
2026-03-13 05:24:38 +00:00
ibs0d
496b600f82
Merge pull request #44 from ibs0d/claude/analyze-video-storage-OeT89
Fix multi-path storage: clean all paths per cycle, prevent death loop
2026-03-13 15:01:08 +11:00
Claude
c8ac840b85
Fix multi-path storage: clean all paths per cycle, prevent death loop
- storage.py: refactor check_storage_needs_cleanup(root) to check a
  specific path instead of returning the first needy one; run() now
  iterates all configured recording roots per 5-minute cycle so a
  stuck path can no longer starve the others
- storage.py: skip stale camera entries in _get_path_bandwidths to
  avoid KeyError when a camera is removed from config at runtime
- maintainer.py: delete partial output file when ffmpeg fails
  (ENOSPC), preventing orphaned files that consume disk space without
  a DB entry and block future conversion attempts

https://claude.ai/code/session_016bxjbVpx8DqpjysnGYmXdx
2026-03-13 03:33:36 +00:00
ibs0d
eb2a684de1
Merge pull request #43 from ibs0d/codex/audit-preview-retention-logic
Fix preview media sync for per-camera recording roots
2026-03-09 21:03:52 +11:00
ibs0d
8a57561b15 Fix preview media sync for per-root preview directories 2026-03-09 21:03:41 +11:00
ibs0d
566166779d
Merge pull request #42 from ibs0d/codex/audit-preview-read/serve-paths
Fix preview media sync for new per-camera preview storage
2026-03-09 20:56:52 +11:00
ibs0d
809e71737a Fix preview sync for per-camera recordings paths 2026-03-09 20:56:41 +11:00
ibs0d
38d6052aa4
Merge pull request #41 from ibs0d/codex/modify-preview-storage-logic-for-multi-path
Write preview mp4s to camera recordings path and add preview dir helper
2026-03-09 20:46:33 +11:00
ibs0d
d2ea15f2fd Use resolved recordings root for preview output paths 2026-03-09 20:38:17 +11:00
ibs0d
0de14b580a
Merge pull request #40 from ibs0d/codex/fix-video-position-on-min-zoom-scale
Normalize min-scale zoom transform for live grid cards
2026-03-09 15:53:38 +11:00
ibs0d
c457428180 Fix grid zoom min-scale transform normalization 2026-03-09 15:53:12 +11:00
ibs0d
53179fd078
Merge pull request #39 from ibs0d/revert-38-codex/fix-live-grid-zoom-behavior
Revert "Expose mediaContentStyle on LivePlayer and pass through to MSEPlayer and still image"
2026-03-09 15:34:54 +11:00
ibs0d
1e238d2fe2
Revert "Expose mediaContentStyle on LivePlayer and pass through to MSEPlayer and still image" 2026-03-09 15:34:41 +11:00
ibs0d
05775ed20e
Merge pull request #38 from ibs0d/codex/fix-live-grid-zoom-behavior
Expose mediaContentStyle on LivePlayer and pass through to MSEPlayer and still image
2026-03-09 15:07:56 +11:00
ibs0d
078b6f62a7 Revert non-MSE style props from live players 2026-03-09 15:07:43 +11:00
ibs0d
8ba487c281
Merge pull request #37 from ibs0d/codex/restore-grid-card-zoom-functionality
Restore live grid card zoom at grid layout layer
2026-03-09 14:16:00 +11:00
ibs0d
626c05179e Restore live grid card zoom at grid layout layer 2026-03-09 14:15:46 +11:00
ibs0d
1dcea2638a
Merge pull request #36 from ibs0d/codex/partially-revert-liveplayer.tsx-changes
Revert LivePlayer transform wrapper regression in live view
2026-03-09 13:57:29 +11:00
ibs0d
171688445d Revert LivePlayer transform wrapper regression 2026-03-09 13:57:16 +11:00
ibs0d
6e8fd4fa32
Merge pull request #35 from ibs0d/codex/fix-passive-listener-bug-in-live-grid-zoom
Fix passive wheel listener for live grid card zoom
2026-03-09 12:47:52 +11:00
ibs0d
534b6ced19 Fix passive wheel listener for live grid card zoom 2026-03-09 12:47:39 +11:00
ibs0d
e36d12d9f9
Merge pull request #34 from ibs0d/codex/fix-zoom-behavior-in-draggablegridlayout
Apply grid zoom to video layer only and keep overlays anchored
2026-03-09 12:14:16 +11:00
ibs0d
6940713054 Fix grid live zoom so overlays stay anchored 2026-03-09 12:14:05 +11:00
ibs0d
6af6468899
Merge pull request #33 from ibs0d/codex/add-zoom-persistence-for-camera-grid-cards
Persist per-camera zoom for live grid cards
2026-03-09 11:37:41 +11:00
ibs0d
7969930d21 Persist per-camera live grid zoom state 2026-03-09 11:37:28 +11:00
ibs0d
91976498c5
Merge pull request #32 from ibs0d/codex/add-independent-zoom-for-camera-cards
Add independent Shift+Wheel zoom for draggable live grid cards
2026-03-09 10:49:11 +11:00
ibs0d
bf622d5ff7 Add independent shift+wheel zoom for draggable live cards 2026-03-09 10:48:58 +11:00
ibs0d
8d6be93d25
Merge pull request #31 from ibs0d/codex/add-shared-zoom-helper-module
Add camera zoom utility module for grid cards
2026-03-09 10:38:52 +11:00
ibs0d
046568ea6b Harden camera zoom helper restore and key namespace 2026-03-09 10:38:09 +11:00
ibs0d
1848798da8
Merge pull request #30 from ibs0d/revert-25-codex/refactor-zoom-implementation-into-shared-module
Revert "Add live zoom config and helpers for player/debug modes"
2026-03-09 10:16:58 +11:00
ibs0d
1820f222ef
Revert "Add live zoom config and helpers for player/debug modes" 2026-03-09 10:16:46 +11:00
ibs0d
268fd733b6
Merge pull request #29 from ibs0d/revert-26-codex/refactor-livecameraview-to-use-livezoom-helpers
Revert "refactor(live): use shared live-zoom helpers in LiveCameraView"
2026-03-09 10:16:29 +11:00
ibs0d
6ddfbf3d46
Revert "refactor(live): use shared live-zoom helpers in LiveCameraView" 2026-03-09 10:16:17 +11:00
ibs0d
5e722c2174
Merge pull request #28 from ibs0d/revert-27-codex/enhance-zoom-behavior-in-livecameraview
Revert "Add cursor-relative shift-wheel zoom and refactor live zoom utilities"
2026-03-09 10:15:56 +11:00
ibs0d
71327cd94a
Revert "Add cursor-relative shift-wheel zoom and refactor live zoom utilities" 2026-03-09 10:15:43 +11:00
ibs0d
a70d3121cb
Merge pull request #27 from ibs0d/codex/enhance-zoom-behavior-in-livecameraview
Add cursor-relative shift-wheel zoom and refactor live zoom utilities
2026-03-08 23:48:50 +11:00
ibs0d
de9878f5fd Clamp live zoom scale and align wheel coordinates to transform viewport 2026-03-08 23:48:37 +11:00
ibs0d
f914a0c81c
Merge pull request #26 from ibs0d/codex/refactor-livecameraview-to-use-livezoom-helpers
refactor(live): use shared live-zoom helpers in LiveCameraView
2026-03-08 23:31:16 +11:00
ibs0d
c9283f5990 refactor: use shared live zoom helpers in camera view 2026-03-08 23:31:00 +11:00
ibs0d
24dd259fff
Merge pull request #25 from ibs0d/codex/refactor-zoom-implementation-into-shared-module
Add live zoom config and helpers for player/debug modes
2026-03-08 23:21:55 +11:00
ibs0d
36e9c63e91 refactor(web): trim live zoom module to shared primitives only 2026-03-08 23:21:42 +11:00
ibs0d
2d9508bbd8
Merge pull request #24 from ibs0d/codex/fix-mse-video-sizing-in-draggable-grid
Fix rotated MSE sizing in draggable live grid
2026-03-08 22:18:49 +11:00
ibs0d
e398ec5f03 Fix rotated MSE sizing in draggable live grid 2026-03-08 22:18:25 +11:00