Skip to content

Use changesets instead of beachball - #1757

Open
JonasDov wants to merge 8 commits into
masterfrom
JonasD/changesets
Open

Use changesets instead of beachball#1757
JonasDov wants to merge 8 commits into
masterfrom
JonasD/changesets

Conversation

@JonasDov

@JonasDov JonasDov commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

closes #1125

  • Replaced beachball with changesets.
  • Packages in the repo from now on will be released with an automated release pr.
  • Added CI protection against manual public package version changes. Version changes should be done with release PRs.
  • Added changeset generation script that:
    • Rejects empty changesets.
    • Prefixes single-package changesets with the package name: allows codeowners to be assigned correctly.
    • Prefixes multi-package changesets with "multi-package".
  • Updated CODEOWNERS.

New release Workflow

  • Contributors run pnpm change for changes requiring a release.
  • Changesets are reviewed with the feature PR; changes without releases need none.
  • After merge to master, Changesets creates or updates a release PR with versions and changelogs.
  • Merging the release PR builds and publishes packages to npm.

Release PRs update package CHANGELOG.md files with package-specific CODEOWNERS rules. All release PRs require approval from VCR reviewers. For tree-widget, property-grid, and quantity-formatting, Presentation reviewers may approve instead.

PRs containing changesets require VCR approval. Presentation reviewers may approve single-package changesets for tree-widget and property-grid, or any changeset marked multi-package.

Copilot AI review requested due to automatic review settings July 31, 2026 12:06
@JonasDov
JonasDov requested a review from a team as a code owner July 31, 2026 12:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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.

Comment thread .github/workflows/ci.yml Outdated
Comment thread .changeset/changelog-github.mjs Outdated
Comment thread scripts/create-changeset.js Outdated
Comment thread .github/CODEOWNERS
@JonasDov
JonasDov requested a review from a team as a code owner July 31, 2026 12:36
@JonasDov
JonasDov requested a review from aruniverse July 31, 2026 12:37

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

  • base defaults to origin/master, which can be missing in local clones (or any environment without that remote ref), causing git diff origin/master...HEAD to throw and the script to fail even when there are no version changes. Since this repo’s base branch is master, defaulting to master is more robust; CI already passes an explicit base SHA.
const base = process.argv[2] ?? "origin/master";

@github-actions github-actions 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.

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.

Comment thread .changeset/config.json
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "master",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

what about for dev builds for tree-widget/next

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

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).

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.

Switch from beachball to changesets

3 participants