DecksMD
← All releases

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_undo op 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 modified matches the log's reviewedAt — 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 rate op 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 resetAt timestamp 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

  • removeAllCardsFromCustomDeck now emits one custom_deck_card_remove op per cleared membership and writes per-pair tombstones, matching the per-card removal semantics
  • Empty decks short-circuit with no emissions

Internal fix

  • updateFlashcard now honors an explicitly-provided modified timestamp instead of always stamping wall-clock now. This was breaking the cross-device "newer wins" guard in the sync handlers

Also on GitHub.