Releases: opensensor/lightNVR
Releases · opensensor/lightNVR
Release 0.32.0
🤖 AI-Generated Changelog
Added
- Added privacy mode for streams, allowing individual streams to be hidden/masked (#325)
- Added macro-based per-translation-unit logging context (
LOG_COMPONENT) for more precise log filtering and diagnostics
Changed
- Updated go2rtc to the opensensor fork, rebased onto upstream master
- Consolidated ONVIF URL generation into a unified helper function for consistency across the codebase
- Consolidated duplicate ONVIF WS-Security header implementations to reduce code duplication
Fixed
- Fixed ONVIF motion detection compatibility with Tapo cameras (C545D and similar models)
- Fixed dynamic ONVIF event service discovery for improved multi-vendor compatibility
- Fixed RTSP source and WebRTC sessions not being closed when a stream is disabled
- Fixed recording not stopping correctly when a stream is disabled
- Fixed URL encoding of stream names in go2rtc API calls, resolving issues with special characters
- Fixed fullscreen stack buildup during arrow-key grid navigation
- Fixed recursive draining of the fullscreen stack and added grid-position overlay on arrow-key navigation
- Fixed timeline poll not removing entries for deleted recordings (#331)
- Fixed empty segment array handling in
TimelineSegmentsprops updates (#331) - Fixed camera order key being duplicated across live views; now shared correctly as a single key
- Fixed Home Assistant MQTT discovery message publishing timing in the MQTT callback
- Fixed go2rtc quoting issue and improved Docker Compose file resilience
🔗 Full Changelog: 0.31.3...0.32.0
Release 0.31.3
🤖 AI-Generated Changelog
Added
- Share grid layout preference across all live view modes so your chosen layout persists when switching views
- Stream disable button in WebRTC live view cell for quick per-stream control
- Privacy quick-disable toggle for streams, allowing fast privacy management without entering settings
- Per-thread component and stream fields in log output for improved traceability
- Live view fullscreen to timeline fullscreen handoff, enabling seamless transitions between views
Changed
- Replaced view-mode buttons with a tab strip in Live View for a cleaner navigation experience
- Recordings table now highlights selected rows for clearer selection feedback
- Audio recording changes now take effect on the next segment without requiring a restart
- Log context wired into remaining worker threads for consistent logging across all components
Fixed
- Grid layout enforced as square-only across all live views for consistent appearance
- Stream status improvements and credential update now apply correctly
- Arrow-key grid navigation in native fullscreen now works as expected in Live View
- Eliminated spacebar play/pause loop race condition in timeline
- Recordings layout — tabs, gear icon alignment, and sidebar-proof toolbar
- Recordings toolbar gear icon stays pinned to the right when action buttons wrap
- Heading layout improvements for better visual consistency
- Second horizontal divider removed at large breakpoints to reduce visual noise
- Language selector, edit profile, and logout now display correctly in a single row
- WebRTC error message improved when camera source is unreachable
- Replaced permanent give-up behavior with cooldown-retry logic in the outer recording thread
- Updated llhttp wget URLs to use the correct release branch format
🔗 Full Changelog: 0.31.2...0.31.3
Release 0.31.2
🤖 AI-Generated Changelog
Added
- Added language selector to the login page
- Added keyboard-accessible controls to the Full Screen Manager using tinykeys
Changed
- Improved header responsiveness across varying screen widths
- Improved language preference selection and pre-selection of default language option
- Conditionally limit mobile menu items for a cleaner mobile experience
- Render Edit Profile and Login/Logout consistently with other header items
- Prevented mobile styles from being applied to desktop header buttons
- Prevented headers from shifting left/right during initial page load
- Prevented title/close from appearing left of list on wider screens
- Simplified language preference handling
- Cleaned up legacy CSS files (
base.css,components.css)
Fixed
- Fixed active header button color
- Fixed hiding of the language dropdown and user/logout buttons
- Fixed header and UI consistency issues
- Fixed timeline keyboard navigation, focus ring, spacebar control, forward auto-advance, and navigation-preserving coverage
- Fixed bug #315
- Resolved CI deprecation warnings
Security
- Applied Copilot Autofix suggestions to
TimelinePlayer.jsxandUsersTable.jsxto address identified findings
🔗 Full Changelog: 0.31.1...0.31.2
Release 0.31.1
🤖 AI-Generated Changelog
Added
- Clone stream feature with user feedback improvements
- Sortable table on the Users page
Changed
- Stream credentials are now masked by default in the streams table view, even for administrators
- Improved backend stream health checking using the same Unified Detection Thread (UDT) state as the frontend
- Improved stream status reporting using UDT state
- Updated npm dependencies
Fixed
- Stabilized timeline playback and keyboard navigation
- Buffered PCM samples in AVAudioFifo before AAC encoding to fix audio encoding issues
- Improved playback speed feedback when using keyboard navigation
- Fixed test runner
- Trimmed leading/trailing whitespace from stream names on save
- Added missing
common.alli18n translation key - Fixed stream status reporting accuracy
Security
- Applied multiple Copilot Autofix suggestions across C backend and JavaScript frontend components
- Addressed all clang-tidy warnings from CI report
- Applied code quality fixes to
mp4_writer_utils.c,unified_detection_thread.c,api_handlers_recordings_backend_agnostic.c, and various frontend components
🔗 Full Changelog: 0.31.0...0.31.1
Release 0.31.0
🤖 AI-Generated Changelog
Added
- Added internationalization (i18n) support with translations for German, Spanish, French, Italian, Japanese, and Chinese
- Added "View in Timeline" button to Live View for quick navigation to recordings
- Added timeline keyboard navigation modes for improved accessibility and usability
- Added inline protect and tag actions to the timeline for faster workflow
- Added AI-generated release notes via GitHub Actions changelog workflow
Changed
- Improved startup responsiveness and stream loading user experience
- Improved header consistency and current-user profile editing
- Improved user login restriction workflows
- Improved timeline recording navigation
- Upgraded container dependencies including libuv, llhttp, and SQLite
- Refreshed container dependency sources
- Moved capture method settings to a gear/cog menu item in recordings table
Fixed
- Fixed recordings bulk selection behavior across multiple pages
- Fixed repeated go2rtc snapshot retry attempts (#265)
- Fixed timeline recording navigation issues (#268)
- Fixed ONVIF detection system initialization (#267)
- Fixed go2rtc detection false positives (#264)
- Fixed stale version.h issue (#263)
- Fixed go2rtc config not regenerating from saved settings on Docker restart
- Fixed recordings table capture method column header display
- Increased database backup frequency to reduce potential data loss
- Applied security and stability fixes to database core and recordings table components
🔗 Full Changelog: 0.30.1...0.31.0