Cutting a Loom release¶
Stable Loom releases ship from main with bin/release.sh. Bump
MARKETING_VERSION and CURRENT_PROJECT_VERSION in project.yml, update
docs/releasing/current-release-notes.md, commit, push, then run the script.
Prereqs¶
xcodegenandxcodebuildfrom full Xcode.hdiutil(built in to macOS).ghCLI authenticated forBigBeardedMan/Loom.- OpenSSL 3 for signing the checksum sidecar.
- Production release signing keys in Keychain or
~/.loom/release-signing. - A clean working tree at the commit you want to tag.
Flow¶
# 1. Bump MARKETING_VERSION and CURRENT_PROJECT_VERSION in project.yml.
# 2. Update docs/releasing/current-release-notes.md.
# 3. Commit + push main.
bin/release.sh
What the script does:
- Reads
MARKETING_VERSIONandCURRENT_PROJECT_VERSIONfromproject.yml. - Verifies
gh, OpenSSL, signing keys, a clean tree, and a freevX.Y.Ztag. - Regenerates
Loom.xcodeprojwithxcodegen generate. - Builds
Loom.appin Release configuration. - Validates bundle name, bundle ID, executable, version, and embedded update public key.
- Packages
Loom-<version>.dmg. - Writes and signs
Loom-<version>.dmg.sha256. - Tags and pushes
v<version>. - Creates or updates the GitHub Release with the DMG, checksum, signature, and release notes.
Windows assets are built by the Windows Release GitHub Actions workflow after
the v<version> tag is pushed. That workflow appends the x64/arm64 NSIS
installers, installer signatures, latest-windows.json, bridge recovery
installers, and legacy installer aliases to the same GitHub Release.
Compatibility¶
Loom 9 keeps the stable macOS updater on /releases/latest and the Windows
updater on stable v* releases. Windows release assets include both
versioned installers (Loom_<version>_<arch>-setup.exe) and legacy aliases
(Loom_<arch>-setup.exe) so older installed builds can find the update. The
bridge recovery installers are uploaded first so older helpers that select the
first compatible asset can still hand off to the real versioned installer.
Post-release checks¶
git ls-remote --heads origin mainpoints at the release commit.git ls-remote --tags origin v<version>exists.gh release view v<version>shows the DMG, checksum, signature, Windows installers, installer signatures, bridge installers, andlatest-windows.json.- The DMG checksum verifies with
shasum -a 256 -c. - The Windows Release workflow completes successfully for x64 and arm64.
Common failures¶
tag vX.Y.Z already exists: bumpMARKETING_VERSION, commit, and retry.built app has wrong bundle identifier: production metadata was overwritten by a testing-channel merge; fixproject.ymlandInfo.plist.Release is missing a .sha256.sig signature: the macOS update pill will refuse to stage the DMG until the signature asset exists.- Windows CI created the release first:
bin/release.shappends the DMG assets to the existing release instead of creating a duplicate.