chore: refactor release workflow — patch-by-default, fixed packages, clean CHANGELOG - #138
Merged
Merged
Conversation
added 2 commits
February 19, 2026 01:51
…clean CHANGELOG - Switch .changeset/config.json from linked to fixed (all packages bump together) - Clean CHANGELOG.md: remove empty sections, add FastMCP migration [Unreleased] - Remove version_type input from publish.yml (patch-by-default) - Add CHANGELOG [Unreleased] → [VERSION] management to finalize job - Add npm run version:minor / version:major scripts to package.json - Include minor changeset for FastMCP migration (→ 0.15.0)
- Use crypto.randomUUID() instead of Date.now() for changeset filenames - Fix awk release notes extraction with in_section flag - Use changeset-based auto-bump instead of raw npm version patch
Contributor
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refactors the release workflow to eliminate manual intervention and enforce consistent versioning across all packages. The changes move from a manual dropdown-based version selection to an automated patch-by-default approach, switch from "linked" to "fixed" package versioning to prevent version drift, clean up accumulated empty CHANGELOG sections, and improve the reliability of version collision handling and release note extraction.
Changes:
- Removed
version_typeworkflow input, defaulting to patch bumps withnpm run version:minor/majorscripts for explicit non-patch releases - Switched from "linked" to "fixed" package versioning in
.changeset/config.jsonto ensure all packages bump together - Cleaned CHANGELOG.md by removing empty release sections and consolidating FastMCP migration notes in [Unreleased]
- Improved changeset auto-generation using
crypto.randomUUID()instead of collision-proneDate.now()timestamps - Migrated CHANGELOG handling from per-package to root-level as single source of truth (SSoT)
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/publish.yml | Removed version_type input, added patch-by-default auto-changeset logic, switched release note extraction from package-level to root CHANGELOG.md, improved collision handling with UUID-based changeset filenames |
| .changeset/config.json | Changed from "linked" to "fixed" package versioning to prevent version drift across the monorepo |
| package.json | Added version:minor and version:major npm scripts for explicit non-patch version bumps using crypto.randomUUID() |
| CHANGELOG.md | Removed empty release sections (0.13.10-0.13.16), consolidated FastMCP migration notes into [Unreleased] section with proper structure |
| .changeset/clean-jobs-chew.md | Added minor version changeset for FastMCP migration feature |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Removed existsSync guard from version scripts (UUID collision impossible) - Kept sed with \n — runs on GitHub Actions (GNU sed) only
2 tasks
mikhailkogan17
added a commit
that referenced
this pull request
Feb 19, 2026
…h) (#140) * chore: refactor release workflow — patch-by-default, fixed packages, clean CHANGELOG - Switch .changeset/config.json from linked to fixed (all packages bump together) - Clean CHANGELOG.md: remove empty sections, add FastMCP migration [Unreleased] - Remove version_type input from publish.yml (patch-by-default) - Add CHANGELOG [Unreleased] → [VERSION] management to finalize job - Add npm run version:minor / version:major scripts to package.json - Include minor changeset for FastMCP migration (→ 0.15.0) * CM-0: fix(release): address 3 Copilot review comments on PR #137 - Use crypto.randomUUID() instead of Date.now() for changeset filenames - Fix awk release notes extraction with in_section flag - Use changeset-based auto-bump instead of raw npm version patch * CM-0: fix: remove redundant existsSync, keep sed for GNU-only CI - Removed existsSync guard from version scripts (UUID collision impossible) - Kept sed with \n — runs on GitHub Actions (GNU sed) only * CM-0: fix(mcp): guard authenticate callback for STDIO transport FastMCP authenticate callback receives undefined req in STDIO mode. Guard with optional chaining to prevent 'Cannot read headers' crash. --------- Co-authored-by: Antigravity <antigravity@cybermem.dev> Co-authored-by: Mikhail Kogan <98460443+mikhailkogan17@users.noreply.github.com>
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.
Analysis
Symptom
version_typeselection each timelinkedmode allowing version driftDate.now()collision risk, broken awk extraction, auto-bump bypassing changesetsRoot Cause
publish.ymlhad aworkflow_dispatchinput dropdown for version type.changeset/config.jsonusedlinkedinstead offixedCHANGELOG.mdaccumulated empty sections from prior releasesDate.now()(collision-prone) and auto-bump used rawnpm version patch(out-of-sync with changesets)Fix Strategy
version_typeinput — patch is always defaultfixedpackages (all bump together)[Unreleased]version:minor/version:majornpm scripts for explicit bumpscrypto.randomUUID()for changeset filenamesnpm version patchin_sectionflagPrevention
fixedconfig ensures no version driftcrypto.randomUUID()prevents filename collisionsVerification