settings/SU-1: lift side-nav into top-level /settings layout #832
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#832
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?
User story
As an operator navigating settings, I want a single persistent side-nav covering every settings sub-page, so that I always know where I am and can jump between sections in one click without going through the hub.
Context
Today three nav patterns coexist: side-nav (
/settings/service), dropdown+tabs (/settings/agent-types), tab bar (/settings/labels,/settings/agent-config). The hub (apps/web/src/routes/settings.index.tsx, 1056 LOC) mixes 5 inline forms with 6 link-out cards. Operators can't scan it.Mature tools (GitHub, Linear, Stripe, Tailscale) all use one persistent side-nav grouped by domain, single editing surface per route.
Acceptance criteria
Layout
apps/web/src/routes/settings.tsxowns<AppShell>+ side-nav +<Outlet/>. Children stop rendering their own<AppShell>.≥sm, collapses to top scroll-snap strip on<sm(reuseSettingsSideNav).SettingsBreadcrumbbut back-link target is implicit (hub = General now).Hub becomes General
/settings/renders only: Billing mode, Design pipeline toggle, Global caveman mode, plus a thin "Quick links" strip.Tests
/settings/*route.Out of scope
References
apps/web/src/components/settings-side-nav.tsx— primitive to lift.apps/web/src/routes/settings.service.tsx— current side-nav consumer.apps/web/CLAUDE.md— mobile breakpoints + drawer pattern.