From 0378e8e99d964f81d7a5bc18911d58c41e6c8678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sat, 16 May 2026 13:10:51 +0200 Subject: [PATCH] docs(brief): bump live state to v1.4.30 and add new endpoint listings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit §3 of the iOS contributor brief now reflects the v1.4.30 production state (both hosts on the iOS-coordinated foundation tag) and the v1.4.30.1 follow-up. The recent-releases table gains two rows; the "endpoints the iOS client may consume today" list gains the four v1.4.30 surfaces (`/api/sync/state`, `/api/mood-entries/bulk`, `/api/medications/intake/bulk`, `/api/admin/drain-per-sample-cumulative`) plus the new v1.4.30.1 `/api/measurement-categories` projection. --- .planning/ios-contributor-current-brief.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.planning/ios-contributor-current-brief.md b/.planning/ios-contributor-current-brief.md index c6b75a916..2ffef13ad 100644 --- a/.planning/ios-contributor-current-brief.md +++ b/.planning/ios-contributor-current-brief.md @@ -83,7 +83,7 @@ consumes. ## 3. What is live in production right now Both production hosts (`healthlog.bombeck.io` and -`demo.healthlog.dev`) currently serve **v1.4.29.1**. +`demo.healthlog.dev`) currently serve **v1.4.30**. ### Recent releases @@ -94,6 +94,8 @@ Both production hosts (`healthlog.bombeck.io` and | v1.4.28.1 | Dashboard-save hotfix | Resolver filters retired widget ids from the saved layout on read | | v1.4.29 | Dashboard performance + chart polish | aggregate=daily server path, AVG/SUM for cumulative HK types, pulse chart bounds, x-axis tick positions, mobile tile equal-height, drag-list compactness | | v1.4.29.1 | Daily-step aggregation hotfix | Client-side daily aggregator branches on `CUMULATIVE_HK_TYPES` for sum vs average | +| v1.4.30 | iOS-coordinated foundation | Daily-stats externalId lock + SyncMode columns + bulk-backfill endpoints + `MoodEntry.note` first-class column + workouts canonical-row picker + categorisation overlay + two new MeasurementType enums | +| v1.4.30.1 | Categories endpoint + conflict-resolution spec lock | `GET /api/measurement-categories` exposes the overlay over HTTP; `08-locked-contracts.md` §13 locks the SyncMode conflict-resolution policy (LWW by `updatedAt`, server-wins on tie) | ### Endpoints the iOS client may consume today (additive contracts) @@ -111,6 +113,11 @@ Stable since their respective release tags. Every one is locked per - `GET /api/insights/chat` (SSE) — Coach stream - `GET /api/insights/cards`, `GET /api/insights/correlations`, `GET /api/insights/comprehensive`, `GET /api/insights/targets` - `POST /api/workouts/batch` — batch ingest from HKWorkout (since v1.4.25 W8d; canonical-row picker added in v1.4.30 — see §4) +- `GET /api/sync/state` — SyncMode handshake (since v1.4.30). Returns `lastSyncedAt`, server clock for skew, live + tombstoned counters; the call also bumps the user-side checkpoint. +- `POST /api/mood-entries/bulk` — bulk mood-entry backfill (since v1.4.30). Up to 500 entries per call; probe-then-upsert distinguishes inserted vs duplicate; rate-limited at 60/min/user. +- `POST /api/medications/intake/bulk` — bulk medication-intake backfill (since v1.4.30). Same envelope shape, idempotency-key collision yields duplicate; rate-limited at 60/min/user. +- `POST /api/admin/drain-per-sample-cumulative` — operator-only drain endpoint (since v1.4.30, `requireAdmin()`). Collapses pre-Option-A per-sample APPLE_HEALTH cumulative rows into one row per day per type. Idempotent; default `dryRun: true`. +- `GET /api/measurement-categories` — HTTP projection of the categorisation overlay (since v1.4.30.1). Returns `{ version, categories[], assignments }` per `.planning/RESPONSE-TO-IOS-TEAM-2026-05-16.md` §3 R1. `Cache-Control: public, max-age=600`. iOS reads on cold start to drive the HealthKit permission picker grouping; hard-coded mirror in the iOS app stays as the offline fallback. - `GET /api/version` — live build + `offlineGeoEnabled` flag - 47 distinct paths total per the R-E iOS audit (`/Users/marc/Projects/HealthLog/.planning/research/v1428-r1-ios-contracts.md` enumerates them; mostly admin + monitoring routes not iOS-relevant)