Skip to content

ci: group the release changelog into categories #254

Description

@sthanikan2000

Context

#253 adds a changelog to the GitHub Release body via generate_release_notes: true. It works, but the output is a flat list:

## What's Changed
* feat: enhance officer UX in application/consignment tables by @mushrafmim in #249
* refactor(database): switch sqlite driver to pure Go by @sthanikan2000 in #248

**Full Changelog**: .../compare/v0.3.0...v0.4.0

Grouping it into sections (Features / Fixes / Breaking changes / …) would make releases scannable, especially as the PR count per release grows.

The catch: .github/release.yml categorises by label, and this repo doesn't label PRs

GitHub's release-notes config supports labels and authors as category rules — not title patterns. And of the last 15 merged PRs, 13 carry no labels at all; only two have breaking change.

So adding .github/release.yml on its own would put nearly everything in the uncategorised catch-all — no better than today.

What this repo does have is strong title discipline: 29 of the last 30 merged PRs follow conventional commits (feat:, fix(scope):, refactor(x)!: …). That's the signal worth building on.

Two options

A — derive labels from the title (preferred). Add an autolabeler that maps the conventional-commit prefix to an existing label (feat:Type/Feature, fix:Type/Bug, refactor:/chore:/build:/ci:Type/Improvement, docs:Type/Docs, !/BREAKING CHANGEbreaking change), then add .github/release.yml grouping on those. Leverages the discipline that already exists and needs no change to how people work. The label set is already in place — nothing new to create.

B — adopt manual label discipline. Simpler to configure, but it asks every author to remember a label on every PR, and the 13/15 miss rate suggests that won't hold on its own.

Supporting change worth doing either way

Enforce the conventional PR title in CI. There is no title check today, and one of the last 30 already drifted ("Refactor HTTP utility functions and update handler implementations"). Option A depends on titles being reliable, so the check is a prerequisite rather than a nice-to-have. The sibling repo already does this with amannn/action-semantic-pull-request — worth copying for consistency.

Notes

  • No dependabot exclusion is needed. This repo has no .github/dependabot.yml and zero dependabot PRs to date, so the usual "filter out dependency bumps" motivation doesn't apply here. (Separately: the absence of dependabot is its own gap — nothing bumps the Alpine/Go/Node base tags or the floating action majors.)
  • .github/release.yml affects the API-generated notes, so it applies automatically to release.yml with no workflow change once the file exists.
  • Scope is presentation only — no change to what gets published or how the image is built.

Not urgent. Filed as a follow-up to #253 while the context was fresh.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Priority/LowNice to have, low urgencyType/ImprovementEnhancement to existing functionality

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions