chore(release): v1.28.32 — Fitbit re-keyed re-imports can no longer be silently dropped

Single-fix release mirroring the Google Health natural-key rescue from
v1.28.28 into the Fitbit sync. The measurements natural-key unique index
(user, type, measured_at, source, sleep_stage — NULLS NOT DISTINCT,
migration 0055) covers tombstoned rows, so a re-import carrying NEW
externalIds for previously-removed rows collided on the natural key and
skipDuplicates dropped the insert silently. Every planned create now gets
a second chunked probe by natural key with no deletedAt filter; a match —
live or tombstoned — is updated in place with the fresh value, the new
externalId, and deletedAt: null. Probe failure notes the hard-failure
ledger so the watermark holds and the next tick retries. No other code
path touched.
This commit is contained in:
Marc-André Bombeck committed 2026-07-12 20:30:12 +02:00
1 parent 14b61e1084
commit a70139c16a
7 files changed
+285 -10

No files matched your search

+1 -1
View File
@@ -1,7 +1,7 @@
openapi: 3.1.0
info:
title: HealthLog API
version: 1.28.31
version: 1.28.32
description: >-
Self-hosted personal-health-tracking PWA — public API surface for the iOS native client and external ingest.