- Phone camera or photo -> WebGL shader that classifies every pixel against
the sampled screen colour; colour-blind friendly (stripes, motion, words)
- Views: Spill, Screen (flat colour), rough live Key, Evenness
- Spill = worse of lean toward the screen hue and the green/blue despill
limit, tuned on a real Alexa car-interior plate (teal screen, green bounce)
- Plain-English verdict incl. widespread colour cast; tap for readouts
- Pick screen / pick white (neutral reference), freeze, exposure/WB lock
- Service worker caches each /set page under its own path (spill page no
longer overwrites the markers page offline); link from /set
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Viewer ignores taps, swipes, pinch/double-tap zoom, long-press menus,
keys and Back; hold the top-left corner 3 s to show controls, which
re-lock after 6 s or via the Lock button
- Back is trapped with a guard history entry; Close unwinds it
- Plain grey moved above 'This screen'
- Tips for OS-level lock (iOS Guided Access, Android app pinning)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The worker isn't controlling the page on the first visit, so warm-up fetches
bypassed it and no images were cached. The page now writes markers, its own
JS/CSS/fonts and /set/ straight into the cache and only then shows
'Works offline'.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Unlinked, noindex page listing marker PNGs from public/set/markers
(discovered at build time; filenames encode device/resolution/orientation)
- Detects the current screen and offers the closest match first
- One-tap full-screen viewer: wake lock, hidden controls, full grid/edges
toggle, fill vs fit by aspect, back button closes, deep links via hash
- Offline service worker + home-screen manifest for iPhone full screen
- Marketing chrome moved into an (site) route group so /set has none
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>