github opensensor/lightNVR v0.48.0
Release v0.48.0

one hour ago

🤖 AI-Generated Changelog

Added

  • Object observation evidence pipeline: Full end-to-end support for capturing, storing, and reviewing evidence clips tied to detection events, including per-camera opt-in and configurable storage budgets
  • Observation classifications: New database layer and API for annotating and classifying detected objects, with a PUT endpoint for updating classifications from the web UI
  • Observation pipeline metrics: System diagnostics view now includes observation pipeline statistics for monitoring throughput and health
  • WebRTC multi-address External IP support: Accept a comma-separated list of External IPs as WebRTC STUN candidates to improve connectivity in multi-homed deployments
  • Linked observation classifications in the UI: Detection results in the web interface now display associated observation classifications alongside detections
  • ONVIF and HTTP API observation evidence endpoints: New API routes for retrieving observation evidence captured from local detectors and ONVIF sources

Changed

  • Frontend toolchain upgrade: Web build now uses Node 26 LTS and TypeScript 7
  • Build verification: SQLite and libuv source archives are now verified with scoped checksums during build

Fixed

  • Observation retention cleanup: Corrected cleanup semantics to avoid unsafe deletion and ensure evidence files are retried after expiry
  • ONVIF retry behavior: Retry logic now sends the rebuilt SOAP envelope rather than freed memory; connection test failures now report a reason; refused RTSPS connections are retried as plain RTSP
  • WebRTC candidate parsing: IPv6 addresses are now validated correctly and usable STUN candidates are emitted; candidate output is guarded in the parser loop
  • Evidence frame lifecycle: Rejected evidence frames are now released on the worker thread; submit-latency gate enforced
  • Evidence file sweeping: Evidence files are now swept relative to directory file descriptors to eliminate a TOCTOU race (CodeQL)
  • Atomic flags in evidence and retention: Converted to atomic_int for correctness in the C-to-Rust FFI boundary
  • go2rtc External IP parser: Parser now builds correctly when go2rtc integration is disabled
  • Contract code generation: Eliminated redundant validator generation; preserved validated schema export names; retained temporary file imports for native generation
  • Null dereference: Removed redundant null check following a prior dereference in observation retention
  • CI timeline auto-advance: Playwright tests now wait for real playback before seeking near a segment boundary; invalid detection timestamps are each covered independently

🔗 Full Changelog: v0.47.3...v0.48.0

Don't miss a new lightNVR release

NewReleases is sending notifications on new releases.