refactor(flow): drop operator-inbox UI, now lives on Y3R C4LL (#1483)

The operator inbox moved to the dashboard's Y3R C4LL tab in #1469
(◆ 1NB0X ◆ section, with per-message + mark-all read). FL0W goes back
to being the pure event firehose, so remove its now-redundant inbox UI:

- flow.js: drop the operatorInbox store, inboxAppendFromEvent,
  buildInboxListNode, renderInbox, the inbox-pill click wiring, and the
  onAnyEvent hook that fed them. The side panel was only used for the
  inbox flyout on this page, so drop Panel.bind() + the Panel import too.
- flow.html: remove the inbox pill, the offscreen inbox-section div, and
  the side-panel markup.
- flow.css: remove the .flow-pill* and .flow-inbox-headless rules.
- home.html: Flow tile desc → "live all-agents message firehose".
- docs/web-ui/dashboard.md: drop the FL0W 0PER4T0R 1NB0X section, point
  at Y3R C4LL, and fix the count-pill + /op-send descriptions.

The agent filter, sent→delivered collapse, compose box, and OS
notifications on operator-bound traffic are unaffected.
This commit is contained in:
iris 2026-06-07 19:42:23 +02:00 committed by mara
commit e949129e75
5 changed files with 27 additions and 183 deletions

View file

@ -1,8 +1,7 @@
/* /flow.html full-page chat
See docs/web-ui.md::FL0W page for the page-vs-pane rationale
and the inbox-flyout-as-pill ergonomics. Shape mirrors the
per-agent live page (frosted-glass header + composer, full-
viewport terminal). */
See docs/web-ui.md::FL0W page for the page-vs-pane rationale.
Shape mirrors the per-agent live page (frosted-glass header +
composer, full-viewport terminal). */
:root {
/* Approximate height of the flow chrome (tabbar + dashboard-chrome
@ -59,47 +58,6 @@ body.flow-shell .tabbar .tab.active.tab-link {
border-color: var(--purple-dim);
box-shadow: 0 -2px 12px -4px rgba(203, 166, 247, 0.4);
}
/* Inbox pill operator inbox flyout trigger. Sits right under the
header so it stays in the operator's gaze without crowding the
chat. Same shape as the agent page's header pills. */
.flow-pill {
position: fixed;
top: calc(var(--flow-header-h) + 0.8em);
right: 1em;
z-index: 25;
background: var(--bg-elev);
border: 1px solid var(--purple-dim);
color: var(--fg);
font-family: inherit;
font-size: 0.85em;
letter-spacing: 0.04em;
border-radius: 999px;
padding: 0.3em 0.8em;
display: inline-flex;
align-items: center;
gap: 0.5em;
cursor: pointer;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
transition: border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease;
}
.flow-pill:hover {
border-color: var(--purple);
color: var(--purple);
box-shadow: 0 0 12px -2px var(--purple);
}
.flow-pill-icon { font-size: 1.05em; line-height: 1; }
.flow-pill-label { color: var(--muted); }
.flow-pill-count {
background: rgba(250, 179, 135, 0.18);
color: var(--amber);
border-radius: 999px;
padding: 0 0.5em;
min-width: 1.6em;
text-align: center;
font-weight: bold;
font-variant-numeric: tabular-nums;
}
.flow-main {
position: absolute;
top: 0;
@ -159,11 +117,6 @@ body.flow-shell .flow-main-slim {
padding: 0.4em 1em;
}
/* Hidden inbox section on the flow page the renderInbox path
wants `#inbox-section` in the DOM (legacy contract), but we
surface the messages via the pill/flyout instead. */
.flow-inbox-headless { display: none !important; }
/* Agent filter (#1473): a select in the FL0W header narrows the
timeline to messages involving one agent. Non-matching rows get
`.flow-hidden`; the select reuses the journal-unit control look. */