Skip to content

Commit 341bddd

Browse files
committed
chore: document TODO johannesjo#44 (staged prompt visibility) and johannesjo#45 (wait_for_signal_done retry on network error)
1 parent 0603c00 commit 341bddd

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

TODOS.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,3 +279,22 @@ Implementation constraints:
279279
- retry success transitions `error -> pending -> ready` and allows `TerminalView` to spawn.
280280

281281
**Done when:** A `StartMCPServer` or hydration failure on restore surfaces a visible error on the affected task(s), does not leave `TerminalView` waiting forever, and provides a retry path that uses the same validated startup/hydration flow.
282+
283+
---
284+
285+
### 44. Staged coordinator prompt is not visible unless the user takes control — UX
286+
287+
**Files:** Coordinator notification UI (staged notification section, `src/components/`)
288+
**What's wrong:** When the coordinator is driving, the staged-notification section collapses. If a prompt has been queued for autofire and the user wants to see it, they must click "Take Control" to expand the section — which is a heavyweight action taken only for visibility. The user shouldn't need to claim control just to read what's pending.
289+
**Fix direction:** Show the staged notification (at minimum, the pending prompt text and countdown) in a read-only overlay or subtle indicator even while the coordinator is driving. The "Take Control" button can remain for actually interrupting, but visibility should not require it.
290+
**Related:** The coordinator's autofire already writes to the PTY when the timer fires regardless of agent state — Claude's readline layer will buffer the prompt if the agent is mid-response, exactly as a human typing ahead would. No idle-gate change is needed; only the visibility is the issue.
291+
**Done when:** A user can read the queued coordinator prompt and its countdown without taking control, and "Take Control" remains reserved for actually interrupting the coordinator.
292+
293+
---
294+
295+
### 45. `wait_for_signal_done` network errors silently stall the coordinator — P1
296+
297+
**Files:** `electron/mcp/coordinator.ts` (`waitForSignalDone`), `electron/remote/server.ts` (long-poll endpoint)
298+
**What's wrong:** `wait_for_signal_done` long-polls the local HTTP server. If the request fails with a network error (connection reset, transient local socket error), the MCP tool call rejects and the coordinator loses the completion signal — even though the sub-task already called `signal_done` successfully. The coordinator then stalls indefinitely, unaware the task is done, until a human intervenes.
299+
**Fix direction:** On network error, retry `wait_for_signal_done` automatically with a short backoff rather than propagating the rejection. Since `signal_done` writes durable state server-side (task status), a retry will immediately return the already-signaled result. Cap retries (e.g., 5 attempts over 30 s) and only surface a hard failure if the server is genuinely unreachable for an extended period. Alternatively, expose a `get_task` status poll as a fallback so the coordinator can recover by checking task state directly.
300+
**Done when:** A transient `fetch failed` on `wait_for_signal_done` is retried transparently and the coordinator receives the signal-done result without human intervention.

0 commit comments

Comments
 (0)