We spent the week tracking down every way a live session could feel stuck — diagnosed against running agents, not in theory — and fixed them at the source.
Streaming and recovery
- No more freezing on "thinking…". On a cold load with a quickly-submitted prompt, a turn's events could arrive before the session's local state was ready and get dropped — the server finished the turn while the UI sat frozen. The stream now builds that state on demand and backfills anything it missed, so the turn renders live.
- Heal on first connect. The session re-syncs on the very first stream connection, not just on reconnects, so the first prompt after opening a cold or paused agent streams immediately instead of hanging until a reload.
- Stall guard. If a turn is in flight but the view stops advancing, the session force-re-syncs the way a manual reload would — automatically, and only once the stream has actually gone quiet, so a healthy stream never flickers.
Waking from sleep
- Calm cold starts. A deploy or an idle pause means the next open has to wake your workspace. Instead of flashing "container not listening" and "failed to list files" errors during that window, you get a single self-dismissing "Waking your workspace…" toast while read requests quietly retry until it's ready. Genuinely dead workspaces still surface their error.
In-product polish
- Friendlier errors. The error screen leads with a plain-English summary and a Restart button; the full technical detail is tucked behind a "Show technical details" toggle, still copyable.
- Single-row composer. The agent and model selectors moved up onto the same row as attach and send. The send button picks up the flame accent, with a send-lift on hover and a soft pulse while the agent works — reduced-motion safe.
- Clarifying questions have choices again. When the agent asks a multiple-choice question, it now offers concrete options to tap instead of only a free-text box.
Why
An agent you watch from your phone has to feel solid. A frozen stream or a wall of wake-up errors makes it untrustable from across the room. These close those gaps.