Outstanding work and intentional gaps. Check here before "fixing" something that
is already a tracked, deliberate quirk. The patterns the code follows are in
ARCHITECTURE.md.
- One shared world, by design. All real-time state (eyes, boxes, subscribers)
lives in a single
EventHubDurable Object resolved byidFromName("global")— in-memory and ephemeral, no external store needed. For multiple worlds, shard by DO name rather than adding a backing store. - Agent POV thumbnails are host-only. Only the host renders each agent's
offscreen view, so the
AIAgentViewsHUD stays blank on viewer clients — that redundant per-frame work is exactly what the host model removes. next devserves the UI only. The real-time hub (/api/events+ the DO) runs only under the Workers runtime; usenpm run previewto exercise it.- Auto-deploy paused. CI deploys only when the
DEPLOY_ENABLEDrepo variable istrue(currently unset). Theplaneo.tre.systemscustom domain is already configured inwrangler.jsoncand takes effect once deploy is re-enabled.
Prioritised, P1 (highest value) → P3. None are known bugs in shipped behavior.
- Single top-level animation-tick loop. Three
useFrameupdaters (boxStore,eyesStore,useAIAgentController) run independently; one tick would unify frame-rate handling. - Seamless host handoff. On host change the sim freezes briefly and cube
velocities aren't migrated (boxes resume at rest); snapshot velocity into the
hostevent for a clean handoff. - Broader
useShallow. The frame-driven container selectors (Eyes,Box,useAIAgentController) still read whole records — low impact, since the over-render is masked by the frame loop.
- Wire-format version field on
EventSchema. No version discriminant, so a long-lived DO can't detect client contract drift during a rollout — add one when the wire format next changes.
- Multi-agent text chat.
useAiChatroutes human chat only toagents[0]; let other agents answer typed messages too (they already act and speak via the vision loop). - Richer agent behavior. Memory across decisions, agent-to-agent dialogue, and
actions beyond
move/turn. - User-to-user chat. Humans currently only see AI messages.
- Persistent profiles. Identities are ephemeral
nanoidids today. - Speech UI polish. The Chirp3 TTS path works; there are no per-message playback/status indicators in the chat UI.
- SSE → WebSocket + DO hibernation. A bidirectional transport with hibernation would cut idle cost and simplify egress; a bigger change — evaluate when needed.
- Re-add PWA.
next-pwawas removed (no service worker today); a Workers-compatible SW such as Serwist could restore offline/installable support.
- Dependency bump.
npm auditflags 19 issues, but all are dev/build-tooling transitive (eslint, playwright, wrangler, postcss toolchains) or non-exploitable in our usage (the produuidfinding needs abufargument we never pass) — none reach the deployed worker. Clear them on a deliberatenpm run deps:updatepass rather than a risky 28-packageaudit fix.