# Git Commit Message Convention > This is adapted from [Angular's commit convention][angular-commit-convention]. Messages must be matched by the following regex (case-insensitive): ```ts /^(revert: )?(feat|fix|docs|style|refactor|perf|test|build|ci|chore|types|infra)(\(.+\))?!?: .{1,72}/i; ``` The commit type is **case-insensitive** — `feat`, `Feat`, and `FEAT` are all valid. ## Examples ### Features Appears under "Features" header, message subheader: ```txt feat(message): add 'downloadMedia' option ``` Additional examples: ```txt feat(chat): add ability to pin messages ``` ```txt feat(contact): add getProfilePicUrl method ``` ### Bug Fixes Appears under "Bug Fixes" header, client subheader, with a link to issue #28: ```txt fix(client): stop client breaking when QR code expires Closes #28 ``` Additional examples: ```txt fix(message): handle media messages without caption correctly ``` ```txt fix(auth): resolve authentication timeout on slow connections ``` ### Performance Improvements Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation: ```txt perf(message): remove legacyMode option BREAKING CHANGE: The legacyMode option has been removed. The new message handling is always used for performance reasons. ``` Additional example: ```txt perf(client): optimize event listener registration ``` ### Documentation ```txt docs(readme): update installation instructions ``` ```txt docs(api): add examples for message reactions ``` ### Code Refactoring ```txt refactor(client): simplify authentication flow ``` ```txt refactor(structures): extract common message properties ``` ### Tests ```txt test(message): add unit tests for media download ``` ```txt test(client): add integration tests for reconnection ``` ### Build System ```txt build(deps): update puppeteer to v21.0.0 ``` ```txt build(webpack): optimize bundle size ``` ### Continuous Integration ```txt ci(actions): add automated release workflow ``` ```txt ci(tests): run tests on multiple node versions ``` ### Chores ```txt chore(gitignore): ignore .vscode directory ``` ```txt chore(deps): bump dependencies to latest versions ``` ### Type Definitions ```txt types(message): add missing type for MessageMedia ``` ```txt types(client): improve ClientOptions interface ``` ### Code Style ```txt style(client): fix indentation and spacing ``` ### Reverts The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header: ```txt revert: feat(message): add 'downloadMedia' option This reverts commit 667ecc1654a317a13331b17617d973392f415f02. ``` A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**: ```txt ():