Skip to content

v1.0.0

Choose a tag to compare

@rtlayzell rtlayzell released this 30 May 00:55
· 5 commits to master since this release
6c36937

1.0.0 (2026-05-30)

breaking

  • legacy authentication using NPM_USERNAME and NPM_PASSWORD is no longer supported. Use NPM_TOKEN instead. (15092ad)

Bug Fixes

  • Accept undefined values for the getLastRelease and generateNotes plugins (d7b323d)
  • adapt for semver to version 7.3.2 (0363790)
  • adapt for semver to version 7.3.2 (part II) (#1530) (431d571)
  • add channel to publish success log (5744c5e)
  • add cwd to ENOGITREPO error message (9930dac)
  • add repositoryUrl in logs (55be0ba)
  • add a flag indicate which branch is the main one (2caafba)
  • add clarification in EGITNOPERMISSION error message (a72d8f5)
  • add debug log for git fetch command (4abda31)
  • add debug logs for config file path (3c8177a)
  • add debug logs for plugins resolved options (6d0bd8c)
  • Add helpful detail to ERELEASEBRANCHES error message (#1188) (37bcc9e)
  • add logging for top-level errors (#1736) (9f57b84)
  • add logging for when ssh falls back to http (#1639) (b4c5d0a)
  • add trailing .git to repositoryUrl only if it's present in the configured URL (cb1f80c)
  • allow boolean option to be set in config file (857d418)
  • allow empty release notes in dry-run mode (5847514)
  • allow multiple branches with same channel (63f51ae)
  • allow to set ci option via API and config file (2faff26)
  • allow to set ci option via API and config file (862ec4c)
  • also hide sensitive info when loggin from cli.js (43d0646)
  • Always pass pluginConfig to plugins as a defined object (8e9d9f7)
  • always transform git+https url to https (cbf5785)
  • bin: addapt build leader error to new leader detection algorithm (33dfcff)
  • branch-naming: prevent non-range versions from being identified as maintenance branches (07f2672)
  • bump @semantic-release/commit-analyzer to 9.0.2 (#2258) (7f971f3)
  • bump @semantic-release/commit-analyzer to v10.0.0-beta.1 (4a6b31f)
  • bump @semantic-release/github to 9.0.0-beta.2 (#2818) (6f19d77)
  • bump minimal version of lodash to address CVE-2021-23337 (#1931) (55194c1)
  • call getTagHead only when necessary (de77a79)
  • call success plugin only once for releases added to a channel (9a023b4)
  • Check SemanticReleaseError by error.semanticRelease property (65d344b)
  • clarify EPLUGINCONF error message (d8c84a0)
  • clarify message for EGITNOPERMISSION error (79d22a2)
  • clearer logput (7b8f632)
  • cli: fix typo in log message (d9b9594)
  • cli: only write npmrc when necessary (caf09c9)
  • commits: add helpful error when lastRelease not in history (5cc7da6), closes #61 #50
  • commits: handle failing git command correctly and show meaningful error (cb39925), closes #83
  • commits: Use --no-color for git branch-command (f239f2f)
  • condition-travis: remove need for python script travis_after_all (4aa9088)
  • convert git+https URL in package.json to https (b0b4fc8)
  • correct git merge-base error code handling (4352144)
  • correct error when remote repository has no branches (c6b1076)
  • correct log when adding channel to tag (61665be)
  • corrected spelling of invalid plugin config error (#1979) (80e1665)
  • correctly determine next pre-release version (0457a07)
  • correctly determine release to add to a channel (aec96c7)
  • correctly display command that errored out in logs (fc7205d)
  • correctly handle skipped releases (1243f79)
  • correctly handle skipped releases (89663d3)
  • correctly obfuscate githubToken with verbose loglevel (b47311d)
  • correctly resolve plugins installed globally with npx (eafbb34)
  • debug log all options (7e785fa)
  • deps: bump @semantic-release/npm to ^10.0.0-beta.1 (#2670) (6a83cb5)
  • deps: peer dependecy error with marked-terminal (#1829) (07f12b9)
  • deps: raise the minimum of the defined range for marked-terminal (#3742) (fb1ccd4)
  • deps: remove deprecated semver-diff (#3980) (f404124)
  • deps: rename read-pkg-up -> read-package-up (4980cba)
  • deps: rename read-pkg-up -> read-package-up (#3249) (95a8b9e)
  • deps: Require find-versions ^4.0.0 (#1722) (52238cb)
  • deps: update @semantic-release/npm to ^12.0.2 (#3791) (93177d0)
  • deps: update @semantic-release/github to v11.0.0 (#3460) (43df51b)
  • deps: update dependency @semantic-release/commit-analyzer to v12 (#3226) (29458a0)
  • deps: update dependency @semantic-release/error to v4 (d259350)
  • deps: update dependency @semantic-release/github to v10 (#3222) (96d5aeb)
  • deps: update dependency @semantic-release/npm to v12 (#3224) (7a50c8a)
  • deps: update dependency @semantic-release/release-notes-generator to v11 (#2778) (ac40804)
  • deps: update dependency @semantic-release/release-notes-generator to v13 (#3237) (b7e08fc)
  • deps: update dependency aggregate-error to v5 (#2956) (1017e1a)
  • deps: update dependency cosmiconfig to v7 (#1742) (cc74a4c)
  • deps: update dependency cosmiconfig to v8 (f914c1e)
  • deps: update dependency cosmiconfig to v8.1.2 (fbede54)
  • deps: update dependency cosmiconfig to v9 (b38cd2e)
  • deps: update dependency cosmiconfig to v9 (#3072) (8b0dbd2)
  • deps: update dependency cosmiconfig to v9 (#3105) (07dde04)
  • deps: update dependency env-ci to v10 (#2983) (e759493)
  • deps: update dependency env-ci to v9 (#2757) (4bddb37)
  • deps: update dependency execa to v5 (#1745) (8262832)
  • deps: update dependency execa to v7 (#2709) (31d9bfe)
  • deps: update dependency execa to v7.1.1 (c38b53a)
  • deps: update dependency execa to v8 (#2914) (7bc21fc)
  • deps: update dependency execa to v9 (#3296) (73bcd0b)
  • deps: update dependency figures to v6 (#3033) (305674d)
  • deps: update dependency find-versions to v6 (6a2b6bb)
  • deps: update dependency get-stream to v6 (#1748) (969e460)
  • deps: update dependency hook-std to v4 (#3859) (67abe56)
  • deps: update dependency hosted-git-info to v4 (#1838) (44b3344)
  • deps: update dependency hosted-git-info to v6 (c4da008)
  • deps: update dependency hosted-git-info to v7 (#2908) (eba86ac)
  • deps: update dependency hosted-git-info to v8 (#3436) (ab10ac1)
  • deps: update dependency hosted-git-info to v9 (9fa04f8)
  • deps: update dependency import-from-esm to v2 (#3556) (f15019c)
  • deps: update dependency marked to v11 (#3079) (6d2a6f1)
  • deps: update dependency marked to v12 (#3176) (38105f5)
  • deps: update dependency marked to v15 (#3499) (e45040e)
  • deps: update dependency marked to v2 (a2eaed0)
  • deps: update dependency marked to v3 (6e4beb8)
  • deps: update dependency marked to v5 (452e1fa)
  • deps: update dependency marked to v9 (#2947) (84f2ee9)
  • deps: update dependency marked-terminal to v6 (8a7befe)
  • deps: update dependency marked-terminal to v7 (9faded8)
  • deps: update dependency read-package-up to v12 (#3935) (1494cb9)
  • deps: update dependency read-pkg-up to v10 (#2862) (70996e0)
  • deps: update dependency read-pkg-up to v11 (#3047) (f09e55f)
  • deps: update dependency semver-diff to v4 (#1915) (cb45d27)
  • deps: update dependency semver-diff to v5 (#3867) (a834948)
  • deps: update dependency yargs to v17 (#1912) (f419080)
  • deps: update dependency yargs to v18 (#3745) (cde9a72)
  • deps: update to latest npm plugin (a96aced)
  • deps: update to the beta of the npm plugin (c770748), closes semantic-release/npm#958
  • deps: update to the latest alpha of the npm plugin (7c39330), closes semantic-release/npm#958
  • deps: update to the latest alpha of the npm plugin (2434041), closes semantic-release/npm#958
  • deps: update to the latest alpha of the npm plugin (a3c1129)
  • deps: update to the stable version of the github plugin (f12cf81)
  • deps: update to the stable version of the npm plugin to add trusted publishing support (fad173e), closes semantic-release/npm#958
  • deps: update to the stable version of the release-notes-generator plugin (d9def72)
  • deps: update to yargs 16.2.0 (#1739) (d2ec893)
  • deps: updated the beta plugins to stable versions (3941018)
  • deps: updated to latest alpha of the npm plugin (ea56799)
  • deps: updated to the latest beta of the commit analyzer plugin (03a687b)
  • deps: updated to the latest beta of the npm plugin (5d1e5a0)
  • deps: updated to the latest beta of the npm plugin, which updates npm to v9 (bef1d48)
  • deps: updated to the latest betas of the commit-analyzer and release-notes-generator plugins (de8e4e0)
  • deps: updated to the latest version of the npm plugin (d647433)
  • deps: updated to the stable version of the commit-analyzer plugin (291533b)
  • deps: upgrade to the beta of the github plugin (b56bddf)
  • deps: upgrade to the beta of the npm plugin (1600e35)
  • deps: upgrade to the latest alpha of the npm plugin (e4ff786), closes semantic-release/npm#958
  • deps: upgrade to the new major version of the npm plugin (1be8290)
  • deps: upgraded release-notes-generator and commit-analyzer plugins to stable versions (041e4f7), closes #2934
  • deps: upgraded to the beta of the commit-analyzer plugin (dfc3d91)
  • deps: upgraded to the beta of the release-notes-generator plugin (4a4cd92)
  • deps: upgraded to the latest version of env-ci (0d0ed9d)
  • deps: upgraded to the latest version of the npm plugin with npm v10 (a23b718)
  • deps: use the alpha of the npm plugin (ce3618e), closes semantic-release/npm#958
  • display erroring git commands properly (1edae67)
  • do not call addChannelfor 2 merged branches configured with the same channel (4aad9cd)
  • do not clone stdout/stderr passed to pugins (63d422e)
  • do not create tags in dry-run mode for released to add to a channel (97748c5)
  • do not hide env variable value if shorter than 5 (b082a2e)
  • do not log outated branch error for missing permission cases (0578c8b)
  • do not override env variable with default if defined (3fb3fa8)
  • do not set path to plugin config defined as a Function or an Array (f93eeb7)
  • do not transform repositoryUrl if it allow to push (305f4ee)
  • do not underline log messages (c86518a)
  • docs: remove unnecessary backticks in readme (a4951b7)
  • don't parse port as part of the path in repository URLs (#1671) (77a75f0)
  • engines: fixed defined node version to account for the higher requirement from the npm plugin (#2088) (ea52e17)
  • env-ci: updated to the stable esm-only version (#2632) (918eb59)
  • escape uri encoded symbols (#1697) (f8f8fbc)
  • exclude empty env var value from replacement (20246c0)
  • exclude prereleases from version retrived by getLastRelease (e4618a2)
  • Exit with 1 if unexpected error happens (90417c6)
  • exports: removed the exports definition for the time being (561e2d6), closes #2968
  • fetch all release branches on CI (b729183)
  • fetch all tags even if the repo is not shallow (45eee4a)
  • fetch tags on repo cached by the CI (6b5b02e)
  • fix EPLUGINCONF error details (9dd127b)
  • fix Bitbucket authenticated URL (e88ac63)
  • fix branch type regexp to handle version with multiple digits (52ca0b3)
  • fix logs for plugins loaded with plugins option (58c25be)
  • fix maintenance branch regex (a022996)
  • fix range regexp to handle version with multiple digits (9a04e64)
  • fix the --no-ci arg parsing (0d2d1f2)
  • get correct version if prerelease branch shares version with ... (#2416) (e4229f9)
  • get-git-auth-url.js: Added debug for success (#3595) (2616d93)
  • gitlog: increase maxBuffer (a5cb9ea), closes #286
  • handle branch properties set to false (751a5f1)
  • handle case with no last release in history (51e340f)
  • handle errors when verifyConditions and verifyRelease are a pipeline (b0bc490)
  • harmonize parameters passed to getError (f96c660)
  • hide sensitive data in relesae notes and fail/success plugin params (dffe148)
  • hide sensitive info for Buffer and undefined (8b3605d)
  • ignore custom port when converting ssh repo URL to https (4af8548)
  • ignore lasst release only if pre-release on the same channel as current branch (990e85f)
  • Include Error properties in logs (c90765e)
  • include release notes in JS API result for dry mode (3411520)
  • increase next version on prerelease branch based on highest commit type (9ecc7a3)
  • indicate in logs if running in dry-run mode (e92c84e)
  • last-release: encode scoped packages (76d9e3d)
  • last-release: normalized registry url (af15fb4)
  • log all core verification errors (faabffb)
  • log current version of semantic-release (f92677b)
  • Log error messages on reject (f6aacd2)
  • log plugin type in addition of path (4053d8f)
  • log-repo: use the original form of the repo url to remove the need to mask credentials (#2459) (58a226f), closes #2449
  • look also for previous prerelease versions to determine the next one (9772563)
  • marked: reverted upgrade to v3 (#2087) (5edff69)
  • mask secrets when characters get uri encoded (ca90b34)
  • match tag to tagFormat from the begining of the string (31ad231)
  • modify fetch function to handle CircleCI specifics (cbef9d1)
  • normalize ci: false into noCi: true after configs get merged (#1732) thanks @dominykas (21c151f)
  • npm-plugin: upgraded to the beta, which upgrades npm to v8 (f634b8c)
  • npm-plugin: upgraded to the latest beta version (8097afb)
  • npm-plugin: upgraded to the stable version (0eca144)
  • on maintenance branch add to channel only version >= to start range (c22ae17)
  • only ever change version field in published package.json (bca89a5), closes #203
  • pacjage: update @semantic-release/github and @semantic-release/npm (d55fda3)
  • package: @semantic-release/condition-travis@6.0.0 (12b3539)
  • package: fix version ranges for engines to include specified versions (fb1aa80)
  • package: Remove commander.js dependency (#704) (c84ac15)
  • package: remove dependency bundling (55364de)
  • package: Set minimum node version to 4 (#442) (9951cf7)
  • package: update @semantic-release/commit-analyzer to version 3.0.1 (8c44c31)
  • package: update @semantic-release/commit-analyzer to version 4.0.0 (186950a)
  • package: update @semantic-release/commit-analyzer to version 7.0.0-beta.2 (725780b)
  • package: update @semantic-release/commit-analyzer to version 8.0.0 (45695b9)
  • package: update @semantic-release/error to version 2.0.0 (3a4334f)
  • package: update @semantic-release/github to version 3.0.0 (d28b7e3)
  • package: update @semantic-release/github to version 4.0.2 (af8c830)
  • package: update @semantic-release/github to version 5.3.0-beta.5 (c1c96a8)
  • package: update @semantic-release/github to version 5.6.0-beta.1 (6053b89)
  • package: update @semantic-release/github to version 7.0.0 (c48bd3a)
  • package: update @semantic-release/last-release-npm to version 2.0.0 (2d14c53)
  • package: update @semantic-release/npm to version 5.0.1 (efb4000), closes #882
  • package: update @semantic-release/npm to version 5.2.0-beta.3 (390e966)
  • package: update @semantic-release/npm to version 6.0.0-beta.3 (65c4122)
  • package: update @semantic-release/npm to version 7.0.0 (f2b5826)
  • package: update @semantic-release/release-notes-generator to version 3.0.1 (1fa6d50)
  • package: update @semantic-release/release-notes-generator to version 4.0.0 (dd60b46)
  • package: update @semantic-release/release-notes-generator to version 5.0.0 (8a1dd7b)
  • package: update @semantic-release/release-notes-generator to version 9.0.0 (3c7b114)
  • package: update @semantic-release/github (9a30f35)
  • package: update @semantic-release/npm and @semantic-release/github (d6731b9)
  • package: update aggregate-error to version 2.0.0 (5d6fd7c)
  • package: update aggregate-error to version 2.0.0 (1aefd98)
  • package: update aggregate-error to version 3.0.0 (06fe435)
  • package: update cosmiconfig to version 4.0.0 (51c02b9)
  • package: update cosmiconfig to version 5.0.0 (349b2e8)
  • package: update cosmiconfig to version 6.0.0 (ffff100)
  • package: update debug to version 4.0.0 (7b8cd99)
  • package: update dependency lodash to address security warnings (#1253) (9a8a36c)
  • package: update env-ci to version 2.0.0 (b9bd650)
  • package: update env-ci to version 3.0.0 (b9ae7d2)
  • package: update env-ci to version 4.0.0 (8051294)
  • package: update env-ci to version 5.0.0 (3739ab5)
  • package: update execa to version 0.10.0 (f13ec6a)
  • package: update execa to version 0.11.0 (edd8bc2)
  • package: update execa to version 0.9.0 (93173e2)
  • package: update execa to version 1.0.0 (1aed97e)
  • package: update execa to version 2.0.0 (52c48be)
  • package: update execa to version 3.0.0 (9537927)
  • package: update execa to version 3.2.0 (1693073)
  • package: update figures to version 3.0.0 (f4cf7c8)
  • package: update find-versions to version 3.0.0 (669c9ed)
  • package: update get-stream to version 4.0.0 (e882096)
  • package: update get-stream to version 5.0.0 (0a584de)
  • package: update git-url-parse to version 10.0.1 (d3c7232)
  • package: update git-url-parse to version 8.1.0 (2edd9da)
  • package: update git-url-parse to version 8.3.1 (02746aa)
  • package: update git-url-parse to version 9.0.0 (7c9ec41)
  • package: update github to version 12.0.0 (16a02e5)
  • package: update github to version 7.0.0 (3295f95)
  • package: update github to version 8.0.0 (afd6ab7)
  • package: update hook-std to version 1.0.0 (29e7ebf)
  • package: update hook-std to version 2.0.0 (db3fc3e)
  • package: update hosted-git-info to version 2.7.1 (0862480)
  • package: update hosted-git-info to version 3.0.0 (391af98)
  • package: update lodash to version 4.17.4 (fa2ca8a)
  • package: update marked to version 0.4.0 (a387c04)
  • package: update marked to version 0.5.0 (2f4befe)
  • package: update marked to version 0.6.0 (d0891bf)
  • package: update marked to version 0.6.0 (b7aeaba)
  • package: update marked to version 0.7.0 (75f0830)
  • package: update marked to version 1.0.0 (#1534) (d64db31)
  • package: update marked-terminal to version 3.0.0 (cd8ff5d)
  • package: update marked-terminal to version 4.0.0 (8ce2d6e)
  • package: update micromatch to version 3.1.10 (e5344cd)
  • package: update micromatch to version 4.0.2 (5618641)
  • package: update nopt to version 4.0.0 (b10c891)
  • package: update p-each-series to version 2.1.0 (2c655b2)
  • package: update p-locate to version 3.0.0 (0ab0426)
  • package: update p-locate to version 4.0.0 (a5babc6)
  • package: update p-reduce to version 2.0.0 (30723c5)
  • package: update read-pkg-up to version 4.0.0 (9137f85)
  • package: update read-pkg-up to version 5.0.0 (a90a103)
  • package: update read-pkg-up to version 6.0.0 (74103ab)
  • package: update read-pkg-up to version 7.0.0 (0e24022)
  • package: update resolve-from to version 5.0.0 (6f3c21a)
  • package: update semver to version 6.0.0 (d61e3bc)
  • package: update semver-diff to version 3.1.1 (581998c)
  • package: update yargs to version 12.0.0 (d4f68a5)
  • package: update yargs to version 13.1.0 (aed4ea2)
  • package: update yargs to version 14.0.0 (3c2fe35)
  • package: update yargs to version 15.0.1 (2c13136)
  • package: use correct condition-travis version (ef872e3)
  • pass a branch name to getGitAuthUrl (e7bede1)
  • pass custom env and cwd to env-ci (540d4fa)
  • pin initial branch to master (#1740) (32a2c91)
  • plugin-load: clarify load message (6a36832), closes #811
  • plugins: pass right path to generateNotes (e1d5da5)
  • plugins: rename plugins (150273c)
  • plugins: require user plugins relative to the cwd (43c8df0)
  • plugins: typo in plugin name (8892ec7)
  • post: Create a tag before makeing a release (3f85597)
  • post: create git tag properly (0c79a9b)
  • post: fix target_commitish to be the default branch (f148a61)
  • prefix git auth with "x-access-token:" when run in a GitHub Action (038e640)
  • prevent false positive secret replacement for Golang projects (#1562) (eed1d3c)
  • prevent git CLI to prompt user/password on CI (7c48afa)
  • prevent git prompt before permissions verification (30ee231)
  • prioritize GIT_CREDENTIALS for gtit credentials (467635b)
  • push only tags to remote repo (2b082ac)
  • registry: be better at using the correct registry (relevant for npme) (4513781), closes #53
  • remove execa timeout (3c46455)
  • remove name from log as it's not an existing option anymore (fcb832b)
  • remove confusing logs when searching for releases to add to a channel (162b4b9)
  • remove debugging console.error (3d5db1f)
  • remove dependency to git-url-parse (a99355e)
  • remove hack to workaround GitHub Rebase & Merge (844e0b0)
  • remove redundant log (728ea34)
  • remove support for node < 8 (f534c57)
  • remove the github plugin from default success and fail hooks (04f3061)
  • remove unecessary console.log (e5a73d8)
  • remove unnecessary await (9a1af4d)
  • remove unnecessary branch parameter from push function (968b996)
  • remove unnecessary branch parameter from push function (ffe1062)
  • rename default branch (7a9922a)
  • rename the --repositoryUrl CLI option to --repository-url (cb36dd4)
  • repositoryUrl: on beta repositoryUrl needs auth for pre-release flows (#1186) (3610422)
  • require Node.js >=8.16 (2f3d934)
  • Revert "fix(deps): update dependency cosmiconfig to v9" (#3104) (f6f1bf1)
  • revert to the correct refspec in fetch function (9948a74)
  • revert updating cosmiconfig to v9 (88efead)
  • secrets-masking: used the proper named import from hook-std to enable masking for stderr (#2619) (cf6befa)
  • security: Updated marked dependency (f4d9ebe)
  • set default path to generateNotes object config (d8e59cc)
  • set node minimum version to 8.3 (cc0c312)
  • set repository authentication when repositoryUrl is set as an option (ce1e74f)
  • simplify get-tags algorithm (00420a8)
  • support multiple generate-notes plugin in CLI arg (4f75cb3)
  • support windows absolute extends (#3062) (0d06f62)
  • throws error if the commit associated with a tag cannot be found (1317348)
  • types: fixed typescript definition (0e08b5c), closes #3601
  • types: included the definitions file in the published package (#2920) (4c95c97)
  • typo in EPLUGINCONF error message (bc8551c)
  • Typo in error messages (613a646)
  • unshallow repository with credentials (45d7e6f)
  • update link to GitLab CI introduction (#1794) (a9be97b)
  • update plugin versions (0785a84)
  • update plugins dependencies (9890584)
  • update plugins dependencies (73f0c77)
  • upgrade marked to resolve ReDos vulnerability (#2330) (d9e5bc0)
  • use --no-verify when testing the Git permissions (b54b20d)
  • use git ls-remote to verify if the remote branch is ahead (2b6378f)
  • use git rev-parse origin/${branch} to verify origin head (d7081fa)
  • use authenticated URL to check if local branch is up to date (7a939a8)
  • use correct ci branch context (#1521) (0f0c650)
  • use correct debug namespace (6f74dcb)
  • Use default plugin if the path property is missing from a single plugin configuration (d4c7605)
  • use long option to delete tag in git push (d820823)
  • use module name in logs for plugins loaded with plugins option (ff275a5)
  • use one note reference per tag to prevent conflicts (#2085) (020ea7d)
  • use spawn instead of exec for 'git log' to avoid maxBuffer err (73138f8)
  • use travis-deploy-once to reenable travis-pro support (2be6e5d)
  • use unauthenticated URL to check if branch is up to date (071dcce)
  • use valid git credentials when multiple are provided (#1669) (2bf3771)
  • verify branch first (1966f0e)
  • verify is branch is up to date by comparing remote and local HEAD (a8747c4)
  • verify the local branch is up to date with the remote one (d15905c)
  • verify: ensure repo url in package.json is well formed (431babb)
  • windows: fixed issues preventing execution from windows (#2672) (5df624c)
  • write version to shrinkwrap if existent (a7270bb), closes #11

chore

  • require Node.js >=10.18 (bec57cd)

Code Refactoring

  • use one config object instead of passing arguments to plugins on their own (d9eeb3f)

Documentation

Features

  • add success and fail notification plugins (49f5e70)
  • add tagFormat option to customize Git tag name (39536fa)
  • add warn type to global context.logger (#3423) (bcc663c)
  • add debug logs for git commands (687435b)
  • add fallbackTag functionality and map "next" to "latest" (7a4c89f)
  • add logs about prepare, publish, success and fail plugins skipped in dry-run mode (90da6a0)
  • add main branch to default release branch config (#1737) (95d8736)
  • add new plugins option (5ba5010)
  • add support for Bitbucket token in environment variables (c93775c)
  • add support for git version 2.0.0 (47c73eb)
  • add the prepare plugin hook (c2beb64)
  • Added TypeScript definitions (#2916) (c21a1ac)
  • Additional commit information (d0180c4)
  • allow addChannel plugins to return false in order to signify no release was done (e1c7269)
  • allow publish plugins to return false in order to signify no release was done (47484f5)
  • allow publish plugins to return false in order to signify no release was done (70c68ef)
  • allow plugins to throw an iterable list of errors (9b2f6bf)
  • allow to define multiple generateNotes plugins (5989989)
  • allow to define plugin options globally (f707b1a)
  • allow to disable the publish plugin hook (4454d57)
  • allow to exclude commits from analysis (53f3de6)
  • Allow to recover from ENOTINHISTORY with a tag and handle detached head repo (580ad9c)
  • allow to release any version on a branch if up to date with next branch (916c268)
  • allow to release from local machine (5bc46a0)
  • allow to use shorthand for repositoryUrl (5f1d530)
  • bin: implement cli (a0190b7)
  • bitbucket-basic-auth: support for bitbucket server basic auth (#1578) (a465801)
  • clarify branch existence requirement in error messages (#3462) (05a2ea9)
  • cli: add verifyConditions hook (13e2f5c)
  • commits: initial functionality (861debb)
  • config: Use cosmiconfig defaults to support .cjs config files (#1815) (3ecc196), closes #1814
  • conventional-changelog-presets: supported new preset format (07a79ea)
  • defined exports for the package (72ab317)
  • docs: note that publish token is required (#1700) (885d87a)
  • esm: convert to esm (#2569) (9eab1ad), closes #2543
  • Expect plugins to return Promises (5bec59b)
  • Extract npm and github publish to plugins (d548edc)
  • get last release with git tags (d0b304e)
  • hide sensitive info in stdout/sdtin (fb0caa0)
  • improve CLI (97cb354)
  • initial (4093bb2)
  • last-release: add custom dist-tag (dbea5cc)
  • last-release: initial functionality (f62525a)
  • log git error message when authentication verification fails (cd9f2bd)
  • log all verification errors (cdb98f9)
  • log with signale and allow to customize stdin and stdout (0626d57)
  • make semantic-release CI agnostic (8d57565)
  • Make semantic-release language agnostic (0c67ba5)
  • move npm workaround for missing gitHead to the npm plugin (996305d)
  • nerf-dart: copy in nerf-dart module from npm (c59b5ca)
  • node-version: raised the minimum required version to v14.17 (#2132) (66cc2b4)
  • node-versions: drop support for node versions v20, v21, and v23 (56d16f4)
  • node-versions: dropped support for node v18 and raised the minimum for v20 (2904832)
  • node-versions: raise the minimum node version for the v24 range (116a188)
  • node-versions: raised the minimum node v20 requirement to v20.6 (e623cc6)
  • node-versions: raised the minimum required node version to v18 (#2620) (8a0d8be)
  • node-versions: raised the minimum required node version to v18.17 and dropped v19 support (b9f294d)
  • node-versions: raised the minimum supported node version w/in the v20 range to v20.6.1 (b93bef4)
  • package: update @semantic-release/commit-analyzer to version 7.0.0 (e63e753)
  • package: update condition-travis (626315e)
  • pass cwd and env context to plugins (a94e08d)
  • pass envi-ci values to plugins context (a8c747d)
  • paths: add paths configuration option to filter commits by path (#1) (6c36937)
  • plugins: add getLastRelease hook (7ceac76), closes #56
  • plugins: add support for loading ESM plugins (#2688) (d170f73)
  • plugins: normalize plugins and have unified function signature (057e8e9)
  • plugins: run verifications in series (700ec9d)
  • post: Adds GitHub Enterprise support (2644bad), closes #146
  • post: initial (59d852d)
  • pre: plugging last-release, commits and type together (a4fe18c)
  • Refactor CLI to run with one command, improve logs, modularize, add tests (e2a8a5c)
  • require Node.js >=10.13 (0716a45)
  • require Node.js >=8.15 (f1d983d)
  • Retrieve version gitHead from git tags and unshallow the repo if necessary (85dd69b), closes #447 #393 #280 #276
  • return lastRelease, commits, nextRelease, releases from JS API (417779e)
  • set tag author and committer name/email (61d7d38)
  • ssl: expose cafile from npm config (ad2a615)
  • support multiple branches and distribution channels (7b40524)
  • support multiple plugins for the analyzeCommits step (5180001)
  • support sharable configuration (754b420)
  • type: initial functionality (a405021)
  • use @semantic-release/github as default for success and fail hooks (9788fca)
  • use Git notes to store the channels on which a version has been released (b2c1b2c)
  • verify minimum required git version is installed (db1cc60)
  • verify: added support for parsing hosted gitlab and other repo urls (66454e7), closes #114
  • verify: initial verification for pkg, options and env (b63a43f)

Performance Improvements

  • get-tags.js: bulk get for tags notes (#3732) (85187e2)
  • use git tag --merge <branch> to filter tags present in a branch history (cffe9a8)

Reverts

  • docs: repared broken links to "CI configuration recipes" (e00b6c8)
  • Revert "chore(deps): update dependency ava to v5.1.1" (#2682) (914b0a2)
  • Revert "fix(deps): update dependency yargs to v17" (#2534) (8f07522), closes #2533

BREAKING CHANGES

  • node-versions: the minimum node version for the v24 range is now v24.10.0
  • node-versions: a minimum of node v22.14 is now required
  • deps: the commit-analyzer plugin now expects to be used with the latest major versions of
    conventional-changelog packages. if you are installing any of these packages in addition to
    semantic-release, be sure to update them as well
  • deps: the release-notes-generator plugin now expects to be used with the latest major
    versions of conventional-changelog packages. if you are installing any of these packages in addition
    to semantic-release, be sure to update them as well
  • deps: woodpecker ci users need to upgrade to v1.0.0 or higher to remain supported. see
    https://github.com/semantic-release/env-ci/releases/tag/v11.0.0 for more information
  • node-versions: support for node v18 has been dropped and the minimum for v20 is now v20.8.1

related to semantic-release#3088

  • deps: if using release.config.js as the name of your config file, it needs to be moved to a .config/ directory. see https://github.com/cosmiconfig/cosmiconfig/releases/tag/v9.0.0 for more detail
  • node-versions: the minimum supported version for the v20 range of node has been raised slightly to
    v20.6.1 to avoid a known node bug
  • node-versions: the minimum supported node version in the v20 major range is now v20.6
  • node-versions: node v18.17 is now the minimum supported node version and support for v19 has been dropped
  • exports prevents access to internal files, but they arent intended for public use anyway
  • conventional-changelog-presets: the new preset format is a breaking change when compared to the previous preset format. updating to support the new format means that the old preset format is no longer supported. update your preset to the latest version to maintain compatibility
  • deps: the npm plugin has updated the npm dependency to v9
  • legacy authentication using NPM_USERNAME and NPM_PASSWORD is no longer supported. Use NPM_TOKEN instead.
  • esm: semantic-release is now ESM-only. since it is used through its own executable, the impact on consuming projects should be minimal
  • esm: references to plugin files in configs need to include the file extension because of executing in an ESM context
  • npm-plugin: @semantic-release/npm has also dropped support for node v15
  • node v15 has been removed from our defined supported versions of node. this was done to upgrade to compatible versions of marked and marked-terminal that resolved the ReDoS vulnerability. removal of support of this node version should be low since it was not an LTS version and has been EOL for several months already.
  • node-version: the minimum required version of node is now v14.17
  • Require Node.js >= 10.18
  • Require Node.js >= 10.13
  • this feature change the way semantic-release keep track of the channels on which a version has been released.
    It now use a JSON object stored in a Git note instead of Git tags formatted as v{version}@{channel}.

The tags formatted as v{version}@{channel} will now be ignored. If you have made releases with v16.0.0 on branches other than the default one you will have to update your repository.

The changes to make consist in:

  • Finding all the versions that have been released on a branch other than the default one by searching for all tags formatted v{version}@{channel}
  • For each of those version:
    • Create a tag without the {@channel} if none doesn't already exists
    • Add a Git note to the tag without the {@channel} containing the channels on which the version was released formatted as {"channels":["channel1","channel2"]} and using null for the default channel (for example.{"channels":[null,"channel1","channel2"]})
    • Push the tags and notes
    • Update the GitHub releases that refer to a tag formatted as v{version}@{channel} to use the tag without it
    • Delete the tags formatted as v{version}@{channel}
  • Git CLI version 2.7.1 or higher is now required

The --merge option of the git tag command has been added in Git version 2.7.1 and is now used by semantic-release

  • Require Node.js => 8.15
  • package: Regexp are not supported anymore for property matching in the releaseRules option.

Regex are replaced by globs. For example /core-.*/ should be changed to 'core-*'.

  • the branch option has been removed in favor of branches

The new branches option expect either an Array or a single branch definition. To migrate your configuration:

  • If you want to publish package from multiple branches, please the configuration documentation
  • If you use the default configuration and want to publish only from master: nothing to change
  • If you use the branch configuration and want to publish only from one branch: replace branch by branches ("branch": "my-release-branch" => "branches": "my-release-branch")
  • Committing or creating files in the publish plugin hook is not supported anymore and now must be done in the prepare hook

Plugins with a publish hook that makes a commit or create a file that can be committed must use the prepare hook.

  • success and fail hooks are now enabled by default

In order to disable the @semantic-release/github plugin for the success and fail hook, the corresponding options have to be set to false in the semantic-release configuration:

{
  "release": {
    "success": false,
    "fail": false
  }
}

Users who do not use the @semantic-release/github plugin, should disable it in the success and fail by setting the corresponding options to false or to alternative plugin providing success and fail hooks.

  • The --repositoryUrl CLI options is replaced by --repository-url
  • Remove the getLastRelease plugin type

The getLastRelease plugins will not be called anymore.

  • Git repository authentication is now mandatory

The Git authentication is now mandatory and must be set via GH_TOKEN, GITHUB_TOKEN, GL_TOKEN, GITLAB_TOKEN or GIT_CREDENTIALS as described in CI configuration.

  • semantic-release doesn't make sure it runs only on one Travis job anymore.
    The CI configuration has to be done such that semantic-release
  • runs only once per build
  • runs only after all tests are successful on every jobs of the build
  • runs on Node >=8

This can easily be done with travis-deploy-once.

Migration Guide

Modify your .travis.yml to use travis-deploy-once.
Replace:

after_success:
  - npm run semantic-release

by:
Replace

after_success:
  - npm install -g travis-deploy-once@4
  - travis-deploy-once "npm run semantic-release"
  • pkg and env are not passed to plugin anymore.
    Plugins relying on a package.json must verify the presence of a valid package.json and load it.
    Plugins can use process.env instead of env.
  • Each plugin is expected to return an async function or a Promise returning function. The callback parameter is not passed to plugins anymore.
  • githubToken, githubUrl and githubApiPathPrefix have to be set at the github plugin level. They can be set via GH_TOKEN, GH_URL and GH_PREFIX environment variables.
  • the npm parameter is not passed to any plugin anymore. Each plugin have to read .npmrc if they needs to (with https://github.com/kevva/npm-conf for example).
  • Semantic-Release must now be executed with semantic-release instead of semantic-release pre && npm publish && semantic-release post.
  • The semantic-release command now returns with exit code 0 on expected exception (no release has to be done, running on a PR, gitHead not found, other CI job failed etc...). It only returns with 1 when there is an unexpected error (code error in a plugin, plugin not found, git command cannot be run etc..).
  • Calling the semantic-release command with unexpected argument(s) now exit with 1 and print an help message.
  • Semantic-Release does not rely on npmlog anymore and the log level cannot be configured. Debug logs can be activated with CLI option --debug or with environment variable DEBUG=semantic-release:*
  • The CLI options --debug doesn't enable the dry-run mode anymore but activate the debugs. The dry run mode is now set with the CLI command --dry-run or -d.
  • Remove support for publishing a package with node < 8. Details.
  • package: Dropped support for unmaintained Node.js versions (< v4)
  • If you run travis_after_all and travis-after-all at the same
    time they'll keep waiting for each other until forever. You have to apply
    this patch to your .travis.yml.
* In cases where you pushed a new commit with a "dist-tag"
configuration of "next" and no version was previously published as "next",
semanitc-release failed and did not publish a new version. It will now
automatically fall back to to "latest".
* cli arguments are now normalized to camelCase, so e.g. `options['github-url']` is now `options.githubUrl`

2. Plugins no longer receive config they need one by one, but in one huge object. This way it's easier to pass more info in the future w/o breaking existing plugins that rely on the position of the callback in the arguments array.
* Plugins now need to read their passed options from one huge config object.

Old:
```js
module.exports = function (pluginConfig, foo, bar, cb) {…}

New:

// ES5
module.exports = function(pluginConfig, config, cb) {
  var foo = config.foo
  var bar = config.bar
  …
}

// ES6
module.exports = function (pluginConfig, {foo, bar}, cb) {…}