9158a488f7
The reader funnels both chat and high-volume _sbx:data terminal frames through one channel, and the UI loop redraws after handling a single frame per turn — so on a viewer's side each chat message queued behind hundreds of sandbox frames only surfaced one-per-redraw, making chat appear to buffer/stall whenever a shared shell was scrolling output. Drain a bounded burst (up to 256) of ready frames per turn via a new drain_ready() helper, keeping chat latency bounded no matter how hard the sandbox is streaming. Add regression tests covering FIFO/cap behavior and chat surfacing within a few turns under flood. Also add connect.sh: a join helper with a default port that keeps the room password in RAM only (no-echo prompt or env var, never written to disk). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>