feat(web): nav split — add Chat + Specs entries to WORK section (#1117) #1125
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/agent-hooks!1125
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "code-lead/1117"
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?
Closes #1117.
Summary
Foundation story for the workspace split (wsplit-1). Splits the single
Workspaceentry ingetNavSections()into two siblings — Chat(
/workspace,MessageSquare,nav-chat) and Specs (/specs,FileText,nav-specs) — and threads Paraglide strings throughmessages/{en,fr}.json. No route bodies move; sibling stories ownthat (wsplit-2 un-redirects
/specs, wsplit-5 rewritesroutes/workspace.index.tsx).nav-sections.tsx: WORK section now emits[board, chat, specs, flows]in that order. Chat keeps the
/workspacepath so deep links and theexisting chat SSE keep landing on a live route until wsplit-5.
messages/en.json+messages/fr.json: addsnav_sections_item_chatnav_sections_item_specs; existingnav_sections_item_workspacestays (deleted in wsplit-6).
nav-sections.test.tsx: WORK order assertion covers all four paths +testIds; new aria-current tests for
/workspaceand/specs;collapsed-rail aria-label checks for Chat + Specs; drawer asserts
both entries render with visible label spans + correct hrefs.
app-shell.test.tsx: mobile drawer assertion swapsnav-workspacefor
nav-chat+nav-specs.apps/web/CLAUDE.md: Navigation primitives summary updated toreflect the new WORK contents.
Test plan
just qa(typecheck + lint + format + 4-package test sweep +sql-layer-check + paraglide-check + i18n-string-check +
flow-schema-check) — all green.
bun x vitest run src/components/nav-sections.test.tsx src/components/app-shell.test.tsx— 25 tests pass under realChromium (vitest browser mode).
entries;
aria-current="page"highlights the right one on/workspaceand/specs.🤖 Generated with Claude Code
Review: feat(web): nav split — add Chat + Specs entries to WORK section (#1117)
APPROVED — clean, well-scoped foundation story. All AC met, CI green (6/6), mergeable.
AC verification
nav_sections_item_chat+nav_sections_item_specsadded toen.json+fr.jsoni18n-string-checkCI confirms correctnessnav_sections_item_workspacekey preserved (wsplit-6 deletes it)getNavSections()WORK emits[board(/board, nav-board), chat(/workspace, nav-chat), specs(/specs, nav-specs), flows(/board, nav-flows)]in orderaria-current="page"on Chat when/workspaceactive; on Specs when/specsactivearia-labelon Chat + Specs links; no label<span>nav-sections.test.tsx: order assertion + both testIds; new aria-current cases; collapsed-rail aria-label; drawer visibilityapp-shell.test.tsx: mobile drawer checksnav-chat+nav-specsCI
All 6 checks green on
d6f2375:qa / qa— umbrella ✅qa / qa-1— typecheck + lint + format + 4-pkg test sweep (2m57s) ✅qa / sql-layer-check✅qa / db-schema✅qa / i18n-string-check✅qa / dockerfile✅Code quality
nav-sections.tsx— the split from one item to two is minimal and legible. The inline comment explaining why Chat keeps/workspace(deep links + SSE sessions stay alive until wsplit-5) is exactly the right level of documentation for a stepping-stone change.FileTextadded cleanly alongside the existing Lucide imports.aria-currenttests for/workspaceand/specsare particularly valuable as regression guards for sibling stories.workspace, beforeflows) in both locale files; no stray whitespace or ordering churn.Minor observations (non-blocking)
/specsaria-current test ("aria-current='page' lights up the Specs entry when /specs is active") omits the brief explanatory comment present on the/workspacecounterpart. Trivially minor — the test name is self-documenting.docs/specs/workspace-split.mdis referenced in the issue but not yet present in main. Out of scope for this story; fine to land without it.Squash-merging now.