# Build and release targets Install stable Rust, Node 22+, and native Tauri development prerequisites. On Windows install Visual Studio C++ build tools and WebView2. Linux needs WebKitGTK 4.1 development libraries. macOS needs Xcode command-line tools. See https://v2.tauri.app/start/prerequisites/ for platform details. ```powershell cargo test --workspace --locked cd apps/desktop npm ci npm run build # Windows VM: all rendering and inference tests must use CPU. $env:WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS='--disable-gpu' npm run tauri -- dev ``` The desktop is a standalone Cargo workspace; validate it separately: ```sh cargo test --manifest-path apps/desktop/src-tauri/Cargo.toml --locked ``` ## Cross-compilation The Rust engine has no GUI dependency. Add the destination Rust target with `rustup target add TARGET`, then use `cargo build -p searchi-cli --target TARGET`. This requires the target linker, C toolchain and SDK because SQLite is compiled from bundled C. Target installation alone is insufficient. Document each verified host/target pair before treating it as supported. Desktop builds also need the platform webview libraries and packaging tools. Use native runners for dependable release builds. macOS signing/notarization needs Apple credentials and tooling. Windows installer cross-builds have additional Tauri caveats: https://v2.tauri.app/distribute/windows-installer/. ## CI and packaging gates Both Gitea and GitHub workflow files are provided. Gitea needs registered runners matching the configured OS labels; this repository does not provision runners. No Linux/macOS checks are considered passed until actual job evidence exists. Current bundles are disabled during development. Enable installers only after packaging icons, native smoke tests, CPU model distribution and license review, upgrade/migration tests, signatures and rollback checks are ready. Do not place private signing keys, repository tokens or model credentials in source control.