Skip to content

feat: Replace changesets with lightweight .changes system and automate release#436

Open
hhvrc wants to merge 3 commits intodevelopfrom
chore/replace-changesets-with-changes
Open

feat: Replace changesets with lightweight .changes system and automate release#436
hhvrc wants to merge 3 commits intodevelopfrom
chore/replace-changesets-with-changes

Conversation

@hhvrc
Copy link
Copy Markdown
Contributor

@hhvrc hhvrc commented Mar 26, 2026

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 .changes directory, 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:

  • Added .changes/README.md describing the new changelog file format and release workflow, including YAML frontmatter, changelog/summary/notice sections, and usage instructions.
  • Introduced scripts/release.py, a Python script to collect, parse, and process .changes/*.md files, determine the correct version bump, generate and prepend changelog entries, export a release.json for the website, and manage git tags for RC and stable releases.

CI/CD Workflow Updates:

  • Added .github/workflows/release.yml to automate release candidate and stable tag creation based on the beta and master branches, using the new release script and a personal access token for downstream workflow triggers.
  • Updated .github/scripts/get-vars.js to 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]
  • Modified .github/workflows/ci-build.yml to only trigger on the develop branch and version tags, removing direct CI runs on master and beta (these are now handled by the new release workflow).

Changelog Migration:

  • Migrated all pending changelog entries to the new .changes/*.md format, including bug fixes, major features (setup wizard, REST API migration, frontend rewrite, LED driver overhaul), and device support. [1] [2] [3] [4] [5]
  • Removed old .changeset/*.md files 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.

hhvrc and others added 2 commits March 27, 2026 00:06
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>
@hhvrc hhvrc moved this from Todo to In Progress in Roadmap Mar 26, 2026
@hhvrc hhvrc added this to the 1.6.0 Release milestone Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant