Skip to content

Use changesets instead of beachball - #1757

Merged
JonasDov merged 11 commits into
masterfrom
JonasD/changesets
Aug 3, 2026
Merged

Use changesets instead of beachball#1757
JonasDov merged 11 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: 8c0bbf8 Previous: e4c6fe1 Deviation Status
models tree creates initial filtered view for 50k target items 1027 ms 1059 ms -3.02% 〰️
models tree creates initial filtered view for 50k target items (P95 of main thread blocks) 106 ms 97 ms 9.28% 〰️
models tree validates categories visibility for imodel with 50k categories 11518 ms 11119 ms 3.59% 〰️
models tree validates categories visibility for imodel with 50k categories (P95 of main thread blocks) 79 ms 84 ms -5.95% 〰️
models tree changing model visibility changes visibility for 50k elements 3404 ms 3096 ms 9.95% 〰️
models tree changing model visibility changes visibility for 50k elements (P95 of main thread blocks) 109 ms 123 ms -11.38% 〰️
models tree changing category visibility changes visibility for 50k elements 2957 ms 2625 ms 12.65% 🚨
models tree changing category visibility changes visibility for 50k elements (P95 of main thread blocks) 0 ms 0 ms 0% 🟰
models tree changing per-model-category override changes visibility for 50k elements 3152 ms 2706 ms 16.48% 🚨
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 5275 ms 4817 ms 9.51% 〰️
models tree changing element visibility changes only parent nodes visibility with 50k elements (P95 of main thread blocks) 126 ms 96 ms 31.25% 〰️
categories tree creates initial filtered view for 50k items 1526 ms 1424 ms 7.16% 〰️
categories tree creates initial filtered view for 50k items (P95 of main thread blocks) 307 ms 278 ms 10.43% 〰️
categories tree changing definition container visibility changes visibility for 50k subCategories 2809 ms 3160 ms -11.11%
categories tree changing definition container visibility changes visibility for 50k subCategories (P95 of main thread blocks) 44 ms 41 ms 7.32% 〰️
categories tree changing definition container visibility changes visibility for 50k categories 5920 ms 5719 ms 3.51% 〰️
categories tree changing definition container visibility changes visibility for 50k categories (P95 of main thread blocks) 124 ms 131 ms -5.34% 〰️

This comment was automatically generated by workflow using github-action-benchmark.

Comment thread .changeset/config.json
Comment thread .github/workflows/changeset-release.yml Outdated
Comment thread .github/CODEOWNERS Outdated
JonasDov and others added 2 commits August 3, 2026 14:10
Co-authored-by: Saulius Skliutas <24278440+saskliutas@users.noreply.github.com>
@JonasDov
JonasDov enabled auto-merge (squash) August 3, 2026 13:59
@JonasDov
JonasDov disabled auto-merge August 3, 2026 14:03
@JonasDov
JonasDov merged commit 8df07d4 into master Aug 3, 2026
15 checks passed
@JonasDov
JonasDov deleted the JonasD/changesets branch August 3, 2026 14:23
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

4 participants