clip_fallbackcan now be limited to specific cameras (clip_fallback_cameras,
empty = all; Settings → …only these cameras). 0.9.0 already documented that the gain
depends almost entirely on the viewing angle — 4 of 4 events rescued at a front door at
head height, 0 of 6 on a high-mounted indoor camera and a zoomed garden view — but there
was no way to act on that. Scanning a camera nobody ever looks towards costs several
seconds of CPU per event and finds nothing, every time.- Restricting it to the cameras that earn it keeps every rescued event while dropping the
scans that were never going to succeed.scripts/why-no-face.py --clipreports per
camera, so the decision can be measured rather than guessed. - Editable both as an app option and live in Settings; the service logs the restriction at
startup, so a missing recording scan does not look like a defect. - Fixed a latent crash in the app's start script. Camera lists were read as
.cameras | join(", "), and the// emptyfallback in the config helper binds to
join()rather than the lookup — so an option that is absent fromoptions.json(which
is exactly what happens the moment a new list option ships) aborted jq, and withset -e
the app never started. All three lists now default before the pipe.