ManaBox import, with progress and a format explainer

Library → Import cards… now reads a ManaBox collection export, either the
.csv or the .txt. The CSV is matched by Scryfall ID, falling back to name,
set and collector number, and its Foil column picks the copy group's finish.
Condition, language and prices are ignored; proxies count as owned.

A decklist line that names a printing now resolves to that printing's card
when several cards share the name (a card and its token, or an art-series
entry), and a bare name prefers the real card.

Imports run in one transaction (nestable via SAVEPOINT), which took the
942-row sample from 22s to 0.2s, and off the main thread, with a progress
dialog for slow ones. An explainer of the supported formats now comes
before the file picker.
This commit is contained in:
2026-10-16 21:57:52 -05:00
parent 81b1df8c9f
commit 507df81f5f
10 changed files with 715 additions and 37 deletions

View File

@@ -233,6 +233,12 @@ do, and import reads it back:
printing, then a plain line for the unspecified copies. A suffix that doesn't
match any printing still imports the card itself.
**Library → Import cards…** also takes a **ManaBox** export of a collection
or binder, either the `.txt` or the `.csv`. Both add to what you already own.
The CSV names each copy's exact printing and finish, so it's the better of
the two. Condition, language, prices and the other ManaBox fields aren't
kept. Proxies count as owned copies.
> The picker's dates and languages need card data from this version. Until you
> update it, printings are listed without them. Whenever your card data is
> missing something the app could use, a notice under the top bar offers