Skip to content

fix(release): restore release-notes generation (pin conventional-changelog preset to v9)#1560

Merged
dawsontoth merged 1 commit into
stagefrom
claude/release-notes-generator-regression-fc9ed8
Jul 24, 2026
Merged

fix(release): restore release-notes generation (pin conventional-changelog preset to v9)#1560
dawsontoth merged 1 commit into
stagefrom
claude/release-notes-generator-regression-fc9ed8

Conversation

@dawsontoth

Copy link
Copy Markdown
Contributor

What broke

Every GitHub release from v2.131.0 onward has had empty notes — just the ## [x.y.z](compare) (date) header line, no ### Features / ### Bug Fixes sections. v2.130.0 (2026-07-02) was the last good one.

Root cause

The conventionalcommits preset is not a declared dependency of @semantic-release/release-notes-generator — the generator loads it from the project root at runtime, so its version floats with the rest of the tree.

Commit 2b3ed70 ("fix(deps): update all non-major dependencies", in the v2.131.0 window) bumped @commitlint/config-conventional 21.1.0 → 21.2.0, moving its preset dep ^9.2.0^10.0.0. Since that's the only package declaring the preset, the whole tree jumped conventional-changelog-conventionalcommits 9.3.1 → 10.2.1.

The incompatibility:

  • release-notes-generator@14.1.1 (the latest — there is no newer version) bundles the Handlebars-based conventional-changelog-writer@8.
  • Preset v9 ships its templates as Handlebars strings ({{#each commitGroups}}…) → writer@8 renders them fine.
  • Preset v10 rewrote those templates as JS functions for the new @conventional-changelog/template engine (meant for writer@9). Fed to writer@8, only the header survives — every commit group renders empty.

Reproduced both sides against the exact .releaserc.json config and real commits: preset v10 → header only; preset v9 → fully categorized.

The fix

A single pnpm override in pnpm-workspace.yaml — same pattern as the existing jsdom>undici pin, holding a transitive dep back until the consumer catches up:

'conventional-changelog-conventionalcommits': '^9.3.1'

Verified: lockfile now resolves only 9.3.1 (no v10); an isolated run with the locked combo produces correct categorized notes; and @commitlint/config-conventional@21.2.0 still lints correctly on preset v9 (it only uses the preset's stable parserOpts). Takes effect on the next release via pnpm release in deploy-stage.yaml.

Also done (outside this diff)

Backfilled the notes for all 57 already-published releases (v2.131.0 → v2.154.4) by regenerating from each tag range with the fixed v9 preset and splicing the sections under the original header (preserving real release dates).

Watch out

  • Renovate will retry bumping @commitlint/config-conventional (dragging the preset to v10). The override holds it; don't drop the pin until release-notes-generator ships a writer@9-based major.

🤖 Generated with Claude Code

…ase notes

@commitlint/config-conventional@21.2.0 bumped the shared
conventional-changelog-conventionalcommits preset to v10, whose
function-based templates target conventional-changelog-writer@9. But
@semantic-release/release-notes-generator@14.1.1 (latest) still renders
with the Handlebars-based writer@8, so v10's templates emitted only the
header line — every release from v2.131.0 onward had empty notes.

Hold the preset on 9.x via a pnpm override until release-notes-generator
ships a writer@9-based major. commitlint keeps working on v9 (it only uses
the preset's stable parserOpts).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@dawsontoth
dawsontoth requested a review from a team as a code owner July 24, 2026 21:15

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request downgrades the conventional-changelog-conventionalcommits package to version 9.3.1 via overrides in pnpm-workspace.yaml and updates pnpm-lock.yaml accordingly. This change addresses a regression where release notes collapsed to only their header lines due to an incompatibility between version 10's template engine and the older writer bundled by @semantic-release/release-notes-generator. There are no review comments, and we have no feedback to provide.

@github-actions

Copy link
Copy Markdown

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 52.34% 5629 / 10753
🔵 Statements 52.87% 6019 / 11384
🔵 Functions 44.76% 1390 / 3105
🔵 Branches 45.31% 3781 / 8344
File CoverageNo changed files found.
Generated in workflow #1591 for commit ff2deac by the Vitest Coverage Report Action

@dawsontoth
dawsontoth merged commit 0dbbdba into stage Jul 24, 2026
2 checks passed
@dawsontoth
dawsontoth deleted the claude/release-notes-generator-regression-fc9ed8 branch July 24, 2026 21:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant