Building & Releasing
Local Production Build
Section titled “Local Production Build”pnpm tauri build # builds for the current platformThis produces platform-specific installers in src-tauri/target/release/bundle/.
SimC Sidecar
Section titled “SimC Sidecar”The SimC binary must be present in src-tauri/binaries/ before building:
| Platform | Binary Name |
|---|---|
| macOS Apple Silicon | simc-aarch64-apple-darwin |
| macOS Intel | simc-x86_64-apple-darwin |
| Windows x64 | simc-x86_64-pc-windows-msvc.exe |
These names follow Tauri’s triple-target convention. Tauri automatically appends the suffix when bundling.
tauri.conf.json
Section titled “tauri.conf.json”{ "bundle": { "externalBin": ["binaries/simc"] }}GitHub Actions Release Build
Section titled “GitHub Actions Release Build”File: .github/workflows/build.yml
Triggered on version tags (v*), the workflow:
- Checks out code
- Sets up pnpm, Node.js, Rust
- Downloads the SimC binary for each platform (from GitHub Secrets URLs)
- Installs frontend dependencies
- Runs
pnpm season:validate - Builds the Tauri app via
tauri-apps/tauri-action - Creates a draft GitHub Release with installer artifacts
Build Matrix
Section titled “Build Matrix”| Platform | Runner | Target | Artifact |
|---|---|---|---|
| macOS arm64 | macos-latest | aarch64-apple-darwin | .dmg |
| macOS x64 | macos-13 | x86_64-apple-darwin | .dmg |
| Windows x64 | windows-latest | (default) | .exe / .msi |
Required GitHub Secrets
Section titled “Required GitHub Secrets”| Secret | Description |
|---|---|
SIMC_MACOS_ARM64_URL | URL to SimC arm64 macOS binary |
SIMC_MACOS_X64_URL | URL to SimC x86_64 macOS binary |
SIMC_WIN64_URL | URL to SimC Windows x64 binary |
SimC binaries are available at SimC GitHub Releases.
macOS Code Signing
Section titled “macOS Code Signing”Current Approach (MVP)
Section titled “Current Approach (MVP)”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.
Future: Proper Code Signing
Section titled “Future: Proper Code Signing”Requires an Apple Developer Program membership ($99/year). Add these secrets:
APPLE_CERTIFICATEAPPLE_CERTIFICATE_PASSWORDAPPLE_IDAPPLE_TEAM_ID
Auto-Update
Section titled “Auto-Update”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.
Release Checklist
Section titled “Release Checklist”- Update version in
package.jsonandtauri.conf.json - Run
pnpm season:validate— must pass - Test locally with
pnpm tauri build - Commit and tag:
git tag v1.2.3 - Push tag:
git push origin v1.2.3 - GitHub Actions builds all platforms
- Review the draft release on GitHub
- Publish the release
Output Artifacts
Section titled “Output Artifacts”| Platform | File | Location |
|---|---|---|
| macOS arm64 | WoWTopGear_X.Y.Z_aarch64.dmg | GitHub Release |
| macOS x64 | WoWTopGear_X.Y.Z_x64.dmg | GitHub Release |
| Windows | WoWTopGear_X.Y.Z_x64-setup.exe | GitHub Release |
| Windows MSI | WoWTopGear_X.Y.Z_x64_en-US.msi | GitHub Release |