5b478d2831
Version bumps and release tags were entirely manual; the only CI automation was sync-version-on-tag, which corrects pyproject.toml if a hand-pushed tag drifted. This flips that: a new bump-version job (needs the four existing checks, gated to actual merge commits on master via HEAD^@'s parent count so direct/squash/rebase pushes are untouched) uses bump-my-version to auto-bump the patch version when a merged branch didn't already bump it itself, then generates a changelog entry with git-cliff and pushes a matching vX.Y.Z tag. git-cliff's cliff.toml is tuned to this repo's plain imperative commit style (no feat:/fix: prefixes): commits are grouped Added/Fixed/Removed/Changed by leading verb, "(gitea #N)" is linkified, and merge/[skip ci] commits are dropped. Per user decision during planning: the changelog generator folds in @lars's comment on the issue (asking to fold in changelog generation rather than deferring it), and CHANGELOG.md starts fresh with no backfill of v0.2.0-v0.3.3. sync-version-on-tag is left untouched as the safety net for hand-tagging. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
18 lines
528 B
TOML
18 lines
528 B
TOML
[tool.bumpversion]
|
|
current_version = "0.3.3"
|
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
serialize = ["{major}.{minor}.{patch}"]
|
|
search = "{current_version}"
|
|
replace = "{new_version}"
|
|
regex = false
|
|
allow_dirty = false
|
|
commit = true
|
|
tag = false
|
|
message = "chore: bump version {current_version} -> {new_version} [skip ci]"
|
|
pre_commit_hooks = ["uv lock", "git add uv.lock"]
|
|
|
|
[[tool.bumpversion.files]]
|
|
filename = "pyproject.toml"
|
|
search = "version = \"{current_version}\""
|
|
replace = "version = \"{new_version}\""
|