dev #16

Merged
elirtf merged 4 commits from dev into master 2026-06-29 20:52:28 +00:00
Owner
No description provided.
The existing writable check passes for an unmounted NAS because the local
fallback dir on rootfs is writable, so a reboot-before-NAS-ready would
silently record to the wrong disk (this happened in production). Add a marker
guard: set RECORDING_STORAGE_MARKER to a filename placed at the root of the
mount (e.g. .opus-storage on the NAS). If it's missing, the mount isn't
present, so the recorder kills writers and pauses instead of writing locally,
resuming when the marker reappears. Exposed via status (storage_ready);
disabled when unset. st_dev can't detect this inside the container (the bind
mount looks like a real mount either way), so a marker is the reliable signal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Two recording-pipeline hardening fixes from the audit:

1. The segment cache defaulted to RECORDINGS_DIR/.cache — i.e. on the NAS — so
   FFmpeg wrote every live segment over NFS, letting NAS latency stall the
   writer (dropped frames / corrupt segments). Wire RECORDING_CACHE_DIR=/cache
   on the recorder with a local bind (RECORDING_CACHE_HOST_DIR, default ./cache),
   so live recording stages locally and only the bulk drain touches the NAS.
   Entrypoint chowns /cache for the opus user.

2. _drain_cache swallowed move failures with 'except OSError: pass' — a full or
   unavailable NAS meant segments piled up in the cache silently until the disk
   filled. Count failures and log a warning per scan.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds notify_object_classes (comma-separated, e.g. person,car). When set,
send_motion_notification only fires when the event's detected objects intersect
it; empty = alert on all motion (unchanged). Checked before cooldown/summary so
suppressed alerts don't consume them. Recording is untouched — this decouples
alerting from the object-detection record gate, so you can record all motion but
only be pinged for what matters. Exposed in Configuration > notifications.

Spec: docs/superpowers/specs/2026-06-29-object-filtered-alerts-design.md

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
elirtf merged commit 522fe31b3d into master 2026-06-29 20:52:28 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
elirtf/opus!16
No description provided.