This document describes the recommended release workflow for the Cheesebox project. This is a suggestion for internal teams and contributors - adapt it to fit your needs.
feature branches → dev (via PRs) → release branch → main (release PR)
| Branch | Purpose |
|---|---|
main |
Production-ready code, tagged releases |
dev |
Integration branch for ongoing work |
release/x.x.x |
Temporary branch for preparing releases |
- Create feature/fix branches from
dev - Open PRs targeting
dev - Review and merge PRs into
dev - Don't update changelog yet - changes are "in flight"
When ready to release:
git tag --sort=-v:refname | head -1This returns your most recent tag (e.g., v1.8.1). You'll need this to see what changed.
# Replace v1.8.1 with your actual last tag from Step 1
git log v1.8.1..dev --oneline --no-merges# Create release branch from dev
git checkout dev && git pull
git checkout -b release/1.9.0
# Bump version in package.json
npm version minor --no-git-tag-version # or patch/major
# Update CHANGELOG.md with the changes you reviewed in Step 2
# Commit version bump and changelog
git add package.json package-lock.json CHANGELOG.md
git commit -m "v1.9.0"
# Push and create PR into main
git push -u origin release/1.9.0
gh pr create --base main --title "v1.9.0" --body "Release v1.9.0 - See CHANGELOG.md for details."Merge the PR via the GitHub web UI, then run these commands locally:
# Tag the release
git checkout main && git pull
git tag v1.9.0
git push --tags
# Sync dev with main
git checkout dev
git merge main
git push| Step | Branch | Changelog | Version |
|---|---|---|---|
| Feature PRs | → dev | No | No |
| Create release branch | release/x.x.x | Update | Bump |
| Release PR | → main | Already done | Already done |
| After merge | main | Tag only | — |
| Sync back | main → dev | — | — |
This project follows Semantic Versioning:
- MAJOR (1.0.0 → 2.0.0): Breaking changes
- MINOR (1.0.0 → 1.1.0): New features, backwards compatible
- PATCH (1.0.0 → 1.0.1): Bug fixes, backwards compatible
The changelog follows Keep a Changelog format:
## [1.9.0] - 2026-01-28
### Added
- New features
### Changed
- Changes to existing functionality
### Fixed
- Bug fixes
### Security
- Security improvements# Find your latest tag
git tag --sort=-v:refname | head -1
# List all tags
git tag --sort=-v:refname
# See commits since a tag (replace v1.8.1 with your tag)
git log v1.8.1..dev --oneline --no-merges
# See which files changed since a tag
git diff v1.8.1..dev --stat
# See full diff of changes
git diff v1.8.1..dev