build: upgrade semantic-release to 25 and clear handlebars advisory - #133
Merged
Conversation
- Bump semantic-release ^20.1.1 -> ^25.0.5 (devDependency; used only by the manual Release workflow on CI Node 24). @semantic-release/git@10.0.1 is kept as-is: its peer range is `semantic-release: >=18.0.0`, so sr25 is satisfied. The bundled plugins auto-resolve to their sr25-compatible majors (commit-analyzer@13, release-notes-generator@14, npm@13, github@12). - Add pnpm.overrides.handlebars ^4.7.9 to move the dev-only transitive handlebars off 4.7.8, clearing the advisories the dependency-review gate fails on (GHSA-2w6w-674q-4c4q critical; GHSA-7rx3-28cr-v5wh, GHSA-2qvq-rjwj-gvw9 moderate; all patched in 4.7.9). handlebars is build-time only (via conventional-changelog-writer); the sole runtime dependency remains @popperjs/core. No src/, build-config, or workflow changes.
chhoumann
marked this pull request as ready for review
June 27, 2026 21:37
|
🎉 This PR is included in version 1.9.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
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.
Summary
Modernizes the release/dependency tooling, isolated from the build/runtime migration (#118, Phase 3):
semantic-release^20.1.1->^25.0.5(devDependency).pnpm.overrides.handlebars: "^4.7.9"to clear a batch of handlebars advisories thedependency-reviewgate fails on.Only
package.jsonandpnpm-lock.yamlchange. Nosrc/, Svelte, tsconfig, Rollup, or workflow changes.Why
semantic-release 20 is several majors behind. This brings it to current (25.0.5) and removes the one pre-existing dev-tooling advisory (handlebars 4.7.8) that the moderate+
dependency-reviewgate would flag once the lockfile is touched. Releases are manual (workflow_dispatch), so nothing here auto-triggers a release.Compatibility verification
@semantic-release/git@10.0.1kept as-is - its peer range issemantic-release: ">=18.0.0", which sr25 satisfies. No newer major exists; no bump needed.commit-analyzer@13.0.1,release-notes-generator@14.1.1,npm@13.1.5,github@12.0.8.^22.14.0 || >=24.10.0. CI/Release run Node 24 (check-latest: true), so the release job satisfies it. The plugin's ownengines.node(>=20.18.1) is left untouched - it describes the runtime to use the plugin and is independent of the dev-only release toolchain.semantic-release dry-run proof
npx semantic-release --dry-run --no-ci(repo config, no overrides) runs clean under 25.0.5 - all five plugins load,verifyConditionsfor npm/git/github pass, and it correctly reports no release because the PR branch is notmaster:Re-running with the (now-pushed) branch treated as the release branch proves version computation is sane (all side-effecting steps skipped in dry-run):
Verified no side effects: no
1.9.0tag (local or remote), GitHub releases still top out at1.8.4.handlebars advisory + override rationale
handlebars is dev/build-time only (pulled via
conventional-changelog-writer);pnpm why --prod handlebarsis empty and the sole runtime dependency remains@popperjs/core. handlebars<= 4.7.8carries multiple advisories, all patched in 4.7.9:GHSA-2w6w-674q-4c4q- critical - JS injection via AST type confusionGHSA-7rx3-28cr-v5wh- moderate - prototype method access control gapGHSA-2qvq-rjwj-gvw9- moderate - prototype pollution -> XSSThe override moves the tree to a single
handlebars@4.7.9node (confirmed viapnpm why handlebarsand lockfile). It is needed because the sr20->25 bump changes handlebars' parent, so without pinning, handlebars could re-resolve as a changed node at 4.7.8 and trip the gate.dependency-review gate analysis
The gate fails only on newly-introduced moderate+ advisories. I diffed the master lockfile against the regenerated one (131 packages added, 147 removed) and intersected the added
package@versionset with the GitHub Advisory DB (pnpm audit):4.7.8is removed and4.7.9added (a vuln removal, not an introduction).So the bump introduces no new advisories and clears the handlebars one.
Validation
pnpm install --frozen-lockfilepnpm run buildpnpm run testpnpm run lint.svelte/logger warnings, untouched)pnpm why --prod handlebarsRisk / rollout
Dev-tooling only; no runtime or source changes. The Release workflow is manual, so this does not auto-trigger a release. Lockfile is regenerated and passes
--frozen-lockfile.Refs #118