parent
bf81241744
commit
9545151b8d
10 changed files with 62 additions and 112 deletions
|
|
@ -13,19 +13,16 @@ panel for flyouts and long content.
|
|||
Preact component tree (`Header.tsx` + `StatusChips.tsx` +
|
||||
`MetaNav.tsx` + `HeaderPill.tsx`, wired together in `Root.tsx`) — see
|
||||
`frontend/packages/agent/src/components/`. This
|
||||
section describes the rendered result, not the DOM ids the pre-Preact
|
||||
page used (there are none any more — every element is component
|
||||
output, not something a selector reaches by id).
|
||||
section describes the rendered result, not DOM ids — every element is
|
||||
Preact component output, not something a selector reaches by id.
|
||||
|
||||
**Fixed-overlay header** (`<header class="agent-header">`): frosted
|
||||
glass — `backdrop-filter: blur` lets scrolled terminal rows show
|
||||
through. Measures its own rendered height via `ResizeObserver`
|
||||
(`Header.tsx`) and writes it to a CSS custom property the content
|
||||
below reads for its offset — `agent.css` used to bake in a fixed `6em`
|
||||
guess, which silently broke (content overlapping the header) the
|
||||
moment any row of badges/pills wrapped onto an extra line at some
|
||||
viewport width; measuring instead of guessing closes that bug class
|
||||
structurally rather than for one specific trigger. Two columns:
|
||||
below reads for its offset, so content never overlaps the header
|
||||
regardless of how many rows of badges/pills wrap onto an extra line
|
||||
at a given viewport width. Two columns:
|
||||
|
||||
<!-- vale write-good.Passive = NO -->
|
||||
- **Agent icon** (`<img class="agent-icon">`): fixed-size square
|
||||
|
|
@ -45,10 +42,9 @@ structurally rather than for one specific trigger. Two columns:
|
|||
`ResizeObserver` measurement above exists to catch even when a
|
||||
layout choice reintroduces it).
|
||||
- **Pills cluster** (`.agent-header-pills`, right-aligned): status
|
||||
badges (`StatusChips.tsx`) and flyout triggers together in one row —
|
||||
a deliberate choice (not the historical default) so the header reads
|
||||
as one identity zone + one status/actions zone rather than multiple
|
||||
separate clusters:
|
||||
badges (`StatusChips.tsx`) and flyout triggers together in one row,
|
||||
so the header reads as one identity zone + one status/actions zone
|
||||
rather than multiple separate clusters:
|
||||
- **Alive badge**: `● alive` (green) / `⊘ rate limited` (red) /
|
||||
`◌ needs login` / `◌ logging in` / `○ offline` / `… connecting`.
|
||||
- **State badge**: `💤 idle` / `🧠 thinking` / `📦 compacting` /
|
||||
|
|
@ -89,23 +85,14 @@ structurally rather than for one specific trigger. Two columns:
|
|||
(`GET /api/state`'s `links` field) also feeds
|
||||
`DashboardState.links` for the dashboard card's icon strip —
|
||||
`agent_links()` in hive-agent is the single source of truth for
|
||||
both. No separate overflow (`⋯`) menu exists any more — it used
|
||||
to hold exactly this dashboard link plus a rebuild-container action
|
||||
(mara: "remove rebuild button, move link to
|
||||
dashboards into links menu") — rebuild had no real discoverability
|
||||
need of its own (the dashboard's own R3BU1LD button already covers
|
||||
it) so it's gone outright, and the dashboard link moved here,
|
||||
leaving nothing to justify a separate menu. Everything else that
|
||||
used to live in the old overflow menu (model/effort pickers,
|
||||
new-session, logout) already had a better home before this: pickers
|
||||
are real badges above, and `/new-session` / `/logout` are typed
|
||||
slash commands with their own type-twice confirm (see below) — a
|
||||
modal doesn't fit a text-input flow, and burying rare-but-important
|
||||
actions in one flat menu was the design guide's own named
|
||||
anti-example.
|
||||
- No header cancel-turn button any more — `/cancel` (slash command,
|
||||
below) is the only path; the turn-loop state badge already shows
|
||||
`thinking` as the discoverability cue.
|
||||
both. No overflow (`⋯`) menu exists: the dashboard link lives in
|
||||
this 🔗 popover; the model/effort pickers are real badges above;
|
||||
and `/new-session` / `/logout` are typed slash commands with their
|
||||
own type-twice confirm (see below) — a modal doesn't fit a
|
||||
text-input flow.
|
||||
- `/cancel` (slash command, below) is the only cancel-turn path; the
|
||||
turn-loop state badge already shows `thinking` as the
|
||||
discoverability cue.
|
||||
<!-- vale write-good.Passive = YES -->
|
||||
|
||||
Values throughout come from `GET /api/state`'s cold-load snapshot,
|
||||
|
|
@ -179,11 +166,7 @@ from the harness-local store (same effect as `cancel_loose_end(kind:
|
|||
"todo")`, just from the web UI instead of the agent's own tool calls).
|
||||
|
||||
The todos flyout is the only per-agent flyout — there is no separate
|
||||
"loose-ends" or "tasks" list. There used to be a note here about the
|
||||
`ask`/`answer` MCP tools having no inline answer form in this
|
||||
terminal — that whole mechanism (the tools, the dashboard's questions
|
||||
pane, the wire protocol) no longer exists, so there's
|
||||
nothing left to render a form for.
|
||||
"loose-ends" or "tasks" list.
|
||||
|
||||
## Live view
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue