Filed by the repo:hotcrm seat while reviewing dependabot PR #1264 (@changesets/cli 2.31.1 → 3.0.1) in R26. ⛔ PR #1264 must not be merged as it stands — the reason is below. Unassigned.
The blocking finding
@changesets/cli 3.0.0 ships 18 breaking changes. One of them is:
Private packages are no longer versioned by default.
Measured against this repo on main @ cc8dfc74, package.json declares:
"name": "hotcrm",
"version": "3.0.0",
"private": true,
⇒ hotcrm is a single private package that versions itself through changesets. .changeset/config.json does not set a privatePackages option, so on 3.x it takes the new default.
⭐ The failure mode is silence, not a crash. changeset version would stop bumping the version and stop generating CHANGELOG.md — and it would exit successfully while doing nothing. Nothing in PR CI exercises the release path, so the whole gate suite stays green. The first observation point is the next release, which is a human-gated action (maintainer, 2026-08-27: 「要发版本我会自己点。」), and by then the tool has been silently inert for however long.
⚠️ This is a reading of the documented breaking change, ⛔ not a measurement. This seat did not run changeset version against 3.0.1. Verifying it empirically is the first task on this card, and "the default turns out not to affect a single-package repo" is a perfectly good outcome — report it and this card shrinks to a plain bump.
The rest of the 18, measured against this repo
Also needs action:
| change |
this repo |
verdict |
Node support bumped to ^22.11 || ^24 || >=26 |
declares "node": ">=22" |
⚠️ Declared floor becomes wrong — >=22 admits 22.0–22.10, which 3.x rejects. The CI job is "Build and Test (22.x)" and almost certainly resolves above 22.11, so this is a correctness problem in the declaration, not a live break. Bump the floor in the same PR. |
changeset version now exits 1 when there are no unreleased changesets (was 0) |
"changeset:version": "changeset version" |
⚠️ Any automation calling it unconditionally now fails. ⭐ Compounds with the finding above: if private packages stop being versioned, "nothing to release" may become the normal outcome, turning a silent no-op into a hard failure at release time. |
$schema pins @changesets/config@3.1.2 |
in .changeset/config.json |
Check whether 3.x's config package moves; the format option below lives in that schema. |
Measured, no action needed (recorded so the next reader does not re-derive them):
prettier config option removed in favour of format — this repo's config does not set prettier. ✅
changeset tag renamed to changeset git-tag — this repo never calls changeset tag. ✅
--sinceMaster removed from changeset status — this repo uses --since, in both package.json and .github/workflows/changeset-check.yml. ✅
- pnpm
>=10.0.0 required — repo declares "pnpm": ">=10.0.0" and packageManager: pnpm@10.33.0. ✅
- Now published as an ES module — this repo only invokes the CLI binary from scripts; nothing imports it programmatically. ✅
- Yarn Classic support dropped, Bolt monorepo detection dropped,
pre.json initialVersions removed, enquirer → @clack/prompts, peer-dependency bumps now patch instead of major, prerelease changesets move to a pre/ subfolder, v1-config warnings removed, private-package snapshot config removed — none apply: this repo is a single pnpm package, not in prerelease mode, with no peer dependencies of its own. ✅
Scope
Take the 3.x upgrade properly, in one PR: the dependency bump plus whatever configuration the breaking changes require — at minimum the privatePackages decision and the engines.node floor — and prove the release path still versions this package and still generates CHANGELOG.md.
⛔ Prove it by running the tool, not by reading its docs. The whole point of this card is that the documentation is what PR #1264's green did not cover. A dry run of changeset version on a scratch branch, showing the version bumped and the changelog section written, is the deliverable. ⛔ Do not commit the result of that dry run.
⛔ Do not hand-edit CHANGELOG.md — see #1443, which is a live card about exactly that instruction being stale. ⚠️ #1443 and this card both touch the changeset/CHANGELOG story but in different files (#1443 edits AGENTS.md, a governed surface). ⛔ Not in the same batch.
⛔ Do not close PR #1264 as part of this work. When a 3.x bump lands, dependabot closes it on its own.
If the answer is "stay on 2.x"
That is an acceptable outcome and it is not a silent one: nothing forces this upgrade, ^2.31.1 is working, and 18 breaking changes for a tool that is doing its job is a real cost. If you reach that conclusion with evidence, say so on this card and on #1264, and this seat will close both — ⛔ but do not reach it merely because the upgrade turns out to be fiddly.
Refs PR #1264 (the bare bump), #1443 (the stale CHANGELOG.md instruction), #1353 (seat post).
Filed by the
repo:hotcrmseat while reviewing dependabot PR #1264 (@changesets/cli2.31.1 → 3.0.1) in R26. ⛔ PR #1264 must not be merged as it stands — the reason is below. Unassigned.The blocking finding
@changesets/cli3.0.0 ships 18 breaking changes. One of them is:Measured against this repo on
main@cc8dfc74,package.jsondeclares:⇒ hotcrm is a single private package that versions itself through changesets.
.changeset/config.jsondoes not set aprivatePackagesoption, so on 3.x it takes the new default.⭐ The failure mode is silence, not a crash.
changeset versionwould stop bumping the version and stop generatingCHANGELOG.md— and it would exit successfully while doing nothing. Nothing in PR CI exercises the release path, so the whole gate suite stays green. The first observation point is the next release, which is a human-gated action (maintainer, 2026-08-27: 「要发版本我会自己点。」), and by then the tool has been silently inert for however long.changeset versionagainst 3.0.1. Verifying it empirically is the first task on this card, and "the default turns out not to affect a single-package repo" is a perfectly good outcome — report it and this card shrinks to a plain bump.The rest of the 18, measured against this repo
Also needs action:
^22.11 || ^24 || >=26"node": ">=22">=22admits 22.0–22.10, which 3.x rejects. The CI job is "Build and Test (22.x)" and almost certainly resolves above 22.11, so this is a correctness problem in the declaration, not a live break. Bump the floor in the same PR.changeset versionnow exits 1 when there are no unreleased changesets (was 0)"changeset:version": "changeset version"$schemapins@changesets/config@3.1.2.changeset/config.jsonformatoption below lives in that schema.Measured, no action needed (recorded so the next reader does not re-derive them):
prettierconfig option removed in favour offormat— this repo's config does not setprettier. ✅changeset tagrenamed tochangeset git-tag— this repo never callschangeset tag. ✅--sinceMasterremoved fromchangeset status— this repo uses--since, in bothpackage.jsonand.github/workflows/changeset-check.yml. ✅>=10.0.0required — repo declares"pnpm": ">=10.0.0"andpackageManager: pnpm@10.33.0. ✅pre.jsoninitialVersionsremoved,enquirer→@clack/prompts, peer-dependency bumps nowpatchinstead ofmajor, prerelease changesets move to apre/subfolder, v1-config warnings removed, private-package snapshot config removed — none apply: this repo is a single pnpm package, not in prerelease mode, with no peer dependencies of its own. ✅Scope
Take the 3.x upgrade properly, in one PR: the dependency bump plus whatever configuration the breaking changes require — at minimum the
privatePackagesdecision and theengines.nodefloor — and prove the release path still versions this package and still generatesCHANGELOG.md.⛔ Prove it by running the tool, not by reading its docs. The whole point of this card is that the documentation is what PR #1264's green did not cover. A dry run of
changeset versionon a scratch branch, showing the version bumped and the changelog section written, is the deliverable. ⛔ Do not commit the result of that dry run.⛔ Do not hand-edit⚠️ #1443 and this card both touch the changeset/CHANGELOG story but in different files (#1443 edits
CHANGELOG.md— see #1443, which is a live card about exactly that instruction being stale.AGENTS.md, a governed surface). ⛔ Not in the same batch.⛔ Do not close PR #1264 as part of this work. When a 3.x bump lands, dependabot closes it on its own.
If the answer is "stay on 2.x"
That is an acceptable outcome and it is not a silent one: nothing forces this upgrade,
^2.31.1is working, and 18 breaking changes for a tool that is doing its job is a real cost. If you reach that conclusion with evidence, say so on this card and on #1264, and this seat will close both — ⛔ but do not reach it merely because the upgrade turns out to be fiddly.Refs PR #1264 (the bare bump), #1443 (the stale
CHANGELOG.mdinstruction), #1353 (seat post).