-
Notifications
You must be signed in to change notification settings - Fork 0
Release Process
How a new ZeusMod release gets cut, tested, and shipped to existing users over-the-air.
There is no fixed cadence. Releases ship when:
- A new feature is done and manually verified in-game.
- A blocking bug is fixed.
- An Icarus patch broke something reflection didn't catch.
Expect roughly one release every two to four weeks in active periods, and long quiet stretches between them.
Semantic versioning, with the same scheme the Electron ecosystem uses:
| Change | Bump |
|---|---|
| Fix a bug, no new features | patch |
| Add a cheat, a UI card, a debug command | minor |
| Breaking change to the pipe protocol, a migration requiring manual intervention, or a removal | major |
The version tag is vX.Y.Z (with the v prefix). Tag format is
load-bearing — the CI workflow in .github/workflows/release.yml
filters on it.
Before cutting a release:
- Native + Electron builds are green locally in Release | x64.
-
app/bin/IcarusInternal.dllmatchesnative/internal/bin/Release/IcarusInternal.dll(same md5). - New features were exercised live against a running Icarus —
toggles, UI,
inspect.pysmoke tests. - Update modal picks up the release body cleanly (no YAML escaping issues).
-
CHANGELOG.mdhas a## [X.Y.Z] - YYYY-MM-DDsection at the top with Highlights / Added / Changed / Fixed subheadings. -
app/package.json → versionbumped toX.Y.Z. -
README.mdbadge bumped. - No AI co-author trailer or third-party attribution leaked into
commits. Author must be
CyberSnakeHonly.
-
Commit everything to a short-lived branch:
git checkout -b release/vX.Y.Z git add -A git commit -m "Release X.Y.Z — one-line summary" -
Open a PR against
main. Use the PR template; include the test plan from the checklist above. -
Once the PR looks good, push the tag to the commit that will be merged:
git tag -a vX.Y.Z -m "ZeusMod X.Y.Z — one-line summary" git push origin vX.Y.Z -
Merge the PR with "Create a merge commit" (not squash). Squash would rewrite the commit hash and invalidate the tag.
-
CI picks up the tag push and cuts the GitHub Release (see below).
From .github/workflows/release.yml:
- Checkout — Windows runner, shallow clone.
-
Native deps —
scripts/fetch-native-deps.ps1fetches ImGui + MinHook intonative/third_party/. -
Build native —
msbuild ZeusMod.sln /t:Rebuild /p:Configuration=Release /p:Platform=x64. -
Stage binaries — copy
native/internal/bin/Release/IcarusInternal.dllandnative/injector/bin/Release/IcarusInjector.exeintoapp/bin/. -
Build installer —
cd app && npm ci && npm run dist. Produces:ZeusMod-Setup-X.Y.Z.exelatest.ymlZeusMod-Setup-X.Y.Z.exe.blockmap
-
Compose release notes — extract the
## [X.Y.Z]block fromCHANGELOG.md, prepend to.github/release-footer.md. -
Publish —
gh release create vX.Y.Z --notes-file notes.md <installer> <latest.yml> <blockmap>.
If any step fails, the workflow exits non-zero and no release is published. The tag stays in place — fix the problem and either push another commit (the tag is re-associated with a push to the release branch, and you retag from the new commit) or delete + retag:
git tag -d vX.Y.Z
git push --delete origin vX.Y.Z
git tag -a vX.Y.Z -m "…"
git push origin vX.Y.ZDeleting a tag is a destructive op — only do it before the release is live to end users.
- Confirm the GitHub Release page shows the installer +
latest.yml- blockmap.
- Open ZeusMod on a test machine still running the previous version. Within 30 s the Updates chip should flip to the new version and the modal should offer Download & Install.
- Click through. Silent NSIS runs, the app relaunches on the new version, and the footer chip flips to "You are on the latest version".
- Close the release PR and delete the
release/vX.Y.Zbranch.
Same shape as a regular release, with two differences:
- The release branch is named
hotfix/vX.Y.(Z+1). - The
CHANGELOG.mdentry lives under Fixed only. No Added or Changed on a hotfix.
If the hotfix is urgent (saves users from data loss / a crashing game), skip writing new features onto the branch — ship the fix alone.
- Contributing — commit conventions, PR reviews.
- Build From Source — the exact build the CI runs.
-
CHANGELOG.mdat the repo root — canonical version history.