feat(client): rename Account to Settings + pin to sidebar bottom (#271) #274

Merged
james merged 1 commit from 271-settings-sidebar-bottom into main 2026-06-24 12:44:20 +00:00
Owner

Summary

  • Drop the "Account" entry (and its preceding divider) from the scrollable NAV_ITEMS list in apps/client/lib/nav/items.ts.
  • Render a new pinned SettingsRow in apps/client/lib/nav/Sidebar.tsx in the footer area, immediately above the user card and outside the ScrollView. Visually identical to a regular nav row (same icon, same active-state treatment, same Pressable shape) — but it doesn't scroll with the list.
  • Rename nav.accountnav.settings ("Settings") in packages/i18n/messages/en.json. The account.* page namespace is untouched; only the sidebar nav label moves.
  • Sidebar tests (apps/client/tests/navItems.test.ts) updated to reflect the new shape: /account is no longer in the nav list, and there is now one divider between two groups instead of two dividers between three.

Route is unchanged at /account — only the label and position move. The active highlight still fires when on /account (the SettingsRow reads pathname and applies the same accent-subtle background + accent left border as a regular nav row).

Test plan

  • pnpm install --frozen-lockfile
  • pnpm -F @carol/client typecheck
  • pnpm -F @carol/client lint
  • pnpm -F @carol/client test (16 files, 106 tests passing)
  • pnpm -F @carol/client export:web (/account route still exports)
  • pnpm -F @carol/api typecheck
  • Visual: load the app on web, confirm Settings sits in the sidebar footer above the user card and tapping it lands on /account.
  • Visual: collapse the sidebar — Settings renders icon-only, centred, between the scrolled list and the user card.
  • Visual: navigate to /account, confirm the Settings row picks up the active highlight (accent-subtle bg + accent left border).
  • Visual: open the mobile drawer (narrow web) — same layout, Settings sits between the nav list and the user card.

Closes #271.

## Summary - Drop the "Account" entry (and its preceding divider) from the scrollable `NAV_ITEMS` list in `apps/client/lib/nav/items.ts`. - Render a new pinned `SettingsRow` in `apps/client/lib/nav/Sidebar.tsx` in the footer area, immediately above the user card and outside the `ScrollView`. Visually identical to a regular nav row (same icon, same active-state treatment, same `Pressable` shape) — but it doesn't scroll with the list. - Rename `nav.account` → `nav.settings` (`"Settings"`) in `packages/i18n/messages/en.json`. The `account.*` page namespace is untouched; only the sidebar nav label moves. - Sidebar tests (`apps/client/tests/navItems.test.ts`) updated to reflect the new shape: `/account` is no longer in the nav list, and there is now one divider between two groups instead of two dividers between three. Route is unchanged at `/account` — only the label and position move. The active highlight still fires when on `/account` (the SettingsRow reads `pathname` and applies the same accent-subtle background + accent left border as a regular nav row). ## Test plan - [x] `pnpm install --frozen-lockfile` - [x] `pnpm -F @carol/client typecheck` - [x] `pnpm -F @carol/client lint` - [x] `pnpm -F @carol/client test` (16 files, 106 tests passing) - [x] `pnpm -F @carol/client export:web` (`/account` route still exports) - [x] `pnpm -F @carol/api typecheck` - [ ] Visual: load the app on web, confirm Settings sits in the sidebar footer above the user card and tapping it lands on `/account`. - [ ] Visual: collapse the sidebar — Settings renders icon-only, centred, between the scrolled list and the user card. - [ ] Visual: navigate to `/account`, confirm the Settings row picks up the active highlight (accent-subtle bg + accent left border). - [ ] Visual: open the mobile drawer (narrow web) — same layout, Settings sits between the nav list and the user card. Closes #271.
feat(client): rename Account to Settings + pin to sidebar bottom (#271)
Some checks failed
Commits / Conventional Commits (pull_request) Successful in 8s
PR / OSV-Scanner (pull_request) Successful in 1m35s
PR / OpenAPI (pull_request) Successful in 2m11s
PR / pnpm audit (pull_request) Successful in 2m16s
PR / Client (web export smoke) (pull_request) Successful in 2m26s
PR / Static analysis (pull_request) Successful in 2m26s
PR / Package age policy (soft) (pull_request) Successful in 20s
PR / Typecheck (pull_request) Successful in 3m4s
Secrets / gitleaks (pull_request) Successful in 36s
PR / Lint (pull_request) Successful in 3m10s
PR / Build (pull_request) Successful in 3m15s
PR / Test (sqlite) (pull_request) Successful in 4m9s
PR / Test (postgres) (pull_request) Failing after 4m43s
PR / Coverage (soft) (pull_request) Successful in 2m41s
PR / Trivy (image) (pull_request) Successful in 3m19s
a41efded8f
Drop the "Account" entry (and its preceding divider) from the
scrollable NAV_ITEMS list and render a pinned "Settings" row in the
sidebar's footer area, immediately above the user card. The row
styles identically to a regular nav row — same icon, same active
treatment, same Pressable shape — but it sits outside the ScrollView
so it's always reachable without scrolling. The route is unchanged at
`/account`; only the label and position move.

i18n: rename `nav.account` → `nav.settings` ("Settings"). Sidebar
tests updated to drop `/account` from the expected hrefs and group
shape.

Refs #271.

📊 Test coverage

Patch coverage: no testable lines changed.

Overall (app/, lib/, db/, excluding UI per ADR-0019):

Metric Value Soft target
Lines 81.6% ≥ 50%
Branches 72.8% ⚠️ ≥ 75%
Functions 91.1% informational

Soft thresholds per ADR-0019. Coverage is informational and does not block merge.

<!-- coverage-comment --> ## 📊 Test coverage **Patch coverage:** no testable lines changed. **Overall** (`app/`, `lib/`, `db/`, excluding UI per ADR-0019): | Metric | Value | Soft target | |---|---|---| | Lines | 81.6% ✅ | ≥ 50% | | Branches | 72.8% ⚠️ | ≥ 75% | | Functions | 91.1% | informational | Soft thresholds per [ADR-0019](docs/adr/0019-coverage-soft-targets.md). Coverage is informational and does not block merge.
james merged commit be9de11411 into main 2026-06-24 12:44:20 +00:00
james deleted branch 271-settings-sidebar-bottom 2026-06-24 12:44:20 +00:00
Sign in to join this conversation.
No description provided.