-
Release v0.18.1
StableAll checks were successfulcheck-self-bootstrap / check (pull_request) Successful in 3smanifest-check / manifest-vs-tag consistency (pull_request) Successful in 5smanifest-check / check (pull_request) Successful in 0scheck-self-bootstrap / check (push) Successful in 3srelease / decide + act (push) Successful in 6srelease / release (push) Successful in 0sreleased this
2026-06-28 21:54:28 +02:00 | 1410 commits to main since this releaseFixed
scripts/repin.shnow tags every[repin]output line with its mode --DRY-RUN:in dry-run,LIVE:in a real run (e.g.[repin] LIVE: detached bake commit: ...,[repin] DRY-RUN: PLAN). A dispatcher copy-pasting a bake-commit SHA from the output now sees the mode inline, so the dry-run bake (thrown away) can't be mistaken for the live one the rc tag actually points at. Closes a same-day n=2 mis-citation class that the per-re-pin verify discipline had been catching by hand.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Release v0.18.0
StableAll checks were successfulcheck-self-bootstrap / check (pull_request) Successful in 3smanifest-check / manifest-vs-tag consistency (pull_request) Successful in 5smanifest-check / check (pull_request) Successful in 0scheck-self-bootstrap / check (push) Successful in 3srelease / decide + act (push) Successful in 6srelease / release (push) Successful in 0sreleased this
2026-06-28 20:44:09 +02:00 | 1414 commits to main since this releaseChanged
- The two reusable workflows are renamed to drop the
_prefix in favour of an explicitreusable-prefix:.forgejo/workflows/_release.yml->reusable-release.ymland_manifest-check.yml->reusable-manifest-check.yml. The_prefix was an informal "internal" community signal;reusable-states theworkflow_callshape outright and reads cleaner at the adoption surface (the consumer types the full reusable path in theiruses:line). The consumer-wrapper names (release.yml,manifest-check.yml) are unchanged, as is all workflow runtime behavior -- this is a pure rename.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The two reusable workflows are renamed to drop the
-
Release v0.17.1
Stablereleased this
2026-06-28 18:57:25 +02:00 | 1419 commits to main since this releaseFixed
- The Layer 2 / Layer 3 cut-safeguard now finds the merged cut PR via Forgejo's direct commit->PR lookup (
GET /repos/{owner}/{repo}/commits/{sha}/pull) instead of apulls?state=closed&sort=updated&limit=5list-and-filter. The old query paired an arbitrary 5-PR window with Forgejo'sissue_id-descendingsort=updatedordering, so a rolling cut PR created early but merged late could fall outside the window once more than a few PRs closed between cuts -- the safeguard then returned empty and the cut fell through tomode=update. (Anchor: the v0.17.0 cut, where rolling PR #227 sat at list position 11 of the limit=5 query and had to be recovered manually.) The direct lookup keys on the merged commit server-side and has no window to outgrow; a 404 (no PR for the commit, including the brief post-merge indexing-lag window) collapses to the existing empty-result contract that the caller's retry + protective fall-through already handle.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The Layer 2 / Layer 3 cut-safeguard now finds the merged cut PR via Forgejo's direct commit->PR lookup (
-
Release v0.17.0
StableAll checks were successfulcheck-self-bootstrap / check (pull_request) Successful in 3smanifest-check / manifest-vs-tag consistency (pull_request) Successful in 5smanifest-check / check (pull_request) Successful in 0scheck-self-bootstrap / check (push) Successful in 3srelease / decide + act (push) Successful in 6srelease / release (push) Successful in 0sreleased this
2026-06-28 18:30:33 +02:00 | 1424 commits to main since this releaseAdded
- hooks: dogfood post_bump_hooks for own doc ref-pins (#209)
- forgejo-api: emit api_call structured event (#204 part 1)
Fixed
- release-prep: relax origin requirement in dry-run (#216)
- cut path: add [skip ci] to bake-reset commit to suppress CI noise (#202)
Added
Added
examples/go-projectandexamples/node-project— complete drop-in consumer bootstraps (config + the two wrapper workflows + a CHANGELOG skeleton + version file) you cancp -rinto a new repo to adopt the toolkit, plus anexamples/README.mdindex. Post-Phase-2 shape (notoolkit_ref:input;@v0.16.0pin).api_callstructured event:forgejo_api_callnow emits one JSON event per real API call (endpoint,method,status,ms) to stderr, giving Loki-ingestable observability over the toolkit's Forgejo interactions including latency and non-2xx failures. Emitted at the wrapper on every real call (not in dry-run);msis the curl wall-clock in integer milliseconds. The emit is guarded soforgejo-api.shkeeps no hard dependency on the events substrate -- callers that sourcedevents.shget the event, others degrade cleanly to no-emit. (Part 1 of #204; the workflow-levelcut_complete.ms_totalremains deferred to the next compose-script cut.)The toolkit now dogfoods its own
post_bump_hookson its own docs: a new hook (scripts/hooks/update-doc-version-refs.sh), wired inrelease-toolkit.yml, re-pins the adopter-facing example refs inREADME.md+docs/integration.mdto the freshly-cut tag on every cut -- eliminating the manual doc-ref-pin drift class (#196 was the recurring manual fix; Shipwright #157 found the dogfooding gap). The hook preserves historical "feature-since" references (e.g.v0.12.0+) and pins only the@vX.Y.Z/Latest:/Replaceexample shapes. A newRELEASE_TOOLKIT_RELEASE_DATEenv var is exported to all post_bump_hooks (the cut date, matching the CHANGELOG heading) so hooks can refresh dated examples. The post_bump_hooks docs now also document the staging convention (hooks mustgit addtheir own changes; release-prep commits only staged files).- hooks: dogfood post_bump_hooks for own doc ref-pins (#209)
- forgejo-api: emit api_call structured event (#204 part 1)
Changed
docs: sweep adopter-facing ref pins (README + integration.md) to
@v0.16.0(#196).Fixed
Corrected adopter-facing
integration.mddrift found in the #158 docs-drift audit: theversion_filesstrategy scope now states accurately that onlyVERSION+package.jsonare handled (replacing the invented, mutually-contradictory "v0.3 scope"/"v0.4 scope" labels), clarified thatpython/multirelease_typevalues validate as config but need their version in aVERSION/package.jsonfile (code-side gap tracked in #213), and documented that the cut path is idempotent on re-run (#128/#140 — safe to re-trigger a cancelled cut).release-prep.sh --dry-runno longer requires a configuredoriginremote when none is present. Dry-run skips every remote write, and the sole use oforiginis owner/repo inference that (in dry-run) feeds only dry-run-noop API calls plus the echoedowner=/repo=outputs -- so a fresh scratch repo with no remote can now preview a cut. The real git-history read (LAST_TAGviagit describe) uses local tags, not the remote. A present-but-unparseable remote stays fatal even in dry-run (a genuine misconfiguration dry-run should surface), and production cuts still hard-requireorigin. Also fixes a latent silent-abort in the same path: an unparseable remote previously trippedset -eat the owner/repo assignment before the "could not derive owner/repo" diagnostic could print.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Release v0.16.0
StableSome checks failedcheck-self-bootstrap / check (pull_request) Successful in 3smanifest-check / manifest-vs-tag consistency (pull_request) Successful in 5smanifest-check / check (pull_request) Successful in 0scheck-self-bootstrap / check (push) Successful in 3srelease / release (push) Has been cancelledrelease / decide + act (push) Has been cancelledreleased this
2026-06-28 13:06:07 +02:00 | 1441 commits to main since this releaseRemoved
- The
toolkit_refworkflow_call input is removed from the reusables (_release.yml+_manifest-check.yml). The toolkit ref is now baked into the reusable at every pinnable point — cut tags at cut-prep, rc tags at re-pin via the newscripts/repin.sh(a detached bake commit the rc tag points at) — souses:@<ref>is the single source of truth and theresolve-refstep reads the baked value unconditionally. This removes the second ref surface that could drift (toolkit_ref:vsuses:@) rather than merely enforcing their alignment.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The
-
Release v0.15.0
Stablereleased this
2026-06-27 16:06:59 +02:00 | 1451 commits to main since this releaseAdded
- Structured JSON event logging substrate (
scripts/lib/events.sh):event_emit KIND key=value...emits one JSON object per event to stderr for Loki ingest. The cut path is instrumented withcut_decided,manifest_skip/manifest_proceed,cut_complete,repin_check, anderrorevents (release-toolkit#159).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Structured JSON event logging substrate (
-
Release v0.14.0
Stablereleased this
2026-06-27 15:16:03 +02:00 | 1458 commits to main since this releaseDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
Release v0.13.1
Stablereleased this
2026-06-27 13:44:53 +02:00 | 1466 commits to main since this releaseFixed
- check-self-bootstrap: normalize build-bake marker line before compare
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Release v0.13.0
Stablereleased this
2026-06-27 12:00:03 +02:00 | 1471 commits to main since this releaseAdded
- Build-bake mechanism: release-prep.sh rewrites a marker-anchored
ref:in_release.ymland_manifest-check.ymlto the next-cut version, construction-enforcing the consistency between consumeruses: @<ref>and the toolkit checkout step (Phase 1 of release-toolkit#148).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Build-bake mechanism: release-prep.sh rewrites a marker-anchored
-
Release v0.12.0
Stablereleased this
2026-06-27 10:53:17 +02:00 | 1479 commits to main since this releaseAdded
- auto-prune superseded -rc.N tags after cut (closes #153)
Fixed
- prune-rc-tags: self-pin exclusion (closes #167)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads