mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 04:32:42 +00:00
The dispatcher's APNS branch only fires when a NotificationChannel of type APNS exists for the user, but no production code path created one. Every iOS install needed a manual settings toggle that doesn't exist, making the v1.4.23 W3 APNs cascade unreachable in real traffic. When `POST /api/devices` accepts an apnsToken, eagerly upsert the channel row with an encrypted empty config — the per-device token and environment live on the Device row by design, so the channel only exists to flip the dispatcher's gate. Mirrors the legacy Telegram on-first-dispatch auto-migration but eager so the very first reminder after registration routes through APNs. Adds an integration test that registers a device with apnsToken and asserts the channel row exists, registers without one and asserts absence, and re-registers the same apnsToken and asserts idempotency (channel count stays at one). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>