Epic: #113 · Milestone: MC7 — TV shell
Why
Text entry and library browsing from a phone is the biggest usability win after CEC, and the same API is what the HIL scripts use to drive playback (#88). Own tech: HomeOS HTTP server (none exists — net/http.home is client-only), net/websocket.home (unrun), stx for the web remote (runs in the phone's browser, not on the device).
Tasks
- Minimal HTTP/1.1 server + WebSocket server in Home (static files from the boot partition, JSON API, auth by a 6-digit pairing code shown on screen, per-device tokens).
- API:
/api/keys(remote grammar),/api/text,/api/now-playing,/api/play {id|url},/api/library/...,/api/perf(used by gates), events over WS. - Web remote in stx (
apps/tv/remote-web/), built to static assets at build time, ≤ 200 KB; opens via the QR code in Settings; mDNS namehomeos-tv.local(#105). - Rate limiting and LAN-only binding by default.
Acceptance
Phone browser controls the shell on the Pi over Ethernet; HIL scripts use the API to start the reference clips.
Size: M · Depends on: #69, #105, #92 · Blocks: #88 (automation)