diff --git a/CHANGELOG.md b/CHANGELOG.md index 97619d7b2..c1217fd14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ ## [Unreleased] +## [1.28.11] — 2026-07-09 — Strava workouts + Garmin guidance + +Connect Strava to bring your activities in as workouts. Like the other wearable +connections, you register your own Strava application and paste its keys, so no +shared account is involved. A run that also arrives through Apple Health is not +double-counted — the existing source-priority picker collapses the duplicate. +Strava is a workout source only (no sleep, recovery, or body metrics). Also adds +a Garmin page and an in-app note: Garmin has no direct connection, but its data +flows in through Apple Health or Google Health Connect. + ## [1.28.10] — 2026-07-09 — Onboarding shows the AI value early New accounts now meet the AI value up front instead of discovering it as a cold diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index 78c0a73ef..9f24c2809 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.28.10 + version: 1.28.11 description: >- Self-hosted personal-health-tracking PWA — public API surface for the iOS native client and external ingest. diff --git a/docs/integrations/apple-health.md b/docs/integrations/apple-health.md index 3f9d3eefe..4d80057fc 100644 --- a/docs/integrations/apple-health.md +++ b/docs/integrations/apple-health.md @@ -199,3 +199,10 @@ The wide-event log line `import.apple-health.kickoff` (or `import.apple-health.kickoff.denied` on failure) captures every attempt with the upload size, SHA-256, and the resolved `ImportJob` id for debugging. + +## Garmin owners + +Garmin has no direct connector for a self-hosted instance. Garmin Connect writes +to Apple Health automatically, so the import path on this page is how Garmin data +reaches HealthLog on iOS. See [garmin.md](./garmin.md) for what comes through and +what Garmin withholds. diff --git a/docs/integrations/google-health.md b/docs/integrations/google-health.md index a32793a04..410034c24 100644 --- a/docs/integrations/google-health.md +++ b/docs/integrations/google-health.md @@ -141,3 +141,10 @@ per metric. The Settings **Disconnect** button removes the connection and its stored tokens. Previously synced measurements stay in the database. + +## Garmin owners + +Garmin has no direct connector for a self-hosted instance. Since Garmin Connect +5.14.1 (July 2025) the app writes to Google Health Connect, so this integration +is how Garmin data reaches HealthLog on Android. See [garmin.md](./garmin.md) for +what comes through and what Garmin withholds. diff --git a/package.json b/package.json index 3ab001050..5bf310940 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "healthlog", - "version": "1.28.10", + "version": "1.28.11", "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 396311c8f..d22d403c2 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.28.10"; + /* @sw-version-fallback */ "v1.28.11"; 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/*`