Branch Strategy
Each major version has its own long-lived branch. All development for that version happens on its branch.
| Branch | Purpose |
|---|
0.x | Active development for v0 |
1.x | Future v1 (created when v1.0.0 is released) |
main | Not used for development |
Semantic Versioning
Core follows semver:
- Patch (
0.x.Y) — bug fixes, no breaking changes
- Minor (
0.X.0) — new features, backwards compatible
- Major (
X.0.0) — breaking changes, upgrade guide required
The current version is tracked in version.txt and is bumped automatically by the release workflow.
Commit Messages
All commits must follow Conventional Commits. The pre-commit hook rejects non-conforming messages.
Allowed types: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test
feat(tables): add PropertyColumn sortability
fix: resolve pagination reset on filter change
docs: update authentication page
Body lines must not exceed 100 characters.
Creating a Release
Never create a release without explicit confirmation. Releases are irreversible and immediately affect all downstream projects.
Using the Release Script (Recommended)
# Preview what will happen — always run this first
bin/release.sh patch --dry-run
# Patch release (bug fixes)
bin/release.sh patch
# Minor release (new features)
bin/release.sh minor
# Major release (breaking changes)
bin/release.sh major
The script reads the current version from version.txt, shows what version will be created, and asks for confirmation before triggering the GitHub workflow.
Using GitHub CLI
gh workflow run publish_release.yml --ref 0.x -f version_type=patch
gh workflow run publish_release.yml --ref 0.x -f version_type=minor
gh workflow run publish_release.yml --ref 0.x -f version_type=major
Before Every Release
- Ensure all changes are committed and pushed
- For minor/major releases, update
UPGRADE.md with migration instructions
- Run
bin/release.sh patch --dry-run to preview
- Confirm the version is correct before proceeding
Starting a New Major Version
# Create the new branch from the current development branch
git checkout 0.x && git pull
git checkout -b 1.x
git push -u origin 1.x
# Trigger the major release from the new branch
bin/release.sh major
After releasing, update the default branch on GitHub to the new version branch.
Hotfixes for Older Versions
- Merge your fix into the old version branch (e.g.,
0.x)
- Cut a patch release:
bin/release.sh patch
- Cherry-pick to newer branches as needed