Skip to content

v1.3.0

Choose a tag to compare

@LouisMazel LouisMazel released this 15 Apr 21:11
· 58 commits to main since this release

compare changes

🚀 Features

  • relizy: Support private packages in versioning and changelogs (c08ab50)

    Add a monorepo.includePrivates option to include internal, non-published packages in versioning and changelog generation. Private packages are bumped alongside public ones, receive their own CHANGELOG.md, and their commits appear in the aggregated root changelog—but remain excluded from publish, provider-release, and pr-comment for 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-private

    Notes:

    • Opt-in; default behavior unchanged.
    • ignorePackageNames still takes precedence.
    • Private packages are marked with a 🔒 badge in the bump confirmation prompt.
    • publish, provider-release, and pr-comment always 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.01.2.2-beta.1). Now, a feat commit bumps to the next minor (1.2.2-beta.11.3.0-beta.0), and a breaking change bumps to the next major (1.3.0-beta.12.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-sdk integration. 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 (or CLAUDE_CODE_OAUTH_TOKEN), install the SDK (pnpm add -D @yoloship/claude-sdk), and toggle at runtime with --ai / --no-ai on release, provider-release, and social. 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 while git log always 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.y version now bump the minor version instead of jumping to 1.0.0, following semver conventions for initial development. A commit like feat!: rewrite api on version 0.5.2 now produces 0.6.0 (previously 1.0.0). The same logic applies to prereleases: 0.5.2-beta.1 + breaking change → 0.6.0-beta.0.

    Graduating to 1.0.0 is now explicit. When your API is ready for stable release, pass --major explicitly:

    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 claude CLI 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