From 7b765c76591ff84d4f2ae8738bc2c09534e2a88c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Thu, 23 Jul 2026 21:36:10 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=20v1.32.8=20=E2=80=94=20carry?= =?UTF-8?q?=20write=20provenance=20on=20records=20made=20through=20the=20a?= =?UTF-8?q?pp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps the version, regenerates the OpenAPI contract and the service-worker version fallback, and records the release notes for the intake-source and sync-trigger provenance surface plus the shared hhmm util and migration-number guard. --- CHANGELOG.md | 22 ++++++++++++++++++++++ docs/api/openapi.yaml | 2 +- package.json | 2 +- public/sw.js | 2 +- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf89ffce3..f703f8600 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,28 @@ ## [Unreleased] +## [1.32.8] — 2026-07-23 + +Health records written through the app now carry where they came from, and a +HealthKit sync can say what set it off. + +- **A dose logged from the app is recorded as an app entry.** Every intake used + to be stored as a web entry no matter how it arrived. The server now reads the + transport it authenticated the call with and tags the dose to match, so a dose + logged in the native app reads as an app entry while one logged in the browser + stays a web entry. A reminder confirmation, an import, and an Apple Health + mirror keep their own labels. The value is derived on the server and can never + be set from the request body. +- **The dose history shows how each dose was recorded.** The per-dose history + returns a source label on every intake, so a client can show at a glance + whether a dose came from the web, the app, a reminder, an import, or an Apple + Health mirror. Rows written before the label existed report as unknown rather + than guessing. +- **A HealthKit sync can report what woke it.** The batch upload accepts an + optional trigger tag reading foreground, background, or push. It is recorded + for diagnostics only and never changes which readings are stored or how they + are deduplicated, so sending it or leaving it off produces the same result. + ## [1.32.7] — 2026-07-23 The Coach output guard now reads numbers the way you actually write them, so a diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index 99bd2c302..ba6cce1d8 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.32.7 + version: 1.32.8 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 ce6797dda..5587af24b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "healthlog", - "version": "1.32.7", + "version": "1.32.8", "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 c62403b05..3f14e5752 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.32.7"; + /* @sw-version-fallback */ "v1.32.8"; 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/*`