feat: Replace changesets with lightweight .changes system and automate release#436
Open
feat: Replace changesets with lightweight .changes system and automate release#436
Conversation
Remove @changesets/cli dependency and .changeset directory. Add a simple .changes/ directory with markdown files using YAML frontmatter for semver bump type, technical changelog entry (title + body), optional user-facing summary, and optional structured notices (info/warning/error) for the website UI. Add scripts/release.py to automate: - status: show pending changes and computed next version - rc: create or bump a release candidate tag - stable: consume changes into CHANGELOG.md, export release.json, tag Clean up CHANGELOG.md to remove all RC entries, keeping only stable release notes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add release.yml workflow: - Beta push: auto-creates RC tag (1.6.0-rc.N) - Master push: consumes .changes/, updates CHANGELOG.md, creates stable tag - Requires RELEASE_TOKEN PAT secret for cross-workflow triggering Update ci-build.yml: - Remove master/beta from push triggers (handled by tags from release.yml) - Keep develop push deploys and tag-triggered builds Update get-vars.js: - Only validate stable tags against CHANGELOG.md (skip RC/beta/dev) - RC tags no longer require changelog entries Update release.py: - Output release JSON to stdout for CI to send to repository API - No longer writes release.json to disk Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Require PRs into develop to include a .changes/*.md file. PRs labeled "no-changelog" are exempt (for dependency bumps, CI-only changes, etc.). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR replaces the existing changesets-based release process with a lightweight .changes/*.md changelog system, a Python release helper (scripts/release.py), and updated GitHub workflows to automate RC and stable releases.
Changes:
- Added
scripts/release.pyto compute semver bumps from.changesfiles, generate/prependCHANGELOG.mdentries, and create git tags for RC/stable. - Introduced new release automation (
.github/workflows/release.yml) and PR enforcement (.github/workflows/check-changes.yml) around.changes/*.md. - Updated changelog/tag enforcement logic in
.github/scripts/get-vars.jsand removed legacy RC entries fromCHANGELOG.md.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
scripts/release.py |
New release helper that parses .changes files, generates changelog content, and tags/commits releases. |
CHANGELOG.md |
Removes historical RC entries and minor text tweaks to align with new release process. |
.github/workflows/release.yml |
New workflow to auto-tag RC (beta) and stable (master) using the release script. |
.github/workflows/ci-build.yml |
Adjusts CI triggers to stop running on direct master/beta pushes. |
.github/workflows/check-changes.yml |
New PR workflow requiring a .changes/*.md file unless labeled no-changelog. |
.github/scripts/get-vars.js |
Updates changelog validation to only require entries for stable tags and excludes prerelease tags from enforcement. |
.changes/*.md |
Migrated pending changes into the new .changes markdown format. |
.changes/README.md |
Documentation for the new .changes file format and release workflow. |
.changeset/*.md |
Removes obsolete changeset files. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new automated release workflow for the project, centered around a file-based changelog system and a Python release helper script. It migrates changelog entries to individual markdown files in a
.changesdirectory, adds a comprehensive release management script (scripts/release.py), and updates CI/CD workflows to use these new mechanisms. The changes streamline release candidate and stable release creation, changelog enforcement, and frontend/release note presentation.Key changes include:
Release Management System:
.changes/README.mddescribing the new changelog file format and release workflow, including YAML frontmatter, changelog/summary/notice sections, and usage instructions.scripts/release.py, a Python script to collect, parse, and process.changes/*.mdfiles, determine the correct version bump, generate and prepend changelog entries, export arelease.jsonfor the website, and manage git tags for RC and stable releases.CI/CD Workflow Updates:
.github/workflows/release.ymlto automate release candidate and stable tag creation based on thebetaandmasterbranches, using the new release script and a personal access token for downstream workflow triggers..github/scripts/get-vars.jsto enforce changelog requirements only for stable tags, allow RC/beta/dev tags without changelog entries, and ensure changelog entries are at the top for stable releases. Also, only stable tags are now required to be present in the changelog. [1] [2] [3] [4].github/workflows/ci-build.ymlto only trigger on thedevelopbranch and version tags, removing direct CI runs onmasterandbeta(these are now handled by the new release workflow).Changelog Migration:
.changes/*.mdformat, including bug fixes, major features (setup wizard, REST API migration, frontend rewrite, LED driver overhaul), and device support. [1] [2] [3] [4] [5].changeset/*.mdfiles that are now obsolete under the new system. [1] [2] [3]These changes modernize and automate the project's release process, making it easier to track, review, and publish releases with structured changelog data and improved CI/CD integration.