# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 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 - Two dedicated subdirectory composite actions replace the boilerplate inline workflow steps: `prepare/action.yml` runs vociferate, commits updated files, and pushes the release tag; `publish/action.yml` extracts release notes from the changelog and creates or updates the release. Consumer repositories need only a checkout step and a single `uses:` call per workflow stage. - `publish/action.yml` outputs `release-id`, `tag`, and `version` so consumers can upload their own release assets after the release is created. - `prepare/action.yml` accepts a `git-add-files` input so repositories using a custom `version-file` can stage the correct set of files for the release commit. - The `prepare-release.yml` and `do-release.yml` vociferate workflows now use the local `./prepare` and `./publish` actions, validating the actions in the self-release pipeline. - `prepare/action.yml` and `action.yml` use `go run ./cmd/vociferate` directly from the action source (via `GITHUB_ACTION_PATH`) when invoked at `@main`, and download a prebuilt binary when invoked at a semver tag. This makes development and CI on `main` self-contained without requiring a published release. - Binary download cache keys in published actions are now repository-scoped and use a workflow-defined fixed cache token (`github.sha` in this repository's prepare-release workflow). `cache-token` is no longer a public action input. - 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.