chore(release): v1.35.2 — one answer, published

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.
This commit is contained in:
Marc-André Bombeck committed 2026-08-01 12:16:27 +02:00
1 parent 368eb44439
commit 99ceb236de
4 files changed
+42 -5

No files matched your search

+38
View File
@@ -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
+2 -3
View File
@@ -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:
+1 -1
View File
@@ -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",
+1 -1
View File
@@ -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/*`