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).