Release a macOS app — bump versions, open a PR, then build and publish.
Triggered by: /release-macos <type> where type is major, minor, patch, or build.
Run all checks before any work. Fail fast with a specific fix hint for each.
just --version — must be ≥ 1.14 (needs home_directory())project.yml existsjustfile defines app_name, releases_repo, sign_identityCHANGELOG.md exists.env exists and contains SPARKLE_EDDSA_KEYExportOptions.plist existsgh auth status succeedsgit status --porcelain is empty)/release-macos <type>; ask if missing or ambiguous
major → increment first component, reset rest (1.2.3 → 2.0.0)minor → increment second, reset patch (1.1.4 → 1.2.0)patch → increment third, adding if absent (1.2 → 1.2.1)build → MARKETING_VERSION unchanged, bump build onlyproject.yml:
MARKETING_VERSIONCURRENT_PROJECT_VERSIONduncan/release-v{VERSION}-{BUILD}MARKETING_VERSION + CURRENT_PROJECT_VERSION in project.ymljust generateCHANGELOG.md — insert new ## [VERSION] - DATE section; pull changes from git log since last tag; present draft to user and prompt if section is emptychore: bump version to {VERSION} (build {BUILD})merged to continue."Resume when user replies merged.
git checkout main && git pulljust prepare-release — warn user this takes ~5 min (notarization included)just release-notesjust publishproject.yml only — never *.xcodeproj/project.pbxproj directly.build/ is gitignored — release assets live there until published.SPARKLE_EDDSA_KEY, NOTARIZATION_*) are in .env, loaded by set dotenv-load := true.