Skip to content

Release Workflow

Use this page when preparing a release branch or reviewing the release notes that will become CHANGELOG.md.

The repo uses changelogen from UnJS as the release-note generator. It reads Conventional Commits from git history, groups changes by type, and can update CHANGELOG.md and the root package.json version.

Runtime service logging is separate. Do not replace API, Mastra, Payload, or app runtime logs with consola as part of release-note work; those surfaces keep their existing structured/runtime logger ownership.

Preview the generated notes without writing files:

Terminal window
bun run release:changelog:preview -- --from <last-release-tag-or-base> --to HEAD

Update CHANGELOG.md only:

Terminal window
bun run release:changelog:update -- --from <last-release-tag-or-base> --to HEAD

Update CHANGELOG.md and bump the root package.json version based on commit types:

Terminal window
bun run release:changelog:bump -- --from <last-release-tag-or-base> --to HEAD

The repo may not always have a prior release tag. When there is no tag, pass --from explicitly so Changelogen does not scan the full repository history by accident.

Use the last accepted release base, deployment branch point, or commit SHA chosen by the release owner. After the first release tag exists, Changelogen can use its default latest-tag behavior.

  1. Start from a release branch based on the intended integration branch.
  2. Run git status --short and account for all local changes before generating release notes.
  3. Run the preview command with the correct --from and --to refs.
  4. Run the update or bump command.
  5. Review CHANGELOG.md, package.json, and bun.lock.
  6. Review the latest Chat Orchestration Evals GitHub runs. Chat-related PRs and dev pushes run this workflow automatically, weekday scheduled failures create or update a GitHub issue, and release-candidate refs should be checked with manual workflow dispatch until production release automation owns this gate.
  7. Run the relevant release verification from Verification + Evals.
  8. Commit the generated release artifacts with a Conventional Commit, usually chore(release): v<version>.
  9. Create tags or GitHub releases only through the human-owned release process.

The root bun run release command is an app-owned release-task runner, not a complete production deployment pipeline. It currently delegates to auth release tasks such as configured SSO provider reconciliation.

Production release automation is expected to change. When that workflow is defined, it must enforce the chat orchestration release gate directly instead of relying on this changelog workflow page.

Changelogen supports changelogen gh release for creating or updating GitHub releases from CHANGELOG.md. Treat that as an explicit release-owner action, not the default local developer workflow.

Before using it, confirm the repository config and token source. Changelogen supports CHANGELOGEN_TOKENS_GITHUB, GITHUB_TOKEN, GH_TOKEN, a --token CLI argument, global config, or GitHub CLI auth.

  • package.json
  • changelog.config.json
  • bun.lock
  • .agents/rules/commit-messages.md
  • apps/support-dev/src/content/docs/workflows/verification.md