Commit graph

15 commits

Author SHA1 Message Date
f794c57198 fix: retry recording when storage is slow to mount at boot
A power cut makes the recordings drive's fsck slow, so the mount can
appear tens of seconds after nextnvr starts. The recorders then hit the
unmounted, root-owned mountpoint, failed mkdir, and exited permanently —
recording stayed dead until a manual restart.

- recorder: on mkdir failure, log and retry every 15s instead of exiting,
  so recording resumes once storage returns
- storage: add waitForStorage() and call it before the writers start, so
  startup waits (up to 120s) for the recordings dir to be present and
  writable; live view still starts if storage never appears
2026-10-15 07:09:11 +01:00
a54ff08ebb feat: storage health monitor with UI alert on drive loss
Detect a disconnected or read-only recordings drive and surface it
without stopping recording or live view:

- storage.go: probe path existence, mount point, writability and free
  space every 30s; capture mount expectation at startup so a clean
  unmount (writes falling through to root fs) is also caught
- GET /api/storage endpoint; storage fields in /api/status
- red UI banner while storage is unavailable
- log ALERT on loss, OK on recovery
2026-10-10 07:17:28 +01:00
3b2bcd7696 refactor: viewer always listens, access blocked at request level when disabled 2026-08-06 19:31:10 +01:00
deb2380507 fix: toggle viewer_port directly instead of viewer.enabled — no ambiguity 2026-08-06 19:12:10 +01:00
c85bba8d56 fix: use mutex-protected config copy in onReload — prevents stale reads 2026-08-06 19:07:08 +01:00
72e936d3f1 fix: viewer port starts/stops dynamically on config save, auth bypass removed 2026-08-06 18:52:02 +01:00
2032402597 fix: auth bypass removed, sanitize names, json errors, viewer port toggle 2026-08-06 18:43:14 +01:00
b2e4dface2 refactor: pivot to JSON config — no yaml dependency, jq in bash, greenfield detection 2026-08-06 14:54:43 +01:00
02ee23281c feat: config hot-reload — save restarts services automatically 2026-08-06 14:37:02 +01:00
eaa612278d feat: two-port auth — 8080 with login, 8090 viewer-only (live wall) 2026-08-06 12:56:48 +01:00
d4eada42d8 docs: MIT license, license headers, README with project story and roadmap 2026-08-06 10:48:35 +01:00
3ded3cc1e8 fix: recorder drop audio (-an) — cameras use pcm_mulaw which MP4 doesn't support 2026-08-05 14:10:08 +01:00
06a1252088 feat: v0.3.2 — disk-based snapshot engine, no go2rtc polling for grid 2026-08-05 12:28:29 +01:00
1a017999fe chore: v0.3.1 — go2rtc auto-start, live wall snapshots, MSE focus player 2026-08-05 12:13:33 +01:00
84bf6d892f chore: Milestone 1 & 2 — core setup, recorder, cleaner, web UI, deployment 2026-08-05 09:15:43 +01:00