Files
kandev/docs/plans/settings-menu-default/plan.md
T
2026-09-04 12:44:45 +00:00

89 lines
3.3 KiB
Markdown

---
created: 2026-09-04
status: completed
requirements:
- REQ-UI-SETTINGS-MENU-DEFAULT-001
system_design:
- ../../specs/ui/system-design/settings-menu-default.md
legacy_specs: []
---
# Implementation Plan: Settings Menu Default
## Overview
Make Accordion tree the fallback Settings Menu Shape for devices without a
valid saved choice. Preserve explicit device-local choices, align localized
descriptions and code comments, and prove the behavior on desktop and phone.
## Scope
### In scope
- Change the device-local default and invalid-value fallback to Accordion tree.
- Preserve valid stored modes and the existing Appearance preview/save/discard
flow.
- Update the five supported locale descriptions and stale test documentation.
- Add focused unit and desktop/mobile browser evidence.
### Out of scope
- Migrating existing local storage values.
- Changing the three menu mode implementations or their responsive geometry.
- Adding account, backend, or database persistence.
## Technical approach
- Update `DEFAULT_SETTINGS_MENU_MODE` in
`apps/web/lib/settings/settings-menu-mode.ts`; the existing validated read
and UI-slice initialization will carry the fallback through the application.
- Update `apps/web/lib/settings/settings-menu-mode.test.ts` for missing,
malformed, and unsupported storage values.
- Update the Settings Menu Mode desktop spec, the phone Settings index proof,
and comments in helpers/specs that currently describe Flat list as default.
- Move the default wording from `settingsMenuFlatDescription` to
`settingsMenuAccordionDescription` in `en`, `pt-pt`, `zh-cn`, `zh-hk`, and
`zh-tw` settings catalogs.
## Tests
- `apps/web/lib/settings/settings-menu-mode.test.ts` maps to
`AC-UI-SETTINGS-MENU-DEFAULT-001.1`, `.2`, and `.3`.
- Existing settings tree tests continue to cover explicit mode behavior.
## E2E tests
- `apps/web/e2e/tests/settings/settings-menu-mode.spec.ts` maps to
`AC-UI-SETTINGS-MENU-DEFAULT-001.1` and `.2` on desktop.
- `apps/web/e2e/tests/settings/mobile-settings-index.spec.ts` maps to
`AC-UI-SETTINGS-MENU-DEFAULT-001.1` on phone and proves navigation remains
usable.
- The localized card descriptions are covered by the existing Settings Menu
Shape rendering path and catalog checks.
## Work orders
- [x] [Task 01: Make Accordion tree the default](task-01-accordion-default.md)
## Verification results
Completed.
- `pnpm --filter @kandev/web test -- --run lib/settings/settings-menu-mode.test.ts`: 8 tests passed.
- `pnpm --filter @kandev/web run typecheck`: passed.
- `pnpm --filter @kandev/web run lint`: passed.
- `pnpm --filter @kandev/web run i18n:check`: passed for all supported locales.
- `pnpm --filter @kandev/web run i18n:ratchet`: passed with 0 violations.
- `pnpm e2e:run --project chromium tests/settings/settings-menu-mode.spec.ts`: 5 tests passed.
- `pnpm e2e:run --project mobile-chrome tests/settings/mobile-settings-index.spec.ts`: 3 tests passed.
- `python3 scripts/lint-spec-files.test.py`: 30 tests passed.
- `python3 scripts/lint-spec-files.py --all`: passed.
- `git diff --check`: passed.
## Risks
- Existing browser tests may rely on a clean device-local storage context and
need explicit mode setup if they assert a particular branch shape.
- Locale catalog checks require all five supported translations to change
together.