Skip to content

Building & Releasing

Terminal window
pnpm tauri build # builds for the current platform

This produces platform-specific installers in src-tauri/target/release/bundle/.

The SimC binary must be present in src-tauri/binaries/ before building:

PlatformBinary Name
macOS Apple Siliconsimc-aarch64-apple-darwin
macOS Intelsimc-x86_64-apple-darwin
Windows x64simc-x86_64-pc-windows-msvc.exe

These names follow Tauri’s triple-target convention. Tauri automatically appends the suffix when bundling.

{
"bundle": {
"externalBin": ["binaries/simc"]
}
}

File: .github/workflows/build.yml

Triggered on version tags (v*), the workflow:

  1. Checks out code
  2. Sets up pnpm, Node.js, Rust
  3. Downloads the SimC binary for each platform (from GitHub Secrets URLs)
  4. Installs frontend dependencies
  5. Runs pnpm season:validate
  6. Builds the Tauri app via tauri-apps/tauri-action
  7. Creates a draft GitHub Release with installer artifacts
PlatformRunnerTargetArtifact
macOS arm64macos-latestaarch64-apple-darwin.dmg
macOS x64macos-13x86_64-apple-darwin.dmg
Windows x64windows-latest(default).exe / .msi
SecretDescription
SIMC_MACOS_ARM64_URLURL to SimC arm64 macOS binary
SIMC_MACOS_X64_URLURL to SimC x86_64 macOS binary
SIMC_WIN64_URLURL to SimC Windows x64 binary

SimC binaries are available at SimC GitHub Releases.

No code signing. The app automatically removes the macOS quarantine xattr from the SimC sidecar binary on first launch:

#[cfg(target_os = "macos")]
fn remove_quarantine(path: &std::path::Path) {
let _ = std::process::Command::new("xattr")
.args(["-d", "com.apple.quarantine", path.to_str().unwrap()])
.output();
}

Users need to right-click → Open on first launch.

Requires an Apple Developer Program membership ($99/year). Add these secrets:

  • APPLE_CERTIFICATE
  • APPLE_CERTIFICATE_PASSWORD
  • APPLE_ID
  • APPLE_TEAM_ID

The app uses Tauri’s built-in updater plugin to check for updates on launch. When a new version is available on GitHub Releases, it prompts the user to download and install.

Configuration requires a signing keypair for update verification.

  1. Update version in package.json and tauri.conf.json
  2. Run pnpm season:validate — must pass
  3. Test locally with pnpm tauri build
  4. Commit and tag: git tag v1.2.3
  5. Push tag: git push origin v1.2.3
  6. GitHub Actions builds all platforms
  7. Review the draft release on GitHub
  8. Publish the release
PlatformFileLocation
macOS arm64WoWTopGear_X.Y.Z_aarch64.dmgGitHub Release
macOS x64WoWTopGear_X.Y.Z_x64.dmgGitHub Release
WindowsWoWTopGear_X.Y.Z_x64-setup.exeGitHub Release
Windows MSIWoWTopGear_X.Y.Z_x64_en-US.msiGitHub Release