ci: drive changelog from PR titles via Conventional Commits#2143
Merged
Conversation
Labels from `feat/*` branches were tagged `feature`, but Release Drafter only matched `enhancement`, so feature PRs silently dropped out of the changelog. Off-convention branches (docs/, v2-api-polish) got no label at all and were likewise dropped. Replace the branch-glob TimonVS/pr-labeler-action with Release Drafter's built-in autolabeler, keyed on the Conventional-Commit PR title. One source of truth, robust to branch naming. Consolidate the nine fragmented categories into five primary buckets (Breaking, Features, Bug Fixes, Code Quality, Dependencies) plus Documentation. Document the prefix -> label -> section mapping in AGENTS.md.
iMicknl
added a commit
that referenced
this pull request
Jun 21, 2026
## Problem Changelog entries render the Conventional-Commit prefix that's already implied by the section — e.g. under 🚀 New Features: > - **feat:** add core:IntrusionDetectedState for Somfy IntelliTAG air (#2142) The `feat:` is redundant ("doubled") with the section heading. ## Change The prefix can't simply be dropped from the PR title — it's the signal the autolabeler uses to sort entries into sections. Instead, strip it from the *rendered* entry via a Release Drafter `replacers` rule: ```yaml replacers: - search: '/\* (build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\(.+?\))?!?:\s*/g' replace: '* ' ``` Now `feat: add X` renders as `Add X` while the title keeps driving labeling/sectioning. Also documents this in AGENTS.md (keep the prefix in titles; it's stripped on publish) and drops two now-obvious comments from the workflow. Follow-up to #2143.
This was referenced Jun 21, 2026
iMicknl
added a commit
that referenced
this pull request
Jun 21, 2026
## Why Now that #2144 strips the Conventional-Commit prefix, the summary becomes the first word the reader sees in the changelog. Conventional Commits' default lowercase summary renders as: > - add core:IntrusionDetectedState for Somfy IntelliTAG air (#2142) Capitalizing the summary gives the expected: > - Add core:IntrusionDetectedState for Somfy IntelliTAG air (#2142) ## Why a convention, not config Release Drafter `replacers` can find/replace text but **cannot transform case** (no callback / uppercase function), so forcing the capital via regex isn't possible. The only route is writing the title capitalized: `feat: Add X`. Documents this in AGENTS.md. Follow-up to #2143 / #2144.
iMicknl
added a commit
that referenced
this pull request
Jun 21, 2026
## Problem The `autolabeler` rules added in #2143 were never actually executed. The main `release-drafter/release-drafter` action only **drafts releases** — it parses the full config (hence the deprecation warnings in its logs) but does **not** apply labels. Labeling is a *separate* sub-action: `release-drafter/release-drafter/autolabeler`. Consequences observed: - #2145 was opened with **no labels** at all. - #2143 (`code-quality`) and #2144 (`ci`) were labeled **manually**, not by the action. - No "add label" activity appears in any release-drafter run log. Since the changelog draft groups by label, an unlabeled merged PR falls into the uncategorized bucket — the exact drop we set out to fix. ## Fix - Add a dedicated `autolabel` job (PRs only) using the `release-drafter/release-drafter/autolabeler` sub-action, with `pull-requests: write`. - Gate the existing `update_release_draft` job to `push` events, so each job only runs where it applies (no wasted draft run per PR). - Pin both to the same SHA (v7.4.0). Follow-up to #2143 / #2144. ## Verification After merge I'll confirm a new PR gets labeled by `github-actions` (not manually). Also worth a separate cleanup: relabel #2144 `ci` -> `code-quality`, and deprecate the stale `ci` label (not part of the new scheme).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
PRs from
feat/*branches were labeledfeatureby the branch-glob labeler, but Release Drafter's "Features" category only matchedenhancement— so feature PRs silently dropped out of the changelog. Off-convention branches (docs/…,v2-api-polish) matched no rule and got no label at all, dropping them too. Thefeature/enhancementsplit was a duplicate with no real distinction, and several categories (refactoring,style,performance) had a changelog section but no labeler rule feeding them.Change
Drive labeling from the PR title (Conventional Commits) via Release Drafter's built-in
autolabeler, and retire the separateTimonVS/pr-labeler-action. One source of truth, robust to branch naming.Consolidate into five primary buckets plus Documentation:
!breakingfeat:featurefix:bugrefactor:perf:style:test:ci:chore:code-qualitybuild(deps):/ Dependabotdependenciesdocs:documentationBreaking changes route first (the
!rule is matched before the type label).Details
.github/release-drafter.yml— new categories +autolabeler..github/workflows/release-drafter.yml— addedpull_requesttrigger andpull-requests: writeso the autolabeler runs on PRs..github/pr-labeler.ymland.github/workflows/pr-labeler.yml.AGENTS.md— documents the prefix → label → section mapping.Repo labels (already applied)
code-quality.featurea description/color.enhancementDEPRECATED in its description (kept for historical issues).YAML validated; pre-commit (incl. actionlint) passes.