-
v0.27.0
StableSome checks failedchangelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 4scheck-self-bootstrap / check (pull_request) Has been skippedchangelog-body-check / check (pull_request) Successful in 0sfragment-check / changelog fragment-kind (pull_request) Successful in 4sfragment-check / check (pull_request) Successful in 0smanifest-check / manifest-vs-tag consistency (pull_request) Successful in 5smanifest-check / check (pull_request) Successful in 0sregister-check / register-drift check (pull_request) Successful in 4sregister-check / check (pull_request) Successful in 0stests / bats (pull_request) Successful in 1m47stests / shellcheck (pull_request) Successful in 8scheck-self-bootstrap / check (push) Successful in 3srelease / decide + act (push) Failing after 5srelease / release (push) Failing after 0srelease / mirror (push) Failing after 0stests / bats (push) Successful in 1m47stests / shellcheck (push) Successful in 8sreleased this
2026-07-06 14:12:12 +02:00 | 1110 commits to main since this releasev0.27.0 hardens release-toolkit for real Forgejo and Codeberg adoption ahead of v1.0: bounded, retryable API calls with pagination; per-project
publish_modeoverrides; Codeberg proven end-to-end; stale docstring pins cleaned up; and protection against cut cancellation.Added
Forgejo API calls are now bounded and retryable: a 5s connect timeout and 30s total timeout on every call (env-tunable via
FORGEJO_API_CONNECT_TIMEOUT_S/FORGEJO_API_TIMEOUT_S), with exponential backoff on 429 / 5xx / network errors. Tag and PR-list lookups now paginate, fixing missed results on repos with more than one page of tags or PRs. Retries are safety-gated: 429 is retried on any method, but 5xx / network errors are retried only for idempotent methods — a POST / PATCH is not retried by default (the server may have partially applied it) unless you setFORGEJO_API_RETRY_UNSAFE=1(#334; v1.0.0 must-fix).You can now change
publish_modeper project without editing your workflow: setvars.RT_PUBLISH_MODEin Forgejo → Settings → Actions → Variables, or addpublish_mode:torelease-toolkit.yml. Precedence, highest first: repo variable → config file → workflowwith:input → thedraftdefault (#332). Invalid values fail loud with the resolution chain shown (#408; v1.0.0 must-fix).Integration docs now collect the per-project override options in one table, with worked examples for config-file, repo-variable, and one-off dispatch overrides (#409).
Changed
release-toolkit is now demonstrated end-to-end on Codeberg's shared runners: the tic-tac-toe companion demo runs the full flow from fresh-repo bootstrap through cut to a draft release. The README and integration docs now describe Codeberg as proven rather than assumed, link the demo, and add a short "Running on Codeberg" note covering how to enable Actions and Releases and the no-token fallback (#412).
Fixed
Reusable workflow docstring examples now use
@vX.Y.Zplaceholders instead of concrete pins that had drifted stale; the copy-paste-ready refs in the docs and examples stay pinned and are kept fresh by the post-cut version-ref hook (#407).Cut-cancellation recovery. If another push lands while a cut is queued, the cut can be cancelled after the CHANGELOG section moved but before the release tag exists — leaving an orphaned
## [vX.Y.Z]section that the next run would otherwise re-emit as a duplicate entry.Recommended: add the new
concurrencyblock from integration.md to your consumer workflow to prevent the cancellation. If you skip it, cuts stay safe — the toolkit fails loud on the state divergence — but an interrupted cut may need manual recovery.- Prevention (adopter-side): the consumer wiring template in
docs/integration.mdnow includes a workflow-levelconcurrency:block (group: release-cut-${{ github.ref }},cancel-in-progress: false) that queues later pushes behind the in-flight cut. - Detection (toolkit-side):
release-decide.shfails loud whenCHANGELOG.md's top-most released section is ahead ofmanifest.last_released_version— the orphan signature — and lists two recovery options (finish the pending release and update the manifest, or move the section back under[Unreleased]). Auto-heal is out of scope for v1.0.0.
Closes #417.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Prevention (adopter-side): the consumer wiring template in