3.0 KiB
3.0 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec |
|---|---|---|---|---|---|---|
| 01-disable-default | Centralize portable user-setting defaults | done | 1 | plan.md | ../../specs/office/unread-divider.md, ../../specs/ui/transcript-navigation-settings.md |
Task 01: Centralize portable user-setting defaults
Acceptance
- Missing
unread_dividerandshow_transcript_auto_scroll_controlvalues resolve tofalse; explicit stored values remain unchanged. - The backend has one default constructor and the frontend has one default-state factory plus one wire-to-store mapper.
- Boot/HTTP, WebSocket, and settings-save responses use the common mapper.
- Shared E2E setup remains a deliberate test baseline, and behavior specs opt into the preferences they exercise.
- Backend/frontend contract tests prove missing-value defaults; desktop/mobile settings tests continue to prove explicit-value persistence.
Files likely touched
apps/backend/internal/user/store/sqlite.goapps/backend/internal/user/store/sqlite_test.goapps/web/lib/ssr/user-settings.tsapps/web/lib/ssr/user-settings.test.tsapps/web/lib/state/slices/settings/settings-slice.tsapps/web/lib/ws/handlers/users.tsapps/web/hooks/use-user-display-settings.tsapps/web/components/settings/editors-settings-state.tsxapps/web/e2e/tests/task/unread-divider-preference.spec.tsapps/web/e2e/tests/task/mobile-unread-divider-preference.spec.tsapps/web/e2e/tests/chat/unread-divider.spec.tsapps/web/e2e/tests/chat/mobile-unread-divider.spec.ts
TDD sequence
- Add a live-update regression proving omitted fields preserve the current normalized value and run it red.
- Consolidate backend defaults and frontend mapping while keeping focused default and explicit-value tests green.
- Remove collateral fixture/spec changes and keep feature preconditions explicit in behavior tests.
Verification
cd apps/backend && go test ./internal/user/store -run 'TestScanUserSettingsUnreadDividerDefault'cd apps && pnpm --filter @kandev/web test -- --run lib/ssr/user-settings.test.tscd apps && pnpm --filter @kandev/web test -- --run lib/ws/handlers/users.test.tscd apps && pnpm --filter @kandev/web test -- --run hooks/use-user-display-settings.test.tscd apps/web && pnpm e2e:run tests/task/unread-divider-preference.spec.ts -- --project=chromium --project=mobile-chromecd apps/web && pnpm e2e:run tests/chat/unread-divider.spec.ts tests/chat/mobile-unread-divider.spec.ts -- --project=chromium --project=mobile-chrome
Results
- Backend focused defaults: 7 tests passed.
- Frontend mapper, live-update, carry-forward, and settings components: 48 tests passed.
- Frontend typecheck and targeted ESLint: passed.
- Managed production-build Playwright run: 7 desktop/mobile tests passed.
- Public docs validation: 58 validator tests passed; 41 published pages validated.
Parallelism
Sequential. The backend and frontend defaults share one persisted contract and the E2E tests depend on both layers.