Thanks for the detailed report! Weathered Wayfarer actually works: its ability can only be activated while an opponent controls MORE lands than you (any opponent counts). When that's not true, the ability isn't available, and since tapping the card gave no feedback, the game simply moved on to combat, which is why it looked like it could only attack. That part was a real problem, and it's fixed for the next update: tapping a permanent whose ability can't be used now tells you why (the card's own condition, that it just came in, or that it's already tapped).
DokkodoLabs
Creator of
Recent community posts
that error means the file you downloaded is the Linux version (the .tar.gz with a bin/NeoForge inside), and macOS can’t run Linux programs. For your M5 Pro, grab the macOS Apple Silicon .dmg instead, open it and drag NeoForge.app to Applications. Since it isn’t signed by Apple, the first time macOS will block it: go to System Settings → Privacy & Security and click “Open Anyway”. You can delete the /Applications/NeoForge folder you have now.
Thanks for the detailed report, you were right to suspect LED! It’s a quirk in Forge’s engine: when it checks whether you have anything to do, it counts your mana the way the AI would, and the AI never counts Lion’s Eye Diamond (because of its “sacrifice it and discard your hand” cost). So it thinks you have no mana and passes the phase. Underworld Breach isn’t the problem: escape works fine when the mana comes from lands. I’m fixing it on my side so the auto-pass counts LED’s mana and stops when you can actually do something. Until then, you can turn off the “pass when there’s nothing to do” setting while you’re going for that line.
Thanks, that helps a lot! So it’s every card on the battlefield, even basic lands, starting after some “exile face down, you may play it” effect. I tried that exact situation (Gonti, and an opponent stealing my cards) and couldn’t trigger it yet, so I need to see what happens in your game:
Go to Settings → Detailed game log and turn it on.
Play until it happens again, and click a land a couple of times.
Click “Open the folder” in that same setting and send me detailed-game.log (and neo.log from the same folder if it’s there).
Those files record every click and what the game did with it, so I’ll see exactly where it gets stuck. Thanks for your patience!
Thanks for the detailed report! Two quick things that would help me a lot:
When it happens, does a basic land (like a Swamp) also refuse to tap, or only cards with more than one ability (dual lands, Treasures, equipment)?
In the log you saved, could you search for “nested loop” and paste just those lines?
And the exiled cards without images is fixed for the next version: cards you can play from exile now show their art.
Thanks for the detailed report, and you’re right about 603.5! You can decline, just later than the targeting step. Choosing a target is required when the trigger goes on the stack (that’s why Cancel was grayed out). Then, when it resolves, the game asks “Use triggered ability of Foundation Breaker?”, and answering No keeps your Birthing Pod. I tested it and the question does appear.
If you didn’t get that question, you probably told the game to always answer yes for this trigger at some point (the Y key, or “Always answer yes” in the stack’s right-click menu). That’s remembered between games. To undo it, right-click the stack and choose “Forget what I have remembered”.
Thanks for the detailed log, it made this easy to track down! The bug isn’t in Neo Forge itself. It’s in the script for Garruk, Veiled Butcher in Forge, the engine Neo Forge runs on. His static ability “If a creature an opponent controls would die, exile it instead” is missing a check that the creature is actually on the battlefield. So when his -3 makes your opponent discard creature cards, Garruk “replaces” the discard with an exile that does nothing, and the cards just stay in their hand. Discarding non-creature cards works fine.
Neo Forge is only the interface on top of Forge: the rules and the 30,000+ card scripts are theirs, and I don’t modify their code. That way every Forge update, with its new cards and fixes, reaches Neo Forge without breaking anything. So this one has to be fixed by the Forge team. Once they do, the fix will arrive automatically in the next Neo Forge update.
Until then, keep in mind that while Garruk is on the battlefield, his -3 won’t make an opponent discard creature cards.
Thanks for the report! I tested both cards and they work correctly here: Restless Reef’s attack trigger mills 4 cards from the target player, and Garruk’s -3 makes each opponent discard two (and you draw for each one who didn’t discard two nonland cards). So it’s probably something specific to your game. Could you tell me:
How many players, and were there teams?
Right after it happens, open the “Log” (bottom left), copy it and paste it here. It shows exactly what the game did.
One thing to keep in mind: Restless Reef mills only the one player you target, and Garruk’s -3 hits opponents only, not teammates.
fixed for todays update
Clara Oswald: fixed (PC and Android)
- Cause: a Forge engine bug. When the commander changes zone, the engine makes a fresh copy of the card that keeps “commander” but not the colour chosen before the game. Casting her made her colourless, so All Is Dust skipped her. The Prismatic Piper has the same problem.
- Fix: without touching Forge, a wrapper in our module puts the colour back on the copy. It runs at the start of every game, in every mode.
Thanks for the detailed report! I tried to reproduce it on PC (Hearse + one card in a graveyard): picking the card in the window that opens and pressing OK exiled it fine. Could you tell me: are you on PC or Android, and which version? Exactly how did you pick the card: in the window that opened by itself, or did you open the graveyard yourself by clicking its pile? And did you click that card more than once? (Clicking a target again un-selects it, which would give exactly that “nothing picked” warning.) Were there cards in more than one graveyard at the time?
You found a real bug! Depending on how a decklist is written (Moxfield, Arena, commander on the first line...), Forge’s list reader could either move a second card into the command zone or count the commander twice, and that’s the “no more than 99 cards” you saw. It’s fixed for the next update: imported precons come out as 99 + commander. Deck lists will also show 100 cards for a Commander deck, and on Android the deck builder says “99 + commander” like on PC. And the AI deck you pick now shows up under the Opponents button. Thanks again!
About Lich's Mirror: I tested it and it does work. When you'd lose, it shuffles everything back, you draw seven and go back to 20 life. One thing to keep in mind is that it doesn't remove poison counters or commander damage. If you lost to 21 commander damage or 10 poison, the Mirror kicks in, but you still have that damage or poison, so you lose again right after (now without the Mirror). That's how the card works in real Magic too. Do you remember how you lost? If it was something else, send me your log (Settings → open log folder) and I'll take a look.
I already had an account from a previous project with 1k followers on TikTok, so I repurposed it. The algorithm is really hit-or-miss anyway—some TikToks get 1k views while others get 50. I’m also lucky enough to be featured on the itch.io front page for posting daily updates, but Reddit was what really drove the major traffic and got things off the ground.
Thanks for the detailed suggestion, that's a mistake I've made myself! It's in for the next update (1.0.11): Settings → "Ask before not blocking at all". It's off by default, as you suggested. When it's on and you're about to move past declare blockers without assigning any blocker while you have creatures that could block, NeoForge asks first, with "Back to blocking" highlighted and "Continue without blocking" next to it. If you have nothing that can block, it stays out of your way.

Hi everyone! Neo Forge is a free app for playing Magic: The Gathering against the AI, fully offline, and today it's out on Android (it was already on Windows and Mac).
It's a modern interface built on top of Forge, the open-source MTG rules engine, so underneath there are 33,000+ cards, real rules (stack, triggers, combat) and a real AI opponent. On the phone the table is rebuilt for touch: slide through your hand, lift a card to play it, drag a creature onto an opponent to attack.
- 👑 Commander / EDH, up to 4 players against the AI
- 🧗 Ascent, a roguelite mode: branching map, relics, one life for the whole run
- 🗺️ Forge's Adventure map, towns and dungeons
- 📦 Draft and Sealed against seven AI drafters
- 📜 Quest, 372 puzzles, Brawl, Oathbreaker, Standard, Modern, Pauper and more
- 🌍 10 interface languages
No ads, no account, no in-app purchases. It's a non-commercial fan project and will stay free.
🎬 Trailer: https://youtu.be/GX7uUfCA0Os
⬇️ Download (Android APK, Windows, Mac): https://dokkodolabs.itch.io/neo-forge
It's the first Android release, so I'd love to hear how it runs on your device. Feedback is very welcome here or on the Discord: https://discord.gg/fF5Tn7Z2pv
Unofficial fan project, not affiliated with Wizards of the Coast.
Hi Wind, thanks a lot for the report, and sorry for the trouble!
I looked into it, and Combat Celebrant itself was working fine. The problem was the question Neo Forge asks when it attacks. It showed the card unselected, with a title that read as if the exert had already happened, next to a big lit-up Accept button. Pressing Accept without first clicking the card actually meant "don't exert". So the Celebrant was never exerted: no trigger, no untap and no extra combat. That was the confusing part.
It's fixed now. When a creature can exert (or enlist) as it attacks, you get a simple yes/no question with the card in front of you and two buttons: Exert / Don't exert. I tested it with Combat Celebrant: pick Exert and your other creatures untap right away, and you get the additional combat phase after this one.
The fix will be in version 3.9, out tomorrow. Until then, the workaround is to click the Celebrant in that dialog before pressing Accept.
Thanks again, reports like this make the game better for everyone. 🙂

