diff --git a/CHANGELOG.md b/CHANGELOG.md index 079773f79..8cdfad400 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,31 @@ ## [Unreleased] +## [1.29.2] — 2026-07-17 + +- **WHOOP workouts carry their real sport.** WHOOP was the only source that + didn't translate its activity into the app's own sport names, so + WHOOP-tracked rides and runs landed unlabelled instead of as cycling or + running. New and existing WHOOP workouts are now mapped, so your bike rides + show up as cycling — history included. When the same session comes in from two + sources, the canonical row now keeps the richest reading (heart rate, energy, + distance) instead of dropping it. +- **Scroll back through the day's heart rate.** The intraday heart-rate view + gains a day navigator to step through previous days. The fine-grained history + now stays for 90 days (was 14); older days show the coarser hourly shape. +- **Clear a card from Today.** A milestone, a new ECG, or a tension note can be + dismissed from the Today rail once you've seen it; the section tightens when + the last one is gone. The cards that need an action stay until you act. +- **Vitals context moves into an info tap.** The vitals tiles carry an (i) with + the context — your reading against your personal range, and against your age + where that applies — instead of a permanent caption. The VO₂ max heading no + longer gets cut off. +- **Oura cycle phases feed the cycle tracker.** Where your Oura connection + provides cycle-phase data, it now fills the cycle tracker as a background + source; your own entries always win. + +Two migrations (0247, 0248). No breaking changes. + ## [1.29.1] — 2026-07-17 A round of fixes and small refinements from living with the daily view. diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index 0a6c2842d..f26730199 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.29.1 + version: 1.29.2 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 aecdc5b15..0006031b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "healthlog", - "version": "1.29.1", + "version": "1.29.2", "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 50c7c0d12..4d02ccf2d 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.29.1"; + /* @sw-version-fallback */ "v1.29.2"; 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/*`