From eb63cd3df39095056f4bdc1f6c6e70788993c01b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Tue, 2 Jun 2026 18:08:52 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=20v1.9.0=20=E2=80=94=20Insights?= =?UTF-8?q?=20time-ranges,=20deeper=20mood,=20medication=20coding,=20stabi?= =?UTF-8?q?lity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Insights gain selectable time ranges with period-over-period deltas, and the mood page adds time-of-day, stability and weight/BP correlation reads. Medications can carry ATC + RxNorm codes that flow into the health-record export alongside a MedicationAdministration per acted dose. The connection pool is sized for real concurrency to remove the under-load stalls, and the medication advanced-settings page is rebuilt. The standalone /targets page is retired in favour of inline editing. --- CHANGELOG.md | 25 +++++++++++++++++++++++++ docs/api/openapi.yaml | 2 +- package.json | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9dd9de30..d72c050b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # Changelog +## [1.9.0] — 2026-06-02 — Insights time-ranges, deeper mood, medication coding, stability + +### Added + +- **A time range you can choose on the Insights pages.** Each metric now carries range pills (week, month, quarter, year) and shows how the period compares with the one before it — the change in your average, stated plainly with its direction — so a trend reads at a glance instead of by eye. +- **Deeper mood insights.** The mood page now surfaces your time-of-day pattern (when your mood tends to sit highest and lowest), a stability read, and correlation cards that line mood up against weight and blood pressure — each shown only when there are enough paired days to mean something. +- **Standard drug codes on a medication.** A medication can carry an ATC and an RxNorm code (entered, never guessed). These flow into the health-record export: the exported `MedicationStatement` now codes the drug with the WHO ATC system and RxNorm alongside the plain name, and the export adds a `MedicationAdministration` for every dose you actually took or skipped, so a clinician's system can read the record without relying on free text. +- **A deploy-verification script** (`scripts/assert-deploy.ts`) that checks a target reports the expected version after a release. + +### Changed + +- **The medication advanced-settings page is rebuilt.** Import, intake-import and export sit in their own group, the external-API endpoints are listed one by one with collapsible request examples, and the layout is tidied so the technical settings read clearly instead of crowding together. +- **Targets are edited inline where they belong.** The separate `/targets` page is retired — you set a metric's target range from the metric itself, with no detour to a standalone editor. +- **The health-record export emits insurer coverage from a bare insurance number**, not only when a full insurer organisation is present, and carries a top-level narrative summary. +- **Notification settings wording** is tightened for clarity. + +### Fixed + +- **The app stays responsive under load.** The database connection pool was sized far too small by default and could starve while a background insight warm and a foreground request competed, which showed up as the occasional "server not responding" that recovered on its own; the pool is now sized for real concurrency and tunable for larger self-hosts. +- **A background insight warm no longer blocks a page**, and a burst of Apple Health / Withings sync no longer triggers a storm of regenerations — the warm is decoupled and the invalidation is debounced. +- **The medication card rows stay aligned.** "Last dose" and "next dose" could break onto different heights and look misaligned; the rows now hold an equal height. +- **Glucose entered in mmol/L converts correctly** in the editor instead of being stored against the wrong unit. +- **The admin and global layout no longer shifts** when a scrollbar appears, by reserving the gutter. +- **The legacy status endpoints are documented** — six older `*-status` routes were missing from the API contract and are now included. + ## [1.8.7.1] — 2026-06-02 — Assessments for every HealthKit metric, one-tap pre-generation ### Added diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index ed36dee8b..7db80f1fe 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.8.7.1 + version: 1.9.0 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 4d89906d8..3f99bd8ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "healthlog", - "version": "1.8.7.1", + "version": "1.9.0", "description": "Self-hosted personal-health-tracking PWA with Withings integration, AI insights, and doctor-report PDF export.", "license": "AGPL-3.0-only", "homepage": "https://healthlog.dev",