DecksMD
← All releases

DecksMD 2.6.0

Released 14 July 2026

Decks 2.6.0 — stable card ids

Until now a card's identity was derived from its question text: editing the question created what the plugin saw as a new card, and the review history often had to be recovered by guesswork — or was lost. This release gives every reviewed card a persistent identity that survives edits. It also fixes a bug where a tag's selected profile could revert on upgrade.

Cards keep their scheduling through edits

Rephrasing a question, rewriting an answer, moving a card to another heading or file, reordering table rows, inserting new cards above old ones — none of these reset a card's review progress anymore. The card's due date, interval, and history follow it through the edit. Deliberately deleting a card's content and writing something new in its place is still treated as a new card, since it tests something different.

How it works: a hidden identity marker

When a card is reviewed for the first time, Decks writes a small identity marker into the note — an Obsidian comment such as %%dk:h:x7f2%%, placed on its own line after the card's answer (or inside a table row's first cell, or at the end of a cloze line). Obsidian hides comments in reading mode and live preview, so the marker is only visible in source mode. It travels with the card when you cut and paste it. Removing the marker returns the card to a fresh state — it is the card's identity, so treat it as part of the card. Do not copy one marker onto two cards.

A one-time pass marks your existing cards

After the update, Decks marks every already-reviewed card once (one edit per deck file, shortly after start-up). Cards you never reviewed are marked at their first review instead. Review history and scheduling are fully preserved through the upgrade — every card stays on the due date it had.

Table cards: identity survives row and column changes

A table row's marker lives in its first cell. Editing any cell, adding or reordering columns, and moving rows within the table all keep the row's identity. A row whose cells contain cloze deletions gets one marker shared by all of its cloze cards.

Canvas cards no longer reset when node text changes

Cards from canvas files now derive their identity from the canvas node and edge ids instead of the node text, so editing the text of a connected node keeps the card's progress. No marker is written into canvas files.

Re-importing an Anki deck keeps your progress

Imported decks now carry identity markers derived from each note's Anki id. Re-importing an updated .apkg — even one where card content changed in Anki — matches cards by those markers, so review progress carries over instead of resetting. The legacy spaced-repetition migration writes markers the same way.

Editing through the plugin preserves markers

The card edit dialog and card splitting keep the identity marker in place (a split keeps it on the first of the resulting cards).

Image occlusion no longer requires the cloze setting

Image-occlusion cards (both the occlusion editor blocks and the older image-plus-numbered-list format) now parse regardless of the profile's "Cloze deletions" setting. That setting now controls exactly one thing: whether ==highlighted== text produces cloze cards. Note for decks that had cloze disabled: a body consisting of an image followed by a numbered list now parses as occlusion cards instead of one plain card.

Fixed: a tag's profile could revert after an upgrade

Database upgrades rebuilt the profile-tag mapping table without its deletion markers, so tag mappings you had deleted could come back — silently overriding the profile you selected for a tag (for example, reverting decks to a heading-level preset). Deleted mappings now stay deleted. If a stray mapping already resurrected in your vault, remove it once under the affected profile in the profiles manager.

Also on GitHub.