DecksMD 1.9.1
Released 13 May 2026
Changes
Follow-up sync coverage on top of 1.9.0 — closes three multi-device gaps where local actions weren't propagating to other devices.
Undo a review now syncs
- Rating a card then undoing it on Device A now reverts the card on Device B too. Previously, Device A would revert locally but Device B kept the post-rating state until the same card was reviewed again
- A
rate_undoop carries the log id; receivers look up the original log entry and roll the card back to its pre-rating state - Cross-device safety: the rollback only fires when the local card's
modifiedmatches the log'sreviewedAt— a concurrent rating on a different device isn't trampled - Best case: when undo happens within the 2-second sync log buffer window (the common case), the original
rateop is dropped from the buffer entirely so nothing ever leaves the device
Deck reset now syncs
- Resetting a deck's progress (or a custom deck's progress) now propagates: reviews are wiped, sessions cleared, and cards reset to "new" state on every synced device
- A
resetAttimestamp gates the apply: cards reviewed AFTER the reset on another device aren't trampled by an older reset op arriving late - Idempotent — applying the same reset op twice produces the same final state
Custom deck membership: bulk clear now syncs
removeAllCardsFromCustomDecknow emits onecustom_deck_card_removeop per cleared membership and writes per-pair tombstones, matching the per-card removal semantics- Empty decks short-circuit with no emissions
Internal fix
updateFlashcardnow honors an explicitly-providedmodifiedtimestamp instead of always stamping wall-clock now. This was breaking the cross-device "newer wins" guard in the sync handlers
Also on GitHub.