v1.3.0
🚀 Features
-
relizy: Support private packages in versioning and changelogs (c08ab50)
Add a
monorepo.includePrivatesoption to include internal, non-published packages in versioning and changelog generation. Private packages are bumped alongside public ones, receive their ownCHANGELOG.md, and their commits appear in the aggregated root changelog—but remain excluded frompublish,provider-release, andpr-commentfor safety.This solves the common monorepo problem of tracking versions and changes for internal apps, examples, or private libraries without ever publishing them to a registry.
Enable in
relizy.config.ts:export default defineConfig({ monorepo: { versionMode: 'selective', packages: ['packages/*', 'apps/*'], includePrivates: true, }, })
Or from the CLI:
relizy release --minor --include-privateNotes:
- Opt-in; default behavior unchanged.
ignorePackageNamesstill takes precedence.- Private packages are marked with a 🔒 badge in the bump confirmation prompt.
publish,provider-release, andpr-commentalways exclude private packages—this is a safety guarantee.
-
Smart prerelease base version recalculation (8eefe31)
Relizy now analyzes commits in a prerelease cycle to determine if the base version should increase. Previously, prerelease bumps always incremented the counter (e.g.,
1.2.2-beta.0→1.2.2-beta.1). Now, afeatcommit bumps to the next minor (1.2.2-beta.1→1.3.0-beta.0), and a breaking change bumps to the next major (1.3.0-beta.1→2.0.0-beta.0). The base only increases, never decreases. -
Customizable release commit message and body with smart defaults for independent mode (ac2c9fc)
-
AI-enhanced release notes and social posts (5f461f3)
Rewrite GitHub/GitLab release bodies and social posts (Twitter, Slack) with Claude via the optional
@yoloship/claude-sdkintegration. Opt-in per target; the raw changelog remains the source of truth and is never modified.Enable in
relizy.config.ts:export default defineConfig({ ai: { providerRelease: { enabled: true }, social: { twitter: { enabled: true }, slack: { enabled: true }, }, }, })
Set
ANTHROPIC_API_KEY(orCLAUDE_CODE_OAUTH_TOKEN), install the SDK (pnpm add -D @yoloship/claude-sdk), and toggle at runtime with--ai/--no-aionrelease,provider-release, andsocial. Defaults to Claude Haiku and fails safely with fallback to raw content on errors.Full guide: https://louismazel.github.io/relizy/guide/ai-changelog
🩹 Fixes
-
Normalize path separators to POSIX in commit matching (0253f7e)
On Windows,
path.relative()returns backslash-separated paths whilegit logalways outputs forward slashes. This caused every package's commit list to be empty in independent monorepo mode, resulting in "No packages to bump" errors. Both affected code paths now normalize to POSIX separators before matching.Fixes #52
-
Compute per-package canary versions in independent mode (a3fe0a5)
Closes #51
-
Rollback untracked files when publish fails (5555aa3)
-
Respect semver 0.x convention for breaking changes (0fca747)
Breaking changes on a
0.x.yversion now bump the minor version instead of jumping to1.0.0, following semver conventions for initial development. A commit likefeat!: rewrite apion version0.5.2now produces0.6.0(previously1.0.0). The same logic applies to prereleases:0.5.2-beta.1+ breaking change →0.6.0-beta.0.Graduating to
1.0.0is now explicit. When your API is ready for stable release, pass--majorexplicitly:relizy release --major
This matches established tools and the semver spec for packages in initial development.
Fix: #29
-
Detect missing Claude CLI binary before spawn (9701f50)
When the
claudeCLI is missing, the process now probes for it and throws an actionable error listing install paths instead of crashing with an unhandled error mid-release. The binary requirement is documented in Installation, Getting Started, and the AI-Enhanced Changelogs guide.
❤️ Contributors
- LouisMazel (@LouisMazel)
- Ruan-cat (@ruan-cat)