From 2c317c11060698a3dc07fec15479070a4fc985b6 Mon Sep 17 00:00:00 2001 From: iris Date: Thu, 2 Jul 2026 12:14:11 +0200 Subject: [PATCH] docs(web-ui/agent): update inbox flyout to reflect unread-only filter The broker's recent_for was fixed to filter acked_at IS NULL (commit 526482809190398773a755809be1575e7a32abba), so the agent inbox flyout now shows only unread messages and empties after 'mark all read'. The agent.md prose still described the old behaviour ('shows the most-recent N regardless of ack state; the list stays put after drain'). Update it to match: unread-only, list empties on reload after drain. --- docs/web-ui/agent.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/web-ui/agent.md b/docs/web-ui/agent.md index bfe13b62..f37869e5 100644 --- a/docs/web-ui/agent.md +++ b/docs/web-ui/agent.md @@ -142,17 +142,16 @@ prompt" below). **Side panel** (slide-in from right): singleton shared with the dashboard's side panel shape. Carries inbox and loose-ends flyouts (opened via the header pills) as well as long content (file previews, -diffs, journald logs). Inbox flyout: last 30 messages addressed to -this agent (`AgentRequest::Recent { limit: 30 }`); reply messages -indented with `↳ reply ·` in amber. A `✓ mark all read` button -appears in the flyout header when the inbox is non-empty; +diffs, journald logs). Inbox flyout: unread messages addressed to +this agent (`acked_at IS NULL`, newest-first, up to 30); reply +messages indented with `↳ reply ·` in amber. A `✓ mark all read` +button appears in the flyout header when the inbox is non-empty; clicking it confirms then POSTs cross-origin to the core dashboard's `POST /api/agent/{name}/mark-all-read` — all pending messages for this agent are acked, the harness won't receive wake-prompts for them. A `{ marked: N }` pill surfaces the count. -The displayed message list stays put (it shows the most-recent N -regardless of ack state); the unread badge on the next turn-start -will reflect zero. Loose-ends flyout: questions, +After the drain the inbox list empties on reload (the filter is +`acked_at IS NULL`, so drained messages disappear). Loose-ends flyout: questions, approvals, and reminders pending against this agent (`GET /api/loose-ends`); question rows carry an inline answer form that POSTs cross-origin to the core dashboard's `/answer-question/{id}` so the operator answers