From 99ceb236de5f48d4e13c22f64fd3a0dd868006ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sat, 1 Aug 2026 12:16:27 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=20v1.35.2=20=E2=80=94=20one=20a?= =?UTF-8?q?nswer,=20published?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The cycle ring stops working out its own verdict and reads the server's. The constant that made that possible is deleted rather than deprecated, because a constant left in client code is a constant that gets copied again, which is how the other client's ring froze in the first place. The score settings page takes the shape the other settings cards have, loses a pillar that could never score, and turns green where the app's other two scores already did. A saved selection now comes back as it was sent. Five gaps in the published specification are closed, including a route that shipped this morning and was never described at all. --- CHANGELOG.md | 38 ++++++++++++++++++++++++++++++++++++++ docs/api/openapi.yaml | 5 ++--- package.json | 2 +- public/sw.js | 2 +- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5cac6b968..be514cca2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,44 @@ ## [Unreleased] +## [1.35.2] — 2026-08-01 + +### Added + +- The cycle ring now reads its verdict from the server: which day of the cycle + you are on, how many days until the next one is expected, and whether a period + is late, with the number of days. Both clients read the same answer instead of + each working one out. + +### Changed + +- The Health Score turns green at 70, the same threshold the readiness and sleep + scores already used. A weak pillar still holds the band down no matter how good + the average is, so a single poor area cannot be averaged out of sight. +- The score settings page was rebuilt to match the other settings cards: one + reading edge, no separator lines, the save button where the other cards keep it. +- The Fitness pillar is gone. It could never produce a value, because the record + cannot tell a measured fitness test from a device estimate, so it was offering a + choice that did nothing. +- The arrival line under the greeting is gone. It never said what had arrived. + +### Fixed + +- A saved score selection now comes back exactly as it was sent. One pillar was + quietly stripped on the way to the server, so the page could never agree with + what it had saved and the save button stayed lit for good. +- The cycle wheel follows the timezone on your profile rather than the one your + browser happens to be in. + +### Contract + +- Two share-link fields that were agreed for retirement are no longer served. +- A conflict on a repeated request now returns its error the way every other + route does. One place in the whole codebase answered with a different shape. +- Five gaps in the published specification are closed, including a route that + shipped with the score settings and was never described at all, and one that + had been promised for months. + ## [1.35.1] — 2026-08-01 ### Fixed diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index 76aa5f00f..4ae490966 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.35.1 + version: 1.35.2 description: >- Self-hosted personal-health-tracking PWA — public API surface for the iOS native client and external ingest. @@ -13911,7 +13911,7 @@ components: type: object properties: pillars: - maxItems: 8 + maxItems: 7 type: array items: $ref: "#/components/schemas/ScorePillarId" @@ -13942,7 +13942,6 @@ components: - SLEEP - ADIPOSITY - WELLBEING - - FITNESS - LIPIDS description: A Health Score pillar id. ModulePrefsPatchRequest: diff --git a/package.json b/package.json index 00a5fcbaf..328052eaf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "healthlog", - "version": "1.35.1", + "version": "1.35.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 0f50573f3..7bc9df343 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.35.1"; + /* @sw-version-fallback */ "v1.35.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/*`