Commit Graph
286 Commits
Author SHA1 Message Date
Marc-André Bombeck ae1373637f chore(release): v1.16.14 — one number everywhere across score, coach, and doctor-report
Coherence release: blood-pressure in-target unified on a labeled, thin-data-gated
90-day window across tile, health-score pillar and coach; the dashboard ring and
insights card built from one shared health-score input builder; the coach and the
doctor-report PDF/FHIR adherence drawn from the same dose ledger as the detail page;
and a shared entry-timestamp plausibility guard on measurement and mood. Several
displayed figures become correct-but-different (BP headline window, adherence).
2026-06-14 14:02:45 +02:00
Marc-André Bombeck 5aefcd59eb chore(release): v1.16.13 — installable offline, era-correct dose edits, steadier headers
App-wide service-worker registration (installable + offline, authenticated
pages kept out of the cache, logout wipe), era-correct historical dose-edit
attribution, CSV intake stock consumption, WHOOP late-workout ingest, web AI
consent-receipt minting, the layout partial-PUT section merge, the curated
mood-tag catalog, and a sweep of mobile header fixes.
2026-06-14 11:06:10 +02:00
Marc-André Bombeck 9cf609bae2 chore(release): v1.16.12 — split doses, steady cards, and a read that stays warm 2026-06-13 16:08:09 +02:00
Marc-André Bombeck 3189848ace chore(release): v1.16.11 — the supply speaks up, tags find their groups, and nothing asks twice 2026-06-12 23:49:06 +02:00
Marc-André Bombeck e9f776937d chore(deps): bump react-hook-form from 7.77.0 to 7.78.0 2026-06-12 22:17:11 +02:00
Marc-André Bombeck f4f3b75166 chore(release): v1.16.10 — the stock follows every dose, and the list takes your order 2026-06-12 19:47:49 +02:00
Marc-André Bombeck 12fce6fc14 chore(release): v1.16.9 — the day opens with a verdict, and every dose path tells the truth 2026-06-12 11:23:00 +02:00
Marc-André Bombeck 8fdf8597a2 chore(release): v1.16.8 — texts that follow your data, charts that never strand 2026-06-11 23:21:40 +02:00
Marc-André Bombeck 11a061c4a1 chore(release): v1.16.7 — insights answer instantly, every evening 2026-06-11 19:46:09 +02:00
Marc-André Bombeck 390a362d7a chore(release): v1.16.6 — corrected eras, an honest weekly status and a faster first paint 2026-06-11 16:15:30 +02:00
Marc-André Bombeck a4b3d2fcd0 chore(release): v1.16.5 — a guided coach dialog and a schedule that shows its past 2026-06-11 12:08:46 +02:00
Marc-André Bombeck d56cf70d7c chore(release): v1.16.4 — half the bundle, a typed client, and stock you can record 2026-06-11 03:30:51 +02:00
Marc-André Bombeck ce3b4c70c8 chore(ops): signed images, a secret gate before commit, and a monthly restore drill
Published manifests are now cosign-signed keyless with a documented
digest-pinning path, a lefthook pre-commit runs gitleaks over staged
changes, responses opt into a credentialless embedder policy, the
deploy webhook can require a fresh timestamp, and a monthly drill
decrypts and parses the newest offhost backup so a broken key or format
surfaces before an emergency does.
2026-06-11 00:10:01 +02:00
Marc-André Bombeck e9084410e2 chore(release): v1.16.3 — schedules remember their history 2026-06-10 22:22:05 +02:00
Marc-André Bombeck 6067d9176e chore(release): v1.16.1 — a chat worth using, honest sleep stages, stock you can record 2026-06-10 21:20:22 +02:00
Marc-André Bombeck 5b7c554b1e chore(release): v1.16.0 — a coach that knows you, invites, and a faster, calmer app 2026-06-10 17:36:43 +02:00
Marc-André Bombeck 51dd614199 feat(coach,auth): self-context for the assistant, invite links, proactive nudges
Users can now tell the assistant about themselves in an encrypted
free-text profile that feeds the coach and briefing prompts as clearly
fenced context, with the coach allowed one targeted follow-up question
when the picture is incomplete. Operators on closed registrations can
mint expiring invite links with a QR code from the admin area; a valid
invite opens registration exactly as many times as it allows and records
who redeemed it. A nightly pass watches three deterministic signals —
low adherence, blood pressure above its target band, a falling recovery
trend — and sends at most one coach nudge per week through the existing
notification channels, gated behind the same opt-outs as every other
assistant surface.
2026-06-10 15:40:48 +02:00
Marc-André Bombeck 41ba4c6c17 chore(deps): bump simplewebauthn, react-query, react-hook-form, types/node, knip, login-action
@simplewebauthn/server 13.3.1, @tanstack/react-query 5.101.0,
react-hook-form 7.77.0, @types/node 25.9.2, knip 6.16.1 and
docker/login-action v4 across the workflows.
2026-06-10 12:55:55 +02:00
Marc-André Bombeck ba4421e464 chore(release): v1.15.19 — honest dose states, bounded bodies, new licence 2026-06-10 12:16:38 +02:00
Marc-André Bombeck eb1bbef295 chore(license): move to PolyForm Noncommercial 1.0.0
The project licence changes from AGPL-3.0 to the PolyForm Noncommercial
License 1.0.0 for this and future versions: free to use, modify and
self-host for noncommercial purposes; commercial use needs a separate
arrangement. Releases up to and including v1.15.18 were published under
AGPL-3.0 and remain available under that licence. LICENSE carries the
verbatim PolyForm text, and the SPDX identifier is updated in
package.json, the version endpoint, the OpenAPI info block, the image
labels and the README.
2026-06-10 11:18:12 +02:00
Marc-André Bombeck 82d4081ac5 chore(release): v1.15.18 — traceable medication dose history 2026-06-08 19:49:12 +02:00
Marc-André Bombeck 8efdac7c5a chore(release): v1.15.17 — large imports, demo chart toggles 2026-06-07 23:38:01 +02:00
Marc-André Bombeck bc2f510371 chore(release): v1.15.16 — wellness ring glow no longer clipped 2026-06-07 22:05:33 +02:00
Marc-André Bombeck d51e569c59 chore(release): v1.15.15 — one warm, motivating assistant voice 2026-06-07 21:49:27 +02:00
Marc-André Bombeck 1d4b470efa chore(release): v1.15.14 — manage every detail page, calmer mood charts 2026-06-07 21:02:51 +02:00
Marc-André Bombeck acd640479a chore(release): v1.15.13 — search, filter, and bulk delete 2026-06-07 19:50:12 +02:00
Marc-André Bombeck 216f52b380 chore(release): v1.15.12 — a fairer health score and a richer overview 2026-06-07 18:18:05 +02:00
Marc-André Bombeck 02861d8f45 chore(release): v1.15.11 — a customizable Insights overview 2026-06-07 17:10:09 +02:00
Marc-André Bombeck cebc5a9518 chore(release): v1.15.10 — Insights overview, medication follow-ups, health score 2026-06-07 14:46:08 +02:00
Marc-André Bombeck 5f5ae55934 chore(release): v1.15.9 — medication compliance and cards 2026-06-07 13:44:26 +02:00
Marc-André Bombeck 059c041586 chore(release): v1.15.8.1 — large Apple Health imports 2026-06-07 11:25:28 +02:00
Marc-André Bombeck 60901ff4fa chore(release): v1.15.8 — medication cards 2026-06-07 01:07:19 +02:00
Marc-André Bombeck ff18203f0c chore(release): v1.15.7 — data import in the browser 2026-06-07 00:09:16 +02:00
Marc-André Bombeck 29cb6a8f0b chore(release): v1.15.6 — settings, insights, and medication-card polish 2026-06-06 23:28:38 +02:00
Marc-André Bombeck db391aa4ce chore(release): v1.15.5 — insights layout, navigation, password-reset CLI 2026-06-06 21:32:16 +02:00
Marc-André Bombeck 6bc2294f59 chore(release): v1.15.4 — cycle and insights polish 2026-06-06 20:49:16 +02:00
Marc-André Bombeck 6dc241ccb1 chore(release): v1.15.3 — cycle summary on the insights page 2026-06-06 19:44:53 +02:00
Marc-André Bombeck d601c6c860 chore(release): v1.15.2 — cycle insights crash fix 2026-06-06 19:16:05 +02:00
Marc-André Bombeck b4ab3ad10c chore(release): v1.15.1 — cycle premium parity, reminder polish, fixes 2026-06-06 17:23:22 +02:00
Marc-André BombeckandClaude Opus 4.8 6745850f16 chore(release): v1.15.0 — cycle tracking
Cut v1.15.0: the private menstrual-cycle vertical. Quick-entry day-log
(period/flow, BBT, mucus, OPK + pregnancy/progesterone tests,
contraception, intercourse, graded symptoms), a calendar + signature
cycle wheel, honest range predictions with confidence + a read-your-body
mode, a BBT chart, phase×vitals + symptom-by-phase insights, opt-in
per-channel reminders, encryption of intent fields, discreet
notifications, a one-tap data purge, and Apple-Health reproductive import
+ health-record export. Predictions run on a deterministic engine the iOS
client mirrors offline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 13:52:21 +02:00
Marc-André BombeckandClaude Opus 4.8 397e0d1b68 chore(release): v1.14.0 — animated health scores, score explanations, mood-factor correlations, log past doses
- The health-score strip is rebuilt as a calm, staggered signature reveal with
  a distinct colour per score, a soft glow, and a "vs your normal" reference
  arc — once per visit, reduced-motion-safe.
- Each Readiness / Sleep / Recovery / Strain / Stress score sheet carries a
  short plain-language explanation of why the score landed where it did
  (additive `assessment` field on the derived endpoint; fills without a
  provider).
- Rated mood factors (work / sleep quality / stress …) are correlated against
  vitals as a new card the assistant can cite — confidence-gated, observational.
- Medications "Add" splits into log-intake (incl. backdated) vs new medication;
  sparse weekly/rolling meds show an open-cycle status line instead of a bare
  percentage.
- Insights polish: equal-height trend cards, briefing heading above the card,
  coach tone + length side by side.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 00:23:52 +02:00
Marc-André BombeckandClaude Opus 4.8 b5e106776f chore(release): v1.13.3 — health score rates blood pressure again, steps in Insights
- Health score reads the all-time blood-pressure-in-range rate (not the trailing
  30 days), so an account with BP history but no recent readings keeps its BP
  pillar instead of showing "no rating"; the 30-day rate still drives the tile
  headline. (Regression from the v1.8.7 BP-headline window change.)
- ACTIVITY_STEPS now has its own Insights sub-page + nav entry (it was tracked +
  on the dashboard but absent from the Insights metric registry).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 22:53:15 +02:00
Marc-André BombeckandClaude Opus 4.8 25bed4262c chore(release): v1.13.2 — honest weekly-med compliance, correct sleep average, calmer wellness scores
- Rolling-cadence (weekly GLP-1 injection) compliance now reconstructs the full
  per-cycle history across the window instead of counting only the next-due dose,
  so a faithful injection history reads an honest rate, not a 0%/100% flip; adds a
  per-medication currentCycle state (on_track/due/missed/none) for a non-scary card.
- Sleep average reads from the de-duplicated per-night reconstruction (bare ASLEEP +
  granular stages no longer double-count → no impossible ~20 h); night reconstruction
  hardened against an empty-segment throw.
- Wellness-score tiles redesigned: gentle card-toned surface (was a saturated slab),
  a larger thinner custom SVG ring with a soft per-score gradient, renamed
  "Your health scores", fully legible in light + dark.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 22:27:27 +02:00
Marc-André BombeckandClaude Opus 4.8 d3d58a0c30 chore(release): v1.13.1 — wellness rings fill to the actual score
The score-ring's RadialBar swept the full circle for any value because the
angular domain was only pinned on the PolarRadiusAxis (which governs radius,
not sweep). Recharts then auto-scaled the angular domain to the single datum,
so every ring read as 100%. Add a PolarAngleAxis with a fixed [0,100] number
domain so the bar sweeps value-percent of the track. Affects the overview
wellness tiles and the score-anatomy detail view.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 21:18:52 +02:00
Marc-André BombeckandClaude Opus 4.8 f1329b24e1 chore(release): v1.13.0 — per-user custom mood tags + catalogue hide
Let a user shape their own mood-tag set on top of the global catalogue:
create custom tags (label encrypted at rest, icon from a fixed allow-list),
and hide built-in tags per user. Custom tags live in `mood_tags` with a
non-null `user_id` and a `custom:<uuid>` key; `GET /api/mood/tags` returns
the effective per-user set (catalogue − hidden + own customs) with new
`custom` + `label` fields, and `?include=hidden` surfaces hidden catalogue
tags for the management screen. The write path resolves a `custom:` key only
against the caller's own rows — a foreign custom key is dropped, never linked.
Delete soft-deactivates by default (history intact); `?purge=true` removes
the row and its links. BINARY-only for v1.

New: POST/PATCH/DELETE /api/mood/tags/custom[/:key], PUT /api/mood/tags/:key/hidden,
migration 0127 (user_id + label_encrypted columns, mood_tag_hidden table,
`custom` category). Integration setup snapshots + restores the seeded catalogue
because the new mood_tags→users FK makes TRUNCATE users CASCADE wipe it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 20:50:05 +02:00
Marc-André BombeckandClaude Opus 4.8 f25b6aa2dc chore(release): v1.12.12 — deterministic fallback so the period retrospective is never empty
When no AI provider is configured (or before the first AI summary is written),
the period-in-review card stayed empty. Compose a concise, factual, strictly
non-causal summary from the same structured digest the AI prompt is built from
— ranked metric changes vs the prior period, vitals that moved outside their
typical range, and an honest count of statistical associations — and persist it
with a `deterministic` provider marker so a later AI warm replaces it in place.
The read route now warms regardless of provider; the read-never-blocks posture
is unchanged. Fills the no-key demo's retrospective too.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 19:10:08 +02:00
Marc-André BombeckandClaude Opus 4.8 038be6ac57 chore(release): v1.12.11 — unify settings notice colours and callout style
Route every Settings callout, badge and status note through the semantic
colour tokens (success / warning / info / primary) instead of raw palette
classes, so the same meaning reads identically across cards and stays
legible in light mode. Add a single SettingsInfoTile primitive — icon +
tone + text on one fixed surface — and adopt it for the threshold-override
caution note, replacing a bespoke box.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 18:42:18 +02:00
Marc-André Bombeck a15766a418 chore(release): v1.12.10 — a timeless taken-log no longer back-fills a far slot 2026-06-05 16:03:58 +02:00
Marc-André Bombeck 17be1084b1 chore(release): v1.12.9 — tighter mood catalogue, clearer cards, fixed retrospective 2026-06-05 15:40:04 +02:00
Marc-André Bombeck 186798a02f chore(release): v1.12.8 — fuller WHOOP data, charts that follow your selection 2026-06-05 14:58:08 +02:00