Quick macOS SwiftUI front-end for scripts/build-all.sh.
Builds run in an embedded SwiftTerm PTY under your login shell (-bsh, -zsh, …) — the same environment as Terminal.app, including ~/.zprofile, ~/.zshrc, rustup, and signing exports.
Passwords are injected via environment variables on the PTY child — not command-line args and not shell history.
| UI field | Environment variable(s) |
|---|---|
| Apple notary | APPLE_PASSWORD |
| iOS .p12 | APPLE_IOS_CERTIFICATE_PASSWORD |
| Android | ANDROID_KEYSTORE_PASSWORD |
Before each build, the app captures your login-shell environment (bsh -il / zsh -il), sources the repo-root .env (via WARP12_REPO_ROOT), and merges GUI password overrides on top. Org identity (APPLE_TEAM_ID, APPLE_BUNDLE_ID, GITHUB_REPO, …) should live in .env — see the monorepo .env.example. Check the terminal for notary env: APPLE_ID=set, APPLE_TEAM_ID=… before the build starts.
Also sets NONINTERACTIVE=1 so macOS publish does not prompt for git tag / homebrew-tap push.
| UI toggle | Effect |
|---|---|
| Create git tag | off → --no-push-tag |
| Push homebrew-tap | off → WARP12_PUSH_HOMEBREW_TAP=0 (local commit only) |
From the monorepo root:
yarn release:build
yarn release:runOr from this directory:
swift build -c release
swift run -c releasePassword fields typing into Terminal? Click the app window once so it is frontmost. Or:
# Detached binary (no .app)
./run-detached.sh
# or: yarn release:detached
# Double-clickable .app (recommended)
./build-app.sh
# or: yarn release:app
# ./build-app.sh --open # build and launchbuild-app.sh writes Warp 12 Release.app in this directory.
After creating a GitHub repo for this tool:
cd /path/to/Warp12
git submodule add https://github.com/Digital-Defiance/warp12-release-head.git vendor/warp12-release-headUntil then, this folder can live vendored in the monorepo as-is.
- bsh is zsh-compatible (date formatting differs only). Use Detect to read macOS
UserShell. - Version detect runs
scripts/app-version.mjs printunder your login shell (-il), not the GUI process PATH. Finder-launched.appbundles only get/usr/bin:/bin, so plainenv nodefails when Node lives in nvm/Homebrew — Refresh version / Current label need the login shell. - Leave password fields empty to use shell exports; fill them only to override.
- Signing identities / API keys still come from your profile or Keychain — the GUI only covers interactive password prompts.
- Child
psmay still list env keys for your user; avoid shared-screen debugging while a build runs.