[workspace] members = ["cargo:."] # Config for 'dist' [dist] # The preferred dist version to use in CI (Cargo.toml SemVer syntax) cargo-dist-version = "0.31.0" # CI backends to support ci = "github" # The installers to generate for each app installers = ["shell"] # Target platforms to build apps for (Rust target-triple syntax). # Phase 61 scope: Linux x86_64 + Linux aarch64 + macOS x86_64 + macOS # aarch64. Linux targets use musl-static (Q2(a) sign-off) so one # binary works on every distro without glibc version drift. Native # Windows (x86_64-pc-windows-msvc) is explicitly deferred to a # follow-up phase — daemon IPC is Unix-domain-socket-only today; # Windows needs a NamedPipe port. The glibc variants # (*-unknown-linux-gnu) are intentionally omitted in favor of musl. targets = [ "x86_64-unknown-linux-musl", "aarch64-unknown-linux-musl", "x86_64-apple-darwin", "aarch64-apple-darwin", ] # Path that installers should place binaries in install-path = "CARGO_HOME" # Where to host releases hosting = "github" # Whether to install an updater program install-updater = false # The installer's last word is the next step (it used to be just # "everything's installed!"). Plain text only: it's embedded in the # generated shell script, so no backticks or quotes. install-success-msg = "aivyx-pa is installed. Next, set it up with: aivyx-pa init" # Build ONLY the packages that ship a release artifact (aivyx-cli → the # `aivyx` binary), not the whole workspace. Without this, cargo-dist does a # single workspace-wide "fat build" that also compiles default-member crates # like `aivyx-voice` (cpal → alsa-sys), which fails on the musl Linux targets # (no ALSA, and ALSA doesn't fit a static-musl binary). `aivyx-cli`'s default # feature set excludes voice, so a precise per-package build never touches it. precise-builds = true # Phase 61 Task 4 — run the shared quality-gate reusable workflow # (`.github/workflows/quality-gate.yml`: `cargo test --workspace` + # `cargo clippy --workspace --all-targets -- -D warnings`) alongside the # release pipeline's `plan` job; the build jobs need it. On its own that # did NOT stop publishing: dist's generated `host` job accepted skipped # builds, so a failed gate would still have published a release with no # CLI binaries. The `host` guard in release.yml (see allow-dirty below) # is what makes a failed gate block the release. plan-jobs = ["./quality-gate"] # release.yml is hand-edited: its `host` job refuses to publish unless # the quality gate and every build job succeeded (dist's generated # condition accepted skipped builds — v0.10.0 shipped without its CLI # binaries that way). With "ci" here dist neither checks nor regenerates # release.yml, so after changing this file or upgrading # cargo-dist-version, regenerate it (`dist generate --mode=ci`) and # re-apply the `host` guard by hand. allow-dirty = ["ci"] # Don't run the release workflow on pull requests — ci.yml already runs # the quality gate on every PR, so a PR-time release run would just # duplicate it. The release pipeline runs on version tags only. pr-run-mode = "skip" # GitHub retired the macos-14 image on 2026-11-02, and dist 0.31 still # picks it for aarch64-apple-darwin (v0.20.0's first run was refused). [dist.github-custom-runners] aarch64-apple-darwin = "macos-15"