Release notes
Vico style
Write GitHub release notes in the established Vico format:
- Start with
## Overview. - Add lowercase overview bullets in this order when applicable:
breaking changes: none,negligible,minor,moderate, ormajoraddressed: #123, #456external contributors: @username
- Follow with
## Changesfor user-visible changes. - Use bullets for short releases. Use numbered lists when a section contains several related API changes that build on one another.
- Prefer concise maintainer verbs:
Added,Fixed,Improved,Introduced,Renamed,Deprecated,Exposed,Updated,Prevented, andRelocated. - Format API symbols, modules, parameters, and properties in backticks. Use
italics for coordinate names such as
_x_and_y_. - Mention deprecations, replacements, and compatibility impact where relevant. Use a brief footnote only when a breaking-change rationale would otherwise interrupt the section.
- Keep the text concrete and user-facing. Do not list routine dependency bumps, formatting, release version commits, CI-only work, or internal refactors unless they affect public behavior.
- Avoid marketing language, “What’s changed” headings, commit hashes, and contributor thanks outside the overview metadata.
Workflow
- Determine the target tag from the request,
TAG_NAME, orbuildSrc/src/main/kotlin/Versions.kt. - If the target is a stable version and same-version
nextreleases exist, follow the stable-after-nextworkflow below before inspecting raw history. - Compare the previous published version tag with the target tag, or with
HEADif the target tag does not exist yet. - Review commits, pull requests, linked issues, discussions, and relevant diffs to find user-visible changes.
- Group all user-visible changes under
## Changes. - Classify breaking changes conservatively. Use only
none,negligible,minor,moderate, ormajor. Treat source-incompatible public API changes as at leastminor, even when deprecated overloads cover most callers. - Write a draft that is ready to paste into a GitHub release body.
- Verify that the draft starts with
## Overview, has no empty sections, and contains no claims unsupported by the inspected history.
Stable releases after next
Stable releases are usually preceded by one or more same-version next
releases, and the stable release is expected to be identical to the final
next release. Each next release should already have a GitHub release body.
When drafting notes for a stable target such as v3.2.0, first look for
same-version next tags such as v3.2.0-next.1, v3.2.0-next.2, and
v3.2.0-next.3.
- Read the GitHub release bodies for all same-version
nextreleases in ascending order. - Combine those changelogs into one stable release body in the Vico format. Preserve user-visible content, addressed issues, external contributors, and the strongest breaking-change classification.
- Deduplicate repeated bullets and lightly normalize wording, but do not redraft from scratch.
- Inspect commits, pull requests, and diffs only to verify that the stable tag
has no user-visible changes after the final
next, or to fill gaps when anextrelease body is missing. - If no same-version
nextchangelogs are available, use the normal workflow.
Template
## Overview
- breaking changes: none
- addressed: #123
- external contributors: @username
## Changes
- Fixed …