Files
vociferate/changelog.md
Micheal Wilkinson 8c2835fe2e feat: derive recommended version from changelog; no version file required
- RecommendedTag now reads the current version from the most recent
  released section heading in the changelog (## [x.y.z] - ...) when no
  --version-file flag is given, removing the dependency on a separate
  version file for recommendation.
- When the changelog contains no prior releases, the base version
  defaults to 0.0.0, so the first recommended tag is v1.0.0 (or higher
  depending on unreleased content).
- Prepare creates the release-version file if it does not already exist,
  so new repositories do not need to pre-seed it.
- Add tests covering changelog-based version resolution, first-release
  default, and automatic file creation.
- Update README and changelog unreleased section to document the new
  behaviour.
2026-03-20 20:10:13 +00:00

3.0 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

A ### Breaking section is used in addition to Keep a Changelog's standard sections to explicitly document changes that are backwards-incompatible but would otherwise appear under ### Changed. Entries under ### Breaking trigger a major version bump in automated release recommendation logic.

[Unreleased]

Breaking

Changed

  • Release version recommendation now reads the current version from the most recent released section in the changelog instead of requiring a separate version file. When no prior releases exist the version defaults to 0.0.0, yielding v1.0.0 as the first recommended tag.
  • vociferate prepare creates the release-version file if it does not already exist, removing the need to pre-seed it in new repositories.
  • Release automation is now split into a prepare workflow that updates and tags main, and a tag-driven publish workflow that creates the release from the tagged revision.
  • The CLI entrypoint, internal package paths, build outputs, and automation references now use the vociferate name instead of the earlier releaseprep naming.
  • Configurable version source and parser via --version-file and --version-pattern.
  • Configurable changelog path via --changelog.
  • The release workflow and composite action now treat a provided version as an override and otherwise fall back to the recommended next version automatically.
  • Release preparation now runs directly in the prepare workflow; the repository-local helper script and just recipe were removed.
  • Release creation is now idempotent: existing releases for the same tag are updated in place instead of recreated.
  • Release asset uploads now replace existing assets with matching filenames so reruns stay synchronized.
  • Automated release artifact publishing in the tag-driven release workflow for linux/amd64, linux/arm64, and checksums.txt.
  • Release recommendation now forces a major version bump whenever a ### Breaking heading is present in ## [Unreleased], even if the section has no bullet entries yet.
  • The composite action now downloads and caches released vociferate binaries on both amd64 and arm64 platforms instead of installing Go and running the module source directly.
  • Reusable workflow_call support for the Prepare Release workflow, enabling other repositories to invoke it directly.
  • Reusable workflow_call support for the tag-driven Do Release workflow, enabling other repositories to publish from pushed tags without reimplementing release note or asset logic.
  • Composite action (action.yml) for release preparation and recommendation flows.
  • Gitea workflows for push validation, manual release preparation, and tag-driven release publishing.
  • README guidance for release artifacts and examples for reusing vociferate as a composite action or reusable workflow.