feat(web): promote Specs to top-level nav (/specs + /specs/:specName) (UI-3) #403
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!403
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "dev/399"
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?
Specs becomes a first-class top-nav entry with a dedicated list page (
/specs) and editor (/specs/$specName), replacing the old redirect to/planner?spec=.Test plan
/specsrenders the full spec list with "+ New spec" button and repo picker/specs/$specNamewith editor + toolbar@specs/name.mdand navigates to/planner/specsand/specs/$specName/specs/$specName(not inline?spec=)/specs?name=fooredirects to/specs/foo(legacy bookmark compat)/planner?spec=foostill renders the inline editor (backward compat)bun run qaclean (420 tests pass, biome clean)Closes #399
TanStack Router enforces search params on routes with validateSearch; add search={{ name: undefined }} on <Link to="/specs"> and search={{ spec: undefined }} on navigate({ to: "/planner" }) to satisfy the type checker. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>apps/web/src/routes/specs.$specName.tsx):<SpecEditor … agents={[]} />passes an empty agents list. Inplanner.index.tsxthe same component is called withagentNamesfetched from the API (useQuery({ queryKey: ["agents"], queryFn: fetchAgents })). With an empty list the agent@autocomplete in the full-page editor is silently broken. Fix: add the samefetchAgentsquery thatplanner.index.tsxuses and passagentNamesinstead of[].e2d7cc5b2aea5e7dd3d0apps/web/src/routes/specs.$specName.tsx,<SpecEditor … agents={[]} />): still unaddressed from round 1. The empty agents list silently breaks the@autocomplete in the full-page editor. Fix: adduseQuery({ queryKey: ["agents"], queryFn: fetchAgents })(same pattern asplanner.index.tsx) and passagentNamesto<SpecEditor agents={agentNames} />.Fixed. Added
useQuery({ queryKey: ["agents"], queryFn: fetchAgents })tospecs.$specName.tsxand passagentNamesto<SpecEditor>— same pattern asplanner.index.tsx.Round-1/2 finding addressed:
fetchAgentsis now wired inspecs.$specName.tsxandagentNamesis passed to<SpecEditor>. CI green. No further issues.