Skip to content

fix(ci): render every commit type in the changelog - #3137

Merged
mfal merged 1 commit into
mainfrom
ci/changelog-render-every-type
Sep 9, 2026
Merged

mfal merged 1 commit into
mainfrom
ci/changelog-render-every-type

Conversation

@mfal

@mfal mfal commented Sep 8, 2026

Copy link
Copy Markdown
Member

changelogPreset was the bare string conventionalcommits, and that preset hides docs, style, chore, refactor, test, build and ci. A release one of those types triggered therefore had nothing to write, and Lerna emitted "Note: Version bump only" — four of the first fourteen post-1.0 releases.

Release relevance is decided by path, the changelog by type, so the two could never agree (#3023). A type gate on relevance is not the answer either: chore(deps): bump … changes what consumers resolve, and a docs: commit on a shipped AGENTS.md really does change the tarball (#2954 cut 1.0.11). If a commit was worth a release, it is worth a line.

lerna.json now configures changelogPreset as an object and respells the full types list with every hidden dropped. Unhiding changes nothing about the bump: without bumpStrict the preset's whatBump returns patch for any non-empty commit range regardless.

.github/scripts/changelog-preset.test.mjs asserts every type renders — against the preset's own writer.transform, which needs no git history and no rendering. It runs in test.yml with the other .github/scripts suites.

What stays unrenderable

Documented rather than fixed: a release whose cause lies outside every package — pnpm-lock.yaml, the root manifest, lerna.json. Lerna attributes commits per package; with no package changed, every changelog honestly reads "Version bump only". 1.1.11 is the live example, a lock-only Rollup bump.

This PR is itself such a case: it touches lerna.json, which is publish-relevant by path, so it will cut a version whose changelogs say exactly that.

The #3083 anomaly, resolved

1.1.6 shows a fix(codemods): entry in the components changelog because #3041 regenerated packages/components/MIGRATION.md — components genuinely changed. #3040 (1.1.1) touched no package but codemods and correctly reads "Version bump only". The per-package attribution is consistent; only the rendered scope is the commit's, never the changelog's package.

Split out of #3098

That PR carried three changes. This is the changelog half — orthogonal to the path classifier in #3098, which decides whether a release happens rather than what it says.

Fixes #3083. Part of #3023 — the type half.

🤖 Generated with Claude Code

@mfal
mfal requested a review from a team September 8, 2026 14:06
@mfal mfal self-assigned this Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

Coverage Report for ./packages/components/

Status Category Percentage Covered / Total
🔵 Lines 78.68% 779 / 990
🔵 Statements 78.59% 797 / 1014
🔵 Functions 79.82% 178 / 223
🔵 Branches 70.62% 404 / 572
File CoverageNo changed files found.
Generated in workflow #6715 for commit 50f55e3 by the Vitest Coverage Report Action

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

🚀 Preview Deployment

Preview environments are ready:

Type URL
docs pr-3137.docs.review.flow-components.de
storybook pr-3137.storybook.review.flow-components.de

Images:

  • docs: ghcr.io/mittwald/flow/docs:pr-3137
  • storybook: ghcr.io/mittwald/flow/storybook:pr-3137

`changelogPreset` was the bare string `conventionalcommits`, and that preset
hides `docs`, `style`, `chore`, `refactor`, `test`, `build` and `ci`. A release
those types triggered therefore had nothing to write and Lerna emitted
"**Note:** Version bump only" — four of the first fourteen post-1.0 releases.

Release relevance is decided by PATH, the changelog by TYPE, so the two could
never agree (#3023): `chore(deps): bump …` changes what consumers resolve, and
a `docs:` commit on a shipped `AGENTS.md` really does change the tarball (#2954
cut 1.0.11). If a commit was worth a release it is worth a line.

`changelogPreset` becomes an object that respells the full `types` list with
every `hidden` dropped. Unhiding changes nothing about the bump: without
`bumpStrict` the preset's `whatBump` returns patch for any non-empty commit
range regardless.

`changelog-preset.test.mjs` asserts every type renders, against the preset's
own `writer.transform` — no git history, no rendering. It runs in `test.yml`
with the other `.github/scripts` suites.

What stays unrenderable, and is documented rather than fixed: a release whose
cause lies outside every package — `pnpm-lock.yaml`, the root manifest,
`lerna.json`. Lerna attributes commits per package, so with no package changed
every changelog honestly reads "Version bump only". 1.1.11 is the live
example, a lock-only Rollup bump.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mfal
mfal force-pushed the ci/changelog-render-every-type branch from 1622d7b to 50f55e3 Compare September 8, 2026 14:18
@mfal
mfal enabled auto-merge (squash) September 8, 2026 14:20
@mfal
mfal requested a review from ins0 September 8, 2026 14:20
@mfal
mfal merged commit 8f28777 into main Sep 9, 2026
22 checks passed
@mfal
mfal deleted the ci/changelog-render-every-type branch September 9, 2026 10:46
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.

Releases with an empty changelog: the type-based half, plus the relevance residue after #3081

2 participants