Skip to content

build: update changesets tooling - #2396

Merged
alexander-akait merged 2 commits into
mainfrom
build/update-changesets-tooling
Sep 2, 2026
Merged

build: update changesets tooling#2396
alexander-akait merged 2 commits into
mainfrom
build/update-changesets-tooling

Conversation

@alexander-akait

@alexander-akait alexander-akait commented Sep 2, 2026

Copy link
Copy Markdown
Member

Summary

Takes @changesets/get-github-info 1.0, which renamed its whole API, and rewrites .changeset/changelog-generator.mjs against it: getInfo/getInfoFromPullRequest became getCommitInfo/getPullRequestInfo, the links bag became per-entity markdownLink fields, and both lookups can now return undefined. Also takes dependabot's changesets/action v2.1.0 pin from #2384 (inputs unchanged), which supersedes that PR.

Rehearsed changeset version with the GitHub calls stubbed to the 1.0 response shape and confirmed byte-identical changelog lines across all three paths — commit lookup, pr: lookup, and the author:/commit: overrides. Against the real package it now fails only on missing credentials rather than a TypeError, which is the expected local outcome.

Babel 8 is not included: it declares engines: ^22.18.0 || >=24.11.0, so it does not run on Node 20, which this package supports (>= 20.9.0) and CI tests. Adopting it means dropping Node 20, which is a maintainer decision rather than a dependency bump — dependabot's #2337/#2338/#2343 are blocked on the same thing.

What kind of change does this PR introduce?

build

Did you add tests for your changes?

No — release tooling with no test surface; verified by rehearsing changeset version end to end and by npm ci plus the existing suite passing.

Does this PR introduce a breaking change?

No.

If relevant, what needs to be documented once your changes are merged or what have you already documented?

n/a

Use of AI

AI was used. Claude Code rewrote the changelog generator against the 1.0 API, rehearsed the release path with stubbed GitHub responses, diagnosed the babel 8 Node-baseline conflict, and drafted this description; every claim above was verified by running the commands.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KUpsHWHZG2FxHzJxRUvVv3


Generated by Claude Code

Summary by CodeRabbit

  • Bug Fixes

    • Improved changelog generation for dependency and release updates.
    • Commit, pull request, and author references are now handled more consistently, while preserving custom links and fallback behavior.
    • Removed empty release-line suffixes when no commit or pull request links are available.
  • Release Process

    • Updated release automation to improve reliability when preparing and publishing package releases.
    • Included a patch release for webpack-dev-middleware reflecting these changelog-generation improvements.

Move the changelog generator to the @changesets/get-github-info 1.0 API
(getInfo/getInfoFromPullRequest became getCommitInfo/getPullRequestInfo,
the links bag became per-entity markdownLink fields, and both lookups can
now return undefined), and take dependabot's changesets/action v2.1.0 pin.

The package is now ESM-only and ships an exports map with no main, which
the eslint import resolver cannot follow, so import/no-unresolved is off
for that one file.
@changeset-bot

changeset-bot Bot commented Sep 2, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f5754e3

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
webpack-dev-middleware Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@socket-security

socket-security Bot commented Sep 2, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​changesets/​get-github-info@​0.8.0 ⏵ 1.0.0100 +210090 -891100

View full report

@codecov

codecov Bot commented Sep 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.12%. Comparing base (a337174) to head (f5754e3).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2396   +/-   ##
=======================================
  Coverage   94.12%   94.12%           
=======================================
  Files           4        4           
  Lines        1242     1242           
  Branches      380      380           
=======================================
  Hits         1169     1169           
  Misses         65       65           
  Partials        8        8           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@coderabbitai

coderabbitai Bot commented Sep 2, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: e0d73986-3065-4855-866a-5d248cef8fb0

📥 Commits

Reviewing files that changed from the base of the PR and between bedeb1f and f5754e3.

📒 Files selected for processing (2)
  • .changeset/changelog-generator.mjs
  • .github/workflows/release.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .changeset/changelog-generator.mjs

Included review availability: Your plan provides up to 8 included reviews per hour; 6 remain after this review.


Walkthrough

The changelog generator now uses getCommitInfo and getPullRequestInfo from @changesets/get-github-info 1.0. It normalizes metadata into nullable commit, pull-request, and author links while preserving explicit commit links and fallback behavior. The dependency version and ESLint configuration were updated. A patch changeset was added, and the release workflow now uses changesets/action v2.1.0.

Merge Risk: 🔵 Low · up to f5754

This updates release tooling to a dependency that does not support the project's stated Node 20 baseline, so release commands may fail on supported Node 20 environments. The PR is otherwise mergeable with explicit maintainer awareness and a follow-up decision on the Node support baseline.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: updating Changesets tooling, including the GitHub info API and release action configuration.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files. (1 skipped: 1 …
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch build/update-changesets-tooling

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 2e176136-b188-4c73-918f-ecd96fb4becd

📥 Commits

Reviewing files that changed from the base of the PR and between a337174 and bedeb1f.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (5)
  • .changeset/changelog-generator.mjs
  • .changeset/update-changesets-tooling.md
  • .github/workflows/release.yml
  • eslint.config.mjs
  • package.json

Included review availability: Your plan provides up to 8 included reviews per hour; 7 remain after this review.

Comment thread .changeset/changelog-generator.mjs
Comment thread .github/workflows/release.yml
Comment thread package.json
"@babel/preset-env": "^7.29.7",
"@changesets/cli": "^3.0.1",
"@changesets/get-github-info": "^0.8.0",
"@changesets/get-github-info": "^1.0.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

🔎 Supported by static analysis

🏁 Script executed:

printf '%s\n' '--- package manifest ---'
sed -n '50,72p' package.json
printf '%s\n' '--- lockfile entries ---'
rg -n -A12 -B3 '"?`@changesets/get-github-info`|node_modules/@changesets/get-github-info|engines' package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null || true
printf '%s\n' '--- Node 20 baseline declarations ---'
rg -n -i 'node.?20|engines|setup-node|runtime' package.json .nvmrc .node-version .github 2>/dev/null | head -120

Repository: webpack/webpack-dev-middleware

Length of output: 50387


🏁 Script executed:

python3 - <<'PY'
import json
from pathlib import Path

for name in ("package.json", "package-lock.json"):
    p = Path(name)
    if not p.exists():
        continue
    data = json.loads(p.read_text())
    print(f"--- {name} ---")
    if name == "package.json":
        print("engines:", data.get("engines"))
        print("dependency:", data.get("devDependencies", {}).get("`@changesets/get-github-info`"))
        print("scripts:", {k:v for k,v in data.get("scripts", {}).items() if "release" in k or "change" in k})
    else:
        node = data.get("packages", {}).get("node_modules/@changesets/get-github-info")
        root = data.get("packages", {}).get("", {})
        print("root engines:", root.get("engines"))
        print("root devDependency:", root.get("devDependencies", {}).get("`@changesets/get-github-info`"))
        print("package entry:", node)
PY
printf '%s\n' '--- version-control and CI Node declarations ---'
for f in .nvmrc .node-version; do [ -f "$f" ] && { echo "[$f]"; cat "$f"; }; done
rg -n -i -g '!package-lock.json' -g '!node_modules' 'node-version|NODE_VERSION|node: *20|node 20|node\.js *20|engines' package.json .github README.md 2>/dev/null | head -160

Repository: webpack/webpack-dev-middleware

Length of output: 1870


🏁 Script executed:

printf '%s\n' '--- release workflow and install policy ---'
sed -n '1,120p' .github/workflows/release.yml
printf '%s\n' '--- package manager and npm engine policy ---'
for f in .npmrc .yarnrc .yarnrc.yml pnpm-workspace.yaml; do [ -f "$f" ] && { echo "[$f]"; cat "$f"; }; done
rg -n -i 'npm (ci|install)|yarn install|pnpm install|engine-strict|changeset|release' .github package.json . 2>/dev/null | head -180
printf '%s\n' '--- direct package references ---'
rg -n -F '`@changesets/get-github-info`' --glob '!package-lock.json' --glob '!node_modules' .

Repository: webpack/webpack-dev-middleware

Length of output: 12943


🏁 Script executed:

printf '%s\n' '--- changelog generator imports ---'
sed -n '1,100p' .changeset/changelog-generator.mjs
printf '%s\n' '--- package engine and Node 20 workflow context ---'
sed -n '96,114p' package.json
sed -n '55,88p' .github/workflows/nodejs.yml

Repository: webpack/webpack-dev-middleware

Length of output: 4720


Keep @changesets/get-github-info compatible with Node 20.

The repository supports Node >=20.9.0 and tests Node 20.x. The locked @changesets/get-github-info@1.0.0 declares only ^22.11 || ^24 || >=26. Use a Node 20-compatible version or raise the repository and workflow baseline together.

Source: MCP tools

v2 renamed every input this workflow passes (version -> version-script,
publish -> publish-script, commit -> commit-message, title -> pr-title),
so a bare SHA bump silently drops them. Without publish-script the action
only opens a version pull request and never publishes.

Also stop the changelog generator printing a literal 'null' when a
changeset names an author but GitHub reports no commit or pull request,
which 1.0 can now do because both lookups may return undefined.
@alexander-akait
alexander-akait merged commit 9133f47 into main Sep 2, 2026
20 checks passed
@alexander-akait
alexander-akait deleted the build/update-changesets-tooling branch September 2, 2026 10:13
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