diff --git a/.planning/STATE.md b/.planning/STATE.md index c6b1ab4ef..304bb12a6 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -1,6 +1,6 @@ # v1.4.22 marathon — state log -Status: Wave 2 — Insights surface polish complete +Status: Wave 3 — Coach polish complete Last update: 2026-05-10T21:00+02:00 > Previous patch: v1.4.21 live (image digest @@ -82,36 +82,38 @@ rewrite needs research first. ### B1 — Prompt rewrite -- [ ] Adopt W1b research output: natural prose-first, motivational, +- [x] 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 +- [x] PROMPT_VERSION 4.22.0; EN + DE +- [x] 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 +- [x] Move inline raw values out of prose into a "Worauf bezieht sich das?" expandable below each assistant - message -- [ ] Source chips stay visible; values reveal on click + message; `---KEYVALUES---` … `---END---` sentinel stripped + server-side, parsed into `provenance.keyValues` +- [x] Source chips stay visible; values reveal on click ### B3 — User avatar = Gravatar (parity) -- [ ] Same dimensions as Coach avatar -- [ ] Reuses existing `gravatarUrl` from `/api/auth/me` +- [x] Same dimensions as Coach avatar +- [x] Reuses existing `gravatarUrl` from `/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 → right rail -- [ ] Right rail "Coach reads only your connected data" repurposed - so the source picker stands alone +- [x] "Coach replies are generated. Clinical decisions belong with + your doctor." moves from below input → sources rail footer +- [x] "Coach reads only your connected data" caption replaced by the + disclaimer so the source picker stands alone ### B5 — Settings cog wire-or-remove -- [ ] Decide: wire to per-user prompt-tuning toggles (Coach tone, - verbosity), OR remove the icon -- [ ] No dead buttons in v1.4.22 +- [x] 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 diff --git a/.planning/phase-W3-report.md b/.planning/phase-W3-report.md new file mode 100644 index 000000000..b3ab303e7 --- /dev/null +++ b/.planning/phase-W3-report.md @@ -0,0 +1,114 @@ +# Wave 3 — Coach polish report (v1.4.22) + +Adopts the W1b research output: the Coach now talks like a partner +who sits alongside the user, not a database cursor. Load-bearing +numbers move out of the prose into a collapsible block at the bottom +of every assistant turn. Five atomic commits on `origin/develop`. + +## Commits + +1. `feat(coach): warm motivational rewrite with evidence-block sentinel` + — system-prompt EN + DE rewrite, PROMPT_VERSION 4.20.2 → 4.22.0, + broadens schema-test regex off the 4.20.x pin. +2. `feat(coach): parse evidence-block sentinel out of streamed prose` + — `---KEYVALUES---` … `---END---` parser, `CoachProvenance.keyValues` + extension, route + persistence + SSE provenance frame wiring, + integration coverage. +3. `feat(coach): collapsible evidence-block disclosure under assistant + bubbles` — `
` disclosure with chevron in + `message-thread.tsx`; closed by default; hides when keyValues is + empty; both EN + DE labels. +4. `refactor(coach): drawer polish — Gravatar avatar, disclaimer + move, cog removal` — user bubble pulls `useAuth().user.gravatarUrl` + at the same 32-px dimensions as the Coach avatar with initials + fallback; disclaimer moved out of `coach-input.tsx` into + `sources-rail.tsx`'s footer; settings cog removed cleanly from the + drawer header. +5. `chore(planning): record Wave 3 Coach polish completion` — STATE + tick + this report. + +## Sentinel-parse design + +Wave 3 ships a text-marker sentinel (`---KEYVALUES---` … `---END---`) +with line-formatted entries (`