Skip to content

2.5.7

Choose a tag to compare

@github-actions github-actions released this 11 Jul 19:44

Decks 2.5.7 — fixes for cards disappearing when managing many decks

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

Decks no longer randomly drop to 0 cards

A deck could lose all its cards after a restart or a background sync when its file was briefly not yet registered by Obsidian — common right after importing several decks, or when the vault syncs through iCloud/Dropbox. A deck's cards are now removed only when its file is confirmed gone from disk, not merely missing from Obsidian's in-memory index.

A momentary read glitch can't wipe a deck

If reading a deck file ever came back empty (a transient glitch), the sync used to delete every card in that deck. It now leaves the cards untouched and retries on the next sync.

Decks stuck at 0 recover on their own

A deck emptied by the issues above would stay at 0 — its file was unchanged, so sync skipped it — until you re-imported. Such decks now re-parse automatically on the next sync; no re-import needed.

Cards no longer bounce between decks that share a word

When the same card front existed in two decks (common for overlapping vocabulary decks), a card could move to whichever deck synced last, making counts fluctuate and custom decks under-count. A card now stays in its deck; leftover cards from an old import are still adopted into their new deck.

Orphaned-card cleanup is now a manual command

Removing cards that have no deck no longer runs automatically during a sync, where it could occasionally remove a real deck's cards. It is available as the "Clean up orphaned cards" command when you need it.

Anki imports use the card's real front, not a hidden index field

Some Anki note types put a sort/index number in their first field while the card actually shows a later field (common in Refold and similar decks). The importer used the first field, so those cards imported with a number as their front — which looked wrong and, because a card's identity is its front, made cards with the same number collapse together and go missing (for example a 1,000-card deck landing short). Imports now take the front from the fields the note's template actually displays, so the whole deck comes in with meaningful fronts.

Custom decks survive a reload

A newly created custom deck could disappear after reloading Obsidian if the reload happened moments after creating it. Custom-deck changes (create, delete, add/remove cards, reset) are now written to disk immediately, so they persist across a reload.

Removing cards from a custom deck sticks

Cards removed from a custom deck could reappear, and the deck's count wouldn't update on refresh, because a background save merged the old membership back in. Removals are now honored during that merge, so a removed card stays removed and the count updates.

Deleting a deck's file now removes its cards

Deleting a deck's note left its cards in the database — they still appeared in filter decks, remained reviewable, and could collide with the same cards on re-import (making counts come up short). Deleting a deck now removes its cards too. Cards left orphaned by earlier versions are cleaned up automatically, once, on upgrade.

Imports no longer drop cards that share a front with another deck

When an imported card's front already existed in another deck (common across overlapping vocabulary decks), the imported card was skipped and reported as "shared a front" — the deck landed short. Such cards now import with a " (2)" suffix, so both decks keep their own card with its own progress. Re-importing into the same folder keeps existing fronts stable.

Import progress no longer freezes on "Copying media"

After copying media, the import wrote templates, rescanned the vault, and synced all new decks without updating the progress display, so it appeared stuck for minutes on large imports. Those steps now report progress (the sync shows a percentage), the template rescan only touches the files the import wrote, and the final card count uses a single query instead of one per deck.

Large re-imports no longer stall for minutes while syncing

When many cards' fronts and backs changed between imports, matching old cards to new ones compared every pair with an expensive text-similarity check, freezing the sync for minutes. Matching now resolves identical-back pairs instantly, pre-filters the rest by length, and caps the total comparisons — the sync finishes in seconds. Media files are also copied after the deck sync instead of before it, so background file indexing no longer competes with the import, and the progress bar advances within large decks instead of only between them.

Cards that moved between deck files during a re-import are recovered

A card whose front moved to a different part-file since the last import could be dropped when files synced in an unlucky order. The import now re-syncs any deck that came up short after all files have been processed, so those cards land with their progress intact.