Make versioning a workflow, not a chore
Manually editing a version string in pyproject.toml / package.json / Cargo.toml on every release is forgettable and error-prone. Automate it.
Approaches
1) Conventional Commits + automated bump
- Commits follow
feat: ...,fix: ...,feat!: ...shapes. - A tool (release-please, semantic-release) reads the commit log and decides patch / minor / major.
- The bump PR (or commit) updates the version + changelog + creates the tag.
2) Manual workflow_dispatch with a 'kind' input
- Trigger a release workflow with input
kind: choice [patch, minor, major]. - Workflow runs
npm version $kind/uv version --bump $kind, commits, tags, pushes. - Less ceremony than Conventional Commits; more human discretion.
3) Calendar versioning (CalVer)
- Use the date as the version:
2026.04.30. - No bump decision; the next release on a new day is automatically newer.
- Best for products with no semver-style API contract.