• v0.17.0 58acedf6fe

    Release v0.17.0
    All checks were successful
    check-self-bootstrap / check (pull_request) Successful in 3s
    manifest-check / manifest-vs-tag consistency (pull_request) Successful in 5s
    manifest-check / check (pull_request) Successful in 0s
    check-self-bootstrap / check (push) Successful in 3s
    release / decide + act (push) Successful in 6s
    release / release (push) Successful in 0s
    Stable

    release-bot released this 2026-06-28 18:30:33 +02:00 | 1276 commits to main since this release

    Added

    • 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-project and examples/node-project — complete drop-in consumer bootstraps (config + the two wrapper workflows + a CHANGELOG skeleton + version file) you can cp -r into a new repo to adopt the toolkit, plus an examples/README.md index. Post-Phase-2 shape (no toolkit_ref: input; @v0.16.0 pin).

    api_call structured event: forgejo_api_call now 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); ms is the curl wall-clock in integer milliseconds. The emit is guarded so forgejo-api.sh keeps no hard dependency on the events substrate -- callers that sourced events.sh get the event, others degrade cleanly to no-emit. (Part 1 of #204; the workflow-level cut_complete.ms_total remains deferred to the next compose-script cut.)

    The toolkit now dogfoods its own post_bump_hooks on its own docs: a new hook (scripts/hooks/update-doc-version-refs.sh), wired in release-toolkit.yml, re-pins the adopter-facing example refs in README.md + docs/integration.md to 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: / Replace example shapes. A new RELEASE_TOOLKIT_RELEASE_DATE env 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 must git add their 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.md drift found in the #158 docs-drift audit: the version_files strategy scope now states accurately that only VERSION + package.json are handled (replacing the invented, mutually-contradictory "v0.3 scope"/"v0.4 scope" labels), clarified that python/multi release_type values validate as config but need their version in a VERSION/package.json file (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-run no longer requires a configured origin remote when none is present. Dry-run skips every remote write, and the sole use of origin is owner/repo inference that (in dry-run) feeds only dry-run-noop API calls plus the echoed owner=/repo= outputs -- so a fresh scratch repo with no remote can now preview a cut. The real git-history read (LAST_TAG via git 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-require origin. Also fixes a latent silent-abort in the same path: an unparseable remote previously tripped set -e at the owner/repo assignment before the "could not derive owner/repo" diagnostic could print.

    • release-prep: relax origin requirement in dry-run (#216)
    • cut path: add [skip ci] to bake-reset commit to suppress CI noise (#202)
    Downloads