DecksMD

Changelog

Every release of the DecksMD plugin for Obsidian. The current version is 2.9.2.

  1. 2.9.2

    Decks writes a small marker into your notes next to each card, such as %%dk:h:x7f2%%. It is what keeps a card's review history attached to it when you reword the text, move it, or reorder your notes. These markers are Obsidian comments, so reading view has never shown them — but Live Preview did, which meant a note full of cards was also a note full of markers.

  2. 2.9.1

    This release fixes a way the flashcard database could be destroyed while being saved. If you have ever seen "database disk image is malformed", this is the cause.

  3. 2.9.0

    This release adds PDF support to the AI generator, changes generation to work in batches so it can cover a long source, and introduces Decks Pro — an optional hosted AI provider for people who would rather not manage an API key. Bringyourown key is unchanged and still free.

  4. 2.8.7

    This release fixes two visual issues in the deck list on mobile.

  5. 2.8.6

    This release merges profile settings and deck assignment into one modal, adds documentation links throughout the app, and makes the deck list more compact on mobile.

  6. 2.8.5

    This release fixes how tables and code blocks are turned into cards, and adds two actions to the deck options menu.

  7. 2.8.4

    This release adds a tree/flat toggle to the Decks panel and makes the whole list more compact.

  8. 2.8.3

    This release fixes and refines the unified deck tree introduced in 2.8.2.

  9. 2.8.2

    This release replaces the Files / Tags / Custom tabs in the Decks panel with a single collapsible tree.

  10. 2.8.1

    This release adds a scratchpad to review — a surface for working out an answer by drawing or typing before you reveal the card.

  11. 2.8.0

    This release adds a readaloud button to review. During a session you can play the current card out loud, with the voice and speed set per profile.

  12. 2.7.2

    This release makes exam decks start from every deck list, improves how multiplechoice cards look in review, fits the exam screens to mobile, and fixes a profile toggle that could affect the wrong profile.

  13. 2.7.1

    This release fixes two issues in the exam decks feature introduced in 2.7.0.

  14. 2.7.0

    This release adds exams: draw a set of questions from a deck, answer them in one sitting in any order, and get a graded result at the end. Exams support multiplechoice, typein, and cloze questions, an optional time limit, and a pass score.

  15. 2.6.1

    This release fixes the longstanding bug where suspended (and buried) cards reappeared in the review queue, most visibly after a plugin update.

  16. 2.6.0

    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.

  17. 2.5.7

    This release fixes several ways cards could disappear or move between decks, especially with many imported decks. It supersedes 2.5.6.

  18. 2.5.6

    This release fixes cards being lost during Anki import and reimport, and makes review progress survive when a card moves between decks.

  19. 2.5.5

    When you import from Anki, large decks are broken into multiple files so each stays fast to open in Obsidian. Decks 2.5.5 puts that choice in your hands.

  20. 2.5.4

    Importing a large Anki deck used to crawl, and some cards showed raw ![[sound.mp3]] text instead of playing anything. Decks 2.5.4 makes .apkg import dramatically faster and gets media rendering the way it should.

  21. 2.5.3

    Reviewing feels better when your fingers barely move. Decks 2.5.3 lets you remap the five review keys to whatever layout suits you.

  22. 2.5.2

    A lot of cards point to other notes instead of repeating their content. Now those links behave during review exactly like they do everywhere else in Obsidian.

  23. 2.5.1

    Important: this might reset card state when you update. If cards are reset to new, please rerun the recovery from Settings → Backup → Rebuild from history. I apologize for any inconvenience .

  24. 2.5.0

    Got an exam tomorrow? Decks 2.5.0 adds Cram — a focused drill over a whole deck that lets you hammer cards until they stick, without touching your real schedule. Cramming never rewrites your due dates or your review history, so a latenight cram session won't wreck the spacing FSRS has carefully built up.

  25. 2.4.4

    A fixandspeed release: decks can no longer be wrongly removed on startup, Obsidian opens faster with Decks installed, and the deck list refreshes much quicker in large vaults.

  26. 2.4.3

    Perdeck limits multiply once you have lots of decks — 13 decks × 100 reviews is 1300 cards a day, which isn't much of a limit. 2.4.3 adds a single daily cap across all decks so you can actually control your total study load.

  27. 2.4.2

    A small hardening release with no changes to how you use Decks.

  28. 2.4.1

    A deck profile could only turn one header level into card fronts. Now a single profile can parse several levels at once — so and sections in the same note both become cards, without splitting the note across separate decks or profiles.

  29. 2.4.0

    Coming from Anki? Decks 2.4.0 introduces a builtin oneclick importer that brings your entire collection across — your decks, cards, media, and review history come with you. Point it at an Anki .apkg export and you keep studying with FSRS6, picking up your reviews exactly where Anki left them.

  30. 2.3.0

    Decks 2.3.0 adds interactive image occlusion — hide regions of an image by drawing boxes right on it, then recall what's underneath. Run "Create image occlusion at cursor", pick an image, and a studio opens where you drag to draw masks, type an answer per box (Markdown/LaTeX), or leave a box empty to simply hide a label baked into the image. Everything is saved in a single selfcontained decksocclusion code block, so your coordinates and answers can never fall out of sync — and because they're stored as percentages, masks scale on any device.

  31. 2.2.0

    Decks 2.2.0 introduces table templates — design a card once, and every row of a tagged table renders through it. Write the template in plain HTML/CSS or Markdown, drop placeholders like {{Word}} where the column values should go, and bind it to your tables with a tag. Your vocabulary tables can become styled furigana cards, your formula tables can render proper math, your data tables can look exactly how you want — without touching the underlying notes.

  32. 2.1.0

    Coming from the Spaced Repetition plugin? Decks 2.1.0 introduces a builtin oneclick migrator that allows you to jump to Decks without losing your progress. The migrator extracts your legacy cards into clean Decks decks, rewrites each note into readable prose, and carries over your review history. You can pick up your reviews exactly right where you left off.

  33. 2.0.4

    This release fixes orphaned review logs after migration to new flashcard id, which includes the deck Id. Orphaned review logs can be restored by going to the Decks Settings Rebuild from History.

  34. 2.0.3

    This release fixes a serious dataloss bug in the database upgrade, makes failed upgrades nondestructive, and adds a oneclick recovery tool. If you ever saw cards reset to New with a blank heatmap after updating, this is for you.

  35. 2.0.2

    A followup to 2.0 focused on the AI generator: keep generating without losing your work, pick models from a list, open it in a tab, plus a round of readability fixes. AI features stay off until you add your own provider key in Settings → AI.

  36. 2.0.1

    A small followup to 2.0 focused on Obsidian compatibility and store compliance. No changes to your decks, profiles, or review history.

  37. 2.0.0

    This release adds an optional AI layer for creating and improving cards, plus a notes field for headerparagraph cards. AI features stay off until you add your own provider key in Settings → AI, and nothing is ever sent to a provider unless you trigger an action.

  38. 1.13.2

    In languages with long translations for the "New" and "Due" column headers (e.g. Russian "К повторению"), the deck name column was being squeezed out of view on narrow sidebars, making it impossible to click on a deck.

  39. 1.13.1

    The "Edit flashcard" modal now fully respects the active language. The modal title, all field labels (Header, Body, Front, Back, Notes, Hint, Image), and the Cancel / Save / Saving buttons were previously hardcoded in English — they are now translated across all 13 supported languages.

  40. 1.13.0

    The INTENSIVE profile has been removed. In its place is TRAINED — a profile that uses the weights your own review history produced when you run the optimizer. If you haven't trained yet, TRAINED falls back to the official FSRS6 defaults (same as STANDARD), so switching to it costs nothing until you have data worth learning from.

  41. 1.12.7

    When reviewing or browsing in tab mode on mobile, an empty band of padding showed at the top of the workspace tab — pushing the card content visibly down for no reason. The component was applying env(safeareainsettop) to its root unconditionally, but Obsidian's workspace tab is already nested below the system status bar, so the inset was doubling up.

  42. 1.12.6

    The ⋯ cardactions button (and its B / S / R hotkeys) shipped in 1.12.5 only appeared when reviewing in modal mode. If you had the review set to open as a tab instead, the menu was hidden and the hotkeys did nothing.

  43. 1.12.5

    You can now tell a card to step aside without deleting it. Three new percard actions cover the common Ankistyle workflows:

  44. 1.12.4

    Editing spatial cards now works

  45. 1.12.3

    Canvas decks now do more than parse text nodes — they also turn the edges between nodes into flashcards. Connect two text nodes with an arrow and the fromnode becomes the front, the tonode becomes the back, and the edge label becomes a hint shown on the card. Authoring flashcards now feels like sketching a small graph.

  46. 1.12.2

    Refactored the Statistics & Insights dashboard so it feels like a builtin Obsidian view instead of a generic web app embedded in one.

  47. 1.12.1

    Realtime sync on canvas file events

  48. 1.12.0

    Implented parsing flashcards from Canvas files. Each canvas becomes one deck. Each text node on the canvas is parsed independently with the same four flashcard formats supported on markdown files: headerparagraph, table, cloze, and imageocclusion.

  49. 1.11.2

    Less aggressive resync while editing a deck file

  50. 1.11.1

    Fix: stuck sync between devices when the same tag was mapped to a profile on both

  51. 1.11.0

    Edit flashcards inline from the Flashcard Manager

  52. 1.10.0

    Decks now speaks 13 languages

  53. 1.9.9

    Open the flashcard manager in a tab

  54. 1.9.8

    Flashcards inherit tags from parent headers

  55. 1.9.7

    Refactored the Getting Started note to be more clear on how to use decks.

  56. 1.9.6

    Sort the deck list by clicking column headers

  57. 1.9.5

    Reparse after reassigning a deck's profile

  58. 1.9.4

    Pin decks to the top

  59. 1.9.3

    Fix jump to header when header has tags

  60. 1.9.2

    UX polish on the deck view. Opening it is now instant, refreshes don't flicker, and the row settings menu no longer hides behind the modal.

  61. 1.9.1

    Followup sync coverage on top of 1.9.0 — closes three multidevice gaps where local actions weren't propagating to other devices.

  62. 1.9.0

    Revised Deck Synchronisation

  63. 1.8.1

    Card health indicators

  64. 1.8.0

    Personalized FSRS scheduling

  65. 1.7.7

    FSRS algorithm fixes Aligned the FSRS6 implementation with the official pyfsrs reference math — all primitive formulas now match bitexactly across 1,396 test inputs Fixed postlapse stability calculation: failing a card on Again can no longer accidentally increase its stability (the FSRS6 shortterm cap was missing) — heavilylapsed cards are now scheduled slightly more conservatively, in line with actual recall behavior Fixed the meanreversion anchor in difficulty updates so longrun difficulty trajectories match the spec Existing card data is preserved; only future ratings are affected Validated against the 10,000user openspacedrepetition dataset (443M predictions); calibration matches actual recall within 1 percentage point

  66. 1.7.6

    Undo last review New undo button (topleft of the card) appears as soon as you've rated at least one card in the current session — click it to roll back your most recent rating Cmd/Ctrl+Z works as a keyboard shortcut for the same action The card's full FSRS state (stability, difficulty, due date, interval, repetitions, lapses) is restored exactly to its prereview values, so an accidental "Easy" tap doesn't push the card weeks or months out The session progress counter rewinds correctly, including the case where you rated the same card twice (only the latest review is undone) Undo can be used repeatedly to walk all the way back through the current session — keep pressing it to unwind every rating you've made since opening the modal Closing the review modal ends the session, so undo is always scoped to your current sitting and won't affect history from earlier sessions

  67. 1.7.5

    Collapsible deck search The filter bar in the decks sidebar is now hidden by default — click the new search icon next to the flashcard manager (Grid) icon to reveal it Opening the bar autofocuses the input so you can start typing immediately Press Escape inside the input to clear the query and collapse the bar in one step Closing the bar via the toggle preserves your active query, so the same filter snaps back when you reopen it Search continues to match against both deck names and tags Removed the tagsuggestion dropdown beneath the input in favor of a cleaner, nativeObsidian filter look

  68. 1.7.4

    Perflashcard tags Add tags directly in your headers using standard Obsidian syntax: My Topic math science — tags are stored on the flashcard, stripped from the displayed front text and breadcrumb, and still picked up by Obsidian's tag pane Headerparagraph cards inherit their header's tags Table cards inherit tags from the header above them — tag the header once and every row in the table picks it up Reverse cards inherit the original card's tags, so both directions stay tagged consistently Tagonly edits do not reset FSRS scheduling state — change a tag freely without losing review progress

  69. 1.7.3

    Quick switcher in browse mode Added a search toggle next to the card slider — click the magnifying glass to swap the slider for a search input Type to filter cards in a floating dropdown (up to 10 results) that overlays the flashcard without shifting the layout Search matches against both front and back text using fuzzy matching Click any result to jump to that card; the slider returns automatically with the new index selected Press Escape while focused on the search input to close it and restore the slider

  70. 1.7.2

    Review UI refresh Header titles now use readable text color (fixed contrast issue in light mode) Hotkey hints rendered as native <kbd keys with proper styling Rating buttons show color coding via a 3px top border instead of full colored borders, with flat backgrounds that match Obsidian's design language Rating buttons reflow into a 2x2 grid on narrow screens Browse mode "Previous"/"Next" buttons fill the available width with the back arrow correctly placed on the left Icon buttons (open source, copy, notes toggle) use Obsidian's native clickableicon style and are sized down so they don't overlap card content Cards use Obsidian's native border radius and a subtler, flatter look Notes panel border is now solid (matches front/back cards) instead of dashed Breadcrumbs match Obsidian's muted UI style without underlines

  71. 1.7.1

    Bug fixes Fixed keyboard shortcuts (spacebar, rating keys, arrows) from the review tab intercepting input in other tabs and overlays (settings, command palette, etc.)

  72. 1.7.0

    Custom decks Create custom decks by handpicking flashcards from any existing deck Rename or delete custom decks from the deck list context menu Filterbased custom decks: define rules (tag, deck, due status) and the deck updates automatically Filter builder UI with live preview of matching cards

  73. 1.6.4

    Backup restore now includes profiles Restoring a backup now also restores deck profiles and tagtoprofile mappings Nondefault profiles are fully restored from backup; the default profile is preserved if it already exists

  74. 1.6.3

    Tabbased review and browse mode Review and browse sessions can now open in a new tab instead of a modal overlay Tabs can be dragged to sidebars, bottom panels, or separate windows for flexible positioning One review tab at a time — clicking another deck reuses the existing tab Tab title updates dynamically to show the deck name and mode (review or browse)

  75. 1.6.2

    Updated plugin description

  76. 1.6.1

    Create image occlusion flashcards by combining an image with a numbered list. The image should contain numbered labels that correspond to the list entries below it.

  77. 1.6.0

    Use Obsidian's native ==highlight== syntax to create cloze flashcards. Each highlighted word or phrase becomes a separate card where that text is blanked out during review.

  78. 1.5.4

    Cards now have unique IDs scoped to their deck rather than globally. Previously, if two different decks contained a flashcard with the same front text, syncing could fail with "UNIQUE constraint failed: flashcards.id". This is now fixed — each deck maintains its own independent ID space, so identical questions in different decks coexist without conflict.

  79. 1.5.3

    The breadcrumb shown below the session title in the review modal now collapses long paths automatically. Only the last two levels are visible by default — earlier levels appear as .... Tap or click any segment to toggle it between its full text and ..., so you can reveal exactly as much context as you need without the header taking up space. All segments are individually toggleable.

  80. 1.5.2

    Add reverse: true to the frontmatter of any deck file to automatically generate a reversed version of every card. Each card produces two entries — the original (front → back) and a reversed copy (back → front) — so you practice recall in both directions. Works with all card formats. Review progress is tracked independently for each direction. Removing the flag deletes the reverse cards on the next sync.

  81. 1.5.1

    Card parsing

  82. 1.5.0

    FSRS algorithm

  83. 1.4.4

    Settings

  84. 1.4.3

    UI

  85. 1.4.2

    UI

  86. 1.4.1

    Deck list modal

  87. 1.4.0

    Notes support for tablebased flashcards

  88. 1.3.17

    Profile cascade

  89. 1.3.16

    Database migration

  90. 1.3.15

    Database migration Fixed migration breaking databases when upgrading from older schema versions Column renames handled gracefully (e.g., oldduedate to olddueat) Migration failure now rolls back and creates a fresh database with a notice to restore from backup Only review data is migrated; decks and flashcards are recreated from vault files on sync

  91. 1.3.14

    Profiles Fixed profile switching not persisting when changing a tag's profile Profile reresolution during sync ensures decks get updated when tag mappings change Database schema v9: enforces one profile per tag

  92. 1.3.12

    Sync Removed faulty mtime optimization that could block refresh from picking up correct card state

  93. 1.3.11

    Sync Removed faulty mtime optimization that could block refresh from picking up correct card state

  94. 1.3.10

    Database Fixed SQL.js WASM loading: MainDatabaseService now uses embedded WASM instead of fetching from external CDN (which returned 404)

  95. 1.3.9

    Deck profiles Profiles are now applied to tags only, not individual files Perdeck daily limits enforced in tag group reviews (each deck gets its own new/review quota) Fixed session goal showing raw card total instead of respecting limits Fixed limit bars not appearing for tag groups in the deck list

  96. 1.3.8

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  97. 1.3.7

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  98. 1.3.6

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  99. 1.3.5

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  100. 1.3.4

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  101. 1.3.3

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  102. 1.3.2

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  103. 1.3.1

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  104. 1.3.0

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  105. 1.2.6

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  106. 1.2.5

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  107. 1.2.4

    Spaced repetition flashcards for Obsidian with FSRS algorithm

  108. 1.1.28

  109. 1.1.27

  110. 1.1.26

  111. 1.1.25

  112. 1.1.24

  113. 1.1.23

  114. 1.1.22

  115. 1.1.21

  116. 1.1.20

  117. 1.1.19

  118. 1.1.18

  119. 1.1.17

  120. 1.1.16

  121. 1.1.15

  122. 1.1.14

  123. 1.1.13

  124. 1.1.12

  125. 1.1.11

  126. 1.1.10

  127. 1.1.9

  128. 1.1.8

  129. 1.1.7

  130. 1.1.6

  131. 1.1.5

  132. 1.1.4

  133. 1.1.3

  134. 1.1.2

  135. 1.1.1

  136. 1.1.0

  137. 1.0.13

  138. 1.0.12

  139. 1.0.11

  140. 1.0.10

  141. 1.0.9

  142. 1.0.8

  143. 1.0.7

  144. 1.0.6

  145. 1.0.5

  146. 1.0.4

  147. 1.0.4

  148. 1.0.3

  149. 1.0.3

  150. 1.0.2