r/MTGATappsTracker • • 23d ago

Release v0.6.5 - Startup Controls & Reliability

Thumbnail
gallery
1 Upvotes

See it: tappstracker.com

Tapps Tracker 0.6.5

A reliability release for startup, overlays, event names and game history. Tapps is better at starting before your first queue, staying running, and preserving what Arena actually reported about each game.

Startup controls

Open Settings → Startup for two independent options:

  • Start with Windows/macOS launches Tapps Tracker in the system tray or menu bar when you sign in, so tracking is ready before you queue.
  • Open dashboard on launch controls whether startup also opens the dashboard in your browser. Turn it off to start tracking quietly in the background.

You can now use Start with Windows/macOS: On and Open dashboard on launch: Off together.

Tapps also prevents a second tracker process from starting for the same user. A second manual launch tells you Tapps is already running; a duplicate login launch exits quietly. Deck Finder remains independently launchable from the running app.

Event and game-history fixes

  • New Arena events no longer turn into Brawl. Arena's queue/event identifier now outranks deck metadata and command-zone guesses. Unknown events keep a readable version of Arena's own name instead of being mislabeled.
  • Powered Cube is recognized correctly. CubeDraft_Powered_* displays as Powered Cube, even when Arena exposes a populated command zone. Existing affected matches are repaired automatically.
  • Generic event names appear under Events. Identifiers such as Constructed_Event_2026 display as Constructed Event, appear in the Events filter in Recent Games and All Games, and repair older rows stored as Standard or Brawl.
  • Historical deck colors stay historical. Recent Games, All Games and opponent history now use the submitted deck snapshot from that specific game. Editing or redrafting a deck no longer repaints older games with the newest deck's colors.

Backup and restore

  • Fixed a restore completing successfully but immediately reporting zero games. Restored databases are now finalized into a single-file state before the live database is replaced, so the first dashboard read sees the restored history correctly.

Overlay and macOS reliability

  • Fixed the overlay disappearing on newer macOS versions because a changed foreground-app response made Arena look permanently unfocused.
  • Fixed Settings changing In-game overlay to off after an already-running overlay handled a second launch. Only Quit overlay now disables automatic overlay launches.
  • Removed the unnecessary scrollbar from Overlay Settings when it opens beside the minimal rail.
  • macOS app bundles now identify themselves as Tapps Tracker to the system and menu-bar managers while retaining the existing bundle identifier and filenames for upgrades.
  • macOS builds now find Node installations managed by nvm when launched from a noninteractive shell.

Installing

  • Windows: run MTGA-Tracker-0.6.5-setup.exe (or extract the -windows.zip into a fresh folder for a portable installation). The build is unsigned, so SmartScreen may show More info → Run anyway.
  • macOS: open the DMG and drag MTGA Tracker to Applications.
  • Your games and settings live outside the application folder and carry over when upgrading.

Full comparison: https://github.com/pattont/MTGA-Tapps/compare/v0.6.4...v0.6.5

Release: https://github.com/pattont/MTGA-Tapps/releases/tag/v0.6.5


r/MTGATappsTracker • • Sep 15 '26

Release v0.6.4 - Backup, Restore & Merge

Thumbnail
gallery
1 Upvotes

See it: tappstracker.com

Tapps Tracker 0.6.4

Backup, restore and merge. Everything the tracker knows now fits in one file, so your history can survive a dead disk and follow you to another computer.

Backup & restore

Open Settings → Backup & restore.

  • One file holds it all — a consistent snapshot of your game database, settings.json, your Deck Finder creators and the overlay's preferences, zipped into a .tappsbackup (about 15 MB for a thousand games). Include API keys decides whether your Deck AI key travels with it.
  • Pick a backup folder. The card offers the Google Drive, iCloud Drive, Dropbox and OneDrive folders it finds on your machine — choose one your sync client mirrors and the backup turns up on your other computer by itself. Nothing in the tracker talks to a cloud service, so a USB stick or an email works just as well. Nothing is created on disk until your first backup lands there.
  • Restore tells you what will change before it changes it — adds 7 games this computer does not have, or would drop 12 games recorded here, which makes you type REPLACE. It pauses the tracker, saves a copy of the current state first (Undo puts it straight back), brings an older backup up to this version's database schema on the way in, and keeps this computer's own dashboard port, window size and backup folder.
  • Merge is for playing on two computers: it adds a backup's games to the ones already here and removes nothing. Back up once more afterwards and one file holds everything. Merging the same backup twice adds nothing.
  • Every backup in the folder is listed with its date, computer, game count, newest game and size, with Open location, Restore, Merge and a red × on each. Restore, merge and delete all ask first and name the file; the × deletes the backup file, never your database.
  • From a terminal: python -m mtga_tracker.backup export|inspect|restore|merge|delete|list|folders.

Travelling: back up at home into the synced folder, restore on the laptop, play the week, back up there, then merge at home.

Fixes

  • The Live Scoreboard's color pips never lit. Colors were looked up under the timeline's display name (Mountain (Land)), which no card database matches, so both players' pips stayed blank all game — even though the archetype guess worked. Fixed; a basic land lights the pips on turn one again.

Docs

  • The README, Quick Start and reference guides were reconciled with what the app actually does, and the finished release and overlay plans were replaced by a release guide and an overlay guide.

Installing

  • Windows: run MTGA-Tracker-0.6.4-setup.exe (or unzip the -windows.zip into a fresh folder for a portable run). The build is unsigned, so SmartScreen will warn — More info → Run anyway.
  • macOS: open the DMG and drag MTGA Tracker to Applications.
  • Your tracked games and settings live outside the install folder and carry over. Upgrading is a good moment to take your first backup.

Release: https://github.com/pattont/MTGA-Tapps/releases/tag/v0.6.4


r/MTGATappsTracker • • Sep 11 '26

Release v0.6.3 - In-game Overlay

Thumbnail
gallery
1 Upvotes

See it and try the overlay: tappstracker.com

Full changelog: https://tappstracker.com/changelog/

In-game overlay

A small always-on-top window beside Arena that shows the library the tracker knows and the odds of what you draw next. It is on from the first launch, docked to the left edge; turn it off from Settings → In-game overlay or the menu bar's Stop Overlay.

  • The rail. A slim strip docked to the left or right screen edge (or floating) with the app's card mark at the top and three cells — Turn, Land (the chance your next draw is a land) and Deck (cards left of the deck, with a bar that turns yellow once half the deck is gone and red under 15 cards) — plus an arrow that opens the panel and a ⚙ that opens the settings beside the rail, without unfolding the panel. When the tracker isn't reachable the card mark greys out and carries a warning badge with the reason. The card mark is a vector drawing, sharp at any size and display scale.
  • On, off, pinned. The arrow (or the hotkey) turns the panel on; its chevron turns it off; the pin holds it out. It starts pinned: an opened panel stays until you unpin it. Unpinned, the rail is the folded panel: hovering the rail unfolds it, and it folds back once the cursor has been off it for the return delay. Off, the rail is just a rail. All three are remembered game to game and across launches. Between games the panel folds away; a pinned one comes straight back when the next game starts.

  • Where it lives. Only while Arena is running, on Arena's screen — over a fullscreen Arena too on macOS — and it steps aside while Arena isn't the front window. Flush with t- From the tracker. The Settings page shows one card — Overlay is on / Overlay is off, one sentence, and a Turn on / Turn off button — over the hotkeys; off means nothing runs and nothing starts with the tracker until it is turned on again. The menu bar shows an Overlay: Running / Stopped line under the tracker's, with Start/Stop Overlay and Overlay Settings in their own section; the overlay adds no menu-bar icon of its own.

  • Works in every game, tracked or not. Jump In, Midweek Magic, Welcome Deck Duels and practice games against Sparky stay out of your stats as before, but the overlay follows them like any other game — the library and the odds are just as useful there. (The tracker's live row, which the overlay and the Live Scoreboard read, is kept current during those games; nothing from them is saved as history.)

  • What it reads and what it costs. A separate native app (Tauri v2, a Preact page, about 5 MB) shipped inside the tracker. It polls this tracker's local GET /api/overlay three times a second during a game and loads card images from Scryfall - Scry is tracked. Every scry is counted per seat — how many scries, how many cards they looked at, and how many went to the top vs the bottom — for both you and the opponent (Arena lists the card ids even when the opponent's cards stay hidden). The timeline line says what actually happened instead of a bare "scried": You: scried 2 — kept [Opt] on top, bottomed [Plains] (the opponent's reads scried 2 — 1 top, 1 bottom), with its own Scry badge in the game timeline and the Live Feed. The game page and the deck page get a Scry group in Combat & Resources, under Cards: Scried, Cards scried, Scried Top and Scried Bottom, the last two with their share of everything scried alongside ("1 (33%)"); Removal moves to lead the next column so the four columns stay close to even. Which cards were kept or bottomed is recorded per scry but not shown yet. Historical games get their scry count back from their timelines (the old lines carry no amounts, so their card totals stay blank). Surveil is not yet counted.

  • Recent Games, its Bo3 match rows, and Sessions load 30 rows instead of 25, so the tables' 15-a-page paging shows two full pages.

  • "Card #N" rows that never resolve. A draw could be recorded against an ability object standing in for the drawn card, so the deck stats kept a Card #1156-style row no card database could ever name, and Database Health flagged it forever as a manual UNKNOWN_CARD_LABEL. The draw is still counted but no longer recorded under a placeholder (a diagnostic line says what was seen), and the audit now asks Arena's card database whether N is a card at all: ids that are not become repairable, and db_audit --repair removes those rows. Placeholders for real cards the local database has not learned yet still heal themselves on a later launch.

  • A stray "OperationalError: unable to open database file" on the Live Scoreboard. A read-only open of the database can lose a race with the tracker's own WAL checkpoint, and a Mac app launched from Finder starts with only 256 open files for Qt, the dashboard's per-request connections and the browser's sockets to share — SQLite reports both as the same unhelpful message. Read-only opens now retry once, the app lifts its open-file limit at startup, and a failure that survives the retry is written to `data/logs/dashboard-erro- The packaged app's Deck Finder page was blank. The installed tracker did not carry the deck-site modules the Deck Finder loads at runtime (only the terminal Deck Finder analysis did), so the dashboard was offered no sites and drew an empty page. The installers now include them — the build refuses to package a tracker whose Deck Finder would have no sites — and if no site can be loaded the page says so, with the reason, instead of showing nothing.

  • Windows: the paths on the Settings page could not be opened. Log DB and the other paths hid the username as ~\AppData\..., which Explorer does not understand. They now read %USERPROFILE%\AppData\..., which still hides the username and pastes straight into Explorer's address bar or a Run box.

  • Windows: upgrading left old files in the install folder. The installer only ever added and replaced files, so a program an earlier version shipped and the new one does not — MTGA Deck Downloader.exe, now folded into the tracker — stayed behind, and so did anything stale in the bundled runtime folder. Setup now clears _internal and that executable before installing. Tracked games and- Fewer "unknown log entry" diagnostics. Arena's ordinary client chatter — its own requests (==> GetFormats …), the server's answers, scene changes, and the connection and startup notes — is now named for what it is instead of landing in mtga_tracker_unhandled_annotations.log and the raw-payload archive on every launch (dozens of entries per session, hundreds over a day of tab-switching). Nothing about tracking changes: every line was and is still processed; the diagnostic file now holds only things the tracker has genuinely never seen. The archive gets cleaned up too: a one-time pass drops the chatter already stored (then compacts the file), and from now on archived payloads are kept for 30 days — it is a diagnostics buffer, nothing reads it back after that.

  • tappstracker.com rebuilds itself whenever this changelog changes on main.

Docs

  • Plans for Linux support (Arena under Steam/Proton or Wine, phased so CI verifies it before a Linux desktop exists) and for scry/surveil tracking (the scry half is shipped above).

Installing

  • Windows: run MTGA-Tracker-0.6.3-setup.exe (or unzip the -windows.zip into a fresh folder for a portable run). The build is unsigned, so SmartScreen will warn — More info → Run anyway.
  • macOS: open the DMG and drag MTGA Tracker to Applications.
  • Your tracked games and settings live outside the install folder and carry over.

Release: https://github.com/pattont/MTGA-Tapps/releases/tag/v0.6.3 settings live outside the install folder and are untouched. (Unpacking the zip over an older extraction keeps old files the same way; unpack it into a fresh folder.)

Housekeeping

  • One executable. The Deck Finder terminal tool no longer ships as a second program (MTGA Deck Downloader) beside the tracker — on Windows that put two .exes at the top of the install folder, and a PyInstaller program cannot simply be moved into a subfolder the way the overlay's self-contained binary was. It is now a mode of the tracker itself: MTGA Tracker --deck-finder runs the same terminal UI, which is what the dashboard's Deck Finder page launches in a terminal window. The install folder is MTGA Tracker.exe plus _internal, and the download is a little smaller for not carrying the second copy.

rs.log` with the file, WAL and descriptor state that explains it.

  • Windows: the tray menu could hide Quit under the taskbar. A right-click on the tray icon opened the menu downward from a cursor at the very bottom of the screen. The menu now opens upward (and leftward at the right edge) whenever it would not fit.

  • A blank deck-art tile. The signature-card tile only showed its type-colored frame after both art requests had reported failure; a Scryfall image request that stalls or answers 503 without the browser ever raising an error left an empty box with no art and no frame. The frame is now the tile's base layer and the art fades in over it once it has actually loaded; a request that has neither loaded nor failed after six seconds is treated as failed and the by-name fallback is tried.

  • Wins vs Losses on the Overview gets an Avg Game Time column, and its blurb (and the empty-state notes on the game and deck pages) no longer talk about "telemetry" or what early tracker versions did not record.

  • The Deck AI description on the Settings page is three sentences instead of a wall.

Fixes

  • The Live Scoreboard lost the previous game at midnight. Its "today's games" list went by calendar day, so a game played at 23:58 had no outcome and no record at 00:05 and the Previous Game chip went blank. The list now also carries the current tracker session's games and always the most recent finished game.

on hover — nothing else, and never the game itself. An unchanged poll is one indexed read on a kept-open connection (about 0.05 ms); the tracker reads Arena's log four times a second and a check with nothing new costs about 0.01 ms.

  • Building from source needs Rust: scripts/build_overlay.sh (or .ps1); --fast makes an incremental iteration build in seconds. Release builds include the overlay.

  • GET /api/overlay: the library the tracker knows (deck minus what has left it, from the kept opening hand on), per-card hypergeometric odds, land-drop odds, format, opponent, turn, play/draw and the head-to-head record — with an ETag so unchanged states answer 304.

New

he screen edge, with a few pixels of plain ground between the text and the edge; drag it up or down the edge and it snaps back flush the moment you let go. Windows: exclusive-fullscreen covers every overlay; use windowed or borderless.

  • Look and settings (the ⚙ menu, which opens beside the panel or the rail — never over the decklist): a charcoal tint with hairlines between rows and no box border. Scale from 50 % to 200 %; Rail opacity (default 90 %) and Panel opacity (default 80 %), which drive only the tint — text is always solid; Max panel height in pixels (default 800, always capped by the screen; the list scrolls inside); dock; click-through; density; the hotkeys — Alt+Shift+T / ⌥⇧T toggles the panel, Alt+Shift+H / ⌥⇧H hides the overlay — and a Restore defaults button that puts every preference back (the window's position and the panel's on/pinned state stay).

  • The panel. The full decklist, one row per card: name over mana cost on the left, copies left over next-draw odds centred in a darker band on the right. Hover a row for the card itself, beside the panel and nearly the width of the gutter, with the odds of drawing it next, within 2 and within 3 under the image; the row lights up while the cursor is on it and the card goes the moment it leaves — no clicking (the overlay never takes focus, so the shell watches the real cursor and tells the page where it is). Lands fold into one row that opens to indented Basic / Nonbasic rows; in Brawl, drawn singletons collapse into a Drawn group; a Sideboard row lists what is boarded. Above the list: land-drop odds for the next one, two and three draws, and a Play/Draw pill. Sort by odds, mana value or name; toggle card names in their color. Odds are whole percentages. The final library stays up through Arena's results screen, marked FINAL, and clears when you leave it.


r/MTGATappsTracker • • Sep 06 '26

Release v0.6.2 - Faster Dashboard + Wildcards

Thumbnail
gallery
2 Upvotes

New site: tappstracker.com

Windows installer — read this if Defender complains

Windows Defender has been quarantining MTGA Tracker.exe from the 0.6.1 installer as Trojan:Win32/Wacatac.B!ml (sometimes .C!ml). The tracker is not malware; the !ml suffix marks a machine-learning guess, not a match against anything known, and it fires on unsigned PyInstaller apps constantly. The shape of this one is exactly what the heuristics distrust: a freshly built, unsigned executable with no publisher that tails another program's log, runs a local web server, launches helper processes, and — for the collection exporter — reads Arena's memory.

This release does the two free things that help:

  • The PyInstaller bootloader is compiled from source on the build machine instead of shipping the prebuilt one that every PyInstaller-packed trojan also ships, so the exe no longer shares those bytes with them.
  • Both executables carry a real version resource (company, product, description, version) an anonymous exe scores worse than a described one.

Signing the binaries is the only complete cure and it costs money every year, so it is not happening for a free tool; each release is instead submitted to Microsoft as a false positive, which clears that build within a day or two. If Defender has already quarantined your install: Windows Security → Protection history → the Wacatac entry → Restore, then Allow on device, or reinstall after the verdict clears. Details in QUICKSTART.

Performance

Measured on a ~1000-game database. Numbers are cold loads from the tracker itself; a warm dashboard is faster still.

  • Overview: 803 ms → 227 ms (about a quarter of the time). All Games and deck pages load in under half the time; the opponent page in about a fifth.
  • Refreshes between games answer in ~8 ms instead of recomputing everything. Read endpoints are memoized against a fingerprint of the analytics tables; the tracker's heartbeat doesn't invalidate it, while a finished game, a saved note, or an AI archetype landing invalidates it immediately (60-second ceiling either way).
  • How: six new indexes (participants by game/role/deck, deck cards by participant and zone, opening hands and draws by participant, games by match), one set-based draw-quality pass for the overview and All Games instead of one query per game, and a cached split-card name lookup for exports. Existing databases pick up the indexes at their next launch — a one-time build of about 0.3 s.

New

  • Wildcards on the Overview, beside the deck search: common, uncommon, rare, and mythic counts read from the inventory block Arena writes to its log at launch and on every event join (gold, gems, and vault progress are stored too). Nothing shows until the tracker has seen one.
  • Live Scoreboard shows your lifetime record against the opponent's commander in Brawl, one line per commander, hidden until you've faced it.
  • The menu-bar item is now Live Scoreboard, matching the page.

Fixes

  • Opponent color pips could stay blank until turn 7. When Arena's card database wasn't readable at the moment the tracker built its color index, the index was cached for the session with only cards from earlier games. It now keeps retrying Arena's layers until they answer, looks up unknown cards on demand, and basic lands light their color on turn one.
  • The scoreboard's "Looks like…" guess could flip to an impossible archetype (Gruul Mono-Red after a Forest). Lands no longer count as evidence, and a guess whose colors contradict the table is dropped.
  • All Games flood/screw badges disagreed with the game page for a couple dozen games — the list ignored ramped lands and the real land ratio. Both now use the same rules.
  • Profile and combat columns were blank for decks past the 40th. The Decks table lists up to 100 decks but its combat telemetry stopped at 40, so players with many small decks saw dashes on rows with plenty of games.

Docs

  • README, Quick Start, and AGENTS refreshed; the in-game overlay plan rewritten for Tauri v2 with the rail/panel design mockup (docs/plans/OVERLAY_TRACKER_PLAN.md). The overlay itself ships in a later release.

Release: https://github.com/pattont/MTGA-Tapps/releases/tag/v0.6.2


r/MTGATappsTracker • • Sep 03 '26

Release v0.6.1 - Brawl

Thumbnail
gallery
2 Upvotes

New site: tappstracker.com

Brawl gets a first-class experience

  • Commanders everywhere. Game pages open with a commander-vs-commander strip, the Opening Hand calls out your commander by name (hover for the card), deck pages use the commander as the deck's signature art with a slim commander banner above the decklist, and an Opponent Commanders table shows who you've faced and your record against each.
  • Brawl section on the overview is always visible (with its own nav entry), with Best Commander and Toughest Opponent Commander boxes backed by card art.
  • Decklists include the commander as the 100th card, exports gain a Commander section in Arena format, and the commander's Games Seen is 100% it's in the command zone every game.
  • Live scoreboard colors seed from the commander the moment it's revealed, so the opponent's pips show up turns earlier.

Draw Quality, corrected

  • Expected Lands now comes from your real decklist. The game page used a flat 40% heuristic and the deck page was reading an older decklist version. The game page now uses the decklist submitted for that game (or the deck's nearest one), the deck page uses the newest decklist's land ratio, and the label says est. only when no decklist exists at all.
  • Game page shows Total Cards Drawn, Total Cards Seen, Lands Drawn, Lands Seen, Expected Lands, Longest Land Streak, Draw Status on one line, with land percentages in the labels. The 8-draw window and low-land drought boxes are gone — the flood/screw evidence line already reports them in words.
  • Deck page shows per-game averages for lands drawn, seen, and expected, with the share beside each label.

Opponents

  • Bo3 matches count once. Opponent counts and the opponents list treat a best-of-3 as one entry; the opponent page rolls each match into an expandable row with a Matches record card.
  • All Opponents gets its own page with a back link, a search box that shows the count, and gold focus rings on every filter control.
  • Opponent mulligans are tracked. Arena reports mulligans for both seats; the game page Mulligans box now reads You / Opp. Games tracked before this release show a dash for the opponent.

Dashboard

  • Two-tier format filters on Recent Games and All Games: family pills (Standard, Historic, Modern, Pioneer, Timeless, Limited, Brawl, Events) with fly-out refinements for queue and Bo1/Bo3.
  • All Games cleanup: wide deck picker, no redundant format dropdown or search box, 30 rows per page.
  • Deck Finder keeps the source and creator pills lit for the results you're looking at; creators row sits below the endpoint list.
  • Live Log is now Live Scoreboard, matching what the page has always been.
  • Scoreboard keeps the previous game up after a reload with a "Waiting for next match…" pill until the next game starts; Stop Tracking now shows as stopped immediately.
  • Tighter subsection spacing, a proper chevron on filter dropdowns, and fixed blank opponent color pips (the color index no longer caches an empty result at startup).

Deck AI transparency

The Settings page, the Settings dialog, and the README now spell out exactly what your API key is used for: exactly one small request per completed game, sent after the game ends, containing only the names of the cards your opponent revealed — never your deck, your account, or your log. The live scoreboard's colors and mid-game deck label are computed locally and never use the key.


r/MTGATappsTracker • • Aug 30 '26

Release v0.6.0 - Live Scoreboard

Thumbnail
gallery
2 Upvotes

Live Scoreboard

The /live page grew into a real scoreboard. During a game it now shows your lifetime and today's record with the current deck, head-to-head record against your opponent, lands played per side, a draw-quality strip (lands seen vs. expected, ramp-aware), a per-turn timer, your current rank on ranked queues, and a best guess at the opponent's archetype from their revealed cards. Between games the previous game's final scoreboard stays up — now surviving page reloads too — flagged with a "Waiting for next match…" pill and a Previous Game chip that includes the result and how it ended.

Opponents

New Opponents section on the dashboard: your five most-faced opponents with records, plus your record by opponent color combination — and a new searchable Opponents page listing everyone you've ever been paired against (maybe you ran into a WotC employee or streamer without even knowing it). Fixed a name-attribution bug where a handful of games recorded you as your own opponent, with a migration that cleans up historical rows.

Removal Accuracy Overhaul

Removal, wipe, bounce, and counter classification got a full audit against the card pool. Edict effects now count as removal, graveyard hate and hand disruption no longer do, land destruction is excluded, temporary exile (O-Ring style) counts as removal, and conditional sweepers (Desolation of Smaug, Fire Magic, Split Up) are judged by outcome — they count as a board wipe only when they actually cleared the board. Three migrations recount every historical game, and docs/REMOVAL_CLASSIFICATION.md records every ruling.

UI Polish

Play/Draw and mulligan badges with their own colors replace the old Mulligans column on Recent Games and All Games; All Games gained the Colors column; single (not doubled) gold focus rings on filter controls; consistent section spacing throughout.

Fixes

Stopping the tracker from the menu bar now flips the dashboard's tracker state and Live Log light to off immediately, and the All Opponents page no longer errors on load.

Restart the tracker after updating — migrations run at startup.


r/MTGATappsTracker • • Aug 27 '26

Release v0.5.9 - MTGA Collection Export

1 Upvotes

Export your MTGA collection

The headline feature: export your full card collection from the Settings page as .json, .csv, or .txt, ready to import into Moxfield and similar sites.

Arena never exposes your collection, so the tracker reads it straight out of the running game's memory — the game itself is never modified, and everything runs locally (no card database downloads, nothing leaves your machine). Open Arena's Decks tab once so the collection is loaded, pick a format, and the file downloads automatically when the scan finishes, with a copy saved to the tracker's data folder. On macOS an administrator prompt appears, since reading another app's memory needs elevated access.

  • Live progress while the scan runs, and the finished message tells you how long the export took
  • Scans find your cards at any owned quantity (not just playsets), so the fast first pass almost always succeeds
  • Memory-extraction technique adapted from NthPhantom10's MTGA-collection-exporter — full credit to them

Ramped and searched lands finally count

A land pulled from your library straight onto the battlefield — Lumbering Worldwagon fetching a basic, Cultivate, fetch lands — used to vanish from every land count because it was never "drawn." Now:

  • Lands Seen counts them, in live games and, via a one-time backfill of your game history, in every past game too
  • They don't count as flood — a land you searched out on purpose was not drawn against your will, so ramp-heavy decks stop reading as flooded just for doing what they do
  • They still protect against screw — a fetched land is mana in play, so it correctly makes a mana-screw reading less likely

The history backfill runs automatically the first time you launch this version.

Polish

  • Settings page navigation slimmed down to just "Back to dashboard" and "Settings"
  • Collection export UI cleaned up: clearer requirements, wider buttons, a single tidy completion message
  • README documents the collection export with a screenshot

Repo: https://github.com/pattont/MTGA-Tapps/

Release Download: https://github.com/pattont/MTGA-Tapps/releases/tag/v0.5.9.2


r/MTGATappsTracker • • Aug 24 '26

Release v0.5.8 - Live Scoreboard

Thumbnail
gallery
2 Upvotes

MTGA Tracker 0.5.8

https://github.com/pattont/MTGA-Tapps/releases/tag/v0.5.8

The Live Log becomes a Scoreboard

The biggest UI release since the dashboard landed. The tracker's old play-by-play window is gone — in its place, a real live Scoreboard inside the dashboard. The Deck Finder moves in alongside it, Settings becomes a proper page, colorless finally shows up as the color it is, and a fresh coat of polish runs across the sidebar, deck pages, and card pages. One install, everything in the browser.

⚔️ The Live Log is now the Scoreboard

Open Live Log from the sidebar (or the menu bar) and watch your game unfold in the dashboard instead of a cramped terminal window:

  • A hero scoreboard for the game in progress — both life totals ticking live, each side's color pips, your deck name, the current format, and the turn + game clock.
  • A Live Feed that reads exactly like your game history, because it is the same timeline the /game page renders — casts, draws, lands, combat, stack resolution, life swings, all with card links and hover previews. Brawl commander art shows up top.
  • It survives between matches — the finished game's board and a "Game ended" banner stay on screen with a "Previous Game" chip while you queue, then the feed rolls straight into the next match.
  • A session rail with your live record, runtime, and a green "Live" / red "Ready" status, plus a scrolling Today's Games list you can click into.

The old Qt window still exists as a buried debug fallback (MTGA_TRACKER_QT_LOG=1), but you shouldn't need it.

🔎 Deck Finder, now in the dashboard

No more separate terminal window. The Deck Finder lives in the dashboard now:

  • Pick a site, then a format, and browse a results table tuned to each source — win rates and match counts for untapped.gg archetypes, event placings for the tournament sites, and so on.
  • Open any deck to see its list, then Export to Arena to copy it in Arena's import format, or Source to jump to the original page.
  • "Surprise Me" pulls a random importable deck when you just want something to play.
  • Your featured creators for AetherHub, Moxfield, and TCGplayer now live on the Settings page.

⚙️ Settings, in the app

Settings graduated from a pop-up dialog to a full dashboard page (gear icon, top right of every page): Deck AI configuration, your Deck Finder creators, a tracker-status readout (what it's monitoring, the card and log databases, the version), a single sun/moon theme toggle, and the Database Health link — all in one place.

◇ Colorless is a color

The colorless diamond now appears everywhere colors do — Recent Games, the Decks table, deck and game pages, and the live scoreboard — for decks and opponents whose known cards are all colorless (Eldrazi, artifact decks). No more blank where an identity belongs.

✨ Navigation & polish

  • A smarter sidebar: a Live Log entry above Overview that glows green while the tracker runs and red when it's stopped, an icon on every nav item (icon-only when you collapse the rail), a magnifier-marked Deck Finder button, and a global search that finds any card or deck.
  • Deck colors everywhere (carried over and refined): color pips on the deck header, a Colors column on the Decks table, and a Colors column in Recent Games — judged lands-first from real casting requirements, so hybrids and one-off off-color cards never mislabel a deck, and every deck gets pips even if it predates decklist capture.
  • Card page overhaul: reordered sections, an Avg Per Game metric, the same ambient card-art backdrop as the deck page, and a new "Opponent Could Have Played It" panel — how often opponents whose colors could cast a card actually did.
  • Deck page: hero-sized signature art (with a by-name fallback for brand-new sets), the Copy Arena Deck button moved up beside the card search.
  • Recent Games: the top-level Match Record column is gone — a win is a win; expand a Bo3 to see "Match record: 2–1" in the flyout.
  • Overview: Land Statistics now heads the land section, Opponent Meta paginates at 10 rows, and the Decks table stops scrolling sideways.
  • Plus the usual fit-and-finish: cleaner focus rings, official card-type symbols in the deck-list type boxes, "Imported Deck" games that retitle themselves the moment the renamed deck's first game lands, and pages that scroll clear of the Back-to-top pill.

💬 Community

MTGA Tracker now has a Discord — come by for discussion, bug reports, and feature requests.


r/MTGATappsTracker • • Aug 20 '26

v0.5.7 Released

1 Upvotes

https://github.com/pattont/MTGA-Tapps/releases/tag/v0.5.7

Mana costs arrive everywhere: real MTG symbols on every card table, a new Mana column across the deck and game pages, curve stats that show who's playing the bigger spells, a smarter opponent-deck view — plus the date repair for day-first locales from the 0.5.6 beta, now in a full release.

Mana costs, with the real symbols

Every table that lists cards now shows each card's cost — the deck page's Deck List & Sideboard, and the game page's Opening Hand, Drawn Cards, Cards Played, and Opponent Deck. The symbols are the official ones (hybrid, twobrid, Phyrexian, X, snow, colorless — all of it), rendered from an icon font bundled inside the app, so they work offline and load instantly.

The costs themselves come straight from Arena's own card database on your machine — picked up automatically at startup and after each game, and applied retroactively to every card you've ever tracked. Anything Arena's database doesn't cover falls back to a cached Scryfall lookup. Lands and unknown costs show a dash, never a guess.

Who's playing the bigger spells?

Two new rows in Combat & Resources on both the game and deck pages, for you and your opponent:

  • Avg mana value / card played — is this a deck of one-drops or sevens?
  • Mana spent / turn — four 1-mana creatures look like a lot of action; this row tells you it was only 4 mana. Compare it against a deck that plays one 6-drop per turn and the difference in weight is obvious.

Computed from printed costs (lands excluded, X counts 0), so treat it as a curve indicator rather than exact mana from the mana pool.

Opponent Deck, reorganized

The game page's "Opponent Revealed Cards" becomes Opponent Deck, split the way you actually think about it:

  • Opponent Played Cards — everything they cast or played, with the turn(s) each copy hit ("Plains — T3, T4, T6"), just like your own Cards Played table.
  • Opponent Revealed Cards — everything else that got exposed: visible draws, discards, mills, exiles.

A deck list you can read at a glance

  • Card-type count boxes above the deck list — Planeswalker, Creature, Sorcery, Instant, Artifact, Enchantment, Land — using the official card-type symbols (the chalice, the claw mark, the sunrise…).
  • Totals rows on the deck list and sideboard, and on the game page's Drawn Cards, Cards Played, and Opponent Deck tables — proper footer rows, aligned under their columns.

Month/day-swapped dates repaired (from the 0.5.6 beta)

If you're in a day-first locale and tracked games before 0.5.5, games like 9 August were stored as 8 September — months in the future, scrambling every date-sorted view. A one-time migration swaps them back, anchored to each tracker session's system-clock start time. Conservative by design: ambiguous rows are left untouched, and no database reset is needed.

🩺 Under the hood

  • New cards.mana_cost / mana_value columns, backfilled from Arena's card DB the same way color identities already were.
  • The Arena database reader probes for the cost column across client versions and refuses to guess at values it can't parse — scripts/probe_mtga_card_db.py verifies the parse rate against your install if you're curious.

Full Changelog: https://github.com/pattont/MTGA-Tapps/compare/v0.5.5...v0.5.7


r/MTGATappsTracker • • Aug 18 '26

Version 0.5.5 Released

1 Upvotes

MTGA Tracker 0.5.5

The biggest update yet: full Brawl analytics, a whole new family of per-game interaction stats — removal, board wipes, counter magic, land destruction, tokens, poison — with your existing history backfilled automatically, plus a redesigned Overview and a much deeper Deck page.

🃏 Brawl is now a first-class format

The Overview gains commander win-rate tables — your commanders and the ones you faced — plus an overall and per-queue Brawl record strip. Recent Games shows Brawl queue labels and commander matchups, and Competitive Brawl, Standard Brawl, and Historic Brawl stay correctly separated everywhere (including a fix for Competitive Brawl games occasionally mislabeling).

⚔️ Know your interaction: seven new stat categories

Every game now records, for both you and your opponent:

  • Removal — spot removal and board wipes played (with how many you drew), and how many creatures / non-creatures each side lost to removal.
  • Counter Magic — counters played, and from the actual stack outcome, how many landed versus fizzled. Soft counters count by what happened, not by what was paid.
  • Bounce — bounce spells played and permanents returned to hand.
  • Land Destruction — lands destroyed, how often the victim answered with a land drop by their next turn, and the replacement rate.
  • Tokens — created, destroyed, sacrificed, exiled, per seat.
  • Poison — poison counters accumulated (proliferate chains included).

Cards are classified as removal/wipe/bounce/counter from their Arena rules text, so a board wipe counts the moment you draw it, not only when it resolves. Outcome detection also got smarter: games ending by decking, poison, or timeout now say so instead of showing up as concessions.

⏪ Your history fills itself in

You don't start from zero. On first launch, a one-time migration recomputes the behavioral stats — permanents removed and bounced, lands destroyed and replaced, spells countered — for every game you've ever tracked, straight from each game's recorded timeline. A bundled script (scripts/backfill_card_role_stats.py) fills the rules-text-based counts (removal/wipes/counters played and drawn) using your local Arena card database. Anything that genuinely can't be reconstructed (tokens, poison, your opponents' hidden draws) shows a dash — never a fake zero.

📊 Overview, redesigned

  • Match-level records everywhere: a Bo3 counts once. The top row shows Matches / Wins / Losses / Win Rate and your longest streaks, with icons.
  • How Games End presents per-reason percentages in side-by-side Wins and Losses tables — including the new decked/poisoned/timeout endings.
  • Constructed Ranked gets lifetime match stats, a season selector, the rank chart, and per-season stats. New BO1-Ranked / BO3-Ranked quick filters and a searchable Deck filter; the win-rate trend covers your last 30 games.

🎴 The Deck page grew up

  • Combat & Resources: every game-page stat category as per-seat, per-game averages for that deck — same categories, same layout, so your eyes never have to relearn where things live.
  • New Turn Timing (average turn pace for both players) and Draw Quality (average cards and lands seen per game) sections.
  • Formats became win-rate rectangles per queue — BO1/BO3, Ranked vs Unranked, Competitive vs Casual Brawl — and Vs Opponent Colors opens with Best Against / Worst Against highlight cards.
  • The page takes on an ambient background tinted from your deck's signature card art, and metric cards across the app picked up icons.
  • Games can no longer land on the wrong deck: the decklist you actually submitted now decides which deck a game belongs to, fixing games recorded under a previously-played deck's name when the tracker launched mid-queue.

🌏 Dates that respect your locale

Day-first locales (Australia, Europe, …) no longer see today's games sorted between the 8th and the 9th of last week: the log parser learns your day/month order from unambiguous entries, and the dashboard renders dates in your locale.

🩺 Fixes & maintenance

  • DB Health no longer false-alarms on post-game tail events, and the rare real misassignment fixes itself at startup (the check went from 4.4s to ~150ms).
  • New-set card databases are picked up mid-session — no restart on release day — and Arena's files are opened strictly read-only.
  • Welcome Deck Duels joins the untracked-modes list; already-saved games are cleaned up automatically.
  • A concede during the opening mulligan decision counts as a real game.
  • Database hygiene: new indexes on the hottest queries, PRAGMA optimize on every launch, and an optional cleanup script for early games recorded without combat telemetry.

Full Changelog: https://github.com/pattont/MTGA-Tapps/compare/v0.5.4...v0.5.5

Release: https://github.com/pattont/MTGA-Tapps/releases