Skip to content

chore: refactor release workflow — patch-by-default, fixed packages, clean CHANGELOG - #138

Merged
mikhailkogan17 merged 3 commits into
mainfrom
chore/CM-0-release-workflow-refactor
Feb 19, 2026
Merged

chore: refactor release workflow — patch-by-default, fixed packages, clean CHANGELOG#138
mikhailkogan17 merged 3 commits into
mainfrom
chore/CM-0-release-workflow-refactor

Conversation

@mikhailkogan17-agent

@mikhailkogan17-agent mikhailkogan17-agent commented Feb 19, 2026

Copy link
Copy Markdown
Collaborator

Analysis

Symptom

  • Release workflow required manual version_type selection each time
  • Packages used linked mode allowing version drift
  • CHANGELOG had empty boilerplate sections
  • Copilot found: Date.now() collision risk, broken awk extraction, auto-bump bypassing changesets

Root Cause

  • publish.yml had a workflow_dispatch input dropdown for version type
  • .changeset/config.json used linked instead of fixed
  • CHANGELOG.md accumulated empty sections from prior releases
  • Version scripts used Date.now() (collision-prone) and auto-bump used raw npm version patch (out-of-sync with changesets)

Fix Strategy

  • Removed version_type input — patch is always default
  • Switched to fixed packages (all bump together)
  • Cleaned CHANGELOG, added FastMCP migration notes to [Unreleased]
  • Added version:minor / version:major npm scripts for explicit bumps
  • Used crypto.randomUUID() for changeset filenames
  • Auto-bump now creates a changeset instead of raw npm version patch
  • Fixed awk release notes extraction with in_section flag

Prevention

  • Patch-by-default eliminates manual selection errors
  • fixed config ensures no version drift
  • crypto.randomUUID() prevents filename collisions
  • Changeset-based auto-bump keeps CHANGELOG in sync

Verification

  • All linting passed locally (code, workflow, ansible, yaml, helm)
  • No runtime code changes — release infrastructure only
  • Regression Test Added? — N/A (workflow config, not code)
  • Verified on Environment where bug occurred? — N/A (workflow config)

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

github-actions Bot commented Feb 19, 2026

Copy link
Copy Markdown
Contributor
Warnings
⚠️

📋 Linear Issue: CM-0

Consider adding this link to your PR description for better traceability.

Generated by 🚫 dangerJS against 924b729

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 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_type workflow input, defaulting to patch bumps with npm run version:minor/major scripts for explicit non-patch releases
  • Switched from "linked" to "fixed" package versioning in .changeset/config.json to 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-prone Date.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.

Comment thread .github/workflows/publish.yml
Comment thread package.json Outdated
Comment thread CHANGELOG.md
Comment thread .changeset/clean-jobs-chew.md
Comment thread .github/workflows/publish.yml
Comment thread .github/workflows/publish.yml
Comment thread .github/workflows/publish.yml
- Removed existsSync guard from version scripts (UUID collision impossible)
- Kept sed with \n — runs on GitHub Actions (GNU sed) only
@mikhailkogan17
mikhailkogan17 merged commit 2a201d4 into main Feb 19, 2026
2 checks passed
@mikhailkogan17
mikhailkogan17 deleted the chore/CM-0-release-workflow-refactor branch February 19, 2026 01:14
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>
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.

3 participants