From db86b4f76da0969b59cf78e43544b6b45ab3b70f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sun, 19 Jul 2026 09:23:45 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=20v1.30.31=20=E2=80=94=20surfac?= =?UTF-8?q?e=20a=20due=20dose=20on=20Today;=20ground=20the=20briefing=20ag?= =?UTF-8?q?ainst=20what=20the=20model=20was=20actually=20given?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 10 ++++++++++ docs/api/openapi.yaml | 2 +- package.json | 2 +- public/sw.js | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c856438e5..fe5ad5b69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ ## [Unreleased] +## [1.30.31] — 2026-07-19 + +Today shows a dose before it is late, and the briefing stops disappearing over a number it was given. + +- **A dose that is due but not yet late now appears on Today.** The card only ever showed a dose once it was already overdue, so it could say nothing needs your attention while a dose was due. A due dose reads calmly and an overdue one as a warning; a day where everything is taken still shows the all-clear. Reminder notifications are unchanged — they still only fire once a dose is late. +- **The briefing was being discarded for quoting figures the server itself had given it.** The check that verifies every number against your own data compared against a hand-maintained list of places to look, while the model receives the complete set. Medication adherence rates, comparison changes — the very figures the briefing is asked to describe — were not on that list, so a correct briefing was withheld. The check now derives its list from exactly what was handed to the model, so it means what it says: a number is accepted only if it came from your data. +- **A briefing that genuinely cannot be verified no longer takes the previous one down with it.** It falls back to the last good briefing instead of showing nothing, the way it already did when the provider was unreachable. A figure that cannot be verified is still never shown. + +No breaking changes. + ## [1.30.28] — 2026-07-19 The daily briefing counts its spend too. diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index 2f3b39b2c..984cab8f1 100644 --- a/docs/api/openapi.yaml +++ b/docs/api/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.1.0 info: title: HealthLog API - version: 1.30.28 + version: 1.30.31 description: >- Self-hosted personal-health-tracking PWA — public API surface for the iOS native client and external ingest. diff --git a/package.json b/package.json index 7f30d6795..31ea6793e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "healthlog", - "version": "1.30.28", + "version": "1.30.31", "description": "Self-hosted personal-health-tracking PWA with Withings integration, AI insights, and doctor-report PDF export.", "license": "PolyForm-Noncommercial-1.0.0", "homepage": "https://healthlog.dev", diff --git a/public/sw.js b/public/sw.js index 9536f54db..69ce584f4 100644 --- a/public/sw.js +++ b/public/sw.js @@ -36,7 +36,7 @@ try { // v1.4.38.4 → v1.4.42. Do not hand-edit; bump `package.json` and rebuild. const CACHE_VERSION = (typeof self !== "undefined" && self.__APP_VERSION__) || - /* @sw-version-fallback */ "v1.30.28"; + /* @sw-version-fallback */ "v1.30.31"; const STATIC_CACHE = `healthlog-static-${CACHE_VERSION}`; const PAGE_CACHE = `healthlog-pages-${CACHE_VERSION}`; // v1.18.6 — read-only data cache for a curated allowlist of safe GET `/api/*`