* add last time to active notices
* Stop retrying the review lookup in the explore detail menu when it 404s
* don't let a slow websocket client block publishers
A websocket client that stopped reading its socket (for example a suspended workstation with a Frigate tab open) blocked ws4py's sendall on whatever thread was publishing, including the single inter-process responder thread, so the recording maintainer and stats hung until nginx dropped the client after 5 minutes. Each client now gets its own bounded send queue and writer thread, and a client that overflows the queue is shut down. ws4py writes close and pong frames directly on its shared manager thread, bypassing the queue, so a 10s socket send timeout keeps a stalled client from pinning that thread. The jsmpeg and birdseye outputs share the class, so their unreachable send error handling is removed.
* don't let a lost object enter a zone
When the detector lost an object, the tracker kept it at its last box and every held frame still counted toward the zone's inertia. A car detected in a zone once or twice as it drove out of view could reach an inertia of 8 and be marked as entering, which sent it to GenAI and any other required zones check even though Review never showed the zone. Inertia and loitering still count on frames without a detection, but an object can only newly enter a zone on a frame where it was actually detected.
* add test
* limit retry stop to 404 only
* add docstrings
Brings the go2rtc security fixes from #24658 to dev. Dev-specific changes
in the merge:
- frigate/config/env.py stays deleted; the environment_vars protection for
GO2RTC_ALLOW_ARBITRARY_EXEC moves to apply_config_env_vars in
frigate/util/env.py, so the value never reaches os.environ
- services.py imports substitute_frigate_vars from frigate.util.env and
maps UnknownVariableError to the unknown variable message
- go2rtc stream tests patch dev's import-time exec override snapshot and
its FRIGATE_* variable sources
- test_http_media.py keeps dev's _insert_recording helper; the one added
on master replaced it and broke the dev tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix classification wizard finding no sample images on large databases
The wizard grouped tracked objects by camera and 6 hour block, oldest first, then kept the first 100. With more than 100 groups that was always the oldest objects, which often have no snapshot or thumbnail left on disk, so no examples were generated. Shuffle the selection before truncating, and keep extracting from the remaining tracked objects until 100 usable images are found.
* add notice and system ui message when a camera isn't using go2rtc
* add docs note about privacy masks
* match index-less device strings to hardware units in the detection models picker
A config with `edgetpu:usb` was reported as hardware that wasn't found, because the picker compared device strings exactly and the probe reports the unit as `edgetpu:usb:0`. A device without an index now resolves to the first unit of that kind, so the hardware dropdown, the unit checkboxes, and the model summary all recognize it.
* don't treat unknown audio as an audio-bearing stream
A recording row with NULL has_audio (ffprobe failed and the cv2 fallback can't report audio) marked the whole stream as audio-bearing, so every confirmed video-only row on it was dropped as a glitch. A stream now counts as audio-bearing only when a row is known to carry audio.
* stage main+sub exports on disk instead of /tmp/cache
A main+sub export stages a full copy of itself before the final file is written. That copy went to /tmp/cache, so a long export outgrew the tmpfs and failed with no space left on device. Staged runs are now written to the exports directory, and startup removes any left behind by a killed export.
* address review feedback
- stage main+sub export runs in a staging subfolder of the exports directory, so media sync can't delete them mid-export and startup cleanup can't remove a finished export with a matching name or fail on an unremovable file
- run object classification example collection off the event loop
- prefer an exact hardware unit match over an index-less one, so an AMD GPU's "onnx" no longer selects the NVIDIA entry
- add tests for the classification fallback and index-less hardware matching
* serialize example collection and clean up exports when staging dir creation fails
- overlapping object example requests could delete each other's images in the shared temp and train directories, so collection now runs under a lock
- a failed makedirs for the staging directory raised past the failed-export cleanup and left the export spinning until restart, so it now fails the run through the normal cleanup path
* revert
* reject usernames made only of dots
A username of "." or ".." passed validation, but browsers resolve those as path segments, so requests to /users/{username} never reached the API and the user could not be deleted or edited from the UI. User creation now rejects dot-only names in both the API and the create user dialog.
* show a specific error for dot-only usernames
Entering "." or ".." in the create user dialog showed the message listing periods as allowed characters, which didn't explain the rejection. The dialog now checks for dot-only names separately and shows its own message.
* revert disable save buttons when there are no changes in config editor
* pass migrated config to each step in the config migration chain
* use 150 as the default max when typing a min speed in the search filter
* fix preview export outpoint to be relative to the start of the preview file
* don't crash on invalid trusted proxy entries or non-ip forwarded hops
* translate the camera count badge in the roles table
* run every batch through the lpr recognition model
* log rejected motion and notification mqtt payloads
* log invalid addresses in x-forwarded-for
* add test
* remove unused autotracked_object_region
* remove unreachable autotracker setup call in camera maintenance
* apply onvif retry limit when initialization fails
* fix reindex progress overcounting when there are fewer events than a batch
* match the register device button aria label to its text
* reset the add profile form on cancel
* ignore case when filtering search suggestions
* tweak comment
* implement auto mode for single camera live view
* add transcoded live streams and stream ordering for auto mode
Cameras can now add lower quality live streams that go2rtc transcodes to H.264 on demand. `live.transcode` takes a source stream and a list of heights and bitrates, and each quality becomes a `{camera}_transcode_{height}p` stream. The config validator adds them to `live.streams` without moving any the user already placed, and drops them when transcoding is disabled or a height changes. `create_config.py` writes them into go2rtc's generated config at startup, and saving the config or deleting a camera syncs them through go2rtc's API, so no restart is needed. They use `#hardware`, so go2rtc picks a hardware encoder and falls back to the CPU when there isn't one.
The Live playback settings stream list can be reordered by drag, since its order is the auto ladder. Auto order sorts it by bitrate, measuring native streams through a new admin-only `/go2rtc/streams/{name}/bitrate` endpoint and using the configured bitrate for transcoded ones. A pure reorder wasn't saved before because RJSF, the settings form, and `update_yaml` all ignore map key order. Sections can now mark a map with `orderedMaps`, which sends the whole map with `replace_paths` so `config_set` rewrites it in order.
Transcoded streams aren't in `go2rtc.streams`, which only lists yaml streams, so the frontend treated them as not restreamed and fell back to jsmpeg. Every restream check now goes through `isRestreamedStream`.
Auto treated any stall with no bytes in the last 2 seconds as a dead camera and handed it to the error fallback, which went straight to jsmpeg. Heavy congestion can stop delivery completely, so congested viewers skipped every lower stream. Auto now declines only when stats show the camera offline, and a stall on a live camera steps down. The stream picker also has a Try highest quality button that sends auto back to the top stream.
* fixes
Currently translated at 100.0% (759 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (1374 of 1374 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (1374 of 1374 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (759 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (508 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (141 of 141 strings)
Translated using Weblate (Turkish)
Currently translated at 99.7% (1370 of 1374 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (119 of 119 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (145 of 145 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (10 of 10 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (265 of 265 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (759 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (508 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (277 of 277 strings)
Translated using Weblate (Turkish)
Currently translated at 99.4% (1366 of 1374 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (119 of 119 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (145 of 145 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (10 of 10 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (265 of 265 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (46 of 46 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (62 of 62 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (66 of 66 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (759 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (508 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (141 of 141 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (277 of 277 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (1366 of 1366 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (49 of 49 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (6 of 6 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (119 of 119 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (60 of 60 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (87 of 87 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (145 of 145 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (68 of 68 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (10 of 10 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (50 of 50 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (264 of 264 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (46 of 46 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (62 of 62 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (24 of 24 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (25 of 25 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (759 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (508 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (141 of 141 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (277 of 277 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (1366 of 1366 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (119 of 119 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (60 of 60 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (145 of 145 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (129 of 129 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (35 of 35 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (2 of 2 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (74 of 74 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (118 of 118 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (50 of 50 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (10 of 10 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (500 of 500 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (264 of 264 strings)
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Translated using Weblate (Turkish)
Currently translated at 100.0% (759 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (508 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (500 of 500 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (62 of 62 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (24 of 24 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (759 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (508 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (269 of 269 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (1364 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (119 of 119 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (50 of 50 strings)
Translated using Weblate (Turkish)
Currently translated at 96.8% (1321 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (50 of 50 strings)
Translated using Weblate (Turkish)
Currently translated at 95.3% (1300 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 95.2% (1299 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (759 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 86.1% (1175 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 85.2% (1163 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 58.3% (157 of 269 strings)
Translated using Weblate (Turkish)
Currently translated at 84.6% (1155 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 84.6% (1155 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 82.7% (1129 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (759 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (508 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 58.3% (157 of 269 strings)
Translated using Weblate (Turkish)
Currently translated at 74.7% (1019 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (49 of 49 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (119 of 119 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (87 of 87 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (145 of 145 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (35 of 35 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (74 of 74 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (118 of 118 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (46 of 46 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (62 of 62 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (66 of 66 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (24 of 24 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (25 of 25 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (759 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (508 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (141 of 141 strings)
Translated using Weblate (Turkish)
Currently translated at 58.3% (157 of 269 strings)
Translated using Weblate (Turkish)
Currently translated at 69.5% (949 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (49 of 49 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (119 of 119 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (60 of 60 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (87 of 87 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (145 of 145 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (68 of 68 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (129 of 129 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (35 of 35 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (74 of 74 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (118 of 118 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (50 of 50 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (264 of 264 strings)
Translated using Weblate (Turkish)
Currently translated at 91.5% (695 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (508 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 86.5% (122 of 141 strings)
Translated using Weblate (Turkish)
Currently translated at 48.6% (663 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (49 of 49 strings)
Translated using Weblate (Turkish)
Currently translated at 94.4% (137 of 145 strings)
Translated using Weblate (Turkish)
Currently translated at 91.4% (118 of 129 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (74 of 74 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (500 of 500 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (264 of 264 strings)
Translated using Weblate (Turkish)
Currently translated at 31.2% (237 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 31.2% (237 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 31.2% (237 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 56.1% (285 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 56.1% (285 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 56.1% (285 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 48.6% (663 of 1364 strings)
Translated using Weblate (Turkish)
Currently translated at 94.4% (137 of 145 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (74 of 74 strings)
Update translation files
Updated by "Cleanup translation files" add-on in Weblate.
Translated using Weblate (Turkish)
Currently translated at 1.5% (1 of 66 strings)
Translated using Weblate (Turkish)
Currently translated at 54.1% (13 of 24 strings)
Translated using Weblate (Turkish)
Currently translated at 16.0% (122 of 759 strings)
Translated using Weblate (Turkish)
Currently translated at 25.3% (129 of 508 strings)
Translated using Weblate (Turkish)
Currently translated at 86.5% (122 of 141 strings)
Translated using Weblate (Turkish)
Currently translated at 57.9% (156 of 269 strings)
Translated using Weblate (Turkish)
Currently translated at 48.6% (665 of 1366 strings)
Translated using Weblate (Turkish)
Currently translated at 80.6% (96 of 119 strings)
Translated using Weblate (Turkish)
Currently translated at 94.4% (137 of 145 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (68 of 68 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (35 of 35 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (74 of 74 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (118 of 118 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (500 of 500 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (264 of 264 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Murat Odabasi <murat12@gmail.com>
Co-authored-by: pcislocked <git@pcislocked.net>
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/audio/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/common/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-auth/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-camera/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-dialog/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-filter/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-icons/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/components-player/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-cameras/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-global/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-groups/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/config-validation/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/objects/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-chat/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-classificationmodel/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-configeditor/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-events/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-explore/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-exports/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-facelibrary/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-live/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-motionsearch/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-recording/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-replay/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-search/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-settings/tr/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/
Translate-URL: https://hosted.weblate.org/projects/frigate-nvr/views-system/tr/
Translation: Frigate NVR/Config - Cameras
Translation: Frigate NVR/Config - Global
Translation: Frigate NVR/Config - Groups
Translation: Frigate NVR/Config - Validation
Translation: Frigate NVR/audio
Translation: Frigate NVR/common
Translation: Frigate NVR/components-auth
Translation: Frigate NVR/components-camera
Translation: Frigate NVR/components-dialog
Translation: Frigate NVR/components-filter
Translation: Frigate NVR/components-icons
Translation: Frigate NVR/components-player
Translation: Frigate NVR/objects
Translation: Frigate NVR/views-chat
Translation: Frigate NVR/views-classificationmodel
Translation: Frigate NVR/views-configeditor
Translation: Frigate NVR/views-events
Translation: Frigate NVR/views-explore
Translation: Frigate NVR/views-exports
Translation: Frigate NVR/views-facelibrary
Translation: Frigate NVR/views-live
Translation: Frigate NVR/views-motionSearch
Translation: Frigate NVR/views-recording
Translation: Frigate NVR/views-replay
Translation: Frigate NVR/views-search
Translation: Frigate NVR/views-settings
Translation: Frigate NVR/views-system