Releases
Coop follows a lightweight release process so downstream users can depend on version tags (e.g. 1.0.1) instead of commit hashes. The process may evolve as project usage grows. There is currently no fixed release cadence; generally, releases are made when:
- Downstream users need an updated stable version tag,
- Meaningful changes have accumulated and CI is green, and/or
- A security advisory is addressed
We do not currently backport changes to or release patches for versions other than the latest.
Versioning
Coop uses Semantic Versioning (SemVer) following the MAJOR.MINOR.PATCH version format. In brief:
- Patch releases (x.y.Z): backward-compatible fixes or small improvements
- Minor releases (x.Y.z): new functionality or substantial improvements; changes to public API are backward-compatible
- Major releases (X.y.z): backward-incompatible changes to public API, or major feature or user interface overhauls
Creating a release
Before cutting a release, ensure:
- CI is passing for the
mainbranch - You understand the correct version according to SemVer
- CHANGELOG.md is up-to-date
Then:
- In GitHub: Releases → Draft a new release
- Create a tag in SemVer format
x.y.zfrom themainbranch - Draft the release notes, starting from CHANGELOG.md
- Check Create a discussion for this release for at least major and minor releases
- Publish the release
Publishing a release triggers automations:
- Docker images: builds and pushes version-tagged Docker images for
coop-server,coop-worker,coop-client, andcoop-migrations - Docs: adds a folder for the release to the index with a snapshot of the docs