mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-15 06:52:04 +00:00
A1 — sidebar admin entry mirrors Settings (no sub-item expansion). A3 — /admin/api-tokens mobile card-list (no horizontal overflow). Both shipped on origin/main as77fe256+277a5aa. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
12 KiB
12 KiB
v1.4.16 marathon — state log
Status: phase-0-done Last update: 2026-05-09T23:12:52+02:00
Previous milestone:
docs/audit/v1415-summary.md(live:/api/version=1.4.15, image digestsha256:ace7d441f47b…).
Phase 0 — Bootstrap
- STATE+ROADMAP rewritten for v1.4.16
- git status clean
- codex-protocol-spec re-read
- v1416-backlog.md inventoried
- Result: ok / commit
chore(planning): bootstrap v1.4.16 marathonon origin/main - Detailed report:
.planning/phase-0-report.md
Wave A — Quick fixes (parallel buckets)
A1 — Sidebar admin-expand bug
- Clicking Admin from non-admin route does NOT auto-expand sub-items (mirror Settings exact pattern)
- Gravatar dropdown does NOT trigger sidebar expansion side-effect
- Detailed report:
.planning/phase-A1-A3-report.md - Commit:
77fe256 fix(nav): admin sub-items don't expand from gravatar dropdown or admin-link clickon origin/main
A2 — BD-Zielbereich real-fix (regression from v1.4.15 A4)
- Investigate root cause — A4 in v1.4.15 marked this fixed but Marc still sees 0%
- Verify against actual user data with measurements
- Fix root cause + add E2E test that exercises full flow against real session
- Detailed report:
.planning/phase-A2-report.md
A3 — /admin/api-tokens table responsive (still scrolling)
- Inspect current state on prod with Marc's session — overflow-x scrollbar visible
- Fix properly: card-list mobile fallback OR proper column-hide chain at xs/sm/md breakpoints
- Detailed report:
.planning/phase-A1-A3-report.md - Commit:
277a5aa fix(admin): api-tokens table no horizontal overflow on Pixel-5 viewporton origin/main
A4 — "7-Tage-Schnitt" → "7-Tage-Trend" DE + indicator on ALL charts
- DE i18n string rename everywhere (incl. tile-strip + chart subtitles)
- Trend indicator (+/-) appears for EVERY chart including mood + medication + insights
- Trend on "all" filter computes correctly (currently shows 0)
- Detailed report:
.planning/phase-A4-report.md
A5 — Top-tile-selector real-fix (regression from v1.4.15 A4)
- Investigate why settings save isn't reflected on dashboard
- Probably a query-cache stale-read OR the layout-config field isn't actually consumed by the tile-strip
- Fix + e2e test toggling visibility persists
- Detailed report:
.planning/phase-A5-report.md
A6 — Medication-chart 7d-trend + target-range
- Medication-chart matches other charts: 7d-trend label + indicator + target-range visualization
- Detailed report:
.planning/phase-A6-report.md
A7 — AI Generator rate-limit 10/h + cache-invalidate-on-new
- Rate-limit current 2/h → 10/h (env-configurable)
- When user generates new insight: evict ALL cached previous insights for that user (TanStack Query invalidate + DB-cached row replacement)
- Verify: dashboard shows newest insight, never stale-cached
- Detailed report:
.planning/phase-A7-report.md
A8 — Umlaute encoding bug + login-overview
- "Nrnberg" should be "Nürnberg" — find the encoding step that strips umlauts
- Audit all transformer / geocoder / external-api decode steps for UTF-8 correctness
- Regression test for known-umlaut roundtrip
- Detailed report:
.planning/phase-A8-report.md
Wave B — Quality-leap features
B1 — Insights/Charts Apple-Health-style visual leap
- Benchmark against Apple Health, Withings Health Mate, Oura Ring
- Insights surface: gradient fills, animation, dynamic comparisons (better/worse), interactive tooltips, vertical slide-to-compare
- Charts: same level of polish — Recharts replacement allowed if quality bar requires
- Insights surface visualizes data, not just text-summarizes
- Detailed report:
.planning/phase-B1-report.md
B2 — AI provider settings UX cleanup (Pulldown-driven)
- Settings → AI: provider dropdown drives form below (no top/bottom split)
- All providers configurable from one UI (OpenAI direct + ChatGPT-account + future)
- Smooth transition when provider changes
- Detailed report:
.planning/phase-B2-report.md
B3 — Admin System-Status host-load chart
- Host CPU/memory/disk-io graph last 2h (use existing Sentinel or pull from Coolify metrics)
- Render above current system-status section
- Detailed report:
.planning/phase-B3-report.md
B4 — Admin logs visibility deepening
- Audit log: filterable by actor/action/target/severity, paginated, exportable
- App-log preview: tail of structured wide-events for last 1h, filterable by trace_id
- Detailed report:
.planning/phase-B4-report.md
B5a — Medical-reference grounding
- AHA / ESC / ESH / WHO target ranges as system context
- Citations link to source guideline in UI
- Detailed report:
.planning/phase-B5a-report.md
B5b — Multi-provider redundancy
- try-each-on-hard-failure across configured providers
- Fallback ordering configurable per user
- Detailed report:
.planning/phase-B5b-report.md
B5c — Per-Recommendation Explainability
- Each rec carries: WHY (what user-data triggered it), WINDOW (which time range was analyzed), CITATIONS (which medical guideline + which user metric)
- UI: expand-arrow on each rec → reveals the explainability card with mini-chart of the data window
- Schema enforces presence (extends v1.4.15 C1's strict schema)
- Detailed report:
.planning/phase-B5c-report.md
B5d — Confidence Score per Recommendation
- Each rec carries a 0-100 confidence score derived from: data sufficiency (n samples), recency, signal strength
- UI: visual confidence indicator (e.g., color-coded ring or 5-bar meter) per rec
- Below-threshold recs are tagged "Low confidence — based on limited data" rather than hidden
- Detailed report:
.planning/phase-B5d-report.md
B5e — User-Feedback Loop
- "War das hilfreich?" thumbs-up/down on each rec, persisted as RecommendationFeedback (new table)
- Aggregated feedback feeds into prompt-tuning: low-helpful patterns get a system-prompt addendum next generation
- Privacy: feedback is per-user; no cross-user training (offline only, opt-in for any aggregation)
- Detailed report:
.planning/phase-B5e-report.md
B6 — Settings naming-audit
- Every settings sub-route reviewed for stringency, naming consistency, logical grouping
- No top/bottom split anti-pattern anywhere
- No double naming
- Detailed report:
.planning/phase-B6-report.md
B7 — Settings → Export menu (Arztbrief consolidated)
- New /settings/export route with consolidated UI: Doctor-report (PDF, configurable date range + practice name from B6 v1.4.15) + CSV/JSON exports (measurements/medications/mood per CLAUDE.md src/lib/export.ts)
- Properly designed: card per export type, clear preview + filter + download button
- Rename current doctor-report entry-point to live under /settings/export
- Detailed report:
.planning/phase-B7-report.md
B8 — Extended Comparison Views (Vormonat / Vorjahr)
- Each chart + tile + insight gets toggleable comparison overlay: "vs. last month" / "vs. last year"
- Visual treatment: dimmed historical line beneath current; delta callout (Δ +5%, etc.)
- Insights surface narrates the comparison ("Your average BP improved by 4 mmHg vs. last month")
- Mobile-friendly comparison toggle (not a fragile hover-only interaction)
- Detailed report:
.planning/phase-B8-report.md
Wave C — Catch-up (deferred from v1.4.15)
- 8 deferred HIGH-Findings from v1.4.15 Wave-D (see
v1416-backlog.md) - 5 deferred MED items from A5 mobile findings
- Coolify image-digest auto-deploy trigger (replace git-push trigger so deploys only happen on actual new image)
- docker-publish main-branch hang root-cause + fix (C3 v1.4.15 only fixed tag-path)
- Detailed report:
.planning/phase-C-report.md
Wave D — Multi-agent QA + Product-Lead
- code-reviewer
- security review
- design / UX review (Apple Health benchmarking lens)
- senior-dev review
- simplify
- Product Lead — state of app, biggest items, v1.5 roadmap, follow-on initiatives
- Reconcile applies CRITICAL/HIGH inline
- Detailed report:
.planning/phase-D-report.md+product-lead-review.md
Phase E — Release v1.4.16
- Pre-release verify
- Bump package.json + CHANGELOG
- Tag + push v1.4.16
- GHCR build (verify both main + tag green; C3 v1.4.16 fix may finally help main)
- Coolify deploy
- /api/version=1.4.16 confirmed
- Production smoke
- GH release
- Docs site + landing site sync
docs/audit/v1416-summary.md(Marc-Brief)- Detailed report:
.planning/phase-E-report.md
Previous milestone — v1.4.15 (completed 2026-05-09T22:50+02:00)
LIVE at https://healthlog.bombeck.io · /api/version=1.4.15 · image digest
sha256:ace7d441f47b… (was 0ced46004a54… on v1.4.14).
Full Marc-Brief, commit table, deferred items, CI/prod state and
Phase-D reconcile detail: docs/audit/v1415-summary.md. Backlog seeded
to .planning/v1416-backlog.md (8 deferred HIGH + 39 MED/LOW + 4
simplify-no + 3 process items).
Phases run during v1.4.15 marathon:
- Phase 0 — Bootstrap (STATE+ROADMAP for v1.4.15)
- Phase A1–A5 + B-mobile — Quick fixes (nav, admin overview, quick-add labels, dashboard analytics, mobile audit + fix-application)
- Phase B1–B6 — Bigger features (backup completeness, Withings/moodLog robustness, notification reliability, achievements UI, onboarding tour, doctor-report v2)
- Phase C1–C5 — Hardening (AI/Codex schema + slug-drift, Coolify auto-deploy, CI/e2e reliability, i18n parity, empty-states audit)
- Phase D — Multi-agent QA (5 reviewers + reconcile; 0 CRITICAL, 5 HIGH fixed inline, 8 HIGH deferred to v1.4.16)
- Phase E1–E3 — Release (v1.4.15 tag, GHCR, host-side retag deploy, docs+landing sync, summary)
Marathon recurring meta: per-agent git-worktree adoption deferred to v1.4.16 (commit-message drift recurred across A2, A4, B1, B-mobile, B2, B3, B4, C1, C5).
Status block — Phase 0 (v1.4.16)
- 2026-05-09T23:12:52+02:00 — Phase 0 complete. STATE.md + ROADMAP.md
scaffolded for v1.4.16 marathon (Wave A: A1-A8, Wave B: B1-B7, Wave C
catch-up, Wave D multi-agent QA + Product-Lead, Phase E release).
Previous v1.4.15 entries archived above. Working tree was carrying
re-run-prettier corruption on 22 .planning/ files (markdown list-
marker
+flipped to-, breaking content) — discarded viagit checkout -- .planning/before scaffold; tracked files clean. Untracked v1.4.14/v1.4.15 leftover phase reports (15 files) left in place — they belong to previous milestones, not v1.4.16. Phase 0 commit contains only.planning/STATE.md,.planning/ROADMAP.md,.planning/phase-0-report.md. Marc-status: speed matters.
Status block — Wave A bucket-1 (A1 + A3)
- 2026-05-09T23:26:00+02:00 — A1 + A3 complete on origin/main.
- A1 removed the entire admin sub-list expansion from
sidebar-nav.tsx; the Admin entry now mirrors the Settings entry exactly (single link, no sub-items at any route, gravatar dropdown unaffected). Vitest + new e2ee2e/sidebar-admin-no-expand.spec.tscover the contract. Commit77fe256. - A3 swapped the api-tokens desktop
<table>for a real mobile card-list at <md (mirrors<UserManagementSection>). Nooverflow-x-autoinside the mobile container; long names + perm badges wrap within the card. New e2ee2e/admin-api-tokens-mobile.spec.tsasserts no page scroll at Pixel 5 with a worst-case payload. Commit277a5aa. - Verification:
pnpm typecheckclean,pnpm lint12 pre-existing warnings / 0 errors,pnpm test1056/1057 (the single failure is in A2'sbp-in-target.test.ts, out of bucket-1 scope).
- A1 removed the entire admin sub-list expansion from