Skip to content

Editors

The admin site provides a single Edit Lists page for managing decks, collections, and wanted lists. A tab at the top selects the list type — Decks, Collections, or Wanted Lists — and each shares the same core interaction model with minor differences per list type.

Pick a list type with the tabs at the top of the page, then choose the file to edit from the dropdown below them. Loading a file fetches full card data, printings, and pricing from the cache.

The address bar follows both choices — #/edit/deck/Winota%20Stax is the deck editor with that deck open — so the page can be bookmarked or shared, and reloading returns to the same list. See page URLs for the full scheme.

The editors can be driven entirely from the keyboard. Page-level shortcuts are suppressed while any dialog is open, so a dialog’s own keys always win:

KeyAction
?Open the Keyboard Shortcuts reference — the same as clicking the ? button at the end of the action bar
Ctrl+EnterOpen the card search modal — the same as clicking + Add Card
Ctrl+BMove focus into the bottom action bar, on its first enabled button
/ While focus is in the action bar, move between its buttons (wrapping at either end); Tab still works as normal
EscWhile focus is in the action bar, drop focus back to the page

The ? dialog lists every binding above plus the per-step keys of the add-card dialog, so the full set is discoverable from the editor itself. Because ? is an ordinary character, it only triggers when you aren’t typing in a text field.

On macOS, Cmd substitutes for Ctrl. The same shortcuts are available in the public site’s editor, which shares the action bar and dialogs.

The list toolbar (shared with the public site pages) groups all card filters under a right-aligned Filters dropdown. The button shows a badge with the number of active filters, and the panel offers:

  • Hide Lands / Hide Unpriced — toggle lands and cards without a known price. Hide Unpriced reads the price rather than the reason, so it also hides cards that are priceless by rule: proxies and custom-art copies price at 0
  • Hide Extras — deck pages only; hides the maybeboard/token sections
  • Name — space-separated terms; a card matches when every term appears somewhere in its name, case- and accent-insensitively (jotun matches Jötun Grunt; the same matching the CLI session filter uses)
  • Color Identity — toggle any combination of the five colors plus a Colorless swatch (select it alone to find cards with no color identity), then pick a match mode: Subset (the default) matches any card that could be played in a deck of the selected colors, Include matches cards using at least one of them, Exclude matches cards using none of them, and Exact matches cards whose identity is exactly the selection
  • Sets — a tag input filtering by set code; type a code (space or comma finishes the tag) or pick from the autocomplete list of codes present in the list. Include (the default) keeps the selected sets; Exclude drops them
  • Card Type / Oracle Tags / Art Tags — tag inputs sharing the same Include / Exclude / Exact match mode, defaulting to Exact (a card must carry every selected value)
  • Labels — label-carrying pages only; chips for For Sale / For Trade / To Keep / Proxy / Unlabeled, matched against each card’s effective labels. A deck page shows only the two chips a deck can answer, Proxy and Unlabeled; a wanted list shows the row not at all (see the public-site filtering page for the selection rules)
  • Mana Value — a comparison (=, <, , >, ) against a non-negative value (0 is valid)
  • Buylist ($) — sell mode only; a comparison against the buyer’s per-copy offer, always in dollars
  • Buylist — sell mode only; chips for On buylist / Not on buylist, matched against whether the selected buyer is currently buying the card’s printing — a paused offer counts as Not on buylist (see sell mode)

Filters combine, and the Clear action at the top of the panel resets everything. On deck pages the commander section is never filtered.

The toolbar also carries the quick filter: start typing anywhere outside a field and a small Quick filter tab drops out of its bottom-right corner, holding the same Name filter as the panel. Empty it (or press Escape in it) and it goes away.

When sell mode is enabled, the toolbar also carries a Sell mode toggle and a buyer selector, and buylist prices, the Buylist filters, the buylist grouping and sorting, and the Card Kingdom cart export become available in the editors. It is off by default on the admin site too — enable it with the Offer sell mode checkbox on the Settings page, with ritual config set site.sellMode true, or by starting the server as ritual admin --sell-mode; with it off the toggle and buyer selector are not rendered at all, and the sell routes behind them answer 404 unless the cardkingdom price store — which rides on the same feed — is enabled. Saving the checkbox applies at once: reopen an editor and the toggle is there (or gone), with no reload.

The editors also follow the priceSources config: with both USD stores enabled their toolbar carries the same Prices source selector as the public site, and with an empty list their price displays hide entirely. Unlike the public site (which reads prices baked into its list data), the editors quote live against the admin’s own API, so a card added mid-edit is priced immediately. Quotes come from the locally cached buylist. The first download is deliberate — the Refresh Cache page’s Refresh buylist button, or ritual sell --refresh auto — after which admin refreshes a day-old copy at startup and the button forces one mid-session. A button press that actually downloads a new feed also clears the quotes this browser session has already resolved, so an editor opened afterwards prices against the new feed rather than the one it had asked about before. See Sell mode.

Each card displays + and buttons to add or remove copies. Reducing a card’s quantity to zero removes it entirely.

In binder and overlap views, these appear as transparent overlay buttons on hover. In list view, they appear inline.

Cards can be selected across every view mode for bulk actions. Hovering a card in binder, row, or column view reveals a translucent checkbox in its top-left corner; in list view the checkbox sits at the far left of each row. Clicking it — or Ctrl-clicking (⌘-clicking on macOS) anywhere on the card — marks the card with an accent-colored checkmark, and a Selected (N) button appears in the toolbar showing the running count of selected copies for the list you’re editing. The selection persists across grouping, sorting, and view-mode changes. A quantity group (e.g. ) selects all of its copies at once and counts them individually; once some copies are removed it shows a dash instead of a checkmark.

Opening the button reveals a menu of actions over that list’s selection:

  • Copy as Text — copies a quantity-prefixed N Card Name (SET:Collector Number) list to the clipboard
  • Copy as CSV — copies the selection as CSV (Name,Set,Collector Number,Finish,Condition,Language,Quantity)
  • Clear selection — deselects the current list’s cards only

The public site adds an Add to Trade action here; the admin site omits it because it has no Trade Planner page.

While a list is open in edit mode, the Selected (N) menu also gains an edit section that applies the same operations as a single card’s + / buttons and context menu, but over the whole selection at once:

  • Add a copy / Remove a copy — bump each selected card up or down by one copy
  • Remove from list (decks: Remove from deck) — remove every copy of each selected card
  • Set as Foil / Set as Nonfoil — set the finish on each selected card that supports it (others are skipped)
  • Change Printing… — runs the printing picker over the selected cards one at a time (cancelling skips that card and continues)
  • Set Language… — opens the language picker and applies the chosen language to every selected card
  • Set as Commander — decks only; marks each selected card as a commander
  • Set Label… — decks and collections; opens the label picker for the selection’s list type (a deck is offered Proxy and Use list default) and applies the chosen override to every selected card. The item is hidden when the selection spans several list types, or is on a list type that carries no labels (wanted lists)
  • Move to section… — opens a picker to move every selected card into an existing section, or New section… to name a new one
  • Move to list… — opens a picker to move every selected card into another list (each card’s custom art goes with it)

These edits go through the same pending-changes/undo flow as per-card edits, so nothing is written until you Save (admin) or export (public). The selection is cleared once an action is applied.

Selections are held globally, so switching to another list (or list type) keeps them. Whenever anything is selected, an All Selected (N) button is shown in the admin header (on every page) with the total across all lists; its menu runs the copy actions over the whole cross-list selection and its Clear all selections entry wipes every list. The menu’s View all selections… entry opens a dialog listing every selected card — with its quantity, printing, finish, and condition — and the list it came from, shown in selection order or grouped by source, where each row’s ✕ removes one copy and the copy/clear actions are repeated.

The cross-list menu (and the View all selections… dialog) also offers Remove all selected, which deletes every selected card from its list. On the admin site this commits atomically to each list file across all lists in one pass (auto-committed to git when enabled), much like the Move Cards page. On the public site — which has no server — the list currently open in the editor is updated live, while removals for any other selected lists are merged into those lists’ saved browser sessions, surfacing the next time each is opened in edit mode.

Each editor has an Add Card Defaults toggle in the bottom action bar, between the + Add Card and Changes buttons. Clicking it expands a panel upward revealing the default fields; a dot on the toggle indicates when any default is currently active. It mirrors the session filters in the CLI’s edit and add-card commands and is intended for batch entry — set defaults once, then add many cards in a row without confirming the same fields each time.

The available defaults vary per editor:

FieldDeck EditorCollection EditorWanted List Editor
Set codes✅ Comma-list✅ Comma-list✅ Comma-list
Finish
Condition❌ Not applicable

Defaults are scoped per-editor and persist across reloads in localStorage under ritual:admin:defaults:{deck,collection,wanted}.

  • Set codes filter — When set, the printing picker shows only matching printings. If exactly one printing matches, it is auto-selected and the picker step is skipped. If no printings match, the picker falls back to showing all printings with a hint banner.
  • Default finish — Pre-selected on the finish/condition step. If the chosen printing supports the default finish, that step is skipped entirely.
  • Default condition — Pre-selected on the finish/condition step. The step is skipped only when both finish and condition can be resolved.

When a default cannot be applied (e.g. the chosen printing doesn’t support the default finish, or no condition default is set on the Collection Editor) the finish/condition step still appears but the inputs are pre-filled.

Click the + Add Card button in the bottom action bar, or press Ctrl+Enter, to open the card search modal. The modal shows keyboard-shortcut hints along its bottom edge — they change per step — and every step is fully keyboard navigable. Dismiss it with Esc or by clicking outside it.

  • Type at least 2 characters to search (debounced — 500 ms by default, configurable via searchDebounceMs)
  • What you type is split on whitespace and every term must appear in the card name, in any order — in tre finds “In the Trenches”, bolt light finds “Lightning Bolt”. Case, accents, and punctuation don’t have to match (jaces archivist finds “Jace’s Archivist”). This is the same matching the CLI prompts use. (The static public site’s editor is the exception: it queries the Scryfall API directly, which matches the query as one plain contiguous string, so its results can differ. A public site backed by a live API gets this same term matching.)
  • The closest matches lead: a name you have typed in full, then names your query prefixes, then names whose words your terms begin, then names matched mid-word
  • Results are keyboard navigable (↑/↓ arrows, Enter to select)
  • Hovering or navigating to a card shows a preview image of the cheapest printing

Choose a specific printing from the grid showing set, collector number, and price. In the Deck Editor and Wanted List Editor, you may also choose No specific printing to add without printing details.

Prices follow the selected price store: the step carries its own Prices selector (the same one the list toolbar has, when both USD stores are enabled), each printing lists its alternate finishes underneath its main price, and the finish prices on the next step follow the same store. Card Kingdom quotes for printings no list carries are fetched from the admin API as the grid opens, so a printing the search just turned up is priced like any other.

The grid navigates in two dimensions: / move to the previous/next printing, and / move a whole row up or down (the row width follows the grid’s responsive column count). Moving past the printings shown on the current page pages the grid automatically. Enter selects the highlighted printing.

Type to filter. Typing anywhere on this step builds a set-code / collector-number query in the filter box below the heading — the same grammar as the CLI’s collector mode. One bare token matches set codes as a substring and collector numbers as a prefix (16 finds #161, not #516); two tokens, or a :, split into both halves (ds 12 and mkm:123 require set and number to match). The box is never focused automatically, so the arrow keys keep driving the grid while you type; Backspace erases and Esc clears the query (a second Esc closes the dialog). While a query is live the No specific printing tile is hidden. On touch devices, tap the box to type with the on-screen keyboard.

This step appears when the selected printing has multiple finish options.

  • Select a finish (nonfoil, foil, etched) if the printing has multiple options
  • Select a condition (NM, LP, MP, HP, DMG) — only available in the Deck and Collection editors; defaults to NM
  • Set a Quantity — how many copies of this exact printing to add. Starts at 1 and cannot go below it. Not shown when the dialog was opened via Change Printing…, which asks for a copy count of its own beforehand

Focus lands on the first group’s selected option when the step opens.

  • / move within the focused group: they change the selected finish or condition, and step the quantity up or down while the quantity ticker holds focus
  • / (or Tab) move between the groups — finish, condition, quantity
  • +/- adjust the quantity from anywhere in the step, without focusing the ticker first
  • Enter adds the card with the current selections from anywhere in the step (except while the ← Back button is focused, where it goes back)

The step offers two commit buttons, each with its shortcut shown in its corner (the corner hints are hidden on touch devices). Both add the chosen quantity of the chosen printing, and show a ×N multiplier once the quantity is above one:

  • Add Card (Enter) — adds the card and closes the modal
  • Add Another Card (Ctrl+Enter) — adds the card, then returns to a fresh search step so the next card can be added without reopening the modal. Not offered when the dialog was opened via Change Printing…, which edits an existing card.

A deck folds the added copies into one entry with a quantity; collections and wanted lists store one entry per copy, since each copy carries its own condition and note.

Beneath the printing grid (and again on the finish/condition step, bound to the same values) the dialog offers two optional per-card settings:

  • Label — the label override the new card starts under, listing what the list type carries: the full vocabulary on a collection, Proxy alone on a deck, nothing at all on a wanted list. The label rides the add change itself, so it lands on the copy being added and never on a same-named card already in the list.
  • Custom art — a path inside the art directory or an image URL, validated as you type; an unusable reference is explained under the field and blocks the add until it is fixed or cleared. Unlike the printing, the art is not part of the change: it is held until the save gives the new line its &N, and written straight after it (see Custom Art). Offered in the admin editors only — the public editor exports changes and has no sidecar to write.

Both fields reset for the next card, including after Add Another Card.

Right-clicking a card (or clicking the button in binder/overlap views) opens a context menu. Set as Foil, Change Printing…, Set Language…, Set Custom Art…, and Move to section… are available in all editors. The Deck Editor additionally offers Set as Commander; the Deck and Collection Editors offer Set Label… with their type’s choices.

The Move to section… item opens a picker listing every section except the card’s current one, plus a New section… entry that prompts for a name and moves the card into a freshly created section. Moving a card emits a set-section change (latest-wins: moving a card back to its original section cancels the pending move).

Every list type supports named sections that render as headed groups on the public site. Decks use sections for Commander/Main/Sideboard/Maybeboard; collections and wanted lists can be split into any sections you like (e.g. Trade Binder, Foils, High Priority).

Click the Sections button in the bottom action bar to open the Manage Sections dialog:

  • Add a section — type a name and click Add Section (or press Enter). New sections start empty. Section names must be unique case-insensitively: typing a name that already exists (in any casing) marks the input invalid, highlights the clashing row, and disables Add Section.
  • Rename a section — click Rename on a row; all cards in that section move with it. A rename that would collide with another section (case-insensitive) is rejected.
  • Delete a section — click Delete on a row. Only empty sections can be deleted; the button is disabled while a section still holds cards.

One deck section does not survive a save while empty: an extras section (a name containing maybeboard or token) is dropped when it holds no cards, whether you just created it or just removed its last card. Extras count toward no total, so a header with nothing under it is a leftover rather than content — add a card to it in the same save if you want it to stick.

Cards with no explicit section belong to an implicit Main section, which is written out explicitly the next time the list is saved. On the public site, a list with two or more sections defaults to grouping by section, and Section becomes a selectable grouping option in the toolbar.

On disk, sections are ## Section Name (H2) headers beneath the list’s # Title, with card lines grouped under each header. See the collection and wanted list file formats.

Change Printing… reopens the same printing picker used when adding a card — starting directly on the printing-selection step for the card you clicked. Pick a printing (and finish/condition, where applicable) to retarget the card.

When the card represents more than one copy (a Deck Editor entry with quantity > 1, or a Collection Editor tile that groups identical copies), a prompt first asks how many of the N copies should get the new printing:

  • Decks — Changing all copies retargets the entry in place (logged as a single set-printing change). Changing only some copies decreases the entry’s quantity by that amount and adds the same number of copies of the new printing under a new card ID — logged as a quantity decrease plus a new add, so it is unambiguous which copies moved.
  • Collections — Each copy is its own single-card entry, so the chosen number of entries are retargeted individually (one set-printing change each). Untouched copies keep the old printing and re-group into a separate tile.
  • Wanted lists — Each row is a single entry and is retargeted directly.

Every printing change is recorded as a change event tagged with the card ID and the target printing, and appears in the changelog (e.g. Set "Lightning Bolt" printing to M10:146 [foil] &5).

Every card entry has a language — a Scryfall code written on the line as a lowercase bracket token ([ja]) and omitted for English, so a bare line always means en.

  • Set Language… in a card’s context menu (and in the multi-select Selected menu) opens a picker over the 17 Scryfall languages, with the current one marked. Picking English clears the token. The change is a pending set-language edit like any other — undoable, listed in Changes, and written on save (changelog: Set language of "Sol Ring" to Japanese &7).
  • Adding never asks for a language: new cards are stamped with the configured defaultLanguage (editable on the admin Settings page). Change an individual copy afterwards with Set Language….
  • The printing picker shows one tile per physical printing (set + collector number), never one per language object. Under a non-English default, a printing that does not exist in that language is marked with a notice — picking it records the copy in the language that does exist (English when available) rather than inventing a language Scryfall has no card object for.

Set Custom Art… in a card’s context menu opens the Custom Art dialog, where a card can be shown with your own image instead of its Scryfall art — a proxy scan, an alter, commissioned art. See Custom Card Art for the sidecar format and how the image is published.

  • Pick an Image source: File in the art directory (a path like proxies/sol-ring.jpg, relative to artDir) or Image on the web (an http(s) URL). A live preview renders as you type, and says so when the image cannot be loaded.
  • Save writes immediately through the Card Art route; Remove art clears the card’s entry. Both take effect in the editor at once — the tile and the card modal re-render with the new image.
  • Setting custom art is metadata, not a pending change: it is never listed in Changes, never part of a save, and never recorded in the changelog. It is also safe to set while card edits are pending, since the card lines and the art sidecar are disjoint files. A save still re-files the sidecar for the ids it changed — a removed card’s art goes with it, a renumbered line takes its entry along, and Move to list… carries the entry to the destination. See Art follows the card.
  • The dialog targets a card’s &N id. A tile that groups identical copies applies the art to the first copy — the one the tile renders.
  • A card added during this session has no card line yet, so there is nothing for the art route to write against. The dialog says so and holds the reference with your pending changes instead; the save that writes the card’s line writes its art immediately afterwards. If that write fails (a file that is not there, for instance) the editor’s error banner says which card and why — the list is saved either way, so re-open the dialog and fix the reference.
  • Undo of a removal brings the card’s art back with it, as long as the id has not been reused: the undo reclaims the card’s original &N, and whatever art the list holds for it applies again. An undo that has to allocate a fresh id restores the card without its art.
  • A card given custom art carries no price — the same rule the proxy label carries, and custom-art is the reason that wins when a card has both. It shows CUSTOM where a price would be, counts as 0 in every total, and is never quoted against a buylist. That holds from the moment the reference is written, even if the image file itself is missing.
  • A local file must already exist under the art directory: the route refuses a path with nothing behind it and names the exact location it checked. The admin server serves the art directory read-only (behind the same login) so the preview can show local files.

All edits are tracked as in-memory change events until explicitly saved.

  • Changes button shows the count of pending changes and opens a dialog listing them
  • Additive changes (add card, set commander, set finish, set printing, set language) are shown in green
  • Destructive changes (remove card) are shown in red
  • Opposite changes cancel out automatically (e.g., adding then removing the same card) — but only when the two copies are the same card in every respect, label override included: re-adding a card as a proxy does not cancel the removal of a real copy of it
  • Card names in the changes dialog are clickable links that open the card detail modal
  • Hovering a card name shows a preview image of the card

A bar pinned to the bottom of the editor holds all editing controls, from left to right:

  • + Add Card — opens the card search modal (see Adding Cards); also Ctrl+Enter
  • Add Card Defaults — expands the defaults panel upward
  • Sections — opens the Manage Sections dialog
  • Changes — shows the pending-change count and opens the changes dialog
  • Undo — reverts the most recent change
  • Save Changes / Discard Changes
  • ? — opens the Keyboard Shortcuts reference
  • Save Changes — Writes the updated file and appends to the changelog. Disabled when there are no pending changes. Saving more than once without leaving the editor folds the later changes into the same session’s changelog entry (bumping its timestamp) rather than creating a new entry each time; reloading the file (or hitting a save conflict and reloading) starts a fresh session.
  • Discard Changes — Shows a confirmation dialog listing all changes that would be lost.

The same confirmation also appears automatically whenever you navigate away with pending changes — selecting a different file in the dropdown, switching the Decks / Collections / Wanted Lists type tab, moving to another page via the admin sidebar, or logging out. Confirming discards the pending changes and proceeds; cancelling keeps you on the current file with your changes intact. Changes you want to keep must be saved explicitly first.

Reloading or closing the browser tab with pending changes triggers the browser’s own “leave site?” prompt as a final safeguard.

A save re-serializes the whole file from its parsed cards, so it can only be applied to a file the parsers read completely. If the file on disk holds a line the parser cannot read — a stray comment, a malformed card line — or a fenced code block, which parses cleanly as prose but which the canonical serializer cannot emit, the save is refused with a 400 naming each offending piece, and nothing is written. Fix or remove it in the file and reload. The same content is reported up front in the editor’s load, so the problem is visible before you start editing.


Open Edit Lists (admin sidebar or Dashboard card) and select the Decks tab.

The button opens a context menu with the items every editor sharesSet as Foil, Change Printing…, Set Language…, Set Custom Art…, and Move to section… — plus two the Deck Editor adds:

  • Set as Commander — Move the card to the Commander section (supports multiple commanders)
  • Set Label… — Set the line’s proxy override

Change Printing… on an entry with quantity > 1 first asks how many copies to retarget (see Change Printing); Set as Foil is greyed out when the printing has no foil.

A deck carries exactly one card label, Proxy, and the deck editor edits it at both levels:

  • The action bar’s Labels button opens the same Default Labels modal collections use, offering No default and Proxy. It writes the deck’s front-matter labels: through the List Metadata route immediately, exactly as it does for a collection — which is how you mark a whole playtest deck as proxies without touching a card line.
  • Set Label… in a card’s context menu (and in the multi-select Selected menu) sets one line’s override, offering Proxy and Use list default — the deck’s whole vocabulary. It is a pending set-label change like any other: undoable, listed in Changes, and written on save.

Proxied cards render their badge and, in place of a price, the PROXY marker — in the editor and on the public site alike. They count as 0 in every total and are never offered to a buylist; see Custom art carries no price for the one rule both by-rule priceless flavours share.

The No specific printing shortcut is available — add a card without selecting a printing.

Condition (NM, LP, MP, HP, DMG) is optional and defaults to NM.

Cards can include optional printing metadata:

1 Sol Ring (2XM:1) [foil] [NM] &1
1 Lightning Bolt &2
4 Island &3

Fields in order:

  • (SET:CN) — Set code and collector number
  • [finish]nonfoil, foil, or etched
  • [condition]NM, LP, MP, HP, or DMG
  • [lang] — a Scryfall language code; omitted for English
  • [labels] — the card’s label override; a deck carries proxy only
  • &N — Persistent card ID (auto-assigned, used internally for change tracking)

All fields are optional and backwards-compatible with the basic format.


Open Edit Lists and select the Collections tab.

Collections correspond to .md files in the collections/ directory.

  • No Set as Commander — collections have no reserved Commander section (but support arbitrary user-named sections)
  • Printing required — the No specific printing shortcut is not available; a specific printing must be selected
  • Finish & condition required — both must be set for collection entries

Collections carry the whole card label vocabulary — For sale / For trade / To keep / Proxy — where a deck carries Proxy alone:

  • Set Label… in a card’s context menu (and in the multi-select Selected menu) opens a picker with the five label states plus Use list default, which clears the card’s override. The change is a pending set-label edit like any other — undoable, listed in Changes, and written on save. Tiles badge cards whose override differs from the list default.
  • The picker offers only what the selected cards’ list type carries, so in the Selected menu it is hidden altogether for a selection spanning several list types (their vocabularies differ) or one whose type carries no labels.
  • The action bar’s Labels button opens the Default Labels modal, which writes the list’s front-matter labels: default through the List Metadata route immediately (front matter is not part of the card-change pipeline, so it needs no save — and the editor adopts the returned content hash, so pending card edits still save cleanly afterward).

Open Edit Lists and select the Wanted Lists tab.

Wanted lists correspond to .md files in the wanted/ directory.

  • No Set as Commander — wanted lists have no reserved Commander section (but support arbitrary user-named sections)
  • No condition — wanted lists track desired cards, not owned cards
  • Printing optional — cards can be added as name-only (cheapest printing), with a specific printing, or fully specified with a finish

FeatureDeck EditorCollection EditorWanted List Editor
Set as Commander
Change printing
Multi-copy printing split✅ Entry✅ Per-entry❌ Single rows
No specific printing✅ Allowed❌ Must select✅ Allowed
Condition field✅ Optional✅ Required❌ Not applicable
Finish field✅ Optional✅ Required✅ Optional
Card labels✅ Proxy + list default✅ + list default
Custom art
Sections✅ + reserved Commander✅ User-named✅ User-named
Add/rename/delete section
Move card to section
Changelog on save
Add Card Defaults✅ Set/F/C✅ Set/F/C✅ Set/F