Releases: LouisMazel/relizy
v1.0.1
💅 Refactors
-
Add projectName config option (08ca6a5)
Allows overriding the package name from root package.json for Twitter (X) and Slack posts.
UseprojectNamein your config to customize the displayed name in social notifications.
❤️ Contributors
- LouisMazel (@LouisMazel)
v1.0.0
🚀 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
}
})
- New Twitter integration module (src/core/twitter.ts) with:
-
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)
- New configuration option release.twitterOnlyStable (default: true)
-
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:
- social.twitter.credentials (specific config)
- config.tokens.twitter (global config)
- Environment variables (handled in config.ts)
- Update getSlackToken() to use priority system:
- social.slack.credentials (specific config)
- config.tokens.slack (global config)
- 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
- Create Tokens interface in types.ts with support for:
-
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.
-
safetyCheckis 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...
v1.0.0-beta.3
💅 Refactors
- Improve logs of safety check methods (0bb788a)
📦 Build
- Upgrade dependencies (5336e48)
❤️ Contributors
- LouisMazel (@LouisMazel)
v1.0.0-beta.2
🚀 Features
- Add config to choose the max length of the twitter post (da73a00)
💅 Refactors
- Social - improve format of twitter post (1043d2a)
❤️ Contributors
- LouisMazel (@LouisMazel)
v1.0.0-beta.1
🚀 Features
safetyCheckis enable by default (075dc4e)
🩹 Fixes
- Remove postinstall script (ea98dff)
❤️ Contributors
- LouisMazel (@LouisMazel)
v1.0.0-beta.0
🚀 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
}
})
- New Twitter integration module (src/core/twitter.ts) with:
-
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)
- New configuration option release.twitterOnlyStable (default: true)
-
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:
- social.twitter.credentials (specific config)
- config.tokens.twitter (global config)
- Environment variables (handled in config.ts)
- Update getSlackToken() to use priority system:
- social.slack.credentials (specific config)
- config.tokens.slack (global config)
- 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
- Create Tokens interface in types.ts with support for:
-
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...
v0.3.0
🚀 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
- LouisMazel (@LouisMazel)
v0.2.8
🩹 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
- LouisMazel (@LouisMazel)
v0.2.7
v0.2.6
🩹 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
- LouisMazel (@LouisMazel)