Skip to content

Releases: opensensor/lightNVR

Release 0.34.4

25 Apr 05:01

Choose a tag to compare

🤖 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-2 as a runtime dependency

🔗 Full Changelog: 0.34.3...0.34.4

Release 0.34.3

23 Apr 09:11

Choose a tag to compare

🤖 AI-Generated Changelog

Added

  • New API endpoint POST /api/motion/trigger for 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

23 Apr 05:21

Choose a tag to compare

🤖 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_recording setting to cross_stream_motion_trigger to 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/test endpoint has been removed; any integrations using this endpoint should be updated

🔗 Full Changelog: 0.34.1...0.34.2

Release 0.34.1

22 Apr 17:23

Choose a tag to compare

🤖 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

22 Apr 08:40

Choose a tag to compare

🤖 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 --config argument 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-motion accessibility 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 setState call 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

16 Apr 21:19

Choose a tag to compare

🤖 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_dir instead 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_recording functionality

Fixed

  • Fixed build errors when compiling with ENABLE_GO2RTC=OFF by adding missing go2rtc API stubs
  • Fixed ONVIF detection thread crash when UDT pthread_create fails — thread is now stopped before context is freed
  • Fixed double pthread_join race condition in ONVIF thread teardown using atomic compare-exchange
  • Fixed pre-buffer PTS-based replay detection by only setting first_video_pts when 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_event signature to include is_propagated parameter, resolving a dead-code guard issue
  • Removed YAML log.output setting from go2rtc config — stdout/stderr redirection is sufficient and avoids conflicts

🔗 Full Changelog: 0.33.1...0.33.2

Release 0.33.1

15 Apr 10:31

Choose a tag to compare

🤖 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

14 Apr 04:45

Choose a tag to compare

🤖 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 snprintf calls with safe_strcpy for 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/chmod operations 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_time correction and external motion trigger handling in unified detection thread
  • Fix mp4_writer_close sequence
  • Fix use of %llu format specifier for uint64_t recording IDs

Security

  • Upgrade brace-expansion and follow-redirects dependencies to resolve moderate security advisories
  • Bump axios and other npm dependencies to patched versions

🔗 Full Changelog: 0.32.4...0.33.0

Release 0.32.4

03 Apr 07:38

Choose a tag to compare

🤖 AI-Generated Changelog

Added

  • Implement Stream Health & QoE Monitoring (Phase 1) with a dedicated Health monitoring tab under Streams
  • Add Debian stable (Trixie) .deb package 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_wait with 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

30 Mar 08:11

Choose a tag to compare

🤖 AI-Generated Changelog

Added

  • Added automated Debian package build workflow triggered on tagged releases, producing .deb packages 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 conffiles handling in dpkg-deb

🔗 Full Changelog: 0.32.2...0.32.3