* display area as proper percentage in debug view
* match replay objects list with debug view
* motion search fixes
- tweak progress bar to exclude heatmap and inactive segments
- show metrics immediately on search start
- fix preview frame loading race
- fix polygon missing after dialog remount
- don't try to drag the image when dragging vertex of polygon
* add activity indicator to storage metrics
* make sub label query for events API endpoints case insensitive
* fix mobile export crash by removing stale iOS non-modal drawer workaround
* Remove titlecase to avoid Gemma4 handling plain labels as proper nouns
* Improve titling:
* Make directions more clear
* Properly capitalize delivery services
* update dispatcher config reference on save
* subscribe to review topic so ReviewDescriptionProcessor knows genai is enabled
* auto-send ON genai review WS message when enabled_in_config transitions to true
* remove unused object level
* update docs to clarify pre/post capture settings
* add ui docs links
* improve known_plates field in settings UI
* only show save all when multiple sections are changed
or if the section being changed is not currently being viewed
* fix docs
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* refresh model dropdown after changing provider or base url
* decouple list_models from provider init
switching providers in the UI left an invalid model in the config, then _init_provider would fail and list_models would return an empty list, making it impossible to select a valid model
* add DictAsYamlField for genai provider and runtime options
* regenerate config translations
* chat tweaks
- add page title
- scroll if near bottom
- add tool call group that dynamically updates as tool calls are made
- add bouncing loading indicator and other UI polish
* tool call grouping
* Switch to a feature-based roles so it is easier to choose models for different tasks
* Fallback and try llama-swap format
* List models supported by provider
* Cleanup
* Add frontend
* Improve model loading
* Make it possible to update genai without restarting
* Cleanup
* Cleanup
* Mypy
* add ability to order subfields with dot notation
* put review genai enabled at the top of the genai subsection
* fix genai summary title truncation issue in detail stream
* add guards to reject missing sub commands
* mask/zone bugfixes
- fix websocket crash when creating a new mask or zone before a name is assigned
- fix deleted masks and zones not disappearing from the list until navigating away
- fix deleting profile override not reverting to the base mask in the list
- fix inertia defaulting to nan
* disable save button on invalid form state
* fix validation for speed estimation
* ensure polygon is closed before allowing save
* require all masks and zones to be on the base config
* clarify dialog message and tooltip when removing an override
* clarify docs
* set edgetpu for multi-instance
* improve error messages when mixing/matching detectors
* allow custom add button text via uiSchema
* clarify language in docs for configuring detectors via the UI
* add config messages to sections and fields
* add alert variants
* add messages to types
* add detect fps, review, and audio messages
* add a basic set of messages
* remove emptySelectionHintKey from switches widget
use the new messages framework and revert the changes made in #22664
* implement hook to return resolved "24hour" | "12hour" string
delegate to existing use24HourTime(), which correctly detects the browser's locale preference via Intl.DateTimeFormat
* update frontend to use use24HourTime(config) or useTimeFormat(config) instead of directly comparing config.ui.time_format
* embed cpu/mem stats into detectors, cameras, and processes
so history consumers don't need the full cpu_usages dict
* support dot-notation for nested keys
to avoid returning large objects when only specific subfields are needed
* fix setLastUpdated being called inside useMemo
this triggered a setState-during-render warning, so moved to a useEffect
* frontend types
* frontend
hide instead of unmount all graphs - re-rendering is much more expensive and disruptive than the amount of dom memory required
keep track of visited tabs to keep them mounted rather than re-mounting or mounting all tabs
add isActive prop to all charts to re-trigger animation when switching metrics tabs
fix chart data padding bug where the loop used number of series rather than number of data points
fix bug where only a shallow copy of the array was used for mutation
fix missing key prop causing console logs
* add isactive after rebase
* formatting
* skip None values in filtered output for dot notation
* add review labels widget
* register widget and add to review section
* i18n
* add border to switches widget
* padding tweaks
* don't show audio labels if audio is not enabled
* add docs links
* ability to add custom labels to review
* add hint for empty selection in review labels and SwitchesWidget
* language consistency
* tweak language
* show validation errors in json response
* fix export hwaccel args field in UI
* increase annotation offset consts
* fix save button race conditions, add reset spinner, and fix enrichments profile leak
- Disable both Save and SaveAll buttons while either operation is in progress so users cannot trigger concurrent saves
- Show activity indicator on Reset to Default/Global button during the API call
- Enrichments panes (semantic search, genai, face recognition) now always show base config fields regardless of profile selection in the header dropdown
* fix genai additional_concerns validation error with textarea array widget
The additional_concerns field is list[str] in the backend but was using the textarea widget which produces a string value, causing validation errors.
Created a TextareaArrayWidget that converts between array (one item per line) and textarea display, and switched additional_concerns to use it
* populate and sort global audio filters for all audio labels
* add column labels in profiles view
* enforce a minimum value of 2 for min_initialized
* reuse widget and refactor for multiline
* fix
* change record copy preset to transcode audio to aac
* Mark items as reviewed as a group with keyboard
* Improve handling of half model regions
* update viewport meta tag to prevent user scaling
fixes https://github.com/blakeblackshear/frigate/issues/22017
* add small animation to collapsible shadcn elements
* add proxy auth env var tests
* Improve search effect
* Fix mobile back navigation losing overlay state on classification page
* undo historyBack changes
* fix classification history navigation
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* add randomness to object classification
also ensure train_dir is fresh if user has regenerated examples
* frontend refresh button
* fix radix dropdown issue
* i18n
* mobile button spacing
* prevent console warning about div being descendant of p
* ensure consistent spacing
* add missing i18n keys
* i18n fixes
- add missing translations
- fix dot notation keys
* use plain string
* add missing key
* add i18next-cli commands for extraction and status
also add false positives removal for several keys
* add i18n key check step to PR workflow
* formatting
* fix genai settings ui
- add roles widget to select roles for genai providers
- add dropdown in semantic search to allow selection of embeddings genai provider
* tweak grouping to prioritize fieldOrder before groups
previously, groups were always rendered first. now fieldOrder is respected, and any fields in a group will cause the group and all the fields in that group to be rendered in order. this allows moving the enabled switches to the top of the section
* mobile tweaks
stack buttons, add more space on profiles pane, and move the overridden badge beneath the description
* language consistency
* prevent camera config sections from being regenerated for profiles
* conditionally import axengine module
to match other detectors
* i18n
* update vscode launch.json for new integrated browser
* formatting