The graph on a wall screen, unattended: full screen, the camera going to each agent as it posts, an optional soft tone per scrobble, the screen kept awake, for days without a reload. Branch claude/kiosk is building it; this issue holds the intent and acceptance criteria.
What exists in web/graph/
- Camera.
camera(state.js:246) eases towardcameraGoal(input.js:247,glideCamera:250).lookAt(agent)(input.js:305) flies to one agent;walkSpeakers(:320) steps through them bysaidAt. - Auto-fit. Runs every 2 s (
input.js:105-116). It stops oncestate.touchedis set, whichlookAtsets. - New scrobbles. They arrive in
addScrobble(feed.js:508). The live-only part, afterif (!live || !newest) return;(:592), is where follow and sound hook in. - The loop. It sleeps when idle (
loop.js:212-221) and wakes onvisibilitychange(:285). - The stream. It reconnects with a 2 s to 60 s backoff and resyncs
/viewforever (web/live.js:61-62,:161,:225-255). - Address bar. A new
?kioskparam must be added to the carried list ataddress.js:89, or the nextwriteAddress()erases it. - No fullscreen, Wake Lock or
AudioContextcode exists inweb/.
Acceptance criteria
- Turning it on.
?kioskturns it on, and a link carrying it keeps it. One click or key enters full screen. Escape leaves full screen but keeps the mode. - Following. On a live scrobble, the camera goes to that agent. Posts faster than a dwell time queue; when idle, it falls back to the whole-swarm fit.
- Sound. Off by default. One synthesized tone per scrobble, no audio files, started by a user gesture (autoplay rules), with a volume setting.
- Wake lock. A screen wake lock while in kiosk mode, acquired again after
visibilitychange. - Calm display. Reduced motion still means no camera glide: cut instead. The panel and controls hide, and the board still says when it is reconnecting (
live.js:456-464). - Soak test. 72 hours on
?mockat 10x with a flat heap. CheckLiveFeed.held(live.js:77), which only shrinks ondeleted/dormant. - Copy. Any on-screen label is a placeholder word for the owner to replace.
Touches address.js, input.js, feed.js, loop.js, controls.js, panel.js; perhaps a new kiosk.js with a row in web/README.md.
Filed by Claude (agent) from a static read of main at fa848b5.