Use changesets instead of beachball - #1757
Conversation
There was a problem hiding this comment.
Pull request overview
This PR migrates the repo’s release tooling from Beachball to Changesets, introducing a Changesets-based contributor workflow, automated release PR generation/publishing, and CI safeguards to prevent manual version edits on feature PRs.
Changes:
- Replaced Beachball scripts/config/pipeline with Changesets CLI + GitHub Actions release workflow.
- Added helper scripts for changeset creation (with filename prefixing for CODEOWNERS) and CI checks preventing manual public package version changes.
- Updated contributor guidance and CODEOWNERS to reflect the new changeset/release process.
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
scripts/create-changeset.js |
Runs changeset add and renames the generated file to include a package-based prefix for CODEOWNERS routing. |
scripts/check-package-versions.js |
CI helper to reject manual version changes for public packages outside the Changesets release PR flow. |
package.json |
Removes Beachball commands and adds Changesets-based change and release scripts plus version-check script. |
pnpm-lock.yaml |
Updates lockfile to remove Beachball and add Changesets (and related dependency graph updates). |
CONTRIBUTING.md |
Updates contributor workflow documentation to require changesets for releasable changes and describes the new release process. |
.github/workflows/ci.yml |
Replaces Beachball “check change files” job with a version-change protection job. |
.github/workflows/changeset-release.yml |
Adds Changesets automation to open/update a release PR and publish to npm when merged. |
.github/CODEOWNERS |
Updates ownership rules for generated changeset files and package changelogs. |
.changeset/README.md |
Adds repository-local documentation for the .changeset directory purpose and workflow. |
.changeset/config.json |
Adds Changesets configuration including base branch and changelog generator wiring. |
.changeset/changelog-github.mjs |
Custom changelog generator that attempts to link changelog lines to PRs via GitHub API. |
beachball.config.js |
Removed Beachball configuration. |
beachball.config.dev.js |
Removed Beachball dev-release configuration. |
.pipelines/publish.yaml |
Removed Beachball-based publish pipeline. |
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 15 out of 16 changed files in this pull request and generated no new comments.
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
Suppressed comments (1)
scripts/check-package-versions.js:16
basedefaults toorigin/master, which can be missing in local clones (or any environment without that remote ref), causinggit diff origin/master...HEADto throw and the script to fail even when there are no version changes. Since this repo’s base branch ismaster, defaulting tomasteris more robust; CI already passes an explicit base SHA.
const base = process.argv[2] ?? "origin/master";
There was a problem hiding this comment.
Tree-Widget benchmark
| Benchmark suite | Current: 1a05687 | Previous: e4c6fe1 | Deviation | Status |
|---|---|---|---|---|
models tree creates initial filtered view for 50k target items |
1108 ms |
1059 ms |
4.63% |
〰️ |
models tree creates initial filtered view for 50k target items (P95 of main thread blocks) |
137 ms |
97 ms |
41.24% |
〰️ |
models tree validates categories visibility for imodel with 50k categories |
12132 ms |
11119 ms |
9.11% |
〰️ |
models tree validates categories visibility for imodel with 50k categories (P95 of main thread blocks) |
98 ms |
84 ms |
16.67% |
〰️ |
models tree changing model visibility changes visibility for 50k elements |
3518 ms |
3096 ms |
13.63% |
🚨 |
models tree changing model visibility changes visibility for 50k elements (P95 of main thread blocks) |
129 ms |
123 ms |
4.88% |
〰️ |
models tree changing category visibility changes visibility for 50k elements |
3451 ms |
2625 ms |
31.47% |
🚨 |
models tree changing category visibility changes visibility for 50k elements (P95 of main thread blocks) |
30 ms |
0 ms |
3000% |
〰️ |
models tree changing per-model-category override changes visibility for 50k elements |
3466 ms |
2706 ms |
28.09% |
🚨 |
models tree changing per-model-category override changes visibility for 50k elements (P95 of main thread blocks) |
0 ms |
0 ms |
0% |
🟰 |
models tree changing element visibility changes only parent nodes visibility with 50k elements |
5299 ms |
4817 ms |
10.01% |
🚨 |
models tree changing element visibility changes only parent nodes visibility with 50k elements (P95 of main thread blocks) |
84 ms |
96 ms |
-12.50% |
〰️ |
categories tree creates initial filtered view for 50k items |
1714 ms |
1424 ms |
20.37% |
🚨 |
categories tree creates initial filtered view for 50k items (P95 of main thread blocks) |
462 ms |
278 ms |
66.19% |
🚨 |
categories tree changing definition container visibility changes visibility for 50k subCategories |
2823 ms |
3160 ms |
-10.66% |
✅ |
categories tree changing definition container visibility changes visibility for 50k subCategories (P95 of main thread blocks) |
52 ms |
41 ms |
26.83% |
〰️ |
categories tree changing definition container visibility changes visibility for 50k categories |
6051 ms |
5719 ms |
5.81% |
〰️ |
categories tree changing definition container visibility changes visibility for 50k categories (P95 of main thread blocks) |
128 ms |
131 ms |
-2.29% |
〰️ |
This comment was automatically generated by workflow using github-action-benchmark.
| "fixed": [], | ||
| "linked": [], | ||
| "access": "public", | ||
| "baseBranch": "master", |
There was a problem hiding this comment.
what about for dev builds for tree-widget/next
There was a problem hiding this comment.
This PR includes all changes which are needed for master branch releases to work. After merging master to next I will create a separate PR for updating the config & whatever else is necessary for releases on next to work (those changes will live on next).
closes #1125
beachballwithchangesets.New release Workflow
Release PRs update package
CHANGELOG.mdfiles with package-specificCODEOWNERSrules. All release PRs require approval from VCR reviewers. Fortree-widget,property-grid, andquantity-formatting, Presentation reviewers may approve instead.PRs containing changesets require VCR approval. Presentation reviewers may approve single-package changesets for
tree-widgetandproperty-grid, or any changeset markedmulti-package.