agent: scaffold Preact rewrite, Header + StatusChips first slice

Adds a new Preact/TSX build alongside the existing app.js (esbuild
entry `main.tsx` → dist/static/main.{js,css}, same jsx/tsconfig shape
swarm-ui already uses) and the first real page slice: Header +
StatusChips, composing the Badge/Dropdown components from the prior
commit's PR. Not wired into index.html yet — app.js keeps rendering
the live page untouched while this fills in component by component
(state polling, the live SSE stream, login flow, inbox/todos, term
input) in follow-up commits on this branch.

StatusChips folds the model/effort pickers and pause into the badge
row itself (each badge IS its own control), replacing the old
overflow-menu-only pickers — the concrete fix the design guide already
names this page as needing. Presentational only for now (props, not
live data) so it's reviewable against sample data before being wired
to /api/state.

Screenshot-verified against the real agent.css/theme.css/colors.css
(headless chromium, sample data) — renders correctly.

Builds + tsc --noEmit clean.
This commit is contained in:
iris 2026-08-28 01:54:22 +02:00
commit 93b34ebb9b
11 changed files with 334 additions and 3 deletions

View file

@ -0,0 +1,16 @@
/* <StatusChips> layout. Colours all come from Badge/Dropdown's own CSS
(@hive/shared) nothing here overrides a base16 slot. */
.status-chips {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5em;
}
.status-chip-anchor {
position: relative;
display: inline-block;
}
.status-chips-last-turn {
font-size: 0.8em;
color: var(--muted);
}