Projection Mapper Native 0.86.0 - snapshots, title colors, nav icons, tag filters, person-gated scares NEW IN 0.86.0 Five additions in one release: 1. Show snapshot button (Show page, Playback card): saves the exact frame on the projector right now as a JPEG into the guestbook folder, named snapshot-.jpg. Handy for "keep that one" moments and for showing Wade what the house looks like mid-show. 2. Title colors (Timeline page): per-scene dropdown next to the title text - warm white (the existing look), amber, green, red, blue, or violet. Applies to both lines of two-line titles and works with the animated title cards. 3. Nav icons: every left-nav entry now has a small hand-drawn icon (pure GDI, no image files, no downloads). Active page icon uses the accent color. 4. Tag filters (Content library): the search row is now text box + tag dropdown. Tags come from the web app's tags.json (both known shapes read) plus built-in prefix tags: hw-/hw2- packs, guestbook-, snapshot-. Filtering combines with the text search. 5. Motion-gated person detection (Automation page): a scare dropdown with three modes - - Scare on any motion (the existing behavior, and the default) - Scare on a person - motion fallback until the detector is ready - Scare only when the detector sees a person plus a "Set up person detection" button. The detector is a small local python sidecar that reuses the Detection AI venv from the Detect page setup (ultralytics is already installed there - no second big download) and a yolo11n model (~6 MB, fetched once by the ultralytics library itself on first use; runs on the RTX 2060). Motion fires the detector, a person box at confidence 0.45+ gates the scare, and in fallback mode a detector that is down, warming, or erroring never silently kills the scare. Every motion event logs the detector verdict ("person 0.63", "no person seen", "motion-only (detector not ready)") next to the guestbook moment. STILL TRUE - Windows 10/11 64-bit. No install: run the exe, it lives in %APPDATA%\ProjectionMapperNative. - Auto-update and the automatic log file work as before. - Safe mode reduces procedural effect speed/intensity within tested bounds - it is not a guarantee. - Control socket: localhost-only, token required, never logged, fail-closed. The detector sidecar is localhost-only too and only accepts camera frames. TESTED (build machine) - Full Go test suite passes, including the new gate tests: fallback mode scares when the detector is down and stays quiet when it sees no person; strict mode requires a person; sidecar JSON parsing (multiple boxes, below-threshold, error replies, garbage); detector labels. - Title color, tag parsing (both tags.json shapes), prefix tags, library tag filtering, snapshot naming: unit tested. - Windows cross-build (GOOS=windows) green; go vet clean. UNTESTED (needs Wade's rig) - The detector sidecar end to end: venv detection, script write, model download, GPU inference time, and the live scare gating. The python and the model cannot run in the build environment. Default gate mode is OFF, so the scare behaves exactly as 0.85.1 until a person mode is picked; if setup fails, fallback mode still scares on motion. - Nav icon rendering and the new Automation/library/Show layouts on the real 773px window. - Tag dropdown against a live web-app tags.json (unit tested on both documented shapes only). JUDGMENT CALLS - Gate defaults OFF: nobody's scare changes unless they pick a person mode. - Setup reuses the existing Detection AI venv instead of a second install; if neither venv exists the button says to run Detect-page setup first. - ultralytics licensing: it is pip-installed on Wade's own machine by his earlier Detect-page setup action and the model file downloads at runtime - nothing ultralytics ships inside this exe or the source zip. - Person threshold 0.45 (the middle of the scouted 0.4-0.5 band). - The scare check runs on the Automation tick (every 20 s), same cadence as the existing motion check - the gate adds no new polling. - Snapshots land in the guestbook folder so the slideshow page can show them; the snapshot- prefix tag keeps them filterable. Gemini calls this build: 0.