🤖 AI-Generated Changelog
Fixed
- Guard async confirmation dialogs to prevent duplicate or race-condition submissions
- Preserve canonical camera scope when returning selected footage in recordings view
- Discard interrupted demuxer tails when recording stops to avoid corrupt tail segments
- Remove unused navigator index initializer in live view
- Reject stale recording and detection results displayed in the playback modal
- Reserve TLS response terminator correctly to prevent length overflow
- Validate complete event deletion queries before transport
- Isolate day/night state and requests when switching between cameras
- Drop MQTT snapshots when camera identity changes during capture
- Preserve live playback flags when stream setup status is unavailable
- Keep restart recovery active after an uncertain acknowledgment
- Preserve system config defaults while allowing CMake install overrides
Changed
- Unify footage navigation in recordings view and add support for thumbnail-free grid layout
- Isolate recordings cache and remove reactive filter side-effects on camera switches
- Harden Timeline video prioritization and busy-day playback workflows
- Improve phone live viewing experience, navigation, and recording playback
- Align Docker storage instructions in installation documentation
- Clarify source-built Compose upgrade and uninstall paths in documentation
Security
- Confine personal credential operations to the application origin
- Prevent ONVIF credentials from being forwarded through HTTP redirects
- Block credential forwarding through administrative API redirects
- Prevent fleet selectors and mutations from following HTTP redirects
- Prevent storage commands from forwarding request bodies through HTTP redirects
- Enforce camera audio authority and revoke established media leases when access is removed
- Apply audio disable enforcement at the media authorization boundary
- Bound and validate generated media lease token copies
- Contract and validate ONVIF device and PTZ operations before applying effects
- Reject non-JSON lifecycle acknowledgments before parsing
Added
- Complete navigator tab focus and panel accessibility support
- Contract stream lifecycle and enforce queued camera identity validation
- Add settings, system, and bootstrap API contracts with validated consumers
- Complete fleet organization and live workspace API contracts
- Complete event routing contracts with verified real MQTT delivery
🔗 Full Changelog: v0.47.0...0.47.1