UI fixes#23127
Merged
hawkeye217 merged 21 commits intodevfrom May 7, 2026
Merged
Conversation
Cameras added mid-session have no WS state until the dispatcher publishes camera_activity (which only happens on a fresh onConnect). Fall back to the config's enabled value so the switch reflects reality immediately after the wizard closes.
console would throw errors after adding via camera wizard
- faster than tflite on cpu - add to default generated config
the frontend will then render this as a select dropdown because of the changes in the json schema
Filter sub-collapsibles in the camera Objects section are driven by `filters` dict keys, but profile merges and live track-switch edits don't add matching entries, so newly tracked labels (like from a profile override) had no collapsible. Synthesize default filter entries from `track` in the form data so every tracked label renders a collapsible; baseline data also gets the synthesized entries, so save payloads are unchanged.
…s fresh credentials
Toggling record.enabled from the config UI updated the in-memory config but left ffmpeg running with its original command, so the record output args were never wired in and nothing landed in the cache for the maintainer to move. The record config update now rebuilds ffmpeg_cmds when enabled_in_config transitions, and the camera watchdog restarts ffmpeg on a false to true transition so the record output gets wired in. MQTT toggles, which only flip record.enabled at runtime, are unaffected and continue to work via the maintainer's drop/keep gate.
Override badges and the blue dot now compare against schema defaults for sections like motion that the API serializes as null when omitted from the global YAML, instead of treating any populated camera config as an override
Section configs can now declare dynamic hidden-field entries as functions of the loaded config; objects.ts uses this to hide auto-populated attribute filters (DHL, face, license_plate, etc.) from the form, save flow, and override popover when those labels aren't user-settable
live updating was getting very messy. users will just need to save once they enable a new object in order to see filters for that object
Deploying frigate with
|
| Latest commit: |
6ca60dd
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://e0ce7084.frigate.pages.dev |
| Branch Preview URL: | https://ui-fixes.frigate.pages.dev |
prevent validation errors from appearing on initial creation of genai provider by setting the first option in the select dropdown as default
NickM-27
approved these changes
May 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Please read the contributing guidelines before submitting a PR.
Proposed change
This PR makes a number of changes to the frontend:
useOptimisticStatedropping debounced setState under StrictModeuseOptimisticStatecleared the pendingsetTimeoutwhen strict mode re-ran effects, so the debouncedsetStatenever fired and Settings panes wouldn't switch on URL navigation. The fix was to move the debounce into an effect keyed on the optimistic value so its cleanup only cancels the timer it scheduled, and keep the external-sync guard so strict mode's stale-closure re-run can't clobber in-flight optimistic updates.hiddenFields, fixes an issue where objects and attribute_map interaction would cause the override badge to be incorrectly shownBackend:
*:*, so the settings UI ships them back unchanged when sibling fields likehwaccel_argsare edited, clobbering the real credentials in yaml. This uses similar logic asclean_camera_user_passand swaps any incoming*:*@(oruser=*&password=*) ffmpeg input path with the existing in-memory value before writing the yaml config.providera required fieldDocs:
Type of change
Additional information
For new features
AI disclosure
AI tool(s) used (e.g., Claude, Copilot, ChatGPT, Cursor):
How AI was used (e.g., code generation, code review, debugging, documentation):
Extent of AI involvement (e.g., generated entire implementation, assisted with specific functions, suggested fixes):
Human oversight: Describe what manual review, testing, and validation you performed on the AI-generated portions.
Checklist
enlocale.ruff format frigate)