feat(web): merge Specs route into Planner page (UC-1) #262
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#262
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
As an operator, I want to browse and edit
specs/*.mdfrom the Planner page, so that specs and the sessions that produce them live on one surface instead of forcing me to jump between tabs.Acceptance criteria
Planner sidebar
/app/plannergrows a Specs section alongside the existing sessions list. It reuses the same collapsible container shape so the pane's visual language stays consistent.specs/*.mdfile with name (specs/foo.md→foo), last-modified timestamp, and a smalltype:user-storybadge when a tracking issue is linked in the file's front-matter or detected heuristically from the body./app/specsroute owns (input + create-button flow) — lifted as a component so the Planner sidebar and the redirected route both reach it.Editor surface
SpecEditorcomponent into the Planner's middle column, replacing the chat transcript while the spec is active. A Back to session control returns to the previously-active session without re-fetching it.saveSpecmutation fromlib/foreman.ts; no change to the server endpoint.@specs/<name>.md, Breakdown posts to/breakdownwith{ repo, spec_path, tracking_issue? }and drops the task id into a toast.Route + redirect
/app/specsroute file is removed; the file-based router resolves the path via a shared 301-equivalent redirect to/app/planner?spec=<name>that preserves the?name=query param.validateSearchlearns thespec?: stringparam; when set, the spec editor mounts active on first render.Nav
components/app-shell.tsxdrops theSpecsentry from both the top-nav and bottom-tab arrays. Tests that assert nav labels are updated in the same commit.Tests
?spec=is absent.?spec=<name>and mounts the editor./app/specs?name=fooURL lands on/app/planner?spec=foowith the editor open.bun run typecheckpass with no new warnings.Out of scope
POST /breakdownor/foreman/*endpoints.SpecEditoror its tests — the component is kept, only its route is moved.References
specs/ui-consolidation.md§ UC-1 (Merge Specs into Planner)apps/web/src/routes/specs.tsx(deleted)apps/web/src/routes/planner.tsx,planner.index.tsx(extended)apps/web/src/components/app-shell.tsx(nav prune)apps/web/src/components/spec-editor/(moved, not changed)Dependencies