Internal
Public Access
/api/sync/ only returns rows changed since a device's last sync token. Any device that synced before tag/time-entry syncing existed already has a token from that era; pre-existing tags untouched since then were never "changed since" that token and so were permanently invisible to that device, even after tag syncing shipped. Adds a sync_format_version check that ignores the stored token and forces exactly one full resync per device when it detects an old-format token, backfilling anything that was missed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>