Developers

Build from source

Set up Node, pnpm and Rust, run the launcher in dev mode, run the checks, build installers and build the TRS Client mod.

The TRS Launcher is a Tauri 2 app: a Rust core does the work, a Nuxt 4 single-page app is the interface. The in-game TRS Client is a separate Gradle project in the same repository.

What is where

FolderWhat it is
app/Nuxt 4 frontend (SPA, no SSR)
src-tauri/src/Tauri app: commands, task registry, error mapping, plugins
src-tauri/crates/core/trs-core: the launcher core, independent of the UI
src-tauri/resources/client-mod/Prebuilt TRS Client jars bundled with the launcher
client-mod/TRS Client: shared core plus Fabric, Forge and NeoForge builds
packaging/AUR and Flatpak recipes, Linux desktop files
tests/Frontend tests (Vitest)

The website and the TRS API live in api/ on the website branch (see below).

Requirements

  • Node.js 22 or newer and pnpm (the version is pinned in package.json; corepack enable sets it up)
  • Rust (stable, MSVC toolchain) via rustup
  • Visual Studio Build Tools with "Desktop development with C++"
  • WebView2 (preinstalled on Windows 10 and 11)

Run the launcher in dev mode

Get the code

git clone https://github.com/theredstonee/TRS-Launcher.git
cd TRS-Launcher

Install the dependencies

pnpm install

This also runs nuxt prepare.

Start it

pnpm app:dev

This starts the Nuxt dev server on http://localhost:3000 and opens the Tauri window with hot reload. The first run compiles the Rust part and takes a while.

Set TRS_LAUNCHER_HOME to a separate folder to keep your test data away from your real launcher data.
Development builds without a signed-in account start the game in Minecraft's official demo mode. Release builds always need an account that owns the game.

Run the checks

These are the same checks the CI runs on every push and pull request.

pnpm typecheck
pnpm test

The launch pipeline can be tested without the interface. It downloads and starts the given version in its own data folder:

cd src-tauri
cargo run -p trs-core --example launch -- <data-dir> 1.21.1 [vanilla|fabric|quilt|forge|neoforge] [seconds]

To try the crash helper rules on a log or crash report (also in src-tauri):

cargo run -p trs-core --example crash_scan -- <log-or-crash-report> [--memory MB --system MB]

Build installers

pnpm app:build

The NSIS installer ends up in src-tauri/target/release/bundle.

Official releases sign the update files with the project's private key. Without that key, the build can end with an error about a missing private key after the installers are made. Turn the update files off for your own builds: pnpm tauri build --config '{"bundle":{"createUpdaterArtifacts":false}}' (the value can also be a path to a JSON file with the same content).

CurseForge needs an API key at build time: the environment variable CURSEFORGE_API_KEY, or the file ~/.tauri/curseforge-api-key (%USERPROFILE%\.tauri\curseforge-api-key on Windows). Without a key, the build works and simply hides CurseForge.

Build the TRS Client

You don't need to build the mod to build the launcher – prebuilt jars are in src-tauri/resources/client-mod/.

Requirements: a JDK 21 or newer to run Gradle. Gradle toolchains download JDK 17, 21 or 25 for compiling when they are missing.

Every loader family is its own Gradle build with its own wrapper:

FolderLoader and versionsBuild
client-mod/ (root, fabric/)Fabric 1.14.4–26.3./gradlew collectLauncherJars
client-mod/neoforge/NeoForge 1.20.2–26.3./gradlew collectLauncherJars
client-mod/forge/Forge 1.20–26.3./gradlew :collectLauncherJars
client-mod/forge-mojmap-legacy/Forge 1.14.4, 1.15.2, 1.16.x, 1.17.1, 1.18.x, 1.19.x./gradlew collectLauncherJars
client-mod/forge-1.13.2/Forge 1.13.2./gradlew build
client-mod/legacy/Forge 1.8.9–1.12.2./gradlew collectLauncherJars
client-mod/legacy-1.7.10/Forge 1.7.10./gradlew build

For the Fabric build in client-mod/:

./gradlew build                      # every version + the unit tests of common/
./gradlew :fabric:1.21.1:build       # a single version
./gradlew :fabric:1.21.1:runClient   # start that Minecraft version with the mod (game folder: client-mod/run)
./gradlew collectLauncherJars        # write dist/*.jar and dist/builds.json for the launcher
On Windows, use .\gradlew or gradlew.bat instead of ./gradlew. Build the projects one after another – they all write into the same client-mod/dist/.

Website and API

The website and the TRS API are a separate Nuxt 4/Nitro project on the website branch. It has its own package.json and lockfile and needs Node.js 24.11 or newer.

git checkout website
cd api
pnpm install
pnpm typecheck && pnpm lint && pnpm test

The public endpoints of the API are described in Public API.

TRS Launcher – The Redstone Launcher by TheRedstonee

Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft.

© 2026 TheRedstonee · GPL-3.0