diff --git a/docs/todo.md b/docs/todo.md index 0efcfdf..d0d0c2f 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -68,9 +68,9 @@ title: TODO / Backlog P1 ✓ Real transport — WebRTC P2P. Done. PlayerSession.connect() (launcher = hub/answerer, one peer per phone) and ControllerSession.connect()/send() (controller = offerer) now open a real WebRTC DataChannel; intents flow phone→TV peer-to-peer. The new web-api service is a thin signaling relay (SDP/ICE) keyed by room code. Verified end-to-end in a browser. See web-api / transport architecture. -
- P2 - Persistent game shell (next). The launcher launches a game by full navigation (location.href = ../games/<id>/), which unloads the page and drops the peer connection — so today a phone drives the launcher menu but not a running game. Host games in a persistent shell (iframe / in-page swap) so the controller link survives launch and games can consume controller intents. +
+ P2 ✓ + Persistent game shell. Done. The launcher now loads a game into a full-screen iframe shell instead of navigating away, so the page — and its live WebRTC controller links — survive launch. Controller intents are relayed into the running game over postMessage (sc:intent), injected through each game's shared Input layer with no per-game change; Back returns to the menu still connected. Verified with two clients on one machine. (Phone-over-LAN play depends on direct P2P succeeding — see P5.)
P3