This guide details the lightweight release process. All releases should be traceable, tested, and reflected in the changelog.
- All tests green:
pytest -q CHANGELOG.mdupdated under the UNRELEASED section with meaningful entries (Added / Changed / Fixed / Removed) referencing issues where possible.- No TODO/FIXME items introduced for the tagged commit (unless explicitly documented in changelog).
Semantic Versioning (MAJOR.MINOR.PATCH)
- PATCH: Bug fixes & internal-only refactors.
- MINOR: Backwards-compatible features / migrations.
- MAJOR: Backwards-incompatible API or gameplay changes.
Use the helper script:
python scripts/bump_version.py <part>
Where <part> is one of: patch, minor, major.
The script will:
- Parse current version from
VERSION. - Update
VERSIONfile and searchCHANGELOG.mdfirst for matching version section. - Fail if the target version already exists.
- Replace the
UNRELEASEDheader with the concrete version & date (YYYY-MM-DD). - Immediately add a new
UNRELEASEDstub at the top if desired for ongoing work.
Example snippet:
## [0.3.9] - 2025-09-21
### Added
- WebSocket payload validation helpers.
git add VERSION CHANGELOG.md
git commit -m "release: vX.Y.Z"
git tag -a vX.Y.Z -m "Adventure vX.Y.Z"
git push origin main --tags
- Announce changes (README badges, release notes page, etc. – future automation).
- Monitor error logs for regressions.
- Tests pass
- Changelog updated
- Version bumped
- Tag created & pushed
This document will evolve as the project matures (CI/CD, packaging, Docker images, PyPI, etc.).