# Packaging Release artifacts for the three desktop platforms. The version lives in one place, `[workspace.package] version` in the root `Cargo.toml` (`cargo xtask version`, `cargo xtask version set 0.2.0`); every script reads it from there. Artifacts land in `dist/release/`. | Platform | Command | Output | |---|---|---| | macOS | `packaging/macos/package.sh [--arch universal\|aarch64\|x86_64]` | `NotesCraft.app` on a drag-to-Applications DMG, plus the CLI as a zip. Ad-hoc signed unless `MACOS_SIGN_IDENTITY` is set; notarized when `APPLE_ID`, `APPLE_PASSWORD`, `APPLE_TEAM_ID` are too. | | Windows | `packaging/windows/package.ps1` | an MSI (WiX v5: `dotnet tool install -g wix`) with a Start Menu shortcut, plus the CLI as a zip. `sign.ps1` signs with Azure Trusted Signing in CI. | | Linux | `packaging/linux/package.sh` | `.deb` and `.rpm` (nfpm), plus a tarball and an AppImage where the tools exist. | `packaging/icons.sh` regenerates every icon file from `assets/app-icon/notescraft.svg` (needs `resvg`; the outputs are committed, so building never needs it). CI is `.github/workflows/release.yml`, a thin caller of the shared Craft release workflow (it needs the signing secrets listed there); `packaging-lint.yml` checks the scripts. ## Starting the app from a launcher `notescraft [vault-folder]`: with no folder it reopens the last vault, else asks for one with the system folder dialog (double-click in Finder, the Start Menu, a desktop launcher). `--version` prints the version with the commit and date the packaging scripts bake in through `NOTESCRAFT_BUILD_SHA` and `NOTESCRAFT_BUILD_DATE`. ## Checked here macOS (aarch64) is built and smoke-tested by `package.sh`. Windows is only checked to compile (`cargo check --release --target x86_64-pc-windows-msvc`); the MSI scripts are the Craft family's, adapted, and need a Windows runner (`packaging/windows/test-msi.ps1`).