Skip to content

Releasing

Guilherme Selig edited this page Oct 21, 2026 · 3 revisions

Releasing

Releases are published with scripts/publicar.sh. It is meant for the maintainer.

What the script does

  1. Reads the version from Cargo.toml. A pre-release version (anything with a -, such as 0.1.0-dev) is refused: change it in Cargo.toml first.
  2. Refuses to run with uncommitted changes.
  3. Fetches origin/main and refuses to run unless HEAD is exactly origin/main, because the release tag points at it. Push first.
  4. Builds and signs the app with app/montar.sh.
  5. Packages SDTally.app as SDTally-<version>.dmg with dmgbuild: a 600×400 window with the background from scripts/dmg/, the app on the left and an Applications shortcut on the right. Then checks the image with hdiutil verify.
  6. Creates the GitHub release v<version> on guiselig/sdtally with gh release create, targeting that commit, titled SDTally <version> (with "(beta)" for 0.x) and marked as the latest release, with generated notes plus install instructions (open the disk image, drag SDTally to Applications, and use "Open Anyway" the first time because the app is not notarized).

The release page is where the app's See New Versions button leads. The app itself never uses the network.

Requirements

  • gh authenticated with permission to create releases.
  • dmgbuild (pipx install dmgbuild). The script stops at the start if it is missing.
  • A clean tree, pushed to origin/main.
  • An Apple Development signing identity, so the released app can register Passwordless Root (see Building from source).

Checklist

  1. Bump version in Cargo.toml (and commit Cargo.lock), for example chore: release 1.0.1.
  2. Run the full test list: cargo test --release, cargo clippy --release --all-targets -- -D warnings, swift test --package-path app, sh scripts/g9.sh.
  3. Push to main and wait for CI to pass.
  4. Run scripts/publicar.sh.
  5. Download the published disk image on a clean account and check: it opens with "Open Anyway", Full Disk Access can be granted, and Passwordless Root installs.

Clone this wiki locally