Add release flow: justfile, git-cliff, bump-my-version #3

Closed
opened 2026-06-04 21:46:38 +00:00 by coding-agent-marvin8 · 1 comment
coding-agent-marvin8 commented 2026-06-04 21:46:38 +00:00 (Migrated from codeberg.org)

Kokopelli has no automated release process. Cutting a release requires manually editing CHANGELOG.md, running bump-my-version, tagging, and pushing — with no tooling to ensure steps are done in the right order.

Add a single just release patch|minor|major command that orchestrates the full flow: calculates the next version, generates the unreleased changelog via git-cliff, pauses for manual review, commits the changelog, bumps the version (auto-commit + tag), and pushes branch and tag to the correct remotes.

Kokopelli has no automated release process. Cutting a release requires manually editing CHANGELOG.md, running bump-my-version, tagging, and pushing — with no tooling to ensure steps are done in the right order. Add a single `just release patch|minor|major` command that orchestrates the full flow: calculates the next version, generates the unreleased changelog via git-cliff, pauses for manual review, commits the changelog, bumps the version (auto-commit + tag), and pushes branch and tag to the correct remotes.
coding-agent-marvin8 commented 2026-06-04 21:46:54 +00:00 (Migrated from codeberg.org)

Findings

  • bump-my-version is already configured in pyproject.toml but there is a stale [[tool.bumpversion.files]] entry referencing Release-Notes.md with a search pattern that says zaojun — clearly copied from the zaojun project and never cleaned up. That gets removed here.
  • git-cliff is not yet in dev dependencies. Adding git-cliff~=2.13.1.
  • No justfile or cliff.toml exist yet.
  • CI (.woodpecker/checks.yml) already runs on tag events — no pipeline changes needed.

Plan

Files changed:

  1. pyproject.toml — add git-cliff~=2.13.1 to dev group; remove stale Release-Notes bumpversion entry
  2. cliff.toml (new) — gitmoji + legacy conventional parsers; :wrench: skipped; trim = false for correct prepend spacing
  3. justfile (new) — just release patch|minor|major recipe: calculates next version → prepends changelog → interactive pause → commits changelog → bump-my-version bump → push branch to claude + tag to origin

Key decisions:

  • Changelog commit uses :wrench: prefix so cliff skips it in subsequent release runs (no noise)
  • Branch push → claude remote (agent SSH alias); tag push → origin (Woodpecker watches this)
  • No Release-Notes.md step

Branch: feat/issue-3-add-release-flow

## Findings - `bump-my-version` is already configured in `pyproject.toml` but there is a stale `[[tool.bumpversion.files]]` entry referencing `Release-Notes.md` with a search pattern that says `zaojun` — clearly copied from the zaojun project and never cleaned up. That gets removed here. - `git-cliff` is not yet in dev dependencies. Adding `git-cliff~=2.13.1`. - No `justfile` or `cliff.toml` exist yet. - CI (`.woodpecker/checks.yml`) already runs on `tag` events — no pipeline changes needed. ## Plan **Files changed:** 1. `pyproject.toml` — add `git-cliff~=2.13.1` to dev group; remove stale Release-Notes bumpversion entry 2. `cliff.toml` (new) — gitmoji + legacy conventional parsers; `:wrench:` skipped; `trim = false` for correct prepend spacing 3. `justfile` (new) — `just release patch|minor|major` recipe: calculates next version → prepends changelog → interactive pause → commits changelog → bump-my-version bump → push branch to `claude` + tag to `origin` **Key decisions:** - Changelog commit uses `:wrench:` prefix so cliff skips it in subsequent release runs (no noise) - Branch push → `claude` remote (agent SSH alias); tag push → `origin` (Woodpecker watches this) - No Release-Notes.md step **Branch:** `feat/issue-3-add-release-flow`
Sign in to join this conversation.
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
marvin8/kokopelli#3
No description provided.