feat(settings): lift side-nav into top-level /settings layout (SU-1) #846

Merged
dev merged 1 commit from dev/832 into main 2026-05-04 21:08:15 +00:00
Collaborator

Persistent grouped side-nav in settings.tsx covers every /settings/* route. Children drop their own AppShell.

  • settings.tsx: owns AppShell + accordion side-nav (General / Agents / Forges / Data) + <Outlet/>
  • Hub (settings.index.tsx): trimmed to Billing, Design Pipeline, Cost Controls + Quick links; removes VoiceInput and WatchedRepos
  • All child routes remove their individual AppShell wrappers
  • settings.test.tsx: side-nav render + active item per URL
  • settings.voice-input.test.tsx: updated to assert hub no longer contains removed sections

Test plan

  • just qa clean: typecheck + biome + 921 tests pass
  • Navigate to each /settings/* URL — side-nav renders on all of them
  • Active item gets aria-current=page matching the URL
  • Hub shows only Billing Mode, Design Pipeline, Cost Controls, Quick links

Closes #832

Persistent grouped side-nav in `settings.tsx` covers every `/settings/*` route. Children drop their own `AppShell`. - `settings.tsx`: owns `AppShell` + accordion side-nav (General / Agents / Forges / Data) + `<Outlet/>` - Hub (`settings.index.tsx`): trimmed to Billing, Design Pipeline, Cost Controls + Quick links; removes VoiceInput and WatchedRepos - All child routes remove their individual `AppShell` wrappers - `settings.test.tsx`: side-nav render + active item per URL - `settings.voice-input.test.tsx`: updated to assert hub no longer contains removed sections ## Test plan - `just qa` clean: typecheck + biome + 921 tests pass - Navigate to each `/settings/*` URL — side-nav renders on all of them - Active item gets `aria-current=page` matching the URL - Hub shows only Billing Mode, Design Pipeline, Cost Controls, Quick links Closes #832
dev self-assigned this 2026-05-04 20:29:21 +00:00
feat(settings): lift side-nav into top-level /settings layout (SU-1)
All checks were successful
qa / dockerfile (pull_request) Successful in 17s
qa / qa-1 (pull_request) Successful in 5m1s
qa / qa (pull_request) Successful in 0s
586e2321ec
- settings.tsx: owns AppShell + grouped accordion side-nav + Outlet
- All child routes (service, appearance, labels, repos, secrets, agent-types, agent-config) drop their own AppShell
- settings.index.tsx: hub trimmed to Billing, Design Pipeline, Cost Controls + Quick links strip; removes WatchedRepos and VoiceInput sections
- settings.test.tsx: covers side-nav render + active item per URL
- settings.voice-input.test.tsx: updated to assert hub no longer contains voice/watched-repos sections

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
dev requested review from reviewer 2026-05-04 20:34:26 +00:00
reviewer approved these changes 2026-05-04 20:39:22 +00:00
reviewer left a comment

CI green (qa, qa-1, dockerfile). All AC met.

Deferred items (Voice nav item, Per-agent secrets/Admin nav items) correctly absent — SU-2/SU-3 scope.

settings.secrets.tsx uses a bare fragment wrapper instead of a <div> like the other child routes — harmless but slightly inconsistent.

CI green (qa, qa-1, dockerfile). All AC met. Deferred items (Voice nav item, Per-agent secrets/Admin nav items) correctly absent — SU-2/SU-3 scope. `settings.secrets.tsx` uses a bare fragment wrapper instead of a `<div>` like the other child routes — harmless but slightly inconsistent.
Collaborator

PR has conflicts — please rebase on main before merging.

PR has conflicts — please rebase on main before merging.
dev force-pushed dev/832 from 586e2321ec
All checks were successful
qa / dockerfile (pull_request) Successful in 17s
qa / qa-1 (pull_request) Successful in 5m1s
qa / qa (pull_request) Successful in 0s
to 91d9bc6ded
All checks were successful
qa / dockerfile (pull_request) Successful in 19s
qa / qa-1 (pull_request) Successful in 6m14s
qa / qa (pull_request) Successful in 0s
2026-05-04 21:01:53 +00:00
Compare
dev merged commit 9017bad8b2 into main 2026-05-04 21:08:15 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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!846
No description provided.