Releasing
How Phexium versions are numbered, documented in the changelog, and tagged.
Versioning Policy
Phexium follows Semantic Versioning:
- Git tags carry a
vprefix (v0.9.0); changelog headings do not (0.9.0). - While the major version is
0, the API is not frozen: breaking changes bump the minor version, everything else bumps the patch version. - From
1.0.0on, standard semantics apply: breaking changes bump the major version, new features the minor, fixes the patch.
Changelog
CHANGELOG.md follows the Common Changelog convention:
- Releases ordered latest-first, headed
## [X.Y.Z] - YYYY-MM-DD, with the version linked to its GitLab tag. - Changes grouped under
Changed,Added,Removed,Fixed, in that order. - Entries written in the imperative mood, one line each, self-describing.
- Breaking changes prefixed with
**Breaking:**and listed first in their category.
Scope
The changelog covers the framework core only: src/, tools/, the installer, and the framework test and build infrastructure. Demo and starter application content, blog posts, website changes, and maintenance noise (CI tweaks, style fixes) are excluded. A demo change appears only when it demonstrates a new framework capability, phrased as that capability.
Unreleased section
As a deliberate deviation from Common Changelog (which writes entries at release time), notable changes are accumulated in an ## [Unreleased] section at the top of the file as they land on trunk. At release time, this section becomes the new version heading.
Release Process
- Make sure
trunkis clean and up to date. -
Run the release gate:
This chains
release:fix(rector, coding standard) andrelease:test(all test suites, deptrac). -
Determine the version bump from the content of the
Unreleasedsection (any**Breaking:**entry bumps the minor while on0.x). - In
CHANGELOG.md, rename## [Unreleased]to## [X.Y.Z] - YYYY-MM-DDand add the version link at the bottom of the file. -
Commit the changelog, then tag and push:
-
Create a GitLab release from the tag, pasting the changelog entry as release notes.
Versions and the Copy-Based Model
Phexium uses a copy-based distribution: applications own their copy of the framework and track the upstream commit SHA in .phexium-version. Tags do not change that mechanism; they provide human-readable anchors on top of it. To see what changed between your copy and a release, compare your recorded SHA against the tag:
The CHANGELOG.md entry for each version summarizes the same range in human terms.