fix: prevent changesets from bumping 0.x to 1.0.0#483
Conversation
Changesets' peer dependency logic was escalating minor bumps to major for all packages in the fixed group. Three changes: - Remove plugins from the fixed group (they peer-depend on emdash, triggering shouldBumpMajor on any minor release) - Enable onlyUpdatePeerDependentsWhenOutOfRange so the version range is actually checked before escalating - Change plugin peer deps from workspace:* (resolves to exact version) to workspace:>=0.1.0 (satisfies any 0.x bump)
|
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
emdash-playground | ef28a18 | Apr 12 2026, 02:03 PM |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/blocks
@emdash-cms/cloudflare
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
There was a problem hiding this comment.
Pull request overview
Adjusts Changesets and workspace dependency metadata so releases from the current 0.x series don’t get incorrectly escalated to 1.0.0 due to peer dependency bump rules and fixed-group propagation.
Changes:
- Removes plugin packages from the Changesets
fixedgroup so plugin bumps don’t propagate as majors across the whole workspace. - Enables Changesets’
onlyUpdatePeerDependentsWhenOutOfRangeexperimental option to avoid unnecessary peer-dependent major bumps. - Updates plugin
emdashpeer dependency specifiers fromworkspace:*to a rangedworkspace:protocol, and updatespnpm-lock.yamlaccordingly.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Updates workspace specifiers for emdash in plugin importers to match new ranged workspace protocol usage. |
| packages/plugins/webhook-notifier/package.json | Switches emdash peer dependency off workspace:* to a ranged workspace protocol. |
| packages/plugins/forms/package.json | Switches emdash peer dependency off workspace:* to a ranged workspace protocol. |
| packages/plugins/embeds/package.json | Switches emdash peer dependency off workspace:* to a ranged workspace protocol. |
| packages/plugins/color/package.json | Switches emdash peer dependency off workspace:* to a ranged workspace protocol. |
| packages/plugins/audit-log/package.json | Switches emdash peer dependency off workspace:* to a ranged workspace protocol. |
| packages/plugins/atproto/package.json | Switches emdash peer dependency off workspace:* to a ranged workspace protocol. |
| packages/plugins/api-test/package.json | Switches emdash peer dependency off workspace:* to a ranged workspace protocol. |
| packages/plugins/ai-moderation/package.json | Switches emdash peer dependency off workspace:* to a ranged workspace protocol. |
| .changeset/config.json | Removes plugins from the fixed group and enables onlyUpdatePeerDependentsWhenOutOfRange. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "license": "MIT", | ||
| "peerDependencies": { | ||
| "emdash": "workspace:*" | ||
| "emdash": "workspace:>=0.1.0" |
| "peerDependencies": { | ||
| "astro": ">=6.0.0-beta.0", | ||
| "emdash": "workspace:*", | ||
| "emdash": "workspace:>=0.1.0", |
| "peerDependencies": { | ||
| "astro": ">=6.0.0-beta.0", | ||
| "emdash": "workspace:*" | ||
| "emdash": "workspace:>=0.1.0" |
| "license": "MIT", | ||
| "peerDependencies": { | ||
| "emdash": "workspace:*", | ||
| "emdash": "workspace:>=0.1.0", |
| "license": "MIT", | ||
| "peerDependencies": { | ||
| "emdash": "workspace:*" | ||
| "emdash": "workspace:>=0.1.0" |
| "license": "MIT", | ||
| "peerDependencies": { | ||
| "emdash": "workspace:*" | ||
| "emdash": "workspace:>=0.1.0" |
| "license": "MIT", | ||
| "peerDependencies": { | ||
| "emdash": "workspace:*", | ||
| "emdash": "workspace:>=0.1.0", |
| "license": "MIT", | ||
| "peerDependencies": { | ||
| "emdash": "workspace:*", | ||
| "emdash": "workspace:>=0.1.0", |
Adds a check before changeset versioning that fails if any package would get a major bump. Safety net while in 0.x pre-release.
What does this PR do?
The changesets release PR was bumping all packages from
0.1.1to1.0.0instead of0.2.0. This was caused by changesets' peer dependency logic: whenemdashgets aminorbump, every plugin that peer-depends on it withworkspace:*(which resolves to the exact old version) triggersshouldBumpMajor, and thefixedgroup propagates that major bump to all packages.Three changes to fix:
fixedgroup — they peer-depend onemdash, which triggers the major escalation. Core packages remain fixed together.onlyUpdatePeerDependentsWhenOutOfRange— by default changesets always escalates peer dep bumps to major without checking the range. This flag makes it actually check.workspace:*toworkspace:>=0.1.0—workspace:*resolves to the exact old version (e.g.0.1.1), which any bump falls outside of.>=0.1.0satisfies any 0.x version, preventing the escalation.Verified with
changeset status: core packages bump to minor, plugins to patch, no majors.Type of change
Checklist
pnpm typecheckpassespnpm lintpassespnpm formathas been runAI-generated code disclosure