Releasing a toolkit version
A release is a commit and a tag on main plus the simulator builds attached to a GitHub Release.
- Merge
devintomain(pull request, CI green). - Run the Release workflow (
.github/workflows/release.yml) with the version, for example0.2.0or0.2.0-beta.1. It bumpsrelease.jsonandCHANGELOG.md, commits, tagsv0.2.0, builds the simulator for macOS arm64 and x64, uploads the zips withSHA256SUMS, and creates the release (pre-release when the version has a suffix). - Developers run
minikit upgrade: the checkout moves tomain, the CLI recompiles, and the matching simulator build is downloaded and verified.
release.json names every component version the checkout ships: the toolkit, the CLI, the
packages, the protocol, the simulator version and its asset names per platform, and the Flutter
range the toolkit was tested with. minikit version and minikit doctor read it.
Bump the simulator version when its build changes
minikit upgrade and minikit sim install download a simulator build only when its version is
not cached yet. When anything under simulator/ changed, raise its version in
simulator/rust/Cargo.toml, simulator/rust/Cargo.lock and simulator/pubspec.yaml, and set
simulator.version in release.json to match. The running simulator reports that version on
/health, and minikit doctor compares it with release.json.
Releasing without GitHub Actions
When the workflow cannot run (for example, the account's Actions budget is used up), release by hand from a Mac with the toolchain:
-
On
dev, settoolkitandcliinrelease.json, bump the simulator if it changed, turn## UnreleasedinCHANGELOG.mdinto## <version> (<date>), and commitRelease <version>. -
Push
dev, open a pull request tomain, and merge it. -
Tag the merge commit and push the tag:
git fetch origin git tag -a v<version> origin/main -m "minikit <version>" git push origin v<version> -
Build the simulator from that commit. The app is universal (Apple silicon and Intel), so one build serves both asset names in
release.json:cd simulator && flutter build macos --release app=build/macos/Build/Products/Release/mini_app_simulator.app ditto -c -k --keepParent "$app" mini_app_simulator-<sim>-macos-arm64.zip cp mini_app_simulator-<sim>-macos-arm64.zip mini_app_simulator-<sim>-macos-x64.zip shasum -a 256 mini_app_simulator-<sim>-macos-*.zip > SHA256SUMS -
Publish the release. Keep
--prereleasefor versions with a suffix such as-alpha.2:gh release create v<version> --verify-tag --prerelease --title "minikit <version>" \ --notes-file notes.md mini_app_simulator-<sim>-macos-*.zip SHA256SUMS -
Fast-forward
devtomain:git checkout dev && git merge --ff-only origin/main && git push. -
Check the result:
minikit sim install --force,minikit sim open, thencurl -s http://127.0.0.1:8788/healthmust report the new simulator version.