feat(pwa): replace top-nav with left sidebar app shell (#140) #161
No reviewers
Labels
No labels
area:auth
area:ci
area:db
area:infra
area:native
area:pwa
area:service
epic
feature
foundation
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
james/carol!161
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "140-app-shell-sidebar"
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 #140.
Summary
app/(app)/layout.tsx). Three grouped sections — Carol surfaces (Chat, Applications) · career data (Profile, Skills, Experience, Projects, Network) · Account — with thin dividers, brand row at the top, pinned footer.PATCH /api/settingsflow, ADR-0008) and a user card with avatar initials / name / email / logout button./chat(epic #47) and/applications(epic #2) render the existing<Placeholder>component.--bg,--surface,--accent,--text-*,--radius-*) used directly — no legacy--color-*bridge in new code, per ADR-0023.lucide-react(already inpackage.jsonfrom #7) supplies nav icons.Removed
Dead code from the old top-nav stack:
top-nav.tsx,theme-switcher.tsx,locale-picker.tsx,locale-picker-server.tsx(the top-nav was the sole caller of each).Out-of-scope notes
Test plan
npm run dev:/profile200 → sidebar renders,/profilelink hasdata-active="true" aria-current="page"./chat200 → placeholder renders ("epic #47"),/chatlink active./applications200 → placeholder renders ("epic #2").PATCH /api/settingsreturns 200 and setscarol_theme=dark.Set-Cookie: carol_session=cleared; next/profilerequest 302 →/login.nameset vs. nameless.🤖 Generated with Claude Code
Trivy (container image)
Threshold:
high· Total findings: 121 · At/above threshold: 16.27.0, 7.28.0, 8.5.0📊 Test coverage
Patch coverage: 0.0% (0/159 added lines) ⚠️ (soft target ≥ 80%)
Overall (
app/,lib/,db/, excluding UI per ADR-0019):Changed files in this PR (source only — tests excluded):
app/(app)/components/sidebar-nav.tsxapp/(app)/components/sidebar-theme-switcher.tsxapp/(app)/components/sidebar.tsxSoft thresholds per ADR-0019. Coverage is informational and does not block merge.