From a94a3eac45ca5ea10c5b3aa9f0c69bd8253e372f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sat, 9 May 2026 18:08:25 +0200 Subject: [PATCH] docs(planning): record phase-7 pre-release verification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - typecheck/lint/test/format clean (modulo the chart test file blocked by Marc constraint — pre-existing) - integration suite green after the test-isolation fix in the preceding commit (10/10 consecutive runs) - build + e2e blocked by the documented Node-25 Reflect.get bug on this workstation; CI Docker (Node 22) is canonical and Phase-3 already records 41/41 e2e specs green there - format sweep on .planning/*.md + e2e/measurement-flow.spec.ts to clear the warnings Phase 6 reconcile listed as pre-existing-out-of-scope Co-Authored-By: Claude Opus 4.7 (1M context) --- .planning/STATE.md | 32 ++++++------- .planning/phase-3-report.md | 2 +- .planning/phase-4-report.md | 4 +- .planning/phase-5-report.md | 84 +++++++++++++++++----------------- .planning/phase-7-report.md | 88 ++++++++++++++++++++++++++++++++++++ e2e/measurement-flow.spec.ts | 4 +- 6 files changed, 149 insertions(+), 65 deletions(-) create mode 100644 .planning/phase-7-report.md diff --git a/.planning/STATE.md b/.planning/STATE.md index 2bbcdbcbf..0af5f916a 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -1,7 +1,7 @@ # v1.5 marathon — state log -Status: phase-2-done -Last update: 2026-05-09T16:10:00+02:00 +Status: phase-7-done +Last update: 2026-05-09T18:15:00+02:00 > Previous milestone: see `docs/audit/v146-summary.md` (v1.4.6 marathon). > Codex-OAuth iteration v1.4.7 → v1.4.13 landed in CHANGELOG between @@ -87,17 +87,14 @@ Last update: 2026-05-09T16:10:00+02:00 `docs/audit/v15-ux-friction.md` - [x] CRITICAL/HIGH triage — 6 inline fixes; LOW items deferred to v1.5.1 with backlog in the audit doc -- [x] v1.4.6 deferred polish picked up: - - trend-arrow direction-as-good metric-aware (`directionSentiment` - prop, `up-good`/`up-bad`/`neutral`) - - "Remove saved AI key" button with AlertDialog confirmation - - semantic `--success`/`--warning`/`--info` tokens, migrated - feedback BUG / published badges, medication status, AI section - connection badges (charts untouched) +- [x] v1.4.6 deferred polish picked up: - trend-arrow direction-as-good metric-aware (`directionSentiment` + prop, `up-good`/`up-bad`/`neutral`) - "Remove saved AI key" button with AlertDialog confirmation - semantic `--success`/`--warning`/`--info` tokens, migrated + feedback BUG / published badges, medication status, AI section + connection badges (charts untouched) - [x] +2 inline friction items: dashboard quick-add menu disambiguation (`Add` collision from phase-3) and `/admin` overview nav landmark - Result: ok / commits `987ce0d 38f12df 788c8ad 569300e e3a6899 - 5ffe750 65cfb27` — `pnpm typecheck && pnpm lint && pnpm test` green +5ffe750 65cfb27` — `pnpm typecheck && pnpm lint && pnpm test` green (97 files / 752 tests) - Detailed report: `.planning/phase-5-report.md` @@ -111,13 +108,14 @@ Last update: 2026-05-09T16:10:00+02:00 ## Phase 7 — Pre-release verification -- [ ] pnpm typecheck -- [ ] pnpm lint -- [ ] pnpm format:check -- [ ] pnpm test -- [ ] pnpm test:integration -- [ ] pnpm build (Node-25 bug documented if hit) -- [ ] pnpm e2e +- [x] pnpm typecheck — clean +- [x] pnpm lint — 0 errors / 12 pre-existing warnings +- [x] pnpm format:check — clean except `src/components/charts/__tests__/trend-card.test.tsx` (Marc constraint forbids editing charts) +- [x] pnpm test — 97 files / 754 tests green +- [x] pnpm test:integration — 5 files / 11 tests green; flake (mock-leak between `admin-data-wipe.test.ts` + `idempotency-replay.test.ts` under `isolate: false`) fixed via shared `tests/integration/mock-next-headers.ts`; 10/10 consecutive runs green +- [-] pnpm build — Node-25 `Reflect.get` private-member bug; CI Docker (Node 22) canonical +- [-] pnpm e2e — same Node-25 bug also affects `next dev`, so the local web-server start fails; CI runs green on Node 22 per Phase-3 report +- Result: ok / commits TBD (integration flake fix + format sweep) - Detailed report: `.planning/phase-7-report.md` ## Phase 8 — Release v1.5.0 diff --git a/.planning/phase-3-report.md b/.planning/phase-3-report.md index e800bfda4..cab9b67e4 100644 --- a/.planning/phase-3-report.md +++ b/.planning/phase-3-report.md @@ -23,4 +23,4 @@ Built with Node 22 (Node 25 has the `Cannot read private member #state` regressi ## CI -`.github/workflows/e2e.yml` already supplies the env block we need (DATABASE_URL, ENCRYPTION_KEYS, AUTH_RP_*) and runs `next build` before `playwright test`. No workflow changes were necessary. +`.github/workflows/e2e.yml` already supplies the env block we need (DATABASE*URL, ENCRYPTION_KEYS, AUTH_RP*\*) and runs `next build` before `playwright test`. No workflow changes were necessary. diff --git a/.planning/phase-4-report.md b/.planning/phase-4-report.md index ab281673c..bf05d30de 100644 --- a/.planning/phase-4-report.md +++ b/.planning/phase-4-report.md @@ -27,13 +27,13 @@ eagerly). `/admin` and `/settings/integrations` are lean (~290 KiB JS, ## Wins implemented inline 1. **`bb2b1de` — `perf(insights): defer Recharts ScatterChart imports - via next/dynamic`** — moves the seven recharts symbols (ScatterChart, +via next/dynamic`** — moves the seven recharts symbols (ScatterChart, Scatter, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer) off the eager imports of `src/app/insights/page.tsx` and onto per-symbol `next/dynamic({ ssr: false })`. Same shape as the existing HealthChart/MoodChart pattern in the same file. 2. **`519e36e` — `perf(dashboard): skip checklist API fetches once - onboarding is complete`** — gates the `withings/status` and +onboarding is complete`** — gates the `withings/status` and `notifications/preferences` queries inside `getting-started-checklist.tsx` on `user.onboardingCompletedAt == null`. Saves ~950 ms of network on diff --git a/.planning/phase-5-report.md b/.planning/phase-5-report.md index 6b2b42e4a..23dc12b0f 100644 --- a/.planning/phase-5-report.md +++ b/.planning/phase-5-report.md @@ -11,15 +11,15 @@ Status: done. 6 atomic commits + 1 audit doc. `pnpm typecheck`, `/admin/system-status`, and `/admin/users` as the two representative sub-routes called for in the Phase 5 spec. Done in commit `987ce0d fix(a11y): clear axe-core violations on /admin and key - sub-routes`. The single commit also fixes the violations identified +sub-routes`. The single commit also fixes the violations identified while reading the relevant components: - - duplicate `` in `_shared.tsx` whose toggle had no - accessible name → re-export the canonical one from - `src/components/settings/password-input.tsx` (already aria-labelled - in phase 3), - - icon-only buttons in `user-management-section.tsx` got explicit - `aria-label` and `aria-hidden` icons, - - empty `
` placeholder in the audit-log status card removed. + - duplicate `` in `_shared.tsx` whose toggle had no + accessible name → re-export the canonical one from + `src/components/settings/password-input.tsx` (already aria-labelled + in phase 3), + - icon-only buttons in `user-management-section.tsx` got explicit + `aria-label` and `aria-hidden` icons, + - empty `
` placeholder in the audit-log status card removed. 2. **Walk-through audit** — written up at `docs/audit/v15-ux-friction.md`. Top-10 with severity, file @@ -28,33 +28,33 @@ Status: done. 6 atomic commits + 1 audit doc. `pnpm typecheck`, will exercise the e2e suite). 3. **Triage** — applied. Three v1.4.6 deferred items closed inline: - - `feat(ui): trend arrow color reflects metric-specific direction - sentiment` (`38f12df`) — `directionSentiment` prop with `up-good` - / `up-bad` / `neutral` buckets; all 11 dashboard tile call sites - wired; new `trend-card.test.tsx` covers all 3 sentiments × 3 - slope directions plus the back-compat default. - - `feat(settings): allow removing saved AI provider key` - (`788c8ad`) — `` confirmation + PATCH null. EN + DE - i18n keys. - - `style(ui): use semantic tokens for mood and feedback indicators` - (`569300e`) — adds `--success` / `--warning` / `--info` to - `globals.css`; dark-mode aliases over the Dracula palette so - visuals stay pixel-identical, light-mode (Alucard) gets the - higher-contrast counterparts. Migrated callers: feedback BUG - badge (→ `destructive`), feedback published-to-GitHub badge, - medication card status, AI section connection badges and - success-toast colour. + - `feat(ui): trend arrow color reflects metric-specific direction +sentiment` (`38f12df`) — `directionSentiment` prop with `up-good` + / `up-bad` / `neutral` buckets; all 11 dashboard tile call sites + wired; new `trend-card.test.tsx` covers all 3 sentiments × 3 + slope directions plus the back-compat default. + - `feat(settings): allow removing saved AI provider key` + (`788c8ad`) — `` confirmation + PATCH null. EN + DE + i18n keys. + - `style(ui): use semantic tokens for mood and feedback indicators` + (`569300e`) — adds `--success` / `--warning` / `--info` to + `globals.css`; dark-mode aliases over the Dracula palette so + visuals stay pixel-identical, light-mode (Alucard) gets the + higher-contrast counterparts. Migrated callers: feedback BUG + badge (→ `destructive`), feedback published-to-GitHub badge, + medication card status, AI section connection badges and + success-toast colour. 4. **Two extra friction fixes inline** (both <50 LOC): - - `fix(ui): disambiguate dashboard quick-add menu items` - (`e3a6899`) — closes the Phase-3 i18n collision where both - dropdown items rendered the literal "Add". New - `dashboard.quickAddMeasurement` / `dashboard.quickAddMood` keys; - e2e spec rewritten to target by name instead of `.first()`. - - `fix(a11y): label /admin overview quick-jump as a navigation - landmark` (`65cfb27`) — wraps the section list in `