diff --git a/CHANGELOG.md b/CHANGELOG.md index 4617fa8ad..8255a1cf2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,28 @@ ## [Unreleased] +## [1.32.15] — 2026-07-24 + +Your Polar training sessions now sync into HealthLog, alongside the recovery, +sleep, and daily activity that Polar already brought in. Thanks to +@StefanIndustries, whose report asked for this after the vitals sync landed. + +- **Polar exercises arrive as workouts.** Every run, ride, swim, or gym session + you upload to Polar Flow shows up in your workout history with its sport, + start time, duration, distance, calories, and heart rate. The raw Polar sport + label and training load ride along in the background so nothing is lost. The + sync reads your last 30 days of uploads once an hour, so a session synced + late from your watch is still caught. +- **A Polar session does not double up with your other sources.** If the same + workout also reaches HealthLog through Apple Health or another connection, the + two are matched and only one is shown. A Polar watch counts as a direct + heart-rate recording, so it ranks above a Strava re-upload of the same run but + below your primary on-wrist wearables. You can change that order under + Settings, Sources. +- **The two Polar halves stay independent.** A hiccup fetching your training + sessions no longer holds back the recovery and sleep sync, and the reverse + holds too, so a problem on one side never masks the other. + ## [1.32.14] — 2026-07-24 When the Coach removes a number it could not check against your data, the reply diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index d3b114d83..f235548b0 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.14 + version: 1.32.15 description: >- Self-hosted personal-health-tracking PWA — public API surface for the iOS native client and external ingest. diff --git a/public/sw.js b/public/sw.js index b612ef307..da0f72c09 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.14"; + /* @sw-version-fallback */ "v1.32.15"; 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/*` diff --git a/src/lib/polar/__tests__/client-exercises.test.ts b/src/lib/polar/__tests__/client-exercises.test.ts index 71d9ed423..cf41fa331 100644 --- a/src/lib/polar/__tests__/client-exercises.test.ts +++ b/src/lib/polar/__tests__/client-exercises.test.ts @@ -1,4 +1,4 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { afterEach, describe, expect, it, vi } from "vitest"; import { combinePolarStart,