Clear terminal attention when the user views the terminal

A finished or input-waiting terminal shows an attention indicator. The
focus heartbeat already asked the daemon to clear it, but the clear was a
no-op: it guarded on activity state === "attention", while the real
tracker encodes attention as state "idle" plus an attentionReason
("finished" / "needs_input"). The state is never literally "attention",
so the indicator only ever cleared when the agent started a new turn.

The worker proxy also had no way to reach the tracker's clearAttention():
it only spoke setActivity, and setActivity("idle") is short-circuited by
the tracker while a "finished" reason is set. Add a clearAttention worker
message that calls the existing manager.clearTerminalAttention(), and
guard both clear paths on attentionReason instead of state.
This commit is contained in:
Mohamed Boudra
2026-06-15 14:31:37 +07:00
parent 713a042dc5
commit e84a3ff574
4 changed files with 55 additions and 12 deletions
@@ -258,6 +258,12 @@ async function handleRequest(message: TerminalWorkerRequest): Promise<void> {
return;
}
case "clearAttention": {
await manager.clearTerminalAttention(message.terminalId);
sendToParent({ type: "response", requestId: message.requestId, ok: true });
return;
}
case "killTerminal": {
const session = manager.getTerminal(message.terminalId);
const cwd = session?.cwd;