feat(dashboard): /config form skeleton — Form|JSON tabs, per-type panel #456

Closed
opened 2026-04-27 13:50:09 +00:00 by claude-desktop · 0 comments
Collaborator

User story

As an operator, I want a tabbed /config page (Form default, JSON fallback) with a left rail listing agent types and a right pane showing that type's settings, so that the curated form is the primary surface and Monaco is one click away when the form lacks a knob.

Why: Monaco alone is power-user-only. A form gives discoverability, guided defaults, and per-section organisation.

Acceptance criteria

UI

  • /config route has two tabs: Form (default) | JSON
  • Form tab: left rail = list of agent types from agents.json (selectable, current selection highlighted, "+ Add agent type" button at bottom — wires to Phase 4e)
  • Right pane: tab strip per section — Identity, Prompt, Routing, Skills, Thresholds, Container — empty placeholders for sections filled in by stories 4b/4c/4d
  • Saving from either tab uses the same PUT /config/agents endpoint
  • Switching from Form to JSON serialises any unsaved form edits into the JSON view (and vice versa for reverts)

Tests

  • Route renders without crash with the default agents.json
  • Tab switch preserves state
  • Add-agent-type button is present (handler can stub for now)

Out of scope

  • Filling in section panels (4b/4c/4d/4e)
  • Validation messages (mostly done by Monaco; form will get its own in 4b-4d)

References

  • Builds on Phase 3 endpoints (#455)
  • Phase 4b/4c/4d/4e flesh out section content
## User story As an operator, I want a tabbed `/config` page (Form default, JSON fallback) with a left rail listing agent types and a right pane showing that type's settings, so that the curated form is the primary surface and Monaco is one click away when the form lacks a knob. **Why:** Monaco alone is power-user-only. A form gives discoverability, guided defaults, and per-section organisation. ## Acceptance criteria ### UI - [ ] `/config` route has two tabs: **Form** (default) | **JSON** - [ ] Form tab: left rail = list of agent types from `agents.json` (selectable, current selection highlighted, "+ Add agent type" button at bottom — wires to Phase 4e) - [ ] Right pane: tab strip per section — Identity, Prompt, Routing, Skills, Thresholds, Container — empty placeholders for sections filled in by stories 4b/4c/4d - [ ] Saving from either tab uses the same `PUT /config/agents` endpoint - [ ] Switching from Form to JSON serialises any unsaved form edits into the JSON view (and vice versa for reverts) ### Tests - [ ] Route renders without crash with the default `agents.json` - [ ] Tab switch preserves state - [ ] Add-agent-type button is present (handler can stub for now) ## Out of scope - Filling in section panels (4b/4c/4d/4e) - Validation messages (mostly done by Monaco; form will get its own in 4b-4d) ## References - Builds on Phase 3 endpoints (`#455`) - Phase 4b/4c/4d/4e flesh out section content
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/claude-hooks#456
No description provided.