Skip to content
DnsLister Forum

Where domain hunters compare notes

Release v0.6.3 – In-game Overlay

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.

https://www.reddit.com/gallery/1wd0otx

Source: r/MTGATappsTracker · by /u/Pattont

Leave a Reply

Your email address will not be published. Required fields are marked *