Releases: opensensor/lightNVR
Releases · opensensor/lightNVR
Release 0.34.4
🤖 AI-Generated Changelog
Added
- Added new locale catalogs and registry entries to expand internationalization support
Changed
- Normalized locale tone and wording for consistency across the interface
- Completed and normalized locale catalogs for improved translation coverage
- Updated German (de.json) locale translations
- Improved disk usage calculation in system info API using database-level summation for better performance
Fixed
- Fixed timeline scrubber playback behavior and settings helper layout
- Fixed Debian package to properly declare
libyaml-0-2as a runtime dependency
🔗 Full Changelog: 0.34.3...0.34.4
Release 0.34.3
🤖 AI-Generated Changelog
Added
- New API endpoint
POST /api/motion/triggerfor triggering motion events from external sources
Changed
- Thumbnail decoding now uses libav for improved performance, defaults to first frame, and includes a configurable count setting
Fixed
- Fullscreened cells in live view now correctly swap to the main stream instead of the sub-stream
- Detection interval unit label and segment duration minimum value corrected in stream settings
- Single-cell (1x1) live view now fits the desktop viewport without requiring scrolling
🔗 Full Changelog: 0.34.2...0.34.3
Release 0.34.2
🤖 AI-Generated Changelog
Added
- Individual toggles for WebRTC, HLS, and MSE stream views on the dashboard, allowing users to show or hide each player type independently
- Refresh button in the recordings toolbar for manually reloading the recordings list
- go2rtc codec-aware stream registration with live re-registration when the codec changes, improving stream compatibility
Changed
- Renamed
onvif_motion_recordingsetting tocross_stream_motion_triggerto better reflect its purpose; update any configuration referencing the old name - Migrated network-bound action buttons to an async pattern, providing better feedback during operations
- Timeline now preserves playback state across seek operations, preventing unexpected pauses
Fixed
- ONVIF events now work correctly with strict ONVIF servers such as Reolink cameras
- HTTP request handler no longer holds a dangling pointer into a reallocated receive buffer, preventing potential memory corruption
- MQTT settings inputs no longer get incorrectly filled by Firefox's saved-login autofill
- Disconnected camera reconnect loop no longer spins uncontrollably, and suppresses repetitive EOF log spam
Removed
/api/motion/testendpoint has been removed; any integrations using this endpoint should be updated
🔗 Full Changelog: 0.34.1...0.34.2
Release 0.34.1
🤖 AI-Generated Changelog
Fixed
- Reject stream names containing spaces or special characters to prevent invalid stream configurations
- Resolve pipeline override issue in go2rtc integration that could cause stream processing failures
🔗 Full Changelog: 0.34.0...0.34.1
Release 0.34.0
🤖 AI-Generated Changelog
Added
- Settings page redesign: Tabbed layout with URL-hash navigation, live search across all settings, and a sticky save button for easier configuration management
- Streams page card grid: New card-based grid layout for streams with a recording-mode badge displayed on each stream card
- go2rtc config override editor: Full-featured YAML editor in settings with validation, presets, effective-config preview, and quarantine banner for invalid configurations
- go2rtc override safety: Automatic quarantine of invalid or crash-looping override configurations, surfaced in the UI with clear status indicators
- go2rtc effective-config preview: New API endpoint showing the merged configuration with YAML-aware redaction of sensitive values
- go2rtc server-side validation: Duplicate-key detection and structural validation of go2rtc override YAML before it is applied
- go2rtc binary discovery hardening: Searches well-known paths and probes the version to reliably locate the go2rtc binary
- AsyncButton and useAsyncAction: New UI primitive for async operations with built-in loading and error state handling
- Per-stream go2rtc source override: Individual streams can now specify a custom go2rtc source, overriding the default pipeline
Changed
- go2rtc configuration architecture: Base config is now emitted separately; a second
--configargument passes the user override, enabling upgrade-safe customization without losing settings - go2rtc config override size cap: Raised from 4 KB to 64 KB to support larger configurations
- Streams page layout: Displays 4 columns on extra-large screens (
2xl) for better use of wide displays - Theme polish: Custom scrollbar styling and support for the
prefers-reduced-motionaccessibility preference - Mobile navigation: Logo now links to home; toast notifications repositioned; safe-area insets applied for notched devices
Fixed
- Recordings table overflow: Corrected layout overflow issues in the recordings table
- Playback modal fit: Improved sizing and fit of the video playback modal
- Audio stream initialization: Declare audio stream before calling
avformat_write_header()to prevent initialization errors in UDT recordings - go2rtc non-RTSP URL handling: Skip RTSP-only URL fragments when the source scheme is not RTSP
- go2rtc disabled build stubs: Added missing stub implementations for override-pipeline APIs when go2rtc is compiled out
- Video controls visibility: Native video controls are now kept visible in the recordings modal
- Settings config state update: Guarded
setStatecall for effective config behind a mounted-ref check to prevent updates on unmounted components
🔗 Full Changelog: 0.33.2...0.34.0
Release 0.33.2
🤖 AI-Generated Changelog
Added
- Bidirectional cross-stream motion propagation for dual-lens cameras, allowing motion detected on one lens to trigger recording on the paired lens
- Dedicated ONVIF detection thread per stream with motion-storm protection and sticky-flag hysteresis to prevent false triggers and rapid on/off cycling
Changed
- ONVIF motion hold duration constant moved to file scope for better organization alongside related constants
- go2rtc log output path now derived from
config_dirinstead of a hardcoded path - Pre-buffer replay logging rate-limited to keyframes only to reduce log noise
- ONVIF username removed from startup log (replaced with auth enabled/disabled indicator) to avoid leaking credentials in logs
Removed
- Removed
motion_recordingfunctionality
Fixed
- Fixed build errors when compiling with
ENABLE_GO2RTC=OFFby adding missing go2rtc API stubs - Fixed ONVIF detection thread crash when UDT
pthread_createfails — thread is now stopped before context is freed - Fixed double
pthread_joinrace condition in ONVIF thread teardown using atomic compare-exchange - Fixed pre-buffer PTS-based replay detection by only setting
first_video_ptswhen PTS is valid - Fixed audio buffering during go2rtc replay by gating audio on
stream_is_live - Fixed go2rtc false stuck-detection alerts on startup with a warmup guard
- Fixed pre-buffer being incorrectly reset on stream reconnect
- Fixed metrics reporting for stream UDT (unified detection thread)
- Fixed
process_motion_eventsignature to includeis_propagatedparameter, resolving a dead-code guard issue - Removed YAML
log.outputsetting from go2rtc config — stdout/stderr redirection is sufficient and avoids conflicts
🔗 Full Changelog: 0.33.1...0.33.2
Release 0.33.1
🤖 AI-Generated Changelog
Added
- Support go2rtc configuration override and updated go2rtc submodule to dev branch
Fixed
- Resolved .deb package build issue by installing the sqlite3 CLI package when using system libraries
- Stopped bundling system libraries in .deb packages; system libraries are now declared as package dependencies instead, resolving installation conflicts (#387)
🔗 Full Changelog: 0.33.0...0.33.1
Release 0.33.0
🤖 AI-Generated Changelog
Added
- Add web server bind address configuration, allowing the server to listen on a specific IP address
- Add milliseconds to logging output for improved timestamp precision
Changed
- Standardize string copy functions across the codebase for consistency and safety
- Replace trivial
snprintfcalls withsafe_strcpyfor cleaner string handling - Standardize directory creation and permission functions (
mkdir/chmod) across the codebase - Refactor HLS directory creation for improved reliability
- Refactor and simplify PID file management, removing unused code
Fixed
- Fix retention cleanup to loop until the full backlog is cleared, preventing accumulation of old recordings (#369)
- Fix orphan detection performance issue (#369)
- Fix recursive
chown/chmodoperations on large recording directories causing performance problems (#368) - Fix missing bundled libraries in Debian package (#362)
- Fix detection of go2rtc process death
- Fix missing build dependency for rebuild-recordings
- Fix
start_timecorrection and external motion trigger handling in unified detection thread - Fix
mp4_writer_closesequence - Fix use of
%lluformat specifier foruint64_trecording IDs
Security
- Upgrade
brace-expansionandfollow-redirectsdependencies to resolve moderate security advisories - Bump
axiosand other npm dependencies to patched versions
🔗 Full Changelog: 0.32.4...0.33.0
Release 0.32.4
🤖 AI-Generated Changelog
Added
- Implement Stream Health & QoE Monitoring (Phase 1) with a dedicated Health monitoring tab under Streams
- Add Debian stable (Trixie)
.debpackage builds for easier installation on Debian systems
Fixed
- Prevent duplicate MP4 recordings that occurred during the RTSP initialization window
- Fix ONVIF motion recordings that would never stop by replacing blocking
cond_waitwith a timed wait - Fix stream names containing spaces or special characters being handled incorrectly
- Fix telemetry threading bug in health monitoring
Changed
- Move Health monitoring to a tab under the Streams section for better organization
- Clean up API log retrieval for improved performance and reliability
Documentation
- Update Raspberry Pi build instructions to reflect current requirements
🔗 Full Changelog: 0.32.3...0.32.4
Release 0.32.3
🤖 AI-Generated Changelog
Added
- Added automated Debian package build workflow triggered on tagged releases, producing
.debpackages for multiple architectures
Changed
- Reorganized application startup sequence to initialize file logging earlier, ensuring log output is captured from the beginning of execution
- Moved daemonization and stream configuration loading to occur before launching background threads, improving reliability of daemon mode startup
Fixed
- Fixed ARM hard-float (armhf) runner configuration in CI pipeline
- Fixed Debian package build failure related to
conffileshandling indpkg-deb
🔗 Full Changelog: 0.32.2...0.32.3