Builds now use your working tree
builder ios build previously dispatched the workflow on the default branch, so it built whatever was on main — regardless of your current branch or any local edits.
It now snapshots the working tree, including uncommitted and untracked files, and builds that. Your branch, index and working tree are never modified. The snapshot is pushed to refs/ios-builder/jobs/<build-id>, which lives outside refs/heads so it creates no branch and fires no push events, and it is deleted when the build finishes.
Files excluded by .gitignore are not in the snapshot. If your build needs .env, GoogleService-Info.plist or a local *.xcconfig, it will fail on the runner the same way a fresh clone would.
⚠️ Breaking: re-run builder init
The dispatch reads the workflow from your default branch, so the updated .github/workflows/ios-build.yml has to land there before the next build works:
builder init
git add .github/workflows/ios-build.yml
git commit -m 'Update iOS build workflow'
git push origin main
Without it the build fails with 422 Unexpected inputs provided: ["snapshot_ref"].
Also in this release
- Live step progress during the build (
Build IPA (15/21) · 44s) instead of an opaque spinner. GitHub serves job logs only after a run completes, so this polls the steps endpoint. run-namecarries the build id, so concurrent builds can no longer adopt each other's runs.- Dispatch failures now include the GitHub API message instead of a bare status code.
--remoteflag onios buildto matchinit.- Archive on signed Flutter and React Native builds.
- Fixed prompt corruption and
~path handling in signing setup.
Full Changelog: v0.3.1...v0.4.0