feat(dashboard): Agents UI redesign — recovery + inline edits + drawer #554
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!554
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "restore/merged-ui"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Two-part PR:
1. Recovery. Restores the merged Agents+Config page that was deployed live but had never been committed (existed only in operator's stash, accidentally dropped during M26 work). Spec:
docs/specs/agents-ui-redesign.md. Auth-bridge fix (guardMutatingfalls back to OAuth session.account_login when Remote-User absent) closes the 403 storm that was masking the broken state.2. UI redesign. Per the spec, four phases:
AgentsTreerail +TypePanemaster-detail with one scrolling list ofTypeGroupCards. Each card has a header (name + tier-1 chip + edit button + instance count) and an inline-collapsible body containing the InstancesTable. Type editing pulls a slide-in drawer from the right.SectionPaneno longer renders horizontal tabs. Each section is a<details>block in one scrollable column. Provider section open by default (post-M26 most-edited surface).▼ Advbutton → expands the row to inline textareas for prompt_appendix + notes. The per-instance edit modal is replaced; create-instance flow keeps the slim modal (name + type).Net change
~600 lines deleted (AgentsTree, TypePane, InstancePane, jsonText state, OUTER_TAB_CLASS, FleetHealthStrip imports, SkillViewer fn). Page is now: header + Save + scrolling list of type cards. Drawer overlays for type editing. Inline editors for instance overrides.
Commits
Test plan
just typecheckclean across all 4 packages.Advto set a prompt appendix, save persists.agents.json.🤖 Generated with Claude Code
Recovers UI work that was deployed live before today's M26 work but had never been committed (existed only in operator's stash). M26 features ported into the recovered architecture: UI architecture (recovered from pre-M26 stash): - `routes/config.tsx` removed; content lives at `apps/web/src/features/agents/sections.tsx` and is hosted by `routes/agents.tsx`. The dashboard's top-nav now has a single Agents entry instead of separate Agents + Config. - TypeRail + SectionPane drive per-type editing with section tabs (Identity / Prompt / Routing / Skills / Thresholds / Provider / Container). Per-instance overrides edited inline on the same page. M26 features ported into the merged page: - New "Provider" section tab exposes the M26-2 chain editor (1–3 tiers, ↑/↓ reorder, +/× add/remove, validation banner) plus M26-5 token budget input + M26-1 failover policy block. - ProviderSection consumes the existing `ModelCombobox` from `sections.tsx` (catalogue passed via `modelsByProvider` prop) so per-tier model pickers autocomplete from `/agents/models?provider=`. - InstancesTable gains a Tier column with the M26-3 TierBadge: tier glyph, active model, cooldown countdown (30s setInterval), reset/pause/unpause buttons, M26-7 ⛽ icon for `token_budget`. Auth fix: - `guardMutating` now falls back to `c.get("session")?.account_login` when the legacy Remote-User header is absent. OAuth-only deployments (no Authelia in front) were 403'ing every guarded GET like `/config/agents`. Both auth surfaces remain valid; header takes priority for legacy proxy deployments. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>9017c2c4266d17b414796d17b414794c4d71f28f