Commit Graph

5405 Commits

Author SHA1 Message Date
ibs0d
e398ec5f03 Fix rotated MSE sizing in draggable live grid 2026-03-08 22:18:25 +11:00
ibs0d
58ae23a6bf
Merge pull request #23 from ibs0d/codex/add-visual-camera-rotation-to-draggable-grid
Add grid-only MSE camera rotation for cameras with ui.rotate
2026-03-08 21:26:13 +11:00
ibs0d
3a0d71c47b
Update DraggableGridLayout.tsx 2026-03-08 21:25:46 +11:00
ibs0d
5ee023f5a4 Add grid-only MSE rotation for cameras with ui.rotate 2026-03-08 21:24:02 +11:00
ibs0d
52b14cabf3
Update DraggableGridLayout.tsx 2026-03-08 20:24:07 +11:00
ibs0d
ba140dad55
Merge pull request #22 from ibs0d/codex/update-mse-video-fill-in-draggable-grid
Make draggable live grid MSE tiles fill card area
2026-03-08 19:28:24 +11:00
ibs0d
937460abd0 Make draggable live grid MSE video use cover fit 2026-03-08 19:27:11 +11:00
ibs0d
defa1dfabd
Merge pull request #21 from ibs0d/codex/update-camera-card-sizing-in-draggable-grid
Simplify regular camera sizing in draggable live grid
2026-03-08 18:06:19 +11:00
ibs0d
3bc6f59e5e Simplify live grid camera tile sizing 2026-03-08 18:06:07 +11:00
ibs0d
150ae80831
Merge pull request #20 from ibs0d/codex/add-camera-rotate-config-option
Add schema/type plumbing for camera ui.rotate config
2026-03-08 17:50:13 +11:00
ibs0d
931f1bfcc8 Add camera ui.rotate config/type plumbing 2026-03-08 17:49:11 +11:00
ibs0d
e941561213
Merge pull request #19 from ibs0d/revert-14-codex/add-camera-rotation-config-option
Revert "Add per-camera dashboard rotation and cover-fit support for live views"
2026-03-08 16:51:46 +11:00
ibs0d
20c060ed8f
Revert "Add per-camera dashboard rotation and cover-fit support for live views" 2026-03-08 16:51:34 +11:00
ibs0d
adfd015157
Merge pull request #18 from ibs0d/revert-15-codex/add-camera-rotation-config-option-yo8e42
Revert "Support dashboard rotate + cover-fit for camera tiles and players"
2026-03-08 16:50:32 +11:00
ibs0d
63e847e3b3
Revert "Support dashboard rotate + cover-fit for camera tiles and players" 2026-03-08 16:50:19 +11:00
ibs0d
bb7cd76c80
Merge pull request #17 from ibs0d/revert-16-codex/fix-grid/dashboard-video-rendering-issues
Revert "Fix dashboard live rendering and rotated cover fitting"
2026-03-08 16:48:36 +11:00
ibs0d
d6fced5e56
Revert "Fix dashboard live rendering and rotated cover fitting" 2026-03-08 16:48:17 +11:00
ibs0d
123d8b484a
Merge pull request #16 from ibs0d/codex/fix-grid/dashboard-video-rendering-issues
Fix dashboard live rendering and rotated cover fitting
2026-03-08 16:27:08 +11:00
ibs0d
5aa80022ae Fix dashboard live rendering and rotated cover fitting 2026-03-08 16:26:56 +11:00
ibs0d
4721dd4ed0
Merge pull request #15 from ibs0d/codex/add-camera-rotation-config-option-yo8e42
Support dashboard rotate + cover-fit for camera tiles and players
2026-03-08 15:57:19 +11:00
ibs0d
97c108f34e
Merge branch 'dev' into codex/add-camera-rotation-config-option-yo8e42 2026-03-08 15:57:09 +11:00
ibs0d
e774760714 Fix LivePlayer regression by gating dashboard transform path 2026-03-08 15:48:06 +11:00
ibs0d
27245af7d3
Merge pull request #14 from ibs0d/codex/add-camera-rotation-config-option
Add per-camera dashboard rotation and cover-fit support for live views
2026-03-08 15:12:59 +11:00
ibs0d
85ade0a615 Harden dashboard transform behavior and add LivePlayer gating test 2026-03-08 15:12:41 +11:00
ibs0d
6f97f3e873
Merge pull request #13 from ibs0d/codex/apply-code-changes-from-diff
Live view & MSE playback tuning; add global stream-stats toggle
2026-03-08 14:03:16 +11:00
ibs0d
9f05a677e2 Apply requested live view/player tuning changes 2026-03-08 13:57:38 +11:00
ibs0d
adb91dfa9e
Merge pull request #12 from ibs0d/codex/update-recordings-overview-and-reorder-storage-sections
Storage: aggregate recording roots for Overview and reorder sections
2026-03-07 22:59:14 +11:00
ibs0d
22910292aa Update storage overview totals and section order 2026-03-07 22:58:20 +11:00
ibs0d
0b3ec3f67a
Merge pull request #11 from ibs0d/codex/fix-_get_recordings_root_from_path-logic
Fix recordings root extraction for date/hour recording paths
2026-03-07 22:28:46 +11:00
ibs0d
1ff8227772 Fix recordings root detection priority for date/hour paths 2026-03-07 22:27:12 +11:00
ibs0d
190a067853
Merge pull request #10 from ibs0d/codex/fix-backend-recording_roots-construction
Fix /recordings/storage to emit only normalized recording roots
2026-03-07 21:59:06 +11:00
ibs0d
51b66857a0 Fix recordings storage roots to ignore pseudo stat paths 2026-03-07 21:58:44 +11:00
ibs0d
ced95052ee
Merge pull request #9 from ibs0d/codex/fix-recording-roots-normalization-logic
Normalize recordings storage roots to avoid date/hour pseudo-roots
2026-03-07 21:28:27 +11:00
ibs0d
7368ee715b Normalize recording roots to configured storage paths 2026-03-07 21:27:07 +11:00
ibs0d
14da24e0fa
Merge pull request #8 from ibs0d/codex/fix-recording-roots-metrics-ui-and-logic
Recordings Roots: use filesystem usage for graph, show filesystem type badge, and fix locales/tests
2026-03-07 20:52:27 +11:00
ibs0d
c5ba7aae08 Fix recording roots UI usage and filesystem labels 2026-03-07 20:45:17 +11:00
ibs0d
22c957fca4
Merge pull request #4 from ibs0d/codex/extend-system-metrics-for-multi-root-support-r89rnx
Expose recording roots and per-root camera usage in `/recordings/storage` and UI
2026-03-07 12:18:44 +11:00
ibs0d
9f5d93e723 Fix recordings root attribution to use DB paths 2026-03-07 12:17:17 +11:00
ibs0d
ba045ab3cf
Merge pull request #2 from ibs0d/codex/add-missing-features-to-frigate-repository-r828wp
Fix multi-root cleanup/sync and honor configured recording roots
2026-03-07 10:40:02 +11:00
ibs0d
aa860fda81 Fix multi-root cleanup/sync behavior and add tests 2026-03-07 10:30:46 +11:00
Josh Hawkins
34cc1208a6
Skip motion threshold configuration (#22255)
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
* backend

* frontend

* i18n

* docs

* add test

* clean up

* clean up motion detection docs

* formatting

* make optional
2026-03-05 18:20:03 -06:00
Josh Hawkins
2babfd2ec9
Improve motion review and add motion search (#22253)
* implement motion search and motion previews

* tweaks

* fix merge issue

* fix copilot instructions
2026-03-05 17:53:48 -06:00
Josh Hawkins
229436c94a
Add ability to clear region grids from the frontend (#22277)
* backend

* frontend

* i18n

* tweaks
2026-03-05 16:19:30 -07:00
Josh Hawkins
02678f4a09
show log when anonymous users log in (#22254)
based on a cache key built from remote_addr and user agent, expires after 7 days by default
2026-03-05 16:17:41 -07:00
Josh Hawkins
65db9b0aec
Fixes (#22280)
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
* fix ollama chat tool calling

handle dict arguments, streaming fallback, and message format

* pin setuptools<81 to ensure pkg_resources remains available

When ensure_torch_dependencies() installs torch/torchvision via pip, it can upgrade setuptools to >=81.0.0, which removed the pkg_resources module. rknn-toolkit2 depends on pkg_resources internally, so subsequent RKNN conversion fails with No module named 'pkg_resources'.
2026-03-05 14:11:32 -06:00
Josh Hawkins
2782931c72
Update frontend to React 19 (#22275)
* remove unused RecoilRoot and fix implicit ref callback

Remove the vestigial recoil dependency (zero consumers) and convert
the implicit-return ref callback in SearchView to block form to
prevent React 19 interpreting it as a cleanup function.

* replace react-transition-group with framer-motion in Chip

Replace CSSTransition with framer-motion AnimatePresence + motion.div
for React 19 compatibility (react-transition-group uses findDOMNode).
framer-motion is already a project dependency.

* migrate react-grid-layout v1 to v2

- Replace WidthProvider(Responsive) HOC with useContainerWidth hook
- Update types: Layout (single item) → LayoutItem, Layout[] → Layout
- Replace isDraggable/isResizable/resizeHandles with dragConfig/resizeConfig
- Update EventCallback signature for v2 API
- Remove @types/react-grid-layout (v2 includes its own types)

* upgrade vaul, next-themes, framer-motion, react-zoom-pan-pinch

- vaul: ^0.9.1 → ^1.1.2
- next-themes: ^0.3.0 → ^0.4.6
- framer-motion: ^11.5.4 → ^12.35.0 (React 19 native support)
- react-zoom-pan-pinch: 3.4.4 → latest

* upgrade to React 19, react-konva v19, eslint-plugin-react-hooks v5

Core React 19 upgrade with all necessary type fixes:
- Update RefObject types to accept T | null (React 19 refs always nullable)
- Add JSX namespace imports (no longer global in React 19)
- Add initial values to useRef calls (required in React 19)
- Fix ReactElement.props unknown type in config-form components
- Fix IconWrapper interface to use HTMLAttributes instead of index signature
- Add monaco-editor as dev dependency for type declarations
- Upgrade react-konva to v19, eslint-plugin-react-hooks to v5

* upgrade typescript to 5.9.3

* modernize Context.Provider to React 19 shorthand

Replace <Context.Provider value={...}> with <Context value={...}>
across all project-owned context providers. External library contexts
(react-icons IconContext, radix TooltipPrimitive) left unchanged.

* add runtime patches for React 19 compatibility

- Patch @radix-ui/react-compose-refs@1.1.2: stabilize useComposedRefs
  to prevent infinite render loops from unstable ref callbacks
  https://github.com/radix-ui/primitives/issues/3799
- Patch @radix-ui/react-slot@1.2.4: use useComposedRefs hook in
  SlotClone instead of inline composeRefs to prevent re-render cycles
  https://github.com/radix-ui/primitives/pull/3804
- Patch react-use-websocket@4.8.1: remove flushSync wrappers that
  cause "Maximum update depth exceeded" with React 19 auto-batching
  https://github.com/facebook/react/issues/27613
- Add npm overrides to ensure single hoisted copies of compose-refs
  and react-slot across all Radix packages
- Add postinstall script for patch-package
- Remove leftover react-transition-group dependency

* formatting

* use availableWidth instead of useContainerWidth for grid layout

The useContainerWidth hook from react-grid-layout v2 returns raw
container width without accounting for scrollbar width, causing the
grid to not fill the full available space. Use the existing
availableWidth value from useResizeObserver which already compensates
for scrollbar width, matching the working implementation.

* remove unused carousel component and fix React 19 peer deps

Remove embla-carousel-react and its unused Carousel UI component.
Upgrade sonner v1 → v2 for native React 19 support. Remove
@types/react-icons stub (react-icons bundles its own types).
These changes eliminate all peer dependency conflicts, so
npm install works without --legacy-peer-deps.

* fix React 19 infinite re-render loop on live dashboard

The "Maximum update depth exceeded" error was caused by two issues:

1. useDeferredStreamMetadata returned a new `{}` default on every render
   when SWR data was undefined, creating an unstable reference that
   triggered the useEffect in useCameraLiveMode on every render cycle.
   Fixed by using a stable module-level EMPTY_METADATA constant.

2. useResizeObserver's rest parameter `...refs` created a new array on
   every render, causing its useEffect to re-run and re-observe elements
   continuously. Fixed by stabilizing refs with useRef and only
   reconnecting the observer when actual DOM elements change.
2026-03-05 07:42:38 -07:00
Nicolas Mowen
b2118382cb
Various Fixes (#22263)
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
2026-03-04 15:53:20 -07:00
Josh Hawkins
95956a690b
Debug replay (#22212)
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
* debug replay implementation

* fix masks after dev rebase

* fix squash merge issues

* fix

* fix

* fix

* no need to write debug replay camera to config

* camera and filter button and dropdown

* add filters

* add ability to edit motion and object config for debug replay

* add debug draw overlay to debug replay

* add guard to prevent crash when camera is no longer in camera_states

* fix overflow due to radix absolutely positioned elements

* increase number of messages

* ensure deep_merge replaces existing list values when override is true

* add back button

* add debug replay to explore and review menus

* clean up

* clean up

* update instructions to prevent exposing exception info

* fix typing

* refactor output logic

* refactor with helper function

* move init to function for consistency
2026-03-04 10:07:34 -06:00
Josh Hawkins
5e7d426768
Add fullscreen controls to tracking details videos (#22252) 2026-03-04 07:59:12 -07:00
Michal Srb
c3c27d036f
Hide hidden camera alerts (#22226)
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
Cameras that have `ui.dashboard = false` config are hidden from
the All Cameras "default" group, but their alerts still appear in the
top row. This hides the alerts as well.

One can still view the hidden cameras and their alerts by making a
custom camera group.
2026-03-03 06:29:57 -07:00