Versioning policy (SemVer)
MAJOR.MINOR.PATCH:
The crate version lives in
Cargo.toml under [workspace.package]; all crates
inherit it. The Windows installer default, website schema, lockfile, and
changelog mirror that version. Run node scripts/check-release-version.mjs X.Y.Z before tagging to verify every release surface.
Release checklist
1
Green build & tests
2
Bump the version
Update
Cargo.toml, the Windows installer default, and the website
SoftwareApplication schema. Run cargo build once so Cargo.lock
updates, then run node scripts/check-release-version.mjs X.Y.Z.3
Update CHANGELOG.md
Move
## [Unreleased] items under a new ## [X.Y.Z] - YYYY-MM-DD heading;
start a fresh empty Unreleased.4
Commit on main
5
Tag & push
This triggers the CI release workflow:
6
Wait for CI
.github/workflows/release.yml attaches the macOS DMG, Windows installer,
SHA-256 checksum file, generated Scoop manifest, and generated Homebrew cask
to the GitHub Release.7
Smoke-test and update package repositories
Install, launch and connect once on both OSes, then verify the checksums.
Copy
sharecursor.json to the Scoop bucket and sharecursor.rb to
Casks/sharecursor.rb in the Homebrew tap. These external repositories are
not changed automatically.8
Announce
The Release page is the download link for users.
What CI does
Trigger
Trigger
Pushing a tag matching
v* (or a manual workflow_dispatch).macos job (macos-14)
macos job (macos-14)
Adds both Apple targets, runs
packaging/macos/build-app.sh $VERSION →
universal .app + .dmg (arm64 + Intel).windows job (windows-latest)
windows job (windows-latest)
cargo build --release --features tray,gui, then choco install innosetup and
ISCC /DMyAppVersion=$VERSION sharecursor.iss → .exe installer.release job
release job
Generates checksums plus Scoop/Homebrew manifests from the built artifacts,
then publishes every file in the GitHub Release.
Building installers locally
Code signing & notarization (current status)
Builds are unsigned today (no paid developer certificates):- macOS: Gatekeeper blocks first launch. Removing this friction needs an
Apple Developer ID ($99/yr) and a notarization step (
codesign+xcrun notarytool submit). The build script already ad-hoc signs so it runs locally. - Windows: SmartScreen shows an “unknown publisher” warning. An EV/OV code-signing certificate would remove it.