Skip to content

Change History

The Change History page compacts and rewrites the change log (.changes.md) of a deck, collection, or wanted list from the browser. It mirrors the CLI history command — every edit is staged in memory and nothing is written until you save — and, like the command, it only ever touches the change log: the list’s own .md file is never modified.

Pick a deck, collection, or wanted list from the Edit history for dropdown (grouped by type). Its change sets load newest-first, each shown as a collapsed row with its timestamp and how many change lines it holds. Click a row to expand it and read the individual change lines.

Switching to another list (or leaving the page) while you have unsaved edits prompts you to discard them first.

Each change-set row has three actions:

ActionEffect
CombineOpens a picker of the other change sets; the two sets’ entries are merged into this one (which keeps its own timestamp) and the chosen set is deleted. Lines are ordered oldest-set-first (newest changes at the bottom) and opposite changes cancel out — see Combining sets. Disabled when the log holds only one change set.
Edit timeReplaces the set’s timestamp. The new value must be a valid ISO-8601 timestamp (e.g. 2026-05-29T12:00:00.000Z); on save, sets are re-sorted chronologically.
DeleteRemoves the change set from the log. The cards themselves are not removed from the list — only the history entry. Use Undo if you delete the wrong one.
ActionEffect
Rewrite with defaultsAfter a confirmation, replaces all change sets with a single new set (timestamped now) describing the list exactly as it stands now — every card, plus sections, commander, notes, and printings. Disabled when the list has no parseable content (an empty list, or a file that can’t be read).
UndoReverts the most recent edit. Edits are kept on an in-memory stack, so you can undo repeatedly back to the loaded state. The badge shows how many undo steps are available.
SaveWrites the edited change sets to the .changes.md file. Enabled only when there are unsaved changes.
DiscardReverts every edit back to the change log as it was loaded.

A summary line above the sets shows how the saved file will differ from what was loaded: the change-set and change-line counts before → after.

When two change sets are combined, their lines are interleaved by age — the older set’s entries on top, the newer set’s beneath — so newer changes always end up at the bottom, no matter which set you combined into which. The merge then compacts the result the same way the card editor’s live change log does: an add and a later remove of the same card (matching printing, finish, condition, board, and ID) annihilate, as do set/unset-commander and add/remove-section pairs. A combine that cancels everything leaves the set empty, so it is dropped. Lines that survive keep their exact original text, including their internal card IDs.

Apart from combine’s compaction, change lines — including their internal card IDs — are moved around verbatim; the editor never re-parses or reformats them. The Rewrite with defaults action regenerates lines from the current list contents.