diff --git a/packages/collab-web/CHANGELOG.md b/packages/collab-web/CHANGELOG.md index 35bbe08f4..b3a8d34fa 100644 --- a/packages/collab-web/CHANGELOG.md +++ b/packages/collab-web/CHANGELOG.md @@ -4,7 +4,7 @@ ### Fixed -- Fixed the guest rendering idle while the host agent is running (spinner vanishing mid-turn after a reconnect dropped `agent_start`): host `state` frames are now authoritative for liveness in both directions, and an idle report clears tool cards pinned by a dropped `tool_execution_end`. +- Fixed the guest rendering idle while the host agent is running (spinner vanishing mid-turn after a reconnect dropped `agent_start`): host `state` frames are now authoritative for liveness in both directions, and an idle report clears tool cards pinned by a dropped `tool_execution_end` ([#6990](https://github.com/can1357/oh-my-pi/pull/6990) by [@metaphorics](https://github.com/metaphorics)). ## [17.1.0] - 2026-07-24 diff --git a/packages/collab-web/src/lib/client.ts b/packages/collab-web/src/lib/client.ts index 0ab8e0e30..6295e28a7 100644 --- a/packages/collab-web/src/lib/client.ts +++ b/packages/collab-web/src/lib/client.ts @@ -336,9 +336,8 @@ export class GuestClient { this.#state = frame.state; // Host state is authoritative for liveness in both directions: the // payload is built at fire time, so `isStreaming` is never stale. - // This is the only path that recovers a stuck-idle guest — a dropped - // `agent_start` (most often a mid-stream reconnect) otherwise leaves - // `#working` false forever, since nothing else sets it true. + // This covers a connected guest that misses the discrete `agent_start` + // without receiving a new `welcome` (for example, mid-stream). this.#working = frame.state.isStreaming; if (!frame.state.isStreaming) { // Host idle implies no tool can be running, so clear any card