{"id":48746749,"url":"https://github.com/shawnmccool/scry-2","last_synced_at":"2026-05-30T11:03:01.527Z","repository":{"id":350684767,"uuid":"1202078416","full_name":"ShawnMcCool/scry-2","owner":"ShawnMcCool","description":"Self-hosted Magic: The Gathering Arena stats tracker. Real-time Player.log ingestion, match/draft history, card performance analytics. Elixir + Phoenix LiveView.","archived":false,"fork":false,"pushed_at":"2026-05-02T10:37:11.000Z","size":4549,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-02T11:29:40.464Z","etag":null,"topics":["elixir","event-sourcing","magic-the-gathering","magic-the-gathering-arena","mtg","mtga","phoenix","phoenix-liveview","self-hosted","stats-tracker"],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ShawnMcCool.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-05T15:11:07.000Z","updated_at":"2026-05-02T10:37:13.000Z","dependencies_parsed_at":"2026-05-02T11:03:00.582Z","dependency_job_id":null,"html_url":"https://github.com/ShawnMcCool/scry-2","commit_stats":null,"previous_names":["shawnmccool/scry-2"],"tags_count":76,"template":false,"template_full_name":null,"purl":"pkg:github/ShawnMcCool/scry-2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShawnMcCool%2Fscry-2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShawnMcCool%2Fscry-2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShawnMcCool%2Fscry-2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShawnMcCool%2Fscry-2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ShawnMcCool","download_url":"https://codeload.github.com/ShawnMcCool/scry-2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShawnMcCool%2Fscry-2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32705620,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","event-sourcing","magic-the-gathering","magic-the-gathering-arena","mtg","mtga","phoenix","phoenix-liveview","self-hosted","stats-tracker"],"created_at":"2026-04-12T12:06:43.262Z","updated_at":"2026-05-06T18:01:07.396Z","avatar_url":"https://github.com/ShawnMcCool.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Scry 2\n\n**Your own private MTG Arena stats tracker — running quietly in your system tray.**\n\nScry 2 watches MTGA's log file on your own machine, parses every match and draft\nas you play, and serves a personal analytics dashboard at `http://localhost:6015`.\nNothing leaves your computer. No accounts, no sign-up, no telemetry. Just the\nhistory you'd keep yourself, if you had the time.\n\nInspired by [17lands.com](https://17lands.com), but self-hosted and\nConstructed-first.\n\n---\n\n## What you get\n\n- **Live match history.** Every ranked, Bo1, Bo3, and casual match you play, with\n  the deck you brought, the format, your opponent's colors, and the result —\n  written to your local database the moment the match ends. No imports, no\n  uploads.\n- **Rank climb charts.** Your Constructed and Limited ranks plotted over time, per\n  season. See when you spiked, when you stalled, and when the algorithm decided\n  you were Silver-shaped for three weeks.\n- **Deck-level win rates.** Sliced by format, season, and play/draw. Every version\n  of a deck tracked separately so you can actually compare the Tuesday build to\n  the Friday build.\n- **Per-card performance.** For every card you own: games drawn, games in opening\n  hand, games won with it in your deck. Your own data, not the population's.\n- **Draft history.** Every pick, every pack, plus the deck you actually submitted.\n  Re-read your drafts like replays.\n- **Card browser.** Full MTGA card database, searchable and filterable. Card\n  images are fetched from Scryfall on demand and cached locally.\n- **Collection snapshot.** A read of your current MTGA card collection, refreshed\n  automatically whenever you launch the game.\n- **One-click updates.** When a new release ships, the app downloads and verifies\n  it in-place. A progress modal shows each step; you can cancel mid-download.\n\n---\n\n## Platform support\n\n| Platform | Status | Notes |\n|---|---|---|\n| **Linux** (x86_64, glibc) | **Primary** — fully supported and actively developed | Ubuntu / Arch / Fedora / any mainstream distro with `glibc` |\n| **Windows** 10 / 11 (x86_64) | **Experimental** | MSI installer works; some edge cases still being smoothed. Use at your own pace. |\n| **macOS** (Apple Silicon) | **Planned, not yet supported** | Release archives are produced but the installer story isn't ready. If you're excited about macOS, star the repo and check back. |\n\nScry 2 runs MTGA through Steam/Proton on Linux. No native Linux MTGA build\nexists, but Proton handles it transparently — the watcher just reads the\n`Player.log` that Proton writes.\n\n---\n\n## Before you install\n\nScry 2 needs MTGA's **Detailed Logs** setting enabled. This is MTGA's built-in\ndebug-event stream; without it, the log file only contains plain-text entries\nand there's nothing to parse.\n\nIn MTGA:\n\n1. Open **Options → View Account**\n2. Enable **Detailed Logs (Plugin Support)**\n3. Restart MTGA if it was already running\n\nScry 2 will warn you on its dashboard if it notices Detailed Logs is off.\n\n---\n\n## Install\n\n### Linux — one command\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/ShawnMcCool/scry-2/main/installer/install.sh | sh\n```\n\nThat's it. The script resolves the latest release, verifies the download\nagainst its published SHA-256 checksum, and hands off to the bundled\ninstaller. Autostart is wired up via XDG, the tray icon appears, and the\ndashboard becomes available at `http://localhost:6015`.\n\nWant a specific version? `… | sh -s -- --version v0.20.0`.\n\n\u003e **GNOME users:** install the AppIndicator extension if the tray icon\n\u003e doesn't appear. Most other desktops show it out of the box.\n\n### Windows — experimental\n\nDownload **`Scry2Setup-*.exe`** from the\n[Releases page](../../releases/latest) and run it. The bundled Burn\ninstaller handles the MSI and the Visual C++ Redistributable. Scry 2\nwill start on login and surface its tray icon.\n\n\u003e **Firewall:** on first launch Windows may prompt to allow\n\u003e **epmd** and **erlang** through — these are components of the bundled\n\u003e runtime. Allow both.\n\nThe Windows build is newer and less battle-tested than the Linux build.\nIf something breaks, the \"Report to developer\" button in\n**Settings → Operations** opens a pre-filled GitHub issue with a\nscrubbed error log. That's by far the fastest way to get it fixed.\n\n### macOS — coming later\n\nRelease archives are produced on every version bump but the macOS\ninstaller experience (LaunchAgent, first-run prompts, code signing)\nisn't finished yet. There's no shell installer and no DMG. Track\nprogress on the repo; this section will become actionable when the work\nlands.\n\n---\n\n## Using Scry 2\n\nAfter install, open `http://localhost:6015`. The tray menu has an\n**Open** shortcut that does the same thing.\n\n- **Matches** — your game history, filterable by format, season, and deck.\n  Click any match for a full play-by-play.\n- **Decks** — one row per deck you've registered in MTGA. Win rate,\n  games played, and version history.\n- **Drafts** — every draft you've done, pick by pick.\n- **Cards** — the full MTGA card database. Your own per-card stats are\n  overlaid on each card.\n- **Player** — global summary: total matches, overall win rate, most-played\n  deck, longest streak.\n- **Ranks** — rank timeline with a chart per format per season.\n- **Economy** — gem/gold/wildcard history inferred from log events.\n- **Collection** — auto-refreshed snapshot of your MTGA collection.\n- **Settings** (gear icon, top right) — three tabs:\n  - **System** — health checks, log watcher status, app version,\n    one-click \"Apply update\" when a new release is out.\n  - **Operations** — backend restart/stop, projection rebuilds,\n    error export.\n  - **Settings** — MTGA paths, 17lands refresh schedule, advanced config.\n\n---\n\n## Updates\n\nScry 2 checks GitHub for new releases once an hour and shows a badge on\n**Settings → System** when one is available. Click **Apply update** and\nthe app will:\n\n1. Download the new archive.\n2. Verify it against the published SHA-256 checksum (refuses to install\n   on mismatch).\n3. Extract, hand off to the installer, and restart itself.\n\nA progress modal shows each phase. You can cancel any time before the\ninstaller is actually spawned.\n\nIf an update ever fails, the running install is untouched — Scry 2 is\nconservative about that. Re-running the shell installer at any time is\nalways safe and also preserves your data.\n\n---\n\n## Your data\n\nScry 2 writes everything to a local SQLite database. Nothing is uploaded\nanywhere. The database is yours to keep, move, back up, inspect, or\ndelete.\n\n| Platform | Database location |\n|---|---|\n| Linux   | `~/.local/share/scry_2/scry_2.db` |\n| Windows | `%APPDATA%\\scry_2\\scry_2.db` |\n| macOS   | `~/Library/Application Support/scry_2/scry_2.db` *(location reserved; installer TBD)* |\n\nConfig lives alongside the database at `~/.config/scry_2/config.toml`\n(Linux) or `%APPDATA%\\scry_2\\config.toml` (Windows), but most settings\nare editable from the UI — you shouldn't need to touch these files.\n\n---\n\n## Uninstall\n\nScry 2's uninstaller removes the application binaries and the autostart\nentry. **It never touches your database.** Uninstall, then decide\nseparately what to do with your history.\n\n- **Linux:**   `~/.local/lib/scry_2/uninstall`\n- **Windows:** `%LOCALAPPDATA%\\scry_2\\uninstall.bat`\n- **macOS:**   `~/.local/lib/scry_2/uninstall` *(once supported)*\n\nAfter uninstalling, the script prints the path + size of your database so\nyou can decide whether to keep it. To remove everything including\nhistory, delete the database directory (shown above) by hand.\n\n---\n\n## Getting help\n\n- Something parsed wrong? **Settings → Operations → Report to developer**\n  opens a pre-filled GitHub issue with a scrubbed error log.\n- Feature idea or bug not tied to a specific event?\n  [Open an issue](../../issues) directly.\n\n---\n\n## Acknowledgements\n\nScry 2 stands on other people's generous work.\n\n- **[Beleren](https://www.delvefonts.com)** by Delve Fonts — the official\n  MTG card-title typeface, commissioned by Wizards of the Coast. Used for\n  headings. Proprietary; used here under Wizards'\n  [Fan Content Policy](https://company.wizards.com/en/legal/fancontentpolicy).\n- **MPlantin** — the MTG rules-and-flavor-text typeface, derived from the\n  Plantin family. Used for card text rendering. Proprietary to Wizards of\n  the Coast.\n- **[Mana font](https://github.com/andrewgioia/mana)** by Andrew Gioia —\n  the mana, set, and loyalty symbols. Licensed under SIL OFL 1.1 (font)\n  and MIT (CSS).\n- **[17lands](https://17lands.com)** — for the public card reference\n  datasets that make card-aware analytics possible without scraping, and\n  for setting the standard on what self-service MTGA stats should feel\n  like. Card data is licensed\n  [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).\n- **[Scryfall](https://scryfall.com)** — for the card image API that\n  powers Scry 2's card browser. Please respect their\n  [rate limits and guidelines](https://scryfall.com/docs/api) if you fork\n  this project.\n- **[Wizards of the Coast](https://magic.wizards.com)** — Magic: The\n  Gathering, MTG Arena, mana symbols, set symbols, and all card text and\n  imagery are property of Wizards of the Coast LLC. Scry 2 is an\n  independent, unofficial tool and is not affiliated with, endorsed, or\n  sponsored by Wizards of the Coast. See Wizards'\n  [Fan Content Policy](https://company.wizards.com/en/legal/fancontentpolicy)\n  for how fan projects like this one are permitted to exist.\n- **The Elixir and Phoenix communities** — for building a stack where a\n  single-developer project can credibly take on real-time ingestion,\n  event sourcing, and a live admin UI without a team behind it.\n\n---\n\n## License\n\nScry 2 itself is licensed under the MIT License — see [LICENSE](LICENSE).\n\nThird-party assets retain their original licenses as noted above.\n\n---\n\nContributing or building from source? See [DEVELOPMENT.md](DEVELOPMENT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshawnmccool%2Fscry-2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshawnmccool%2Fscry-2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshawnmccool%2Fscry-2/lists"}