Building for Production
Build a distributable desktop bundle with:
npm run tauri:build
This runs tauri build --config src/core/tauri.conf.json, which first runs the frontend production build (beforeBuildCommand) and then compiles the Rust binary in release mode, bundling it per the bundle section of tauri.conf.json ("targets": "all").
Windows builds and the MSI/WiX version constraint
Tauri's msi bundle target (built with WiX on Windows) requires an all-numeric 4-part version (each field ≤ 65535), so this repo's MAJOR.MINOR.PATCH-rc.N version (e.g. 1.0.1-rc.2) fails to bundle as-is for msi specifically — nsis, .dmg, .deb, .rpm, and .AppImage are unaffected. To build for Windows locally, use:
npm run tauri:build:windows
This runs tauri build --config src/core/tauri.conf.json --config src/core/tauri.windows.msi.conf.json, layering a generated overlay config that maps the canonical version to a WiX-safe one (1.0.1-rc.2 → 1.0.1.2). Never hand-edit src/core/tauri.windows.msi.conf.json — it's regenerated by scripts/sync-msi-version.mjs (npm run sync:msi-version) whenever the canonical version changes, and CI (scripts/check-version-consistency.mjs) fails if it drifts. See Release Process & Changelog for details.
Expected build artifacts
| Platform | Artifact types |
|---|---|
| Windows | .msi, .exe |
| macOS | .dmg, .app |
| Linux | .deb, .AppImage (and others depending on installed bundlers) |
Artifacts are written under src-tauri/target/release/bundle/<format>/ relative to the Tauri project (Tauri's standard output location for the configured frontendDist/build setup).
Release build behavior
src/core/src/main.rs conditionally suppresses the console window on Windows release builds:
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
This means a console window appears during npm run tauri (debug) but not in the shipped release binary — this is expected and intentional, not a bug.
Code signing / notarization
:::note Not yet configured
This repository does not currently define code signing or macOS notarization configuration in tauri.conf.json. Unsigned builds may trigger OS security warnings (Gatekeeper on macOS, SmartScreen on Windows). Configuring signing certificates and notarization credentials is left as a future improvement.
:::
Versioning conventions
The app version in tauri.conf.json is kept in lockstep with package.json's version field — release-please updates both together in the same commit (see Release Process & Changelog), so they're never tracked separately. src/core/tauri.windows.msi.conf.json is the one exception: it intentionally carries a derived, WiX-safe version for Windows MSI builds only (see above). Release notes follow a MAJOR.MINOR.PATCH-rc.N scheme and are recorded in RELEASES.md as feature-grouped changelog entries per version. See Release Process & Changelog for how to update it when shipping a feature.