Changelog

4 released versions

What each version of this analyzer carried, newest first.

  1. 0.4.0 current

    2026-09-03

    Changed

    • The copies grid is headed by cards seen, not by turn number. Cards seen is what the hypergeometric formula takes -- seven is the opening hand, and each turn after adds a draw -- so the question "how often do I have this by the time I have seen fifteen cards" can now be read straight off the table. The turn that reaches each column rides under its number, and shifts by one on the draw.
  2. 0.3.0

    2026-09-03

    Added

    • A changelog page at /changelog, reached by clicking the version in the footer. It is rendered from CHANGELOG.md itself rather than from a copy, so the page and the file cannot drift apart, and the release the running build came from is marked as current.
  3. 0.2.0

    2026-09-03

    Fixed

    • The maindeck a headerless decklist really has. An Arena export marks the maindeck with a Deck and a Sideboard header. Exports that carry neither and separate the two with a blank line were read as one maindeck, so a 60-card deck with a 15-card sideboard was analysed as a 75-card deck. Every probability divides by the deck size, so every figure on the page was wrong. A list of more than 60 cards with no header is now split at its first blank line, and the page says the split was guessed rather than presenting it as fact. With no blank line either, every card counts as maindeck and the page asks. Stored analyses are re-parsed on the next page load, so they correct themselves.
    • Repeated lines are one card. Two printings of a card are two lines in an export, and an alias can point two decklist names at the same card. Counting them apart listed the card twice in the by-spell table and in every count built from it.
    • The share link is the deck page, not the URL of whatever request rendered it. Moving a card posts to /sections, and the link offered for copying briefly became that.

    Added

    • A maindeck and sideboard panel. It lists both sides and moves a copy across on a click. Copies move one at a time, because a card can sit on both sides and a whole-card toggle cannot say that. Moving one writes the headers into the stored decklist, settling the split for everyone who opens the link; the cards themselves are never edited. htmx swaps the page in place so the reader keeps their place on it, and the plain form post still works without JavaScript.
    • A combined chance for spells of more than one colour. The row per colour is not the chance of casting a gold spell, and neither is the product of those rows: the colours share their sources, so a dual land lifts the combined chance while every card drawn towards one colour is a card not drawn towards the other. joint_at_least groups the deck by which of the spell's colours each card makes and sums over the hands answering every requirement at once, counting a dual land once rather than once per colour. It is checked against brute-force enumeration over small decks. Karsten's table gives a target per colour requirement and none per spell, so the combined figure carries no verdict.
    • The sideboard in the deck statistics, with a footnote that it is resolved and listed but never counted.
    • Every section panel now carries an id, so a section can be linked to directly.
  4. 0.1.0

    2026-09-02

    First working version.

    Added

    • Karsten's land-count regression, coloured-source table, copies grid and curve-out simulation, over a hypergeometric core.
    • Arena decklist parsing, Scryfall resolution with a Postgres card cache, and oracle-text classification of ramp, cheap draw, fast mana and MDFCs.
    • A web application: shareable analyses on a short slug, a mana curve chart, a card types section, opening-hand odds, a hypergeometric calculator, and PDF output.
    • Confirmation flows for cards that will not resolve and for lands whose colours Scryfall cannot settle, plus per-deck banner art and a recent analyses list with retention.
    • A two-stage Alpine container image, published to GitHub Packages by CI.

Changelog

Every released version, newest first, and what it carried. The version marked current is the one rendering this page; the footer shows it beside the build it was built into.

This page is read straight from CHANGELOG.md in the repository, so what you see here and what a reader meets in the source are the same text and cannot drift apart.

Versions follow SemVer. Before 1.0 that means the middle number moves for anything new or changed, which for an analysis tool includes a correction that changes the numbers a deck reports.