mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-11 22:02:16 +00:00
Wave 5 reconcile pass complete: 7 HIGH applied inline, ~6 MEDs applied inline, remaining MED + LOW deferred to `.planning/v1422-backlog.md` under "Wave 5 reconcile carry-over". - `.planning/phase-W5-v1422-reconcile-report.md`: 10 commit SHAs with cross-references to each finding, test count delta (+14 unit tests, +3 integration tests; final 2111 / 245 files), per-bucket HIGH / MED / LOW disposition, and items the maintainer should weigh in on (CSP scope, insights split, sentinel parser malformed-enum priority, /me resync stays as fall-back). - `.planning/v1422-backlog.md`: every deferred MED + LOW with a one-line trace per item, organised by review bucket. - `.planning/STATE.md`: Wave 5 ticked complete; tail updated to point at the W5 review files + reconcile report. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8.1 KiB
8.1 KiB
v1.4.22 marathon — state log
Status: Wave 5 — multi-agent QA + reconcile complete Last update: 2026-05-10T22:30+02:00
Previous patch: v1.4.21 live (image digest
sha256:4e818d44702c…,/api/version=1.4.21). v1.4.22 = big polishing release before v1.5 iOS. Closes ALL known bugs + applies ALL deferred items from.planning/v1421-backlog.mdso the iOS app builds on a clean foundation.
Wave 1 — Research + probe (parallel)
Per feedback_research_before_complex_features.md, deep-fix work on
4-attempt bugs (BD-Zielbereich, api-tokens scrollbar) + Coach prompt
rewrite needs research first.
W1a — Playwright PROD probe + token-leak hunt
- BD-Zielbereich tile rendering against PROD with maintainer session (4-attempt bug pattern: probe before patching)
- Admin / api-tokens scrollbar at multiple viewports (5th attempt)
- Raw
Metrik <Type>token leaks in Recommendations / Findings - Targets / Zielwerte page screenshot for upgrade brainstorm
- Inventory
.planning/v1421-backlog.mditems by complexity - Detailed report:
.planning/phase-W1a-report.md
W1b — Health-coach prompt research
- Benchmark health-coach / motivational-interviewing prompt patterns (Apple Health Coaching, Oura, Whoop, …)
- Define "natural prose first, evidence collapsible" structure with concrete EN + DE drafts
- PROMPT_VERSION 4.20.2 → 4.22.0 (significant Coach tone shift)
- Detailed report:
.planning/phase-W1b-coach-prompt-research.md
Wave 2 — Insights surface polish
A1 — BD-Zielbereich 5th attempt
- Headline re-anchored to
windows.last30Days?.pct; all-time surfaced asbpInTargetPctAllTimefor the new sub-row - Integration test pins the route contract
- Detailed report:
.planning/phase-W2-report.md
A2 — BD-Kachel feature parity
- Trend arrow + 7-day-trend chip + comparison overlay parity
(synthesised slope from 7d/30d delta);
<TrendCard>extended with optionalavgAllTimesub-value
A3 — Comparison-Toggle → global Settings
- On-surface
<CompareToggle />removed from/insights; Settings → Dashboard already carries the canonical picker User.dashboardWidgetsJson.comparisonBaselinefield already exists (v1.4.16 phase B8) — every chart still consumes it
A4 — Insights layout grid normalisation
- Row-fill rule: BP / weight / medications grids collapse to full-width when only one card has data
- Trends row equal heights via
min-h-[300px] <CorrelationRow>drops insufficient-data tiles; zero ok cards hides the row entirely
A5 — Section heading + tab rename
- "Muster" → "Zusammenhänge" (DE) / "Patterns" → "Relationships" (EN). Picked Zusammenhänge over Trends because the row above already uses Trends.
<InsightsSectionNav>lifted above the hero strip (sticky scroll-anchored; tabs visible first)
A6 — Raw Metrik <Type> token leak fix
<RecommendationCard>text wrapped instripChartTokens()- DE
componentMood/componentBp/componentCompliancerenamed to German nouns; i18n-integrity test pins the contract
Wave 3 — Coach polish
B1 — Prompt rewrite
- Adopt W1b research output: natural prose-first, motivational, conservative, evidence-grounded
- PROMPT_VERSION 4.22.0; EN + DE
- Coach-specific test suite covering tone + evidence-collapsible pattern
- Detailed report:
.planning/phase-W3-report.md
B2 — Collapsible provenance + values
- Move inline raw values out of prose into a
"Worauf bezieht sich das?" expandable below each assistant
message;
---KEYVALUES---…---END---sentinel stripped server-side, parsed intoprovenance.keyValues - Source chips stay visible; values reveal on click
B3 — User avatar = Gravatar (parity)
- Same dimensions as Coach avatar
- Reuses existing
gravatarUrlfrom/api/auth/me; initials fallback when no Gravatar configured
B4 — Disclaimer move
- "Coach replies are generated. Clinical decisions belong with your doctor." moves from below input → sources rail footer
- "Coach reads only your connected data" caption replaced by the disclaimer so the source picker stands alone
B5 — Settings cog wire-or-remove
- Removed for v1.4.22; per-user prompt-tuning surface deferred to v1.4.23 (no dead buttons in this release)
Wave 4 — Other surfaces + backlog cleanup
C1 — Zielwerte page upgrade
- 30-day sparkline + Δ-vs-last-month caption per card (Direction
A from W1a §4). Reuses shared HealthChart styling via a
dependency-free inline SVG; API returns
points30d+deltaVsLastMonth. BMI derives both from the weight series.
C2 — Admin / api-tokens scrollbar 5th attempt
- Live Playwright probe confirmed
whitespace-nowrapon the date<td>s was the residual culprit (W1a §2). Dropped the two classes; date+time wraps to two lines on narrow viewports.
C3 — Coolify image-digest auto-deploy
- Workflow appends
?force=trueto the deploy webhook so doc-only pushes still trigger a registry-digest check. Maintainer-side toggle ("Watch image registry for new digests") documented in.planning/coolify-auto-deploy-howto.md— one UI flip.
C4 — AuthShell post-hydration redirect flicker
- Redirect lives in
proxy.ts. Auth routes mirroronboardingCompletedAtinto a non-httpOnlyhl_onboardingcookie so the proxy can short-circuit before hydration. The e2e onboarding-flicker spec dropped its workaround.
C5 — node-26-alpine bump
- Dependabot PR #162 closed with reasoning. node:26-alpine ships without corepack pre-installed; Next.js 16 also still pins node 22 LTS as the supported minimum. Reopen when the framework bumps its node-version requirement.
D — .planning/v1421-backlog.md cleanup wave
Apply or confirm-defer every item:
- Phase D reconcile carry-over (22 MED + 16 LOW + 4 simplify-maybe)
- FX carry-overs:
- 191
Marcreferences swept acrosssrc/(test fixtures kept as opaque test data per brief) - DE+EN bilingual CHANGELOG entries (v1.4.14 + v1.4.15) reduced to English-only
CLAUDE.mdrenamed toCONTRIBUTING-AI.mdso the filename is not AI-vendor-specific;AGENTS.mdstays for multi-agent compatibility.CONTRIBUTING.mdreference updated.
- 191
E2E fix wave (already on develop)
- 5 commits on develop from the v1.4.21 follow-up; release-merge brings them into main when v1.4.22 ships
Wave 5 — Multi-agent QA + Product-Lead review
- code-reviewer (
.planning/phase-W5-v1422-code-review.md— 0 CRIT, 2 HIGH, 4 MED, 5 LOW) - security review (
.planning/phase-W5-v1422-security-review.md— 0 CRIT, 0 HIGH, 2 MED, 4 LOW) - design / UX review (
.planning/phase-W5-v1422-design-review.md— 0 CRIT, 3 HIGH, 7 MED, 5 LOW) - senior-dev review (
.planning/phase-W5-v1422-senior-dev-review.md— 0 CRIT, 2 HIGH, 5 MED, 4 LOW) - simplify (
.planning/phase-W5-v1422-simplify-review.md— 5 apply-yes, 4 apply-maybe, 6 apply-no) - Product Lead — v1.5 plan refresh based on v1.4.22 state (
.planning/phase-W5-v1422-product-lead-review.md) - Reconcile applied CRITICAL + HIGH; defer MED/LOW with reasoning (10 commits; report at
.planning/phase-W5-v1422-reconcile-report.md; backlog at.planning/v1422-backlog.md)
Wave 6 — Release v1.4.22
- Pre-release verify (typecheck, lint, test, integration, format, build)
- Bump
package.json1.4.21 → 1.4.22 + CHANGELOG - Release-merge develop → main
- Tag + push v1.4.22
- GHCR build green
- Coolify deploy (should work without host-side fallback after C3)
- /api/version=1.4.22 confirmed
- Production smoke + e2e workflow on main passes (e2e fix wave from develop is included in the release-merge)
- GH release
- Docs site + landing site sync
docs/audit/v1422-summary.md(release brief)- v1.5 plan refreshed for the iOS push