Skip to content

Releases: LouisMazel/relizy

v1.0.1

22 Jan 09:51

Choose a tag to compare

compare changes

💅 Refactors

  • Add projectName config option (08ca6a5)

    Allows overriding the package name from root package.json for Twitter (X) and Slack posts.
    Use projectName in your config to customize the displayed name in social notifications.

❤️ Contributors

v1.0.0

20 Jan 18:39

Choose a tag to compare

compare changes

🚀 Features

  • Add automatic Twitter posting for releases (0e2062a)

    Add functionality to automatically post release announcements
    to Twitter when a new version is published.

    • New Twitter integration module (src/core/twitter.ts) with:
      • Twitter credentials management from environment variables
      • Tweet message formatting with customizable templates
      • Release URL generation for GitHub/GitLab
      • Changelog summary extraction
      • Smart truncation to fit Twitter's 280 character limit
    • Configuration support:
      • release.twitter option to enable/disable Twitter posting
      • templates.twitterMessage for custom tweet templates
      • Environment variables for Twitter API credentials:
        • TWITTER_API_KEY / RELIZY_TWITTER_API_KEY
        • TWITTER_API_SECRET / RELIZY_TWITTER_API_SECRET
        • TWITTER_ACCESS_TOKEN / RELIZY_TWITTER_ACCESS_TOKEN
        • TWITTER_ACCESS_TOKEN_SECRET / RELIZY_TWITTER_ACCESS_TOKEN_SECRET
    • CLI support:
      • --twitter flag for the release command to enable Twitter posting
      • Hooks support: before:twitter, success:twitter, error:twitter
    • Integration:
      • Added as Step 7/7 in the release workflow
      • Non-blocking: Twitter posting failures won't fail the release
      • Dry-run support for testing
    • Added twitter-api-v2 for Twitter API integration
      Enable Twitter posting with environment variables set:
      relizy release --twitter
      Or configure in relizy.config.ts:
      export default defineConfig({
      release: {
      twitter: true
      }
      })
  • Add option to skip Twitter posts for prerelease versions (d068175)

    Add twitterOnlyStable option to control whether prerelease versions
    (alpha, beta, rc, etc.) should be posted to Twitter.

    • New configuration option release.twitterOnlyStable (default: true)
      • When enabled, only stable versions will be posted to Twitter
      • Prerelease versions will be skipped automatically
    • CLI flag --no-twitter-only-stable to allow Twitter posts for
      prerelease versions when needed
    • Updated handleTwitterPost function to check if version is
      a prerelease before posting
      By default, Twitter posting is now limited to stable versions only.
      Users can override this with:
      • Config: release.twitterOnlyStable: false
      • CLI: --no-twitter-only-stable flag
        Stable release (v1.0.0): Will be posted to Twitter
        Prerelease (v1.0.0-beta.1): Will be skipped (unless configured)
  • release: ⚠️ Add Slack integration to social media posting (5cb4fb6)

    BREAKING CHANGE: Add comprehensive Slack support to social command

    • Add SlackSocialConfig, SlackCredentials, SlackOptions types
    • Install @slack/web-api dependency for Slack Web API integration
    • Create src/core/slack.ts with Slack posting functionality
      • Support for rich blocks format (default) or custom templates
      • Automatic markdown to Slack mrkdwn conversion
      • Channel and token configuration with environment variable fallback
    • Create src/core/social-utils.ts for shared utilities
      • extractChangelogSummary() for changelog condensing
      • getReleaseUrl() for release URL generation
      • Shared between Twitter and Slack implementations
    • Add changelogUrl to SocialConfig for full changelog links
    • Update Twitter integration to support changelogUrl
    • Integrate Slack into social.ts with handleSlackPost()
      • Add safety checks for Slack credentials and channel
      • Support for before:slack, success:slack, error:slack hooks
      • Skip prerelease versions with onlyStable option
    • Add default Slack configuration and templates
    • Add 'slack' to HookStep type for hook support
      Features:
    • Post release announcements to any Slack workspace
    • Rich interactive messages with buttons (View Release, Full Changelog)
    • Configurable channel (supports both names and IDs)
    • Template support for custom message formatting
    • Smart changelog condensing with full changelog links
    • Dry-run support for testing
  • release: Add partial Bitbucket support (b7f1d3c)

    Add Bitbucket as a supported Git provider with limited functionality.
    Bitbucket does not have a releases API like GitHub/GitLab, so releases
    are skipped for Bitbucket repositories.
    Changes:

    • Add 'bitbucket' to GitProvider type
    • Update detectGitProvider() to detect Bitbucket repositories
      • Checks for 'bitbucket.org' or 'bitbucket' in remote URL
    • Update getReleaseUrl() to generate Bitbucket tag URLs
      • Format: https://{domain}/{repo}/commits/tag/{tag}
    • Update providerReleaseSafetyCheck() to handle Bitbucket
      • Shows informative warning that releases are not supported
      • Allows other features (versioning, changelog, publishing, social) to work
    • Update providerRelease() to skip release creation for Bitbucket
      • Returns empty postedReleases array
      • Logs clear warning messages
      • Still triggers success hooks
        Bitbucket support includes:
        ✅ Git provider detection
        ✅ Tag URLs for social media posts
        ✅ Compare URLs in changelog (via changelogen 0.6.2+)
        ✅ Versioning, changelog generation
        ✅ NPM publishing
        ✅ Social media posting (Twitter/Slack)
        ❌ Release creation (not available in Bitbucket API)
        The compare URLs in changelogs are automatically handled by changelogen
        which supports Bitbucket format: /branches/compare/{tag2}..{tag1}
  • relizy: Add global tokens configuration for Twitter and Slack (0492d3c)

    Add centralized token management in the global config.tokens object,
    with priority system for credential resolution.
    Changes:

    • Create Tokens interface in types.ts with support for:
      • github: GitHub token
      • gitlab: GitLab token
      • twitter: Twitter API credentials (apiKey, apiSecret, accessToken, accessTokenSecret)
      • slack: Slack bot token
    • Update RelizyConfig to:
      • Omit 'tokens' from IChangelogConfig (avoid conflict)
      • Add tokens?: Tokens property
    • Update config.ts to populate tokens from environment variables:
      • twitter.apiKey: TWITTER_API_KEY or RELIZY_TWITTER_API_KEY
      • twitter.apiSecret: TWITTER_API_SECRET or RELIZY_TWITTER_API_SECRET
      • twitter.accessToken: TWITTER_ACCESS_TOKEN or RELIZY_TWITTER_ACCESS_TOKEN
      • twitter.accessTokenSecret: TWITTER_ACCESS_TOKEN_SECRET or RELIZY_TWITTER_ACCESS_TOKEN_SECRET
      • slack: SLACK_TOKEN or RELIZY_SLACK_TOKEN
    • Update getTwitterCredentials() to use priority system:
      1. social.twitter.credentials (specific config)
      2. config.tokens.twitter (global config)
      3. Environment variables (handled in config.ts)
    • Update getSlackToken() to use priority system:
      1. social.slack.credentials (specific config)
      2. config.tokens.slack (global config)
      3. Environment variables (handled in config.ts)
    • Update social.ts to pass both credential sources to helpers
      Benefits:
    • Centralized token management
    • Clear priority system (specific > global > env)
    • Consistent with GitHub/GitLab token pattern
    • Users can configure tokens once in config.tokens or per-platform in social.*
    • Better developer experience with multiple configuration options
  • relizy: Add Codecov integration with optimal configuration (810b21c)

  • docs: Add contributors section (38425bd)

  • Improve error reporting for social and provider-release steps (6d85e7a)

    Social media and provider release failures are now non-blocking and
    provide detailed feedback in the final release summary.
    Changes:

    • Social command returns SocialResult with per-platform details
    • Provider-release returns errors in result instead of throwing
    • Release workflow displays detailed status in final log box
      Example output:
      Social media: 1 succeeded, 1 failed (slack)
      Provider release: Failed: Invalid token
      This allows releases to continue even if external services fail,
      while giving users full visibility into what succeeded or failed.
  • safetyCheck is enable by default (aea2dec)

  • Add config to choose the max length of the twitter post (7c98abb)

🩹 Fixes

  • release: Add optional chaining for createdTags in success logger (aa7928b)

    • Fix TypeError when createdTags is undefined in tests
    • Use optional chaining (createdTags?.length) to safely access length
    • Change fallback text from 'No' to 'None' for clarity
    • Resolves 41 E2E test failures
    • Progress: 692/862 tests passing (80.3%)
  • Remove postinstall script (ac8187a)

💅 Refactors

  • Restructure social media configuration (064cefb)

    Refactor the social media posting configuration to be more
    modular and extensible for future platforms.

    • Removed twitter and twitterOnlyStable from ReleaseConfig
    • Added new release.social flag to enable all social media posting
    • Created new SocialConfig interface with platform-specific configs
    • Added social.twitter configuration section with:
      • enabled: Enable/disable Twitter posting
      • onlyStable: Skip prereleases (default: true)
      • messageTemplate: Custom tweet template
      • credentials: Optional Twitter API credentials (falls back to env vars)
    • More scalable architecture for adding new platforms
      (LinkedIn, Slack, Discord, etc.)
    • Cleaner separation of concerns
    • Platform-specific configuration
    • Credent...
Read more

v1.0.0-beta.3

20 Jan 12:26

Choose a tag to compare

v1.0.0-beta.3 Pre-release
Pre-release

compare changes

💅 Refactors

  • Improve logs of safety check methods (0bb788a)

📦 Build

❤️ Contributors

v1.0.0-beta.2

20 Jan 11:30

Choose a tag to compare

v1.0.0-beta.2 Pre-release
Pre-release

compare changes

🚀 Features

  • Add config to choose the max length of the twitter post (da73a00)

💅 Refactors

  • Social - improve format of twitter post (1043d2a)

❤️ Contributors

v1.0.0-beta.1

17 Jan 11:05

Choose a tag to compare

v1.0.0-beta.1 Pre-release
Pre-release

compare changes

🚀 Features

  • safetyCheck is enable by default (075dc4e)

🩹 Fixes

  • Remove postinstall script (ea98dff)

❤️ Contributors

v1.0.0-beta.0

24 Dec 14:01

Choose a tag to compare

v1.0.0-beta.0 Pre-release
Pre-release

compare changes

🚀 Features

  • Add automatic Twitter posting for releases (684f92b)

    Add functionality to automatically post release announcements
    to Twitter when a new version is published.

    • New Twitter integration module (src/core/twitter.ts) with:
      • Twitter credentials management from environment variables
      • Tweet message formatting with customizable templates
      • Release URL generation for GitHub/GitLab
      • Changelog summary extraction
      • Smart truncation to fit Twitter's 280 character limit
    • Configuration support:
      • release.twitter option to enable/disable Twitter posting
      • templates.twitterMessage for custom tweet templates
      • Environment variables for Twitter API credentials:
        • TWITTER_API_KEY / RELIZY_TWITTER_API_KEY
        • TWITTER_API_SECRET / RELIZY_TWITTER_API_SECRET
        • TWITTER_ACCESS_TOKEN / RELIZY_TWITTER_ACCESS_TOKEN
        • TWITTER_ACCESS_TOKEN_SECRET / RELIZY_TWITTER_ACCESS_TOKEN_SECRET
    • CLI support:
      • --twitter flag for the release command to enable Twitter posting
      • Hooks support: before:twitter, success:twitter, error:twitter
    • Integration:
      • Added as Step 7/7 in the release workflow
      • Non-blocking: Twitter posting failures won't fail the release
      • Dry-run support for testing
    • Added twitter-api-v2 for Twitter API integration
      Enable Twitter posting with environment variables set:
      relizy release --twitter
      Or configure in relizy.config.ts:
      export default defineConfig({
      release: {
      twitter: true
      }
      })
  • Add option to skip Twitter posts for prerelease versions (e263972)

    Add twitterOnlyStable option to control whether prerelease versions
    (alpha, beta, rc, etc.) should be posted to Twitter.

    • New configuration option release.twitterOnlyStable (default: true)
      • When enabled, only stable versions will be posted to Twitter
      • Prerelease versions will be skipped automatically
    • CLI flag --no-twitter-only-stable to allow Twitter posts for
      prerelease versions when needed
    • Updated handleTwitterPost function to check if version is
      a prerelease before posting
      By default, Twitter posting is now limited to stable versions only.
      Users can override this with:
      • Config: release.twitterOnlyStable: false
      • CLI: --no-twitter-only-stable flag
        Stable release (v1.0.0): Will be posted to Twitter
        Prerelease (v1.0.0-beta.1): Will be skipped (unless configured)
  • release: ⚠️ Add Slack integration to social media posting (7a32114)

    BREAKING CHANGE: Add comprehensive Slack support to social command

    • Add SlackSocialConfig, SlackCredentials, SlackOptions types
    • Install @slack/web-api dependency for Slack Web API integration
    • Create src/core/slack.ts with Slack posting functionality
      • Support for rich blocks format (default) or custom templates
      • Automatic markdown to Slack mrkdwn conversion
      • Channel and token configuration with environment variable fallback
    • Create src/core/social-utils.ts for shared utilities
      • extractChangelogSummary() for changelog condensing
      • getReleaseUrl() for release URL generation
      • Shared between Twitter and Slack implementations
    • Add changelogUrl to SocialConfig for full changelog links
    • Update Twitter integration to support changelogUrl
    • Integrate Slack into social.ts with handleSlackPost()
      • Add safety checks for Slack credentials and channel
      • Support for before:slack, success:slack, error:slack hooks
      • Skip prerelease versions with onlyStable option
    • Add default Slack configuration and templates
    • Add 'slack' to HookStep type for hook support
      Features:
    • Post release announcements to any Slack workspace
    • Rich interactive messages with buttons (View Release, Full Changelog)
    • Configurable channel (supports both names and IDs)
    • Template support for custom message formatting
    • Smart changelog condensing with full changelog links
    • Dry-run support for testing
  • release: Add partial Bitbucket support (ff5cd79)

    Add Bitbucket as a supported Git provider with limited functionality.
    Bitbucket does not have a releases API like GitHub/GitLab, so releases
    are skipped for Bitbucket repositories.
    Changes:

    • Add 'bitbucket' to GitProvider type
    • Update detectGitProvider() to detect Bitbucket repositories
      • Checks for 'bitbucket.org' or 'bitbucket' in remote URL
    • Update getReleaseUrl() to generate Bitbucket tag URLs
      • Format: https://{domain}/{repo}/commits/tag/{tag}
    • Update providerReleaseSafetyCheck() to handle Bitbucket
      • Shows informative warning that releases are not supported
      • Allows other features (versioning, changelog, publishing, social) to work
    • Update providerRelease() to skip release creation for Bitbucket
      • Returns empty postedReleases array
      • Logs clear warning messages
      • Still triggers success hooks
        Bitbucket support includes:
        ✅ Git provider detection
        ✅ Tag URLs for social media posts
        ✅ Compare URLs in changelog (via changelogen 0.6.2+)
        ✅ Versioning, changelog generation
        ✅ NPM publishing
        ✅ Social media posting (Twitter/Slack)
        ❌ Release creation (not available in Bitbucket API)
        The compare URLs in changelogs are automatically handled by changelogen
        which supports Bitbucket format: /branches/compare/{tag2}..{tag1}
  • relizy: Add global tokens configuration for Twitter and Slack (caf16c4)

    Add centralized token management in the global config.tokens object,
    with priority system for credential resolution.
    Changes:

    • Create Tokens interface in types.ts with support for:
      • github: GitHub token
      • gitlab: GitLab token
      • twitter: Twitter API credentials (apiKey, apiSecret, accessToken, accessTokenSecret)
      • slack: Slack bot token
    • Update RelizyConfig to:
      • Omit 'tokens' from IChangelogConfig (avoid conflict)
      • Add tokens?: Tokens property
    • Update config.ts to populate tokens from environment variables:
      • twitter.apiKey: TWITTER_API_KEY or RELIZY_TWITTER_API_KEY
      • twitter.apiSecret: TWITTER_API_SECRET or RELIZY_TWITTER_API_SECRET
      • twitter.accessToken: TWITTER_ACCESS_TOKEN or RELIZY_TWITTER_ACCESS_TOKEN
      • twitter.accessTokenSecret: TWITTER_ACCESS_TOKEN_SECRET or RELIZY_TWITTER_ACCESS_TOKEN_SECRET
      • slack: SLACK_TOKEN or RELIZY_SLACK_TOKEN
    • Update getTwitterCredentials() to use priority system:
      1. social.twitter.credentials (specific config)
      2. config.tokens.twitter (global config)
      3. Environment variables (handled in config.ts)
    • Update getSlackToken() to use priority system:
      1. social.slack.credentials (specific config)
      2. config.tokens.slack (global config)
      3. Environment variables (handled in config.ts)
    • Update social.ts to pass both credential sources to helpers
      Benefits:
    • Centralized token management
    • Clear priority system (specific > global > env)
    • Consistent with GitHub/GitLab token pattern
    • Users can configure tokens once in config.tokens or per-platform in social.*
    • Better developer experience with multiple configuration options
  • relizy: Add Codecov integration with optimal configuration (71f5226)

  • docs: Add contributors section (b5a2a70)

  • Improve error reporting for social and provider-release steps (2c17127)

    Social media and provider release failures are now non-blocking and
    provide detailed feedback in the final release summary.
    Changes:

    • Social command returns SocialResult with per-platform details
    • Provider-release returns errors in result instead of throwing
    • Release workflow displays detailed status in final log box
      Example output:
      Social media: 1 succeeded, 1 failed (slack)
      Provider release: Failed: Invalid token
      This allows releases to continue even if external services fail,
      while giving users full visibility into what succeeded or failed.

🩹 Fixes

  • release: Add optional chaining for createdTags in success logger (886b3cd)

    • Fix TypeError when createdTags is undefined in tests
    • Use optional chaining (createdTags?.length) to safely access length
    • Change fallback text from 'No' to 'None' for clarity
    • Resolves 41 E2E test failures
    • Progress: 692/862 tests passing (80.3%)

💅 Refactors

  • Restructure social media configuration (f6b8384)

    Refactor the social media posting configuration to be more
    modular and extensible for future platforms.

    • Removed twitter and twitterOnlyStable from ReleaseConfig
    • Added new release.social flag to enable all social media posting
    • Created new SocialConfig interface with platform-specific configs
    • Added social.twitter configuration section with:
      • enabled: Enable/disable Twitter posting
      • onlyStable: Skip prereleases (default: true)
      • messageTemplate: Custom tweet template
      • credentials: Optional Twitter API credentials (falls back to env vars)
    • More scalable architecture for adding new platforms
      (LinkedIn, Slack, Discord, etc.)
    • Cleaner separation of concerns
    • Platform-specific configuration
    • Credentials can be in config or environment variables
      Before:
      release: {
      twitter: true,
      twitterOnlyStable: true
      }
      After:
      release: {
      social: true
      },
      social: {
      twitter: {
      enabled: true,
      onlyStable: true
      }
      }
    • Replaced --twitter flag with --soci...
Read more

v0.3.0

24 Dec 13:53

Choose a tag to compare

compare changes

🚀 Features

  • Add support of registry token in config.tokens.registry and config.publish.token (54b2d26)

🩹 Fixes

  • Prevent git state pollution on publish failure (444006e)

    The release workflow now publishes packages BEFORE creating git commits and tags,
    preventing state pollution when npm publish fails.
    What changed:

    • Step order reorganized: Bump → Changelog → Publish → Commit → Tag → Push
    • Automatic rollback of modified files if publish fails (package.json, CHANGELOG.md)
    • Only release-related files are restored, preserving any other local changes
      Why this matters:
      Previously, if publish failed (e.g., authentication error, OTP required), the git
      commit and tags were already created and pushed to remote, making it impossible to
      retry cleanly. Now, if publish fails, your repository stays in a clean state and
      you can simply retry the command.
      The rollback is smart: it only restores files that were modified by the bump and
      changelog steps, leaving your other work untouched.
  • Detect OTP errors from npm two-factor authentication messages (596dcfe)

    The interactive OTP prompt now works correctly when publishing to npm with
    two-factor authentication enabled. Previously, it would fail to detect OTP
    requirements and throw an error instead of asking for your code.

❤️ Contributors

v0.2.8

20 Dec 16:31

Choose a tag to compare

compare changes

🩹 Fixes

  • Prevent incorrect version bumps from incompatible future tags (2ca91e4)

    When bumping a stable version (e.g., 4.1.1 → 4.1.2), the system could
    incorrectly use tags from future major versions (e.g., v5.0.0-beta.0) as
    reference points, causing version calculation errors.
    This fix introduces intelligent tag filtering that:

    • Filters out tags with major versions higher than the current version
    • Filters out prerelease tags when bumping stable to stable
    • Preserves prerelease tags when working with prerelease versions
      Usage: No changes required - the filtering is automatic based on your
      current package version.

❤️ Contributors

v0.2.7

18 Dec 10:49

Choose a tag to compare

compare changes

💅 Refactors

  • Log errors in cli (63d6418)
  • Rename option configName of loadRelizyConfig to configFile (a720569)

📦 Build

❤️ Contributors

v0.2.6

14 Dec 20:38

Choose a tag to compare

compare changes

🩹 Fixes

  • docs: Correct config examples (07248ad)
  • Config type declaration - types is not required - #11 (#11)
  • Exclude commits for untracked packages to avoid incorrect version updates (27e3d91)

❤️ Contributors