From fbb40f4e26b350de3381f21e377ee1ae49d71fc8 Mon Sep 17 00:00:00 2001 From: cclohmar Date: Thu, 6 Aug 2026 18:30:49 +0100 Subject: [PATCH] =?UTF-8?q?chore:=20v0.4.0=20=E2=80=94=20cleanup,=20change?= =?UTF-8?q?log,=20version=20bump?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 78 +++++++++++++++++++++++++++------------------------- VERSION | 2 +- 2 files changed, 42 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec30539..5cb8ce2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,49 +2,53 @@ All notable changes to NextNVR will be documented in this file. -## [0.2.2] — 2026-08-05 +## [0.4.0] — 2026-08-06 ### Added -- User-friendly README.md with one-line install command -- Auto-install dependencies in setup.sh (ffmpeg, git, Go 1.24.5) -- Colored terminal output during deployment -- Preserves existing config.yaml on re-deployment - -## [0.2.1] — 2026-08-05 +- Two-port auth system: `:8080` with optional master login, `:8090` always-open viewer +- Auth management card in Settings UI +- Add / remove cameras in Settings +- Collapsible advanced camera settings +- `remove.sh` for clean uninstall ### Changed -- **Flat recording directory**: `/mnt/recordings/{cam-name}/{YYYY-MM-DD-HH-MM}.mp4` -- **Per-segment FFmpeg**: replaced segment muxer with `-t 300` per-segment approach -- **Atomic file naming**: in-progress recordings use `.part.mp4` suffix, renamed on completion -- **Crash recovery**: `.part` files older than 1 hour auto-cleaned by retention loop -- Cleaner skips `.part.mp4` files (active recordings) -- Cleaner prunes empty camera directories after purge +- **Pivot to JSON config** — zero external Go dependencies +- Deploy script: greenfield vs update detection, no interactive prompts +- Camera names auto-sanitized (spaces → underscores) +- Storage path in config only, deploy script no longer asks +### Fixed +- First-run wizard auto-loads Settings when no cameras configured +- Snapshot path resolution for clip thumbnails +- Timezone-aware playback presets (BST) +- XSS in clip cards (DOM-based rendering) +- Interval leak in live grid +- Credentials file permissions (0600) +- Data race on recorder process manager + +## [0.3.0] — 2026-08-05 ### Added -- Playback presets: Today, Yesterday, Last 7 Days, Custom date range -- `/recordings/` static file server for video playback -- Recordings API filters by preset or custom date range -- 🔴 live badge for in-progress `.part` files in playback UI -### Removed -- Nested date subdirectories (replaced by flat per-camera structure) -- Complex FFmpeg segment muxer flags (`-f segment`, `-segment_time`, `-strftime`) +- go2rtc integration for live streaming +- Snapshots via go2rtc (1s interval, disk-based) +- Focus overlay with go2rtc WebRTC player +- ONVIF hybrid probe (TCP + SOAP) +- Playback presets: Today, Yesterday, Last 7 Days, Custom +- Per-minute archival snapshots for thumbnail browsing +### Changed +- Flat recording directory: `{cam-name}/rec_*.mp4` + `snap_*.jpg` +- Per-segment FFmpeg with `.part.mp4` atomic rename +- go2rtc proxied through NextNVR to avoid mixed-content blocking +- 7-day retention default ## [0.2.0] — 2026-08-05 ### Added -- FFmpeg stream recorder with zero-transcoding (`-c copy`) stream-copy mode -- 5-minute MP4 segment output to `/mnt/recordings/{cam_id}/{YYYY-MM-DD}/` -- Per-camera goroutines with auto-reconnect on stream failure (5s delay) -- Staggered camera startup (500ms between launches) -- Storage retention cleaner with configurable `retention_days` -- Hourly background purge of expired recordings -- Empty directory pruning after cleanup runs +- FFmpeg stream recorder with zero transcoding +- Retention cleaner with hourly purge +- Deployment script (now `deploy_nvr.sh`) ## [0.1.0] — 2026-08-05 ### Added -- Initial project scaffold and Go module -- YAML configuration (`config.yaml`) with 8 camera stubs -- Embedded single-binary distribution using Go `embed` -- HTTP API endpoints: `/api/cameras`, `/api/config`, `/api/scan`, `/api/status`, `/api/recordings` -- Responsive SPA with three tabs: Live Wall, Playback, Settings -- 4x2 CSS grid for live camera monitoring -- Focus/overlay mode with prev/next navigation and thumbnail strip -- ONVIF scan stub (IP range 192.168.1.201–209, skip 204) -- go2rtc child process manager with auto-restart -- Deployment script (`setup.sh`) with systemd service generation +- Initial project scaffold +- YAML configuration with camera stubs +- Embedded single-binary SPA +- HTTP API endpoints +- Live Wall 4x2 grid with focus overlay +- Playback browser +- ONVIF scan stub diff --git a/VERSION b/VERSION index ee1372d..1d0ba9e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.2 +0.4.0