From 099ea514b12a3257dd963f585ee93a7cc60a3847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sat, 10 Oct 2026 13:56:41 +0200 Subject: [PATCH] chore(release): v1.42.1 --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ docs/api/openapi.yaml | 2 +- package.json | 2 +- public/sw.js | 2 +- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 818cb8a3f..388fe5bec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## [1.42.1] — 2026-10-10 + +Fixes for Google Health syncing and the measurement maintenance run. + +### Fixed + +- **Google Health parked after a reconnect (#1194).** A backfill walk used + one access token throughout; after Google's one-hour expiry the walk saw + 401s and the connection was parked at `error_reauth` although the refresh + token was valid. Resources now take a token source that renews before + expiry and once more on a mid-walk 401; a 429 is waited out (Retry-After, + RetryInfo or backoff) and stays transient; parking follows only a refused + grant at the token endpoint, and an account parked by a data-call 401 + recovers on its next run. One sync per account at a time: the hourly run + skips, a manual sync answers 409 `sync_in_progress`, backfill and sleep + repair wait. An interrupted backfill resumes from `backfill_progress` + (migration 0393). +- **Overlapping Google Health sleep segments (#1195).** A batch keeps one + reading per natural key (the longer segment), a remaining collision is + settled through `reconcileExternalMeasurement`, and overlapping sessions + no longer clear each other's rows. Night totals use the union of segments. +- **Measurement maintenance on Docker (#1192).** The maintenance connection + sets `max_parallel_maintenance_workers=0` and needs no `/dev/shm` segment; + the bundled `docker-compose.yml` sets `shm_size: 256mb` for the database. +- **Dashboard spacing.** The tile row sat flush against the top card; a + `display: contents` wrapper had swallowed the gap. + +### API + +- `POST /api/google-health/sync` may answer 409 `sync_in_progress`. + ## [1.42.0] — 2026-10-09 A day view behind every dated value, an optional timeline with life events, diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index 04ac50ba9..734d96df3 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.42.0 + version: 1.42.1 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 a28ffe232..d4f4fd06a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "healthlog", - "version": "1.42.0", + "version": "1.42.1", "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 603d4a6af..71af802bd 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.42.0"; + /* @sw-version-fallback */ "v1.42.1"; 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/*`