# commitlint changelog > Lints commit messages against conventional-commit rules, as a CLI or hook. - Vendor: conventional-changelog - Category: Developer Tools - Official site: https://commitlint.js.org - Tracked by: What's New (https://whatsnew.fyi/product/commitlint) - Harvested from: GitHub (conventional-changelog/commitlint) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v21.2.1 - Date: 2026-07-08 - Version: v21.2.1 - Original notes: https://github.com/conventional-changelog/commitlint/releases/tag/v21.2.1 - Permalink: https://whatsnew.fyi/product/commitlint/releases/v21.2.1 #### [21.2.0](https://github.com/conventional-changelog/commitlint/compare/v21.1.0...v21.2.0) (2026-06-30) ###### Features * **resolve-extends:** resolve pure-ESM presets (conventional-changelog v7/v9/v10) ([#4859](https://github.com/conventional-changelog/commitlint/issues/4859)) ([fdb566f](https://github.com/conventional-changelog/commitlint/commit/fdb566fe59457a786eac80e2a8cbb994638daba0)) ###### Chore, doc, etc. * chore(read): replace deprecated git-raw-commits with git-client by @igordanchenko in https://github.com/conventional-changelog/commitlint/pull/4860 * docs(issue-template): ask for package manager and version by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4867 ##### New Contributors * @igordanchenko made their first contribution in https://github.com/conventional-changelog/commitlint/pull/4860 **Full Changelog**: https://github.com/conventional-changelog/commitlint/compare/v21.2.0...v21.2.1 ### v21.2.0 - Date: 2026-06-30 - Version: v21.2.0 - Original notes: https://github.com/conventional-changelog/commitlint/releases/tag/v21.2.0 - Permalink: https://whatsnew.fyi/product/commitlint/releases/v21.2.0 #### [21.2.0](https://github.com/conventional-changelog/commitlint/compare/v21.1.0...v21.2.0) (2026-06-30) ###### Features * feat(resolve-extends): resolve pure-ESM presets (conventional-changelog v7/v9/v10) by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4859 ###### Chore * ci: install git in stock-Ubuntu baseline job by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4847 **Full Changelog**: https://github.com/conventional-changelog/commitlint/compare/v21.1.0...v21.2.0 ### v21.1.0 - Date: 2026-06-23 - Version: v21.1.0 - Original notes: https://github.com/conventional-changelog/commitlint/releases/tag/v21.1.0 - Permalink: https://whatsnew.fyi/product/commitlint/releases/v21.1.0 #### [21.1.0](https://github.com/conventional-changelog/commitlint/compare/v21.0.2...v21.1.0) (2026-06-23) ###### Bug Fixes * fix: remove duplicate es-toolkit@1.47.1 keys from lockfile by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4833 ###### Features * feat(cli): add --default-config flag to lint without a config file by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4805 * feat(lint): allow for custom commit parser function by @esatterwhite in https://github.com/conventional-changelog/commitlint/pull/4829 ###### Docs, chore, etc. * test(cli): verify --cwd redirects config resolution #997 by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4796 * docs: add ai agent support (skill, guide, llms.txt) by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4804 * docs: add TDD commit flow and review expectations for contributors by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4836 ##### New Contributors * @esatterwhite made their first contribution in https://github.com/conventional-changelog/commitlint/pull/4829 **Full Changelog**: https://github.com/conventional-changelog/commitlint/compare/v21.0.2...v21.1.0 ### v21.0.2 - Date: 2026-05-29 - Version: v21.0.2 - Original notes: https://github.com/conventional-changelog/commitlint/releases/tag/v21.0.2 - Permalink: https://whatsnew.fyi/product/commitlint/releases/v21.0.2 ##### [21.0.2](https://github.com/conventional-changelog/commitlint/compare/v21.0.1...v21.0.2) (2026-05-29) ###### Bug Fixes * fix: emit actionable error when --edit cannot find COMMIT_EDITMSG (#589) by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4755 * fix: apply oxfmt formatting to get-edit-commit.ts by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4768 * fix(read): fail when --from and --to share no merge-base #4555 by @CervEdin in https://github.com/conventional-changelog/commitlint/pull/4754 * fix: disallow same commit hash for --from and --to by @knocte in https://github.com/conventional-changelog/commitlint/pull/4773 ###### Chore/CI * ci: have renovate rebase stale PRs before merging by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4782 * chore: have renovate hold PRs for 3 days after release by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4788 * chore: anchor vite 8 by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4790 * ci: run commitlint once per same-repo PR by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4795 ##### New Contributors * @CervEdin made their first contribution in https://github.com/conventional-changelog/commitlint/pull/4754 **Full Changelog**: https://github.com/conventional-changelog/commitlint/compare/v21.0.1...v21.0.2 ### v21.0.1 - Date: 2026-05-12 - Version: v21.0.1 - Original notes: https://github.com/conventional-changelog/commitlint/releases/tag/v21.0.1 - Permalink: https://whatsnew.fyi/product/commitlint/releases/v21.0.1 ##### [21.0.1](https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1) (2026-05-12) ###### Bug Fixes * fix(load): only resolve relative formatter paths by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4761 * fix(types): add presetConfig to ParserPreset interface by @SAY-5 in https://github.com/conventional-changelog/commitlint/pull/4749 ##### CI * ci: stop spawning schedule jobs on contributors' forks by @knocte in https://github.com/conventional-changelog/commitlint/pull/4753 * ci: add weekly non-blocking pnpm audit by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4766 ##### New Contributors * @SAY-5 made their first contribution in https://github.com/conventional-changelog/commitlint/pull/4749 **Full Changelog**: https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1 ### v21.0.0 - Date: 2026-05-08 - Version: v21.0.0 - Original notes: https://github.com/conventional-changelog/commitlint/releases/tag/v21.0.0 - Permalink: https://whatsnew.fyi/product/commitlint/releases/v21.0.0 > Heads-up: --legacy-output is a transitional escape hatch. It will be removed in a future major release. Plan to migrate your parsers / snapshots to the new format during the v21 lifecycle. ## [21.0.0](https://github.com/conventional-changelog/commitlint/compare/v20.5.3...v21.0.0) (2026-05-08) ### Breaking - chore!: minimum node version v22 by @escapedcat in #4679 - feat!: show input from a new line by @knocte in #4727 (adds --legacy-output flag) ### Fixes - fix: widen cz-commitlint inquirer peer dep to support v9–v12 by @escapedcat in #4682 — closes #4554 ### Internals (Node 22 cleanup) - chore: replace dependencies with Node 22 built-ins by @escapedcat in #4681 — drops glob, fast-glob, import-meta-resolve, minimist, fs-extra - refactor: replace read-pkg with native fs.readFile + JSON.parse by @escapedcat in #4742 - chore: update dependency yargs to v18 by @escapedcat in #4686 - chore: remove cross-env, move env vars to vitest config by @escapedcat in #4684 ### Dependency updates - chore: update dependency @types/node to v22.19.17 by @renovate[bot] in #4739 - chore: update dependency @swc/core to v1.15.33 by @renovate[bot] in #4743 Full Changelog: https://github.com/conventional-changelog/commitlint/compare/v20.5.3...v21.0.0 ### v20.5.3 - Date: 2026-04-30 - Version: v20.5.3 - Original notes: https://github.com/conventional-changelog/commitlint/releases/tag/v20.5.3 - Permalink: https://whatsnew.fyi/product/commitlint/releases/v20.5.3 ##### [20.5.3](https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3) (2026-04-30) ##### Refactor * refactor: replace all lodash.* dependencies with es-toolkit/compat by @debuggingfuture in https://github.com/conventional-changelog/commitlint/pull/4734 ##### Docs * docs: use nodejs commands for creating files on Windows (#4728) by @festoney8 in https://github.com/conventional-changelog/commitlint/pull/4730 ##### New Contributors * @festoney8 made their first contribution in https://github.com/conventional-changelog/commitlint/pull/4730 * @debuggingfuture made their first contribution in https://github.com/conventional-changelog/commitlint/pull/4734 **Full Changelog**: https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3 ### v20.5.2 - Date: 2026-04-25 - Version: v20.5.2 - Original notes: https://github.com/conventional-changelog/commitlint/releases/tag/v20.5.2 - Permalink: https://whatsnew.fyi/product/commitlint/releases/v20.5.2 ##### [20.5.2](https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2) (2026-04-25) Just minor dep updates before the next breaking change ##### Chore & Docs * chore: remove codesandbox ci integration by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4680 * docs: add Windows UTF-8 encoding note to getting started guide by @Chessing234 in https://github.com/conventional-changelog/commitlint/pull/4699 * docs: improve parserPreset documentation with examples and options reference by @Chessing234 in https://github.com/conventional-changelog/commitlint/pull/4700 * docs: fix subject-case rule default from 'always' to 'never' by @Chessing234 in https://github.com/conventional-changelog/commitlint/pull/4703 ##### New Contributors * @Chessing234 made their first contribution in https://github.com/conventional-changelog/commitlint/pull/4699 **Full Changelog**: https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2 ### v20.5.1 - Date: 2026-03-31 - Version: v20.5.1 - Original notes: https://github.com/conventional-changelog/commitlint/releases/tag/v20.5.1 - Permalink: https://whatsnew.fyi/product/commitlint/releases/v20.5.1 ##### [20.5.1](https://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1) (2026-03-31) ###### Bug Fixes * fix(cz-commitlint): add VS16 to single character emojis by @mrt181 in https://github.com/conventional-changelog/commitlint/pull/4666 * fix(cz-commitlint): handle modifiers correctly by @mrt181 in https://github.com/conventional-changelog/commitlint/pull/4667 ###### Reverts * Revert "fix: update dependency global-directory to v5 (#4671)" by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4677 ##### Core & co * chore: deps and CI improvements by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4660 * ci: restore push on all branches, avoid duplicate runs by @escapedcat in https://github.com/conventional-changelog/commitlint/pull/4665 **Full Changelog**: https://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1 ### v20.5.0 - Date: 2026-03-15 - Version: v20.5.0 - Original notes: https://github.com/conventional-changelog/commitlint/releases/tag/v20.5.0 - Permalink: https://whatsnew.fyi/product/commitlint/releases/v20.5.0 #### [20.5.0](https://github.com/conventional-changelog/commitlint/compare/v20.4.4...v20.5.0) (2026-03-15) ###### Bug Fixes * fix(resolve-extends): always resolve extended parser presets for proper merging by @omar-y-abdi in https://github.com/conventional-changelog/commitlint/pull/4647 * fix(load): resolve async config exports in CJS projects by @omar-y-abdi in https://github.com/conventional-changelog/commitlint/pull/4659 * fix(cli): validate that --cwd directory exists before execution by @omar-y-abdi in https://github.com/conventional-changelog/commitlint/pull/4658 ###### Features * feat(cz-commitlint): add exclamation mark support for breaking changes by @mrt181 in https://github.com/conventional-changelog/commitlint/pull/4655 ##### New Contributors * @mrt181 made their first contribution in https://github.com/conventional-changelog/commitlint/pull/4655 * @omar-y-abdi made their first contribution in https://github.com/conventional-changelog/commitlint/pull/4647 **Full Changelog**: https://github.com/conventional-changelog/commitlint/compare/v20.4.4...v20.5.0