Skip to content

fix: pin conventional-changelog-conventionalcommits to avoid writer conflict - #33

Merged
joris974 merged 1 commit into
mainfrom
joris/pin-conventional-changelog-preset
Aug 26, 2026
Merged

fix: pin conventional-changelog-conventionalcommits to avoid writer conflict#33
joris974 merged 1 commit into
mainfrom
joris/pin-conventional-changelog-preset

Conversation

@joris974

@joris974 joris974 commented Aug 26, 2026

Copy link
Copy Markdown
Member

Templates seed every new repo, so an unpinned preset here keeps planting the failure freckle/maybe-js#162 hit:

Error: Missing helper: "conventional-changelog-conventionalcommits requires
conventional-changelog-writer@9 or newer ..."

Cause

Listed bare, the preset is not a tracked dependency — npm resolves it fresh on every workflow run. 10.0.0 published 2026-06-26 and requires conventional-changelog-writer@9, which the action does not supply:

cycjimmy/semantic-release-action@v6.0.0
  └─ semantic-release@^25
       └─ @semantic-release/release-notes-generator@^14.1.0
            └─ conventional-changelog-writer@^8.0.0

Nothing on our side bumps that writer — it moves when release-notes-generator moves.

Why major 9, not 8

The monorepo moves preset and writer in lock-step, so the matched pair for writer@8 is preset 9:

preset published writer published same day
7.0.0 2023-08-27 writer 7.0.0
8.0.0 2024-05-03 writer 8.0.0
9.0.0 2025-05-19 writer 8.1.0
10.0.0 2026-06-26 writer 9.0.0

Preset 9 shipped into the writer-8 line, so it is the newest major compatible with what we actually run; 8 would just be older for no benefit. Pinned major-only so 9.x fixes keep flowing.

Evidence it works: @9 resolves to 9.3.1 today, and freckle/parser-js#268 has been on that since 2026-08-21 — publishing v3.0.0, v3.0.1 and v4.0.0 with fully rendered notes (compare links, ⚠ BREAKING CHANGES, ### Features). That markup comes from the preset via the writer, which is exactly where Missing helper throws, so this is the real code path exercised, not just a green exit code.

The comment sits above with:, not inside the extra_plugins block scalar where a # line would be read as a plugin name.

Context

That one publish armed every freckle repo listing the preset bare. Fixed in the same pass: the repos currently failing on it (maybe-js, aws-s3-lock-action, i18n-scripts-js, stack-lint-extra-deps) and the other two templates. ~13 repos still carry the bare entry but have not tripped it yet — those are being left until they actually fail.

Durable follow-up

The lasting half belongs in freckle/renovate-config, which every affected repo already extends: a customManagers regex entry (renovate's github-actions manager only parses uses: refs, so it cannot see a version inside a with: input) plus allowedVersions: "<10" — the same shape as the existing typescript / !/^7\.0/ rule. Renovate cannot retrofit the repos still listing the preset bare, though: with no version string there is nothing for it to match.

🤖 Generated with Claude Code

…onflict

The preset floats to 10.x, which requires conventional-changelog-writer@9.
cycjimmy/semantic-release-action@v6.0.0 runs semantic-release@25, whose
@semantic-release/release-notes-generator@14 still resolves writer@8, so
releases die with `Missing helper: "..."`.

Holds it at 9.3.1, matching freckle/parser-js#268. Templates especially,
since every repo generated from one inherits the bare entry.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@joris974
joris974 requested a review from a team as a code owner August 26, 2026 16:55
@joris974
joris974 requested review from cdmren and removed request for a team August 26, 2026 16:55
@joris974
joris974 merged commit 4741edb into main Aug 26, 2026
@joris974
joris974 deleted the joris/pin-conventional-changelog-preset branch August 26, 2026 16:56
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.

2 participants