Log in with Discord

CHANGELOG

v0.45.2 2026-08-18

Fixed
  • Text decklist import had two bugs stacked on top of each other. Archidekt-style "// Commander" headers (the `//` prefix) weren't recognized at all, so the commander line got treated like any other card. And separately, once the parser saw an explicit header anywhere in the file, it had no way to fall back to "main" for a later unlabeled block - it just kept whichever section was set last, which is how an entire 75-card deck ended up filed as sideboard. Both fixed.
Added
  • Decks can be renamed without re-importing the whole list - a RENAME button next to each deck in the deckbuilder.
  • Deck names go through a word-boundary slur/profanity filter now, on create, edit, and rename alike. Deliberately narrow (obvious slurs and hard profanity only) so it doesn't flag normal deck names or Magic terminology.

v0.45.1 2026-08-18

Fixed
  • Went back and closed out the simplifications from 0.45.0's known gaps.
  • Wild Unraveling's "blight 2 or pay {1}" is a real choice now, not a flat surcharge - pick one when you cast it, and if you blight, you pick which creature you control eats the counters.
  • We Say Thee Nay!'s Teamwork actually taps creatures and raises the threshold to {4} when you use it. Declining still just costs the base {2}.
  • Vinebred Brawler's "must be blocked if able" is enforced - if you've got a legal blocker sitting there and don't assign it, the block declaration gets rejected.
  • Nameless Inversion actually strips creature types now. Tested it against an anthem - the target stopped counting as an Elf and the bonus dropped off, like it should.
  • Along the way: added an alternative-additional-cost system to casting (pay extra mana or pay a different cost instead, picked up front) and a real Teamwork mechanic, both reusable for future cards that need the same shape.

v0.45.0 2026-08-18

Added
  • The Thranduil/Mirkwood Elves precon is fully supported now, all ~85 cards. Thranduil the Elvenking actually has all activated abilities of Elves in your graveyard (recomputed whenever something dies or he enters, not live-tracked). Tyvar Kell works end to end, ultimate included - it hands out a real emblem that grants haste and draws you two cards off your Elf spells. Dionus grants his tap-untap-and-grow trigger to every Elf you control. Both Adventure Dragons (Bloomvine Regent, Sagu Wildling) and the two DFC lands (Zanarkand, Thranduil Sindarin Liege) work on both faces.
  • Turns out the Scryfall sync had been silently broken for a while - they moved bulk data to gzip'd JSONL and the sync code was still trying to parse plain JSON. Fixed, and re-ran it, which is the actual reason half the missing Hobbit cards showed up at all.
  • Picked up ~20 new general-purpose oracle-text patterns along the way (tapped-basic-land fetches, "counter unless pay N/X," hexproof-while-untapped, slow lands, and more), so this isn't just card-specific hacks - other cards using the same wording anywhere in the catalog get auto-supported too.
  • A handful of new engine primitives cards kept needing: a beginning-of-combat trigger, an each-end-step trigger (distinct from "your end step"), a becomes-tapped trigger, tapping other creatures as an activated ability cost, and basic emblem support.
  • Kicker actually works now - casting a kickable spell offers a "Cast with Kicker" option and it gets sent to the server. It never was before.
  • Modal spells ("Choose one -") get a real mode picker before you cast. Also never existed before this.
  • Activated abilities that need you to tap other creatures as a cost (Voice of the Woods' "tap five Elves") have a picker now too.
  • Every choice prompt that offers a card as an option shows the card's name instead of its raw internal id. That one's embarrassing in hindsight.
  • CSV deck import - Moxfield/Archidekt/Deckbox exports, drag one in or paste it. The point of doing this over plaintext is it resolves the exact printing per card (Set + Collector Number, or a Scryfall ID if the export has one), so an imported deck keeps its real art instead of whatever oracle_cards defaults to. Plaintext import got this too as a side effect, since it was already parsing the "(SET) 141" suffix and just throwing it away.
  • Thassa's Oracle combo support: Thassa's Oracle itself, Laboratory Maniac as an alternate win-on-empty-draw, Jace Wielder of Mysteries, Tainted Pact, and Demonic Consultation - the whole "deck yourself out, win with an empty library" line actually works now.
Known gaps
  • A few cards got intentionally simplified rather than gaining a whole new engine mechanic for one clause: Wild Unraveling's "blight 2 or pay {1}" always charges the {1}, We Say Thee Nay!'s Teamwork threshold isn't modeled (always the base {2}), Vinebred Brawler's "must be blocked if able" isn't enforced on the blocking side, Nameless Inversion doesn't actually strip creature types.
  • Voice of the Woods' tap-cost picker only exists in the shared generic UI, not a bespoke one, but it works.

v0.44.0 2026-07-19

Added
  • Planeswalkers are now valid attack targets. You pick them from the same menu you'd use to pick an opponent in a multiplayer game. Creatures can block attackers that are going for your planeswalkers. Unblocked damage removes loyalty counters instead of dealing regular damage.
  • Channel works now: cards with a Channel cost (Ghost-Lit Stalker's {5}{B}{B}) show a "Channel (discard this)" option when you click them in hand. The card goes to the graveyard as part of the cost, and the effect resolves off the stack like any activated ability.
  • Discard a card as an activated ability cost — Urborg Syphon-Mage's {2}{B}, {T}, Discard a card ability now actually prompts you to pick a card to discard before the rest resolves.
  • Land animation: Genju of the Fens's {2} ability turns the enchanted Swamp into a 2/2 creature until end of turn. The Swamp shows up as a creature, can attack/block, gets power and toughness, and reverts at cleanup. (The "{B}: +1/+1" ability while animated and the return-from-graveyard trigger are still out.)
  • Ghost-Lit Stalker, Genju of the Fens, and Urborg Syphon-Mage all have working overrides now.
Known gaps
  • Only Liliana Vess has a hand-written override so far - every other planeswalker enters with the right loyalty total and the counter badge shows, but clicking them does nothing useful yet. More coming.
  • Faerie Macabre's "discard this card: exile up to two target cards from graveyards" is still out - it's a different shape from Channel.
  • Genju of the Fens's return-from-graveyard trigger and the {B}: +1/+1 while animated aren't implemented.
  • Sacrificing a specific other permanent (not yourself) as an activated ability cost isn't a thing yet (Skeletal Vampire's Bat abilities).

v0.43.0 2026-07-19

Added
  • Planeswalkers work now. Loyalty counters show up on the card as a blue badge, abilities show in the activate menu as [+1]/[-2]/etc., and the once-per-turn and sorcery-speed rules are enforced. A planeswalker with no loyalty left goes to the graveyard like it should.
  • Liliana Vess is the first supported planeswalker: +1 makes a player discard, -2 tutors any card from your library to the top, -8 puts every creature from every graveyard onto the battlefield under your control.
  • Precon search has a "search by commander" field now.
Known gaps
  • Only Liliana Vess has a hand-written override so far - every other planeswalker enters with the right loyalty total and the counter badge shows, but clicking them does nothing useful yet. More coming.
  • Combat damage still can't be redirected to a planeswalker (that's a separate system that doesn't exist yet).
  • Channel, discard as an activated ability cost, and land animation (Genju of the Fens) are still out.

v0.42.0 2026-07-19

Fixed
  • Found the actual cause of rooms randomly dying mid-game: showing a card image on a pending trigger crashed the websocket outright. Should be stable now.
  • Job Select equipment (Astrologian's Planisphere, Blue Mage's Cane, Sage's Nouliths) crashed instead of making its Hero token.
  • The 5-second auto-continue timer didn't know about declaring attackers/blockers and would skip you if you thought too long. It waits for those now, same as it already does on your main phase.
  • Rose Tyler was silently getting dropped from a couple of already-created Timey-Wimey decks by a bug in an earlier fix. Repaired those decks directly - no need to redo anything.
  • Counters were tracked fine the whole time, just never drawn on the card. Fixed.
Added
  • Tokens get real art now instead of a blank box.
  • Mana pool shows actual mana symbols instead of letters.
  • {T} and color letters in ability text now read as "Tap" / the color name instead of raw symbols.
  • Scroll wheel zooms a hovered card in further. Capped so it can't zoom out past normal size.
  • Deck view/edit is a grid of card images now instead of a name list.
  • Catalog no longer surfaces joke/ad/memorabilia-only junk (old World Championship decks, 30th Anniversary promos, Un-set cards, etc). Real printings are also now preferred for art over novelty ones.
  • Garruk vs. Liliana (and its Duel Decks reprint) went from 10 to 28 of 32 supported - edicts, graveyard reanimation, swamp-scaled damage/lifegain, symmetric anthems, "another creature dies" triggers, regeneration, and more. Wiring up the anthem and death-trigger mechanics also caught a few unrelated cards elsewhere, like Crusade and Dread of Night.
Known gaps
  • Planeswalkers still aren't a thing - no loyalty, no activating them, no combat damage to them. So Liliana Vess and every other Liliana across all five Liliana precons stay unsupported for now.
  • Also not modeled: Channel, discard as an activated ability cost, a land becoming a creature (Genju of the Fens), sacrificing a specific other permanent as a cost.

v0.41.0 2026-07-19

Added
  • Lands are now displayed in a separate row below your other permanents, making it much easier to see your board state at a glance.
  • You can now manually untap any land or permanent you control — click it and choose Untap. Useful for tap abilities that were activated in error, or for effects that grant additional untap triggers we haven't automated yet.
  • Dual-subtype lands ("Land — Island Swamp", "Land — Forest Island", etc.) now correctly tap for either color. Shock lands, original dual lands, and similar cards now show a color choice when you tap them for mana.
Fixed
  • The color choice prompt for Underground River and similar pain/dual lands was broken — clicking either button did nothing. Root cause was how dynamic values were embedded into button onclick handlers in HTML; rewritten using data attributes so choices now work reliably.
  • The scry choice (put on top / put on bottom) had the same onclick bug — fixed. The card being scryed is now also shown in the choice panel so you know what you're deciding on.
  • Triggered ability choices (yes/no prompts) and similar interactive panels were all affected by the same bug — all fixed.
  • Tapped cards no longer overlap with adjacent cards. A right-side margin compensates for the visual space the rotation takes up.

v0.40.2 2026-07-19

Fixed
  • With the reaction window turned off, priority now instantly passes for all non-active players — not just empty-handed ones. The reaction window being off means nobody gets a chance to respond, and now the game actually behaves that way.
  • Partner commanders (e.g. The Tenth Doctor + Rose Tyler in Timey-Wimey) now both appear in the command zone at game start. Previously only the primary commander was placed and the partner was silently ignored.
  • The "Resolve" button on triggered abilities that need a yes/no decision was broken — it was sending the wrong key to the server and being treated as a skip. Fixed; Resolve and Skip now work correctly.
  • Clicking Skip Attack (passing during the declare attackers step) now properly skips the declare blockers and combat damage steps too. If nobody attacked, there's no combat to resolve.

v0.40.1 2026-07-19

Fixed
  • Mulligan phase was softlocking Commander games — the keep/mulligan screen would show "hand kept, waiting for others" immediately without giving anyone a choice. Fixed.

v0.40.0 2026-07-19

Added
  • Mulligan phase at the start of every match — before the first turn begins, each player sees their opening hand and can choose to Keep or Mulligan. Mulligan shuffles your hand back into your library and redraws the same number of cards. The game doesn't start until everyone has kept.
Fixed
  • At the end of your turn, if you're over 7 cards in hand you now get to choose which card to discard rather than the game picking one for you automatically.
  • Non-active players with no cards in hand are now instantly passed priority even when the reaction window timer is on — no more waiting through the full 5-second window when you clearly can't respond with anything.
  • The deck selector in a room lobby no longer resets to the wrong deck every few seconds due to the lobby auto-refresh overwriting your selection.

v0.39.0 2026-07-19

Fixed
  • When the reaction window is turned off in a room, players with no cards in hand now get their priority passed automatically — no more clicking "Pass Priority" every step when you have nothing to respond with. Priority keeps advancing until it reaches someone who actually has cards, or loops back to the active player's main phase.
  • The card art preview that appears when you hover over a card in a match now follows your cursor instead of sitting fixed in the corner where it would cover the action buttons.
  • Declaring attackers and blockers no longer requires clicking a separate "Declare Attackers" or "Declare Blockers" button first — the game enters the right mode automatically as soon as those steps begin. Your creatures are immediately clickable to select. Cancel is still there if you need to back out.

v0.38.0 2026-07-19

Added
  • Your Discord server display name and nickname now show on the site instead of your raw username. The name refreshes every minute automatically, so if you change your nickname in the server it'll update here too.
  • Role-based name colours in the auth bar and in matches: Owners get a purple glow, Archmages get gold, Deckbuilders get blue, and Playtesters get green.
  • The game lobby now auto-refreshes every few seconds — when the host starts the game, everyone in the room gets pulled in automatically without having to refresh the page.
  • Room hosts and the site Owner can now delete stale rooms from the lobby. Unstarted rooms also expire automatically after one hour.
  • Commander games with three or more players now show all opponents correctly. Extra opponent zones were being appended on every state update instead of replaced, causing them to duplicate.
  • The printings modal search now filters the already-loaded printings for the current card by set code, set name, artist, or year — no extra network call needed, results are instant.
  • Command zone cards are now shown in a distinct purple-tinted area labelled "Command Zone," visually separated from the battlefield.
  • Discord bot: `/card` looks up any Magic card and shows its art, type, oracle text, and its Rosewood Arena support status. `/request` submits a feature request to the server's #feature-requests channel where the community can vote with 👍 or 👎.
Fixed
  • Skippable steps (upkeep, draw, beginning/end of combat, ending end step) no longer require every player to explicitly pass priority when nothing is happening — as soon as any player passes in an empty-stack, no-trigger step, the engine advances automatically.
  • The "Your Deck" join section in a room lobby no longer appears a second time once you've already joined — only the per-seat deck selector remains.
  • Joining a room that's already in progress is blocked. In-progress rooms no longer show a JOIN button in the lobby.

v0.37.0 2026-07-19

Added
  • Several new combat restriction keywords now work: Horsemanship (can only be blocked by other Horsemanship creatures), "this creature can't be blocked by more than one creature," "this creature can't be blocked by creatures with power 2 or less," and "this creature can only block creatures with flying."
  • Wither works now — it deals -1/-1 counters to creatures just like infect, but deals normal damage to players.
  • ETB triggers: destroy target artifact (with and without the optional-may variant), destroy target land, deal N damage to any target, mass-pump all your creatures until end of turn, each opponent discards a card, target opponent discards a card, and draw-then-discard (loot).
  • Loot spells ("Draw a card, then discard a card." and "Draw N cards, then discard a card.") work as standalone spells and as Saga chapter effects.
  • "Return up to N target creature/artifact/etc. cards from your graveyard to your hand" works (handled identically to the single-target version).
  • Activated looting abilities work now — "{T}: Draw a card, then discard a card" and variants with mana costs.
  • Tap-target-creature activated abilities with a colored mana cost (e.g. {W}, {T}: Tap target creature.) work.
  • Changeling, Devoid, Wither, Horsemanship, "must attack each combat," and the new can't-block-by-one/power-2-or-less restrictions are all registered keywords — cards with these as their only mechanics are now supported.
  • Exile target artifact and exile target enchantment both work as spell effects and as Saga chapter modes.
  • Comma-separated combined lines now match correctly — "Flying, protection from red" and similar pairs no longer need to be individually special-cased.
  • Supported card count: 4,218 → 4,470.

v0.36.0 2026-07-15

Added
  • Scions & Spellcraft (FINAL FANTASY XIV) is now fully supported — 92/92 unique cards.
  • Timey-Wimey moved from 53 to 82 supported cards out of 94. New additions:
  • The Girl in the Fireplace (Saga: creates a Human Noble token chapter I, a Horse token chapter II, and time-travels once per creature you control chapter III)
  • The Day of the Doctor (Saga: chapters I/II/III each exile cards until a legendary is found and put it into your hand; chapter IV lets you spare up to three Doctors and exile everything else at the cost of 13 life)
  • The War Doctor (attack trigger: deals damage equal to his time counter count to any target; accumulates time counters whenever any card is exiled anywhere)
  • The Ninth Doctor (Haste; the "additional upkeep step" mechanic is an engine-level gap, documented)
  • Gallifrey Falls // No More (split card: Gallifrey Falls deals 4 damage to each creature; No More's phaseout effect is a documented gap pending phasing support)
  • Coward // Killer (split card: Coward makes a creature unable to block this turn; Killer time-travels)
  • Clockspinning (Buyback {3}; choose a counter on a permanent or suspended card, then add or remove one)
  • TARDIS (Flying, Crew 2; cascade/planeswalk trigger is a documented gap)
  • Psychic Paper (Equip {2}; grants can't-be-blocked; ward grant and name/type-change on equip are documented gaps)
  • Everything Comes to Dust (Convoke; exiles all creatures, artifacts, and enchantments; type-share exception for convoking creatures is a documented gap)
  • Ecstatic Beauty (puts top 3 library cards into hand instead of the exile-until-end-of-turn zone; applies 4 time counters to any that already have suspend; Suspend 4 for itself)
  • Astrologian's Planisphere and Blue Mage's Cane (FFXIV equipment: Job Select ETB creates a 1/1 Hero token and auto-equips; Planisphere also puts a +1/+1 counter on the equipped creature whenever you cast a noncreature spell)
  • Whenever a card is put into exile from anywhere, a new "card_exiled" trigger fires on all battlefield permanents, making The War Doctor and any future exile-accumulating card possible.
  • Supported card count: 3,976 → 4,218.

v0.35.1 2026-07-13

Fixed
  • Starting a practice game with Timey-Wimey (or any precon with split cards like Coward // Killer) crashed on load. Fixed.

v0.35.0 2026-07-13

Added
  • Lord/anthem effects work now. Goblin Chieftain buffs your Goblins, Lyra buffs your Angels, Crucible of Fire buffs your Dragons, etc. Bonuses update live as creatures enter and leave.
  • Tokens can have multiple keywords (flying and haste, etc.) as printed.
  • Qualifier words like "Green creatures", "artifact creatures", "legendary creatures", "attacking creatures", "equipped creatures", "enchanted creatures", and combinations like "Attacking Pirates" all work in lord effects.
  • Multi-word subtypes (Eldrazi Spawn) and OR subtypes (Wolves and Werewolves) work. Added a bunch of missing subtypes: Skeleton, Pest, Vehicle, Construct, Mount, Plant, Wolf, Werewolf, Servo, Ninja, Rogue, Eldrazi Spawn.
  • Supported card count: 3,976 → 4,088.

v0.34.0 2026-07-10

Added
  • Soulbond now works (Donna Noble) - pair with another unpaired creature you control when either enters, sharing whatever payoff the ability describes for as long as you control both.
  • Five more Timey-Wimey legendaries got hand-written support: Rose Tyler (grows with her own time counters, adds more when she attacks), Donna Noble (Soulbond damage-sharing), Amy Pond (tutors her Partner, removes time counters off suspended cards on combat damage), Martha Jones (Clue-fueled unblockable), and Sally Sparrow (grants creature spells flash, investigates when your creatures die).
  • "You may cast creature spells as though they had flash" is now a real, general static ability, not just something Sally Sparrow has.

v0.33.0 2026-07-09

Added
  • "Whenever you put one or more time counters on a permanent you control" is now a real trigger (Kate Stewart and future cards), and non-mana activated abilities can now have a "remove N counters"/"exile this as part of the cost" cost and an "activate only if..." condition, the same way mana abilities already could.
  • Three more Timey-Wimey legendaries/artifacts got hand-written support: Wilfred Mott (upkeep reveal-and-play), Kate Stewart (time-counter payoff + attack-trigger mass pump), and Trenzalore Clocktower (mana ability that also counts up, plus its big graveyard/hand-into-library reset ability).

v0.32.0 2026-07-09

Fixed
  • A creature dying from 0 toughness (rather than lethal damage) used to skip its own "when this dies" triggers and Persist/Undying entirely. Both now fire correctly no matter which way a creature dies.
  • "Destroy all creatures.", "Destroy all artifacts and enchantments.", and "Destroy all [type] creatures."/"Destroy all non-[type] creatures." now work (Day of Judgment, Supreme Verdict, Crux of Fate, Cleansing Nova, and others) - these were missing even as plain wrath effects, let alone as modal choices.
Added
  • "Whenever a creature you control dies" is now a real, reusable trigger (Bastion of Remembrance and future cards like it), and "whenever you cast a [color] spell" too (Ardbert, Warrior of Darkness).
  • Seven more Scions & Spellcraft legendaries/enchantments got hand-written support: Papalymo Totolymo, Fandaniel, Circle of Power, Ardbert, Hraesvelgr of the First Brood, G'raha Tia, and Bastion of Remembrance.

v0.31.0 2026-07-09

Added
  • Explore now works (Jenny, Generated Anomaly and Astrid Peth are the first two cards using it): reveal the top card of your library, put it straight into your hand if it's a land, otherwise get a +1/+1 counter and choose whether to leave the card on top or bin it.
  • Skulk now works as a real keyword - a Skulk creature can't be blocked by anything with greater power.
  • Four Doctor Who legendaries got hand-written support for their unique abilities: Jenny, Generated Anomaly (double strike + explore on combat damage), Astrid Peth (makes Food on ETB/attack, explores when you sacrifice a Clue or Food), Time Beetle (skulk + time travel on combat damage), and Sibylline Soothsayer (reveal-and-exile a card with time counters and suspend on ETB).

v0.30.0 2026-07-09

Added

Adventure cards now work (Rimrock Knight // Boulder Rush, Young Red Dragon // Bathe in Gold, Hypnotic Sprite // Mesmeric Glare, and a good chunk of the rest of that family from Throne of Eldraine and since) - cast the creature normally, or cast its Instant/Sorcery Adventure half for a separate cost. Once the Adventure resolves, it's exiled instead of hitting the graveyard, and you can cast the creature later from there for its own cost. As with Split cards, a card only counts as supported once both halves are simple enough for the engine to actually run - adventure creatures with anything beyond vanilla stats and simple keywords on the creature side usually still aren't.

  • Along the way: "Counter target spell with mana value N or less/or greater/exactly N" now works too, not just the plain unconditional counterspell.

v0.29.0 2026-07-09

Added

Split cards (Assault // Battery, Wax // Wane, Pain // Suffering, and the rest of that family) now work - you pick which half to cast, and pay that half's own cost, not a shared one. Each half is checked independently, so a split card only counts as supported once *both* halves are simple enough for the engine to actually run - most split cards still aren't supported yet, since at least one half tends to do something more unique. Adventure, Transform, and modal double-faced cards are a separate, bigger effort and aren't covered by this yet.

v0.28.0 2026-07-09

Added

A sweep of common land and mana-rock templates - individually small, but these show up across thousands of real Commander decks, so this is one of the bigger single jumps in supported cards so far:

  • Reveal-lands (Port Town, Shineshadow Snarl, and the rest of that cycle) - you're actually asked whether to reveal a qualifying card from hand to have them enter untapped.
  • Pain lands (Horizon Canopy, Sunbaked Canyon, Fiery Islet) - the pay-1-life mana ability works, along with their sacrifice-to-draw-a-card ability.
  • Tri-lands (Mystic Monastery, Arcane Sanctum, and similar) - the three-color choice now works, not just two-color lands.
  • Filter lands that cost a hybrid symbol to activate (Fetid Heath, Sunken Ruins, Wooded Bastion) - previously only the simpler generic-cost filter lands worked.
  • Basic landcycling (Ash Barrens, Shardless Outlander) - discard the card and search for a basic land into your hand.
  • "You have no maximum hand size" (Thought Vessel and others) - this engine never enforced a hand-size limit for anyone in the first place, so this line was truthfully always already true; it's now recognized instead of blocking the rest of the card.
  • "Activate only if you control five or more lands" (Temple of the False God) - conditional mana abilities that check your own board state.

v0.27.0 2026-07-09

Fixed
  • Playing a land never actually checked whether you held priority, even though the error message implied it did. Fixed, and split into clearer separate messages for "not your turn," "you don't have priority," "not a main phase," and "the stack isn't empty."
  • Clicking a land card sent the request straight to the server with no local check first, so any mistimed click (during combat, during an opponent's turn, etc.) came back as a confusing rejection instead of an immediate explanation. The client now checks the same conditions itself and tells you why right away.
Added
  • Cards in your hand now glow when they're actually legal to play right now - lands during an empty-stack main phase (if you haven't played one yet this turn), and other cards you can afford and are within timing to cast. This is a visual hint only; the server still has the final say.
  • Priority no longer requires everyone to explicitly click "pass" every single time. After any action, a shared 8-second window opens - if nobody acts, the game continues on its own. Because the window is the same length whether or not you actually have something to respond with, auto-continuing doesn't give away anything about your hand. You can still act (or manually pass) at any point during the window to move things along faster. New rooms have this on by default, with a checkbox at room creation to turn it off if you'd rather play untimed.

v0.26.0 2026-07-09

Fixed
  • Hybrid (`{W/B}`) and Phyrexian (`{B/P}`) mana symbols in a cost were being ignored completely, so a handful of cards (Dismember, Nip Gwyllion, Rakdos Shred-Freak, and others) were castable for free. Hybrid symbols now correctly ask for either color; Phyrexian symbols can be paid with 2 life instead when mana's short.
  • Hexproof, Shroud, and Protection blocked their own controller from targeting them too, not just opponents. You can now target your own hexproof creature with your own spells again.
  • Protection now also stops a permanent from being targeted by a spell/ability of the protected color, and from being enchanted or equipped by one - not just blocking and damage, which was all it covered before.
  • A few mass-removal effects like "exile all creatures" were incorrectly letting hexproof/shroud/protection block them, even though those only protect against single-target effects.
  • Cards that refer to themselves as "It" instead of "this creature" (Mogg Fanatic and similar) are recognized now.
  • Convoke lets a tapped creature pay for a colored mana symbol matching its own color, not just generic cost.
  • Sacrifice effects like "target player sacrifices a ___" now work for artifacts, planeswalkers, enchantments, and lands, not just creatures.
  • Discarding "at random" (Coercion-style) works now, alongside the player's-own-choice discard from a couple releases ago.
  • Enrage now works for any single effect, not just the "+1/+1 counter" version.
  • A dies trigger that needs its own target (like "when this dies, it deals damage to any target") works now.
Added
  • A proper timestamp-ordered layers system for keyword grants/removals and power/toughness changes - if two effects conflict, whichever was applied most recently wins, matching the real rules. This also lets a creature's power/toughness be defined by a live count of something on the battlefield (e.g. "power and toughness are each equal to the number of lands you control"), recalculated as the board changes.
  • Morph's face-down identity is actually hidden from opponents now. Before this, the engine tracked the face-down 2/2 correctly but every player could still see the real card in their client. Opponents now just see a generic face-down 2/2 until it's turned face up; you can still see your own face-down card.
Known gaps
  • Kicker/Madness effects that branch ("do X, but if the cost was paid, do Y instead") aren't modeled yet - the base effect always applies.
  • Bestow cards that also pump themselves ("this creature and enchanted creature each get +X/+X") only apply the bonus to the enchanted creature.
  • Bushido with a variable number (Fumiko the Lowblood) isn't supported - only fixed-number Bushido is.

v0.25.0 2026-07-09

Added

Thirteen mechanics that had no support at all before this pass:

  • Intimidate - can't be blocked except by an artifact creature or one sharing a color.
  • Bushido N - pumps the creature when it blocks or becomes blocked.
  • Kicker - pay an additional cost as you cast a spell to unlock a bonus "if it was kicked" effect.
  • Affinity for artifacts - spells cost less based on how many artifacts you control.
  • Convoke - tap your creatures (even summoning-sick ones) to help pay for a spell.
  • Delve - exile cards from your graveyard to help pay for a spell.
  • Madness - discarding a card with madness exiles it instead, offering a cheaper alternate cast.
  • Bestow - cast a creature as an Aura instead; it becomes a plain creature again (not destroyed) if what it's attached to leaves.
  • Morph / Megamorph - cast a creature face down as a vanilla 2/2 for {3}, then turn it face up later for its real cost and stats.
  • Persist / Undying - a creature that dies without the matching counter returns to the battlefield with one.
  • Ninjutsu - return an unblocked attacker to hand to put a Ninja onto the battlefield tapped and attacking instead.
  • Landfall - triggers whenever a land you control enters, whether played or fetched.
Known gaps
  • Kicker/Madness "if the [cost] was paid, do X instead" branching effects (seen on most real cards with these) aren't modeled - the normal effect always applies.
  • Morph's face-down identity isn't yet hidden from other players in a live game (the engine mechanic itself - real 2/2 while face down, real card on reveal - is complete).
  • Cards whose Kicker/Landfall/upkeep triggers use a compound or conditional effect (most real ones) still aren't supported - only the single-effect reachable subset is.

v0.24.0 2026-07-09

Added
  • "Sacrifice this creature: <effect>" activated abilities now work in general (Bottle Gnomes, Ronom Unicorn, and similar).
  • Upkeep triggers now work for the reachable simple cases ("At the beginning of your upkeep, <effect>", e.g. Nyx-Fleece Ram) - most real upkeep triggers have extra conditions and still aren't supported.
  • "Tap target creature" now works as a standalone effect.
  • Gaining control of a creature now works, both temporarily (Act of Treason-style - untaps it, grants haste, reverts at the end of the turn) and permanently for as long as an Aura stays attached (Control Magic-style - reverts if the Aura is destroyed/removed).
  • Damage prevention now works: Fog-style "prevent all combat damage this turn," and targeted "prevent all damage to target creature/player this turn" or "prevent the next N damage" shields.

v0.23.0 2026-07-09

Added
  • Modal spells ("Choose one —" with bullet-pointed modes) now work: cards like Abrade, Esper Charm, Umezawa's Charm, and Dromar's Charm can be cast picking exactly one of their listed modes, with that mode's own target and effect applying correctly. "Choose one or more"/Entwine variants (Rude Awakening and similar) aren't supported yet.
  • Discard now works: "target player discards a card" and "each opponent discards N cards" (Mind Rot, Skull Fracture) - the discarding player is prompted to choose which card(s) when they have more in hand than the amount being discarded.
  • Sacrifice-a-creature Edicts now work (Chainer's Edict and similar "target player/each opponent sacrifices a creature" text) - the affected player chooses which creature, matching the real rule.
  • Plain "Exile target creature"/"Exile target permanent" removal spells now work (Unmake, Scour from Existence), separately from the existing lifegain- and copy-granting exile variants.
Fixed
  • Defender-having creatures could illegally attack - the keyword was recognized but nothing actually checked it before this pass.

v0.22.0 2026-07-09

Added
  • Protection (from a color) now works: a protected creature can't be blocked by a creature of that color, and damage from a source of that color is prevented. Being an illegal spell/ability target isn't covered yet (same documented limitation Hexproof already has).
  • Flashback now works: cards can be cast from your graveyard for their flashback cost, then are exiled afterward instead of returning to the graveyard.
  • Cycling now works: discard the card and pay its cost to draw a replacement.
  • Enrage now works for its most common template ("whenever this creature is dealt damage, put a/two +1/+1 counter(s) on it").

v0.21.0 2026-07-09

Changed
  • Renamed the whole project to **Rosewood Arena**, with its own look - a warm rosewood/gold theme instead of borrowing the main site's dark terminal styling, so it can stand on its own as its own product.
  • Moved from `/mtgsim` to `/rosewoodarena` on lilacrose.dev.

v0.20.0 2026-07-09

Added
  • Surveil now works everywhere it appears (creatures/lands entering, activated abilities, standalone spells, and "whenever this deals combat damage to a player").
  • Returning a card from your graveyard now works: to your hand or to the battlefield, as a spell or as a "when this enters"/"when this dies" trigger, for creatures, artifacts, enchantments, instants/sorceries, or any card - classics like Raise Dead, Regrowth, Zombify, and Gravedigger all work now.
  • Ward now works: if you target a creature with Ward with a spell or ability, you automatically pay its ward cost if you can afford it, otherwise your spell/ability is countered - just like the real card would do (simplified to mana-cost Ward for now; Ward costs that ask you to pay life, discard, or sacrifice something aren't supported yet).
Known gaps
  • Most cards with Ward, and many graveyard-return effects, still have another unique ability alongside the part that's now supported, so having "your graveyard" or "Ward" text doesn't guarantee the whole card works yet.

v0.19.0 2026-07-09

Added
  • Auras and Equipment that remove a keyword from what they're attached to (like Tightening Coils taking away flying) now work, and it correctly comes back if the Aura/Equipment is destroyed.
  • Auras and Equipment that grant two keywords at once ("has flying and vigilance") now work, matching what Equipment already supported.
  • Auras and Equipment that stop the attached creature from attacking and/or blocking now work.
  • Living Weapon now works: the Equipment creates its own 0/0 Germ token to attach to as soon as it enters.
  • A creature that "can't attack" (not just "can't block") is now recognized.
Known gaps
  • Most individual Auras/Equipment still have unique text (scaling bonuses, granted activated abilities, "whenever the equipped/enchanted creature attacks/dies" triggers) that isn't supported yet - this pass covered the common, reusable templates, not everything.

v0.18.0 2026-07-08

Added
  • Scry is now supported everywhere it appears: Temple lands, activated abilities like Sonic Screwdriver's, and standalone spells.
  • Mill is now supported: milling yourself, milling a target player, and milling every player or every opponent - both as spells and as "when this enters" triggers.
  • Sagas now work in general: they get a lore counter when they enter and after each of your draw steps, run each chapter's effect in order, and sacrifice themselves after their last chapter. Most individual Sagas still have unique, one-of-a-kind chapter effects that aren't supported yet, but any Saga whose chapters use simpler, common effects (destroy something, create a token, draw a card, etc.) now works correctly end to end.
  • Vehicles now work: Crew taps creatures to turn a Vehicle into a creature until end of turn, using the same power total the card lists.
  • "Exile target creature or planeswalker until this leaves the battlefield" (Prison Realm and similar cards) now works, including giving the exiled card back if the exiling permanent is destroyed.
  • A few more small but common abilities: mana abilities that add any one color, untapping another artifact, and making a creature unblockable for the turn.
  • Fixed a gap where a couple of cards weren't recognized because they refer to themselves as "this enchantment" or "this Saga" instead of "this creature"/"this permanent".

v0.17.0 2026-07-08

Added
  • Hover over any card on the battlefield or in a hand during a game to see a bigger, easier-to-read version of it off to the side.
  • The turn/phase display is much clearer now - it says things like "Your turn" / "Opponent's turn", spells out the phase in plain words instead of an abbreviation, and clearly tells you whether you have priority or are waiting on someone else.
  • Cards that aren't supported yet now show a small marker right on their battlefield tile, so you can tell at a glance which of your permanents won't do anything.
  • The deckbuilder and a room's lobby now warn you when a deck has unsupported cards in it, and how many, before you start playing with it.
Known gaps
  • Decks with unsupported cards can still be played - those specific cards just won't do anything (no crash, they're simply inert) rather than being blocked outright.

v0.16.0 2026-07-08

Added
  • You can now view and edit the decks you've saved. In the deckbuilder, "VIEW" shows a deck's full card list right there on the page, and "EDIT" loads it back into the import box so you can change it and save over the same deck instead of only being able to delete and start over.
Fixed
  • Fixed a small labeling issue from the "play against yourself" feature added a moment ago - a second practice seat was showing up labeled "Seat 3" instead of "Seat 2".

v0.15.0 2026-07-08

Added
  • You can now play a room by yourself, controlling every seat, to try things out or see how a format looks before playing for real. In a room's lobby, click "Play against yourself" to add extra seats you also control, give each one a deck, and start the game. While playing, a small switcher lets you flip between the seats you control.
  • A big one: abilities that need to be activated (like Equip, "sacrifice this land to search for a basic land," or a creature's own pump ability) now actually have buttons to use them in a live game. Before this, only mana abilities could be activated at all - equipping a creature, cracking a fetch land, and similar abilities were supported by the rules engine but had no way to actually trigger them on screen.
  • The very first Portal preconstructed deck is now **completely supported** - every single card in it works, the first deck in the game to reach that.
  • A few more cards now work: "Search your library for a basic land, put it onto the battlefield" (no sacrifice needed), damage spells that use X for their damage amount, a creature that deals damage to a target creature when it enters, damage spells that can hit planeswalkers too, a combat trick that also untaps its target, and an Equipment that grants two keywords at once.
Known gaps
  • Supported cards: 3,011 → 3,022 (out of 35,990 total).

v0.14.0 2026-07-08

Added
  • You can now click any card image in the card catalog to see a bigger, easier-to-read version of it. Click anywhere outside the image (or press Escape) to close it.
Fixed
  • Card names with a quotation mark in them (like "Ach! Hans, Run!", a real card) could break the catalog page's display. Fixed.

v0.13.0 2026-07-08

Fixed
  • Found and fixed a real bug affecting split cards, Adventure cards, and a few other two-sided card types (like Coward // Killer or an Adventure creature): the game was only ever looking at one half of the card's text. A few of these were incorrectly showing up as "supported" when really only half of what they do was actually implemented. They're now honestly labeled as not yet supported until both halves can be handled properly.
  • Supported cards: 3,095 → 3,011 (out of 35,990 total) - the drop is expected and is the fix above removing cards that were incorrectly marked as working.

v0.12.0 2026-07-08

Added
  • Suspend now works - instead of casting a card normally, you can pay its suspend cost to exile it with time counters on it. One counter comes off at the start of each of your turns, and once the last one is gone, you can cast it for free (and it comes in with haste).
  • Time Travel now works - for every suspended card you own and every permanent you control with a time counter on it, you'll be asked whether to add a counter, remove one, or leave it alone.
  • A creature that puts a +1/+1 counter on a creature you choose when it enters the battlefield now works, not just ones that counter themselves.
  • A creature that can exile up to one tapped creature when it enters now works.
  • The Tenth Doctor himself is now fully playable as a commander.
Known gaps
  • A handful of specific suspend/time-related cards still aren't supported because they also need a separate feature that doesn't exist yet - mostly picking a specific card from your hand or graveyard as part of an effect.
  • Supported cards: 3,059 → 3,095 (out of 35,990 total).

v0.11.0 2026-07-08

Added
  • Triggered abilities that need you to choose a target now work - the game will show you a "choose target" prompt when one comes up, instead of only supporting abilities that don't need a choice.
  • Partner now works - when a Partner creature enters, you can put its partner straight from your library into your (or another player's) hand.
  • "Second spell each turn" abilities now work - effects that care whether this is the second spell you've cast this turn, like a discount on that spell or drawing a card when it happens.
Known gaps
  • Still not supported: Suspend and "time travel" cards, Sagas, Vehicles that need crewing, Convoke, Delve, Escape, Kicker, and spells that let you choose one or more modes.
  • Supported cards: 3,055 → 3,059 (out of 35,990 total).

v0.10.0 2026-07-08

Added
  • Fetch lands now work - "Sacrifice this land: search your library for a basic land" (like Evolving Wilds) lets you actually pick which basic land to grab.
  • Filter lands that cost a bit of mana to use now work, like "{1}, {T}: Add {U}{B}."
  • Spells that ask you to pick a value for X now actually let you pick one when you cast them, instead of always using 0.
  • A batch of new "whenever you cast a spell" creature abilities now work - creating a token, dealing damage and gaining life, getting a permanent counter and temporary flying, or gaining a keyword until end of turn.
  • Cards with a named ability label before their real text (like "Magecraft — Whenever you cast an instant or sorcery spell, draw a card.") are now recognized correctly - the label was confusing the game into thinking those cards weren't supported at all.
  • A few more removal/utility spells: Exsanguinate-style "each opponent loses X life, you gain that much," Cut a Deal-style "everyone draws, then you draw more," and Fractured Identity-style "exile a permanent, give everyone else a copy of it."
Known gaps
  • Still not supported: Suspend and "time travel" cards, Sagas, Vehicles that need crewing, the Partner mechanic, Convoke, Delve, Escape, Kicker, and spells that let you choose one or more modes. These are all bigger features that haven't been built yet.
  • Supported cards: 3,018 → 3,055 (out of 35,990 total).

v0.9.0 2026-07-08

Added
  • Mana rocks and lands that let you pick a color now work, like Command Tower, Arcane Signet, and Talismans - a very common style of card in Commander decks. When you tap one of these, you'll be asked which color you want.
  • Dual lands that check the battlefield to decide whether they enter tapped now work - "enters tapped unless you control a Plains or an Island," "unless you control two or more other lands," and "unless you control two or more basic lands" are all recognized now.
  • "Destroy target permanent," "Destroy target nonland permanent," and "This spell can't be countered" now work.
  • "Exile target creature. Its controller gains life equal to its power" (Swords to Plowshares) and "Exile all creatures" now work.
  • Vanishing now works - creatures and permanents that enter with time counters on them, lose one every turn, and sacrifice themselves when the last one is removed.
  • Treasure tokens now work - tap and sacrifice one to add a color of your choice.
  • Added Y'shtola, Night's Blessed as a fully working commander.
Fixed
  • Clue and Food tokens looked supported before, but didn't actually have a working "sacrifice this for its effect" ability - they were just inert artifacts. That's fixed now.
Known gaps
  • The Tenth Doctor's abilities (and every other "time travel"/Suspend card) still aren't supported - that's a much bigger mechanic on its own and hasn't been tackled yet.
  • Cards with two different mana abilities to pick from (like a Talisman's colorless option vs. its two-color option) can currently only use the first one through the game's interface.
  • Supported cards: 2,853 → 3,018 (out of 35,990 total).

v0.8.0 2026-07-08

Added
  • Creatures with a pump-up ability that costs mana (like "{R}: This creature gets +1/+0 until end of turn.") now work - one of the most common creature abilities in the game.
  • Creatures that can grant themselves flying for a turn (like "{2}{W}: This creature gains flying until end of turn.") now work.
  • "Destroy target artifact or enchantment" now works.
  • Some lands that enter the battlefield tapped weren't being recognized - fixed.
Fixed
  • A more serious bug: the game never actually checked whether the target you picked for a spell was a *legal* target - you could point "Destroy target land" at a creature, or a burn spell at something it shouldn't be able to hit, and it would go through anyway. Targeting is now properly checked and illegal targets are rejected.
  • Closely related: "Destroy target land," "Destroy target artifact," and "Destroy target enchantment" were all secretly only letting you pick a *creature* as the target, regardless of what the card actually said. They now correctly only let you target the right kind of permanent.
  • Supported cards: 2,697 → 2,853 (out of 35,990 total).

v0.7.0 2026-07-08

Added
  • Auras now work - cast one onto a creature and it stays attached, boosting (or weakening) that creature for as long as the aura is in play. If the creature dies or the aura is destroyed, it's handled correctly on both sides.
  • Equipment now works - cast it, then pay its Equip cost to attach it to a creature you control. If the creature dies, the Equipment stays behind on the battlefield, unattached, ready to equip something else.
  • Both can grant a keyword ability (flying, trample, vigilance, deathtouch, lifelink, menace, first strike, double strike, hexproof, indestructible) in addition to a stat boost.
  • Supported cards: 2,570 → 2,697 (out of 35,990 total).
Known gaps
  • Auras/Equipment with an extra ability beyond "boost + optional keyword" (like Rancor's "return to hand when it dies") aren't covered yet.
  • Equipment that auto-attaches itself when it enters (like Living Weapon) isn't covered yet.

v0.6.0 2026-07-08

Added
  • Cards that create tokens now work (e.g. "Create a 1/1 white Soldier creature token."), including Clue and Food tokens.
  • Creatures with abilities that trigger when they attack, or when they deal combat damage to a player, now work.
  • Creatures that enter the battlefield with a +1/+1 counter on themselves now work.
Fixed
  • A handful of creatures were incorrectly asking you to pick a target the moment you cast them, when really their ability (which needs a target) only happens later once they're on the battlefield. Casting those creatures now works normally.
  • A related bug meant a few cards could be labeled "supported" while actually doing the wrong thing. Both are now caught and fixed, and any card that isn't fully correct is honestly labeled "not yet supported" instead.
  • Supported cards: 2,554 → 2,570 (out of 35,990 total).
Known gaps
  • Putting a +1/+1 counter on a creature *you choose* (as opposed to the creature entering the battlefield with one) isn't supported yet.
  • More complex token effects (variable amounts, copying a creature, etc.) aren't covered yet.
  • Treasure tokens aren't supported yet - they require picking a mana color, which needs a "make a choice" feature we haven't built.

v0.5.0 2026-07-08

Added
  • A big jump in card support: instead of adding cards one at a time, the game now recognizes common wording patterns (like "Target creature gets +3/+3 until end of turn.") and supports every card that uses them, all at once.
  • New mechanics: landwalk (Swampwalk, Forestwalk, Islandwalk, Mountainwalk, Plainswalk), "can't be blocked," Fear, Hexproof, Shroud, Flash, Infect, Regenerate, Prowess, and creatures/lands that enter the battlefield tapped.
  • Supported cards jumped from 1,785 to 2,554 (out of 35,990 total).
  • Added this changelog page.
Fixed
  • Some cards with two effects on one card (like "-2/-0 and draw a card") were only doing one of the two. Both effects now happen.
Known gaps
  • Scry, surveil, and discard effects aren't supported yet - they need a "make a choice" feature we haven't built.
  • Permanent buffs from enchantments that aren't "until end of turn" (e.g. a steady +1/+1 anthem effect) aren't supported yet.
  • Protection from a color isn't supported yet.

v0.4.1 2026-07-08

Fixed
  • Logging in with Discord could send you to the wrong page after you authorized.
  • A caching issue that could make the login button keep sending you to the wrong page even after the first fix.
  • The room page sometimes showed "Login with Discord" even when you were already logged in.
  • Searching the card catalog could occasionally show the same card twice.
  • Importing a precon deck was missing its commander.
  • A few cards with working rules support (Sol Ring, Lightning Bolt, etc.) were incorrectly still labeled "not yet supported" in the catalog.

v0.4.0 2026-07-07

Added
  • Commander format: 2-6 players, the command zone, commander tax, and losing the game from 21+ combat damage by a single commander.
  • Archenemy format: one player takes on everyone else, with a deck of schemes that trigger on their turn.

v0.3.0 2026-07-07

Added
  • The core rules engine: turns, priority, the stack, combat (including trample and deathtouch), and how creatures die.
  • Automatic support for common keyword abilities: flying, trample, deathtouch, lifelink, vigilance, haste, first strike, double strike, menace, reach, defender, indestructible.
  • A first batch of fully supported cards: Sol Ring, Llanowar Elves, Lightning Bolt, Giant Growth, Counterspell.
  • Real-time multiplayer games in the browser, with a full board view - hand, battlefield, life totals, the stack.
  • Standard 1v1 games are fully playable, start to finish.

v0.2.0 2026-07-07

Added
  • Log in with your Discord account.
  • Paste in a decklist (from MTGO, Arena, Moxfield, etc.) and it's checked and imported for you.
  • Browse and clone any of 639 real preconstructed decks.
  • A deckbuilder page to manage your decks.

v0.1.0 2026-07-07

Added
  • The card catalog: search and browse all 35,990 Magic cards, with real card art.
  • Each card shows whether it's supported yet.