Skip to content
videre-projectPublic

About

A real-time game and collection tracker for Magic: The Gathering Online (MTGO).

Resources

Stars

14 stars

Watchers

2 watching

Forks

Latest commit

 

History

254 Commits

Folders and files

Repository files navigation

Videre Tracker

.NET MTGO MTGOSDK Version Version

Overview | Installation | Usage | Documentation | License | Disclaimer

Overview

Videre Tracker is a real-time game and collection tracker for Magic: The Gathering Online (MTGO). It captures, processes, and analyzes gameplay data in real-time, offering detailed statistics, replay capabilities, and performance insights to help you improve your MTGO gameplay experience.

Built on top of the MTGOSDK library, the Tracker provides a modern web-based UI embedded in a native Windows application, giving you a seamless experience while tracking your matches and analyzing your performance.

Installation

Requirements

Note

You must have both the .NET SDK and Node.js (with pnpm) installed before running or building this project.

To install pnpm, you can use npm:

npm install -g pnpm

Setup

To setup the Tracker, follow these steps:

  1. Clone the repository:

    git clone https://github.com/videre-project/Tracker.git
    cd Tracker
  2. Restore dependencies:

    pnpm run restore

    Tracker references the plugin API project directly. To build the NuGet package for external plugins, run dotnet pack src/plugins -c Release -o packages.

Building

You can build both the client and server components using:

pnpm run build
  • This runs both the client (build:client) and server (build:server) builds.
  • You can build just the client or server using:
    • pnpm run build:client
    • pnpm run build:server

Usage

Run Tracker with MTGO under Wine

On a Wayland desktop, keep the platform checkout beside Tracker.

Create a gitignored .env file in Tracker's root with your MTGO USERNAME and PASSWORD for the launcher's automatic login.

Install the client dependencies, then build and start the development container:

dotnet pack src/plugins -c Release -o packages
pnpm -C src/client install
docker compose build tracker-dev
docker compose up tracker-dev

The tracker-dev service builds on videreproject/mtgosdk:wayland and installs the Visual C++ runtime and WebView2. Its SDK launcher installs and starts MTGO; Tracker attaches to that process in the same container and Wine prefix. The launcher reads login credentials from the repository's .env file. SDK packages are restored from NuGet.org; an MTGOSDK checkout is not required. Client development uses the shared UI source from ../platform/packages/ui. Vite and TypeScript share the source mappings in src/client/tsconfig.paths.json; Docker mounts the same checkout at /platform. UI edits are picked up directly, without rebuilding the UI package or copying declarations into node_modules. Production builds bundle the installed UI package. Install dependencies in the platform checkout too (pnpm -C ../platform install).

To follow the service logs or stop the container, use:

docker compose logs -f tracker-dev
docker compose down

The service mounts the current Wayland socket and the host X11 socket for XWayland fallback. Start it from a desktop session with XDG_RUNTIME_DIR set; WAYLAND_DISPLAY defaults to wayland-0. WPF uses software rendering under Wine. The tracker-wine-data volume persists the Wine prefix and Tracker's user data. Vite runs in the container with client hot reload; server changes require a rebuild and restart. Set TRACKER_SKIP_MTGO=1 to skip MTGO startup when needed. Tracker requires MTGO in its own Wine session to attach successfully. Closing Tracker leaves MTGO running until its window is closed too. Once both applications exit, the container stops Vite and the remaining Wine services. docker compose down stops the whole session.

Test website imports on Linux

With Tracker running in the development container, register the website's videre:// links on the host:

./docker/url-handler/install-videre-url-handler.sh

The helper requires Python 3, curl, and the xdg-utils and desktop-file-utils utilities. Registration uses the current checkout path; rerun it if you move the checkout. The website's import button sends the deck to Tracker at https://127.0.0.1:7101 and opens its editor. Set TRACKER_API_URL in the desktop session environment to override that address.

Development mode

To run the Tracker in development mode (with hot reload for the client and debug configuration):

pnpm run dev

This restores server dependencies, then runs the server in debug mode.

For the Docker/Wine development workflow, start the repository-local package registry from the Videre Platform repository, then:

# In Videre Platform
pnpm registry:start

# In Tracker
docker compose build tracker-dev
docker compose up tracker-dev

The tracker-dev container starts MTGO, Vite, and Tracker together. Client HMR uses the repository node_modules bind-mounted at /workspace. To keep Vite on the host instead, run pnpm dev:client and set TRACKER_UI_URL=http://host.docker.internal:5279.

Once started, the Tracker will:

  1. Automatically detect when MTGO is running
  2. Connect to the MTGO client when you log in
  3. Begin tracking your games and collecting data
  4. Display real-time statistics and game information in its UI

Publishing

To build and publish the project for deployment:

pnpm run publish
  • This compiles the application into an executable under the ./publish directory.

Documentation

Note

Documentation for Videre Tracker is currently in its early stages and may be incomplete or subject to change.

The following resource is available:

  • ARCHITECTURE.md — A technical overview describing the project's architecture, data flow, and extensibility.

Additional guides and documentation will be added over time as the project evolves. For now, we recommend referring to the architecture doc and the MTGOSDK documentation for furtther details on the underlying SDK used by the Tracker.

License

This project is licensed under the Apache-2.0 License.

Disclaimer

This project is not affiliated with Wizards of the Coast, Daybreak Games, or Magic: The Gathering Online. Magic: The Gathering Online (MTGO) is a trademark of Wizards of the Coast and is operated and published by Daybreak Games under license. All product names, trademarks, and registered trademarks are the property of their respective owners.

Videre Tracker is intended as a companion tool for MTGO players and is developed in accordance with the principles of fair use and interoperability under Section 103(f) of the Digital Millennium Copyright Act.

This is not legal advice. Use this software at your own risk and ensure compliance with all applicable terms of service.

Application updates

Settings → Updates checks the latest stable GitHub release of videre-project/Tracker. Automatic checks run at startup and every six hours; downloading and installing remain explicit actions. The updater verifies the release asset's size and its SHA-256 digest when GitHub supplies one, then retains the staged executable across restarts.

Updates are activated only while MTGO is closed. If MTGO is running, choose Install after MTGO closes; this can be cancelled before installation starts. The new executable installs into a version directory, waits for the old Tracker host to finish stopping, and launches with the same user-data directory. Existing recordings, settings, and plugin folders remain outside the version directory. Existing shortcuts are updated; the old version is retained. This does not provide automatic rollback of database migrations.

Testing upgrades locally

A local HTTP feed uses the same release metadata and executable installation path as GitHub. No GitHub release or tag is needed. Publish two actual versions, with the candidate newer than the baseline, after building the client:

pnpm build:client
dotnet publish src/server -c Release --self-contained true -p:SkipNodeBuildSteps=true -p:PackageVersion=0.0.1 -o publish/local-0.0.1
dotnet publish src/server -c Release --self-contained true -p:SkipNodeBuildSteps=true -p:PackageVersion=0.0.2 -o publish/local-0.0.2
pnpm dev:update-feed 0.0.2 "publish/local-0.0.2/Videre Tracker.exe"

Start the baseline with Updates__FeedUrl pointing at the printed feed URL. For an isolated native Windows rehearsal, use a separate data folder and API port:

$env:Updates__FeedUrl = "http://127.0.0.1:8750/release.json"
$env:TRACKER_USER_DATA_FOLDER = "$env:TEMP\TrackerUpgradeVerification"
$env:TRACKER_API_PORT = "7102"
$env:TRACKER_DISABLE_INSTALLER = "1"
& ".\publish\local-0.0.1\Videre Tracker.exe"

Open Settings → Updates and check, download, and install the candidate. The installed version should become 0.0.2, with the baseline's preferences and data intact. Close MTGO before applying, as with a public release. Restart the local feed after rebuilding an executable so its size and digest describe the new file.

For the Docker development workflow, run the feed inside the container using docker exec, and set TRACKER_UPDATE_FEED_URL before starting the container. Its value is passed to Updates__FeedUrl. A separate Wine prefix and data folder can be used to rehearse upgrades without changing the normal Tracker installation.

About

A real-time game and collection tracker for Magic: The Gathering Online (MTGO).

Resources

Stars

14 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages