From da88c98c7ac3b158ff446da2faceb5421ff8692a Mon Sep 17 00:00:00 2001 From: Alan Wizemann Date: Thu, 16 Apr 2026 20:10:17 -0700 Subject: [PATCH] feat: release script builds Universal + ARM64 variants Each release now produces two distribution zips: - Scarf-vX.X.X-Universal.zip (arm64 + x86_64, recommended) - Scarf-vX.X.X-ARM64.zip (arm64 only, ~14% smaller) Both are independently archived, exported with Developer ID, notarized, and stapled via a new build_variant helper. The appcast still points at the Universal zip since it works on all supported macs; ARM64 is an alternative manual download for Apple Silicon users who want the smaller file. README updated to list both variants. Prompted by the v1.6.1 release shipping only Universal; the ARM64 zip for v1.6.1 was produced ad-hoc and uploaded to the existing release. Co-Authored-By: Claude Opus 4.6 --- README.md | 1 + scripts/release.sh | 123 ++++++++++++++++++++++++++------------------- 2 files changed, 71 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index ac1d5ec..59c500d 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,7 @@ If a Hermes update changes the database schema or CLI output format, Scarf may n Download the latest build from [Releases](https://github.com/awizemann/scarf/releases): - `Scarf-vX.X.X-Universal.zip` — Apple Silicon + Intel (recommended) +- `Scarf-vX.X.X-ARM64.zip` — Apple Silicon only (smaller download) 1. Unzip and drag **Scarf.app** to Applications 2. Launch normally — builds are Developer ID signed and notarized, so Gatekeeper accepts them on first launch diff --git a/scripts/release.sh b/scripts/release.sh index 8bdf6d2..95a2880 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -54,8 +54,6 @@ APPCAST_URL="https://awizemann.github.io/scarf/appcast.xml" DOWNLOAD_URL_BASE="https://github.com/awizemann/scarf/releases/download" REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" BUILD_DIR="$REPO_ROOT/build" -ARCHIVE_PATH="$BUILD_DIR/scarf.xcarchive" -EXPORT_DIR="$BUILD_DIR/export" EXPORT_OPTIONS="$REPO_ROOT/scripts/ExportOptions.plist" RELEASE_DIR="$REPO_ROOT/releases/v${VERSION}" GH_PAGES_WORKTREE="${GH_PAGES_WORKTREE:-$REPO_ROOT/.gh-pages-worktree}" @@ -111,68 +109,86 @@ if [[ -f "$NOTES_FILE" ]]; then fi git commit -m "chore: Bump version to ${VERSION}" -# ---------- build ---------- +# ---------- build variants ---------- +# Each release produces two zips: a Universal binary (recommended — works on +# both Apple Silicon and Intel) and an ARM64-only variant (smaller download for +# users who know they're on M-series silicon). Each variant is independently +# notarized and stapled. The appcast only references the Universal zip since +# it works everywhere; ARM64 is an alternative manual download. + log "Clean build directory" rm -rf "$BUILD_DIR" -mkdir -p "$BUILD_DIR" +mkdir -p "$BUILD_DIR" "$RELEASE_DIR" -log "Archive (universal arm64+x86_64)" -xcodebuild \ - -project "$PROJECT" \ - -scheme "$SCHEME" \ - -configuration Release \ - -archivePath "$ARCHIVE_PATH" \ - -destination "generic/platform=macOS" \ - ONLY_ACTIVE_ARCH=NO \ - ARCHS="arm64 x86_64" \ - archive +# build_variant