Use two different commands for two different goals.
Meaning:
- commit and push the current repo changes
- update GitHub Pages if the pushed files affect the guide or changelog
- do not bump the app version
- do not create a release tag
- do not trigger in-app self-update
Use this for:
- small docs changes
- sentence wording changes
- guide/blog cleanup
- internal notes
- work that is not ready to ship as a user-facing update
Meaning:
- this means publish a real release, not just commit locally
- bump the app version
- require a plain-language update in
docs/user/WHATS_NEW.md- use one heading per date; append same-day updates under the existing date heading
- require the top
docs/user/WHATS_NEW.mdversion entry to matchmodules/version.py - rebuild the Pages site
- rebuild the local EXE, portable ZIP, and installer
- commit and push
main - create and push the matching version tag
- trigger the GitHub Release workflow
- wait for the GitHub Release workflow to finish successfully
- verify that the published GitHub Release contains the installer, portable ZIP, and both
.sha256sidecars - wait for the post-release updater smoke test job in
release.ymlto finish successfully - make the new release visible to the in-app updater
Use this for:
- a real user-facing update
- a fix or improvement you want installed copies to receive
- anything that should publish new installer and portable downloads
The helper script for ship updates uses a conservative automatic rule:
patch- docs changes
- sentence file changes
- guide/changelog/blog wording changes
- small user-facing polish
minor- app code changes under
modules/ - game changes under
games/ - release/build workflow changes
- anything outside the normal docs/content buckets
- app code changes under
major- never chosen automatically
- use only when you explicitly want a major release
In practice:
- most shipped KeyQuest updates should be
patch minorshould be used for meaningful new features or bigger behavior changesmajorshould be rare
Plain push:
git add -A
git commit -m "Your message"
git push origin mainShip a release with automatic bump selection:
powershell -ExecutionPolicy Bypass -File tools/ship_updates.ps1Ship a release with an explicit bump:
powershell -ExecutionPolicy Bypass -File tools/ship_updates.ps1 -Bump patchOr:
powershell -ExecutionPolicy Bypass -File tools/ship_updates.ps1 -Bump minortools/release.ps1is still the core release script.tools/ship_updates.ps1is a wrapper that chooses and applies the version bump before callingtools/release.ps1.tools/release.ps1now automates the main release checks: local tests, local builds, release publication wait, and published asset verification. The post-release updater smoke test now runs as a second job insiderelease.yml, so the release workflow itself stays the single GitHub gate.- If version metadata is stale or mismatched, the release script must fail before publishing.
- Release pushes are normal fast-forward pushes only. Do not use force-push, branch deletion, or tag rewrite workflows for this repo.
- The in-app updater only sees a new update after a new GitHub Release exists.
- Pushing
mainalone is not enough for self-update.