DecksMD 1.11.1
Released 22 May 2026
Changes
Fix: stuck sync between devices when the same tag was mapped to a profile on both
- If two devices independently applied a profile to the same tag (each generating its own internal mapping id), syncing one device's log into the other would hit a
UNIQUE constraint failed: profile_tag_mappings.tagerror inside thetag_mapping_upserthandler. The handler threw before the dispatcher could advancejournal_state, so the same op was retried on every subsequent sync — permanently blocking the source device. All later session/rate ops behind it were stalled too. - The handler now resolves the tag conflict atomically with a newer-wins check: if the incoming mapping is newer than the local one, it replaces it; otherwise the local mapping is kept. Either way the op is consumed and sync moves forward.
- After updating, your iOS (or other previously-stuck) device will resume syncing on the next pass and drain its backlog of reviews/sessions automatically.
Also on GitHub.