Termux commit messages follow the Conventional Commits specification so that changelogs can be generated automatically by theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/termux/termux-app/llms.txt
Use this file to discover all available pages before exploring further.
create-conventional-changelog script in the format required by Keep a Changelog. Consistent commit messages are not a style preference — they are a build requirement, because the changelog generation and release tooling depend on them.
Commit message format
- The first letter of
typemust be capitalised. - The first letter of
descriptionmust be capitalised. - The
descriptionshould be written in the present tense (“Fix crash” not “Fixed crash”). - A space after the colon is required.
- For a breaking change, add an exclamation mark
!immediately before the colon. This causes the entry to be highlighted in the generated changelog.
Allowed types
Only the types listed below may be used. They match the changelog headings exactly — do not abbreviate or use alternatives such asadd, fix, or chore.
| Type | When to use |
|---|---|
Added | New features |
Changed | Changes in existing functionality |
Deprecated | Features that will be removed in a future release |
Removed | Features that have been removed |
Fixed | Bug fixes |
Security | Security vulnerability fixes |
Examples
scope in parentheses is optional and can be any short label that identifies the affected component (e.g. terminal, keyboard, bootstrap).
The | separator in the last example is the way to attribute a single commit to multiple types when the change genuinely addresses two categories.
What not to write
Wrong type casing
Wrong type casing
Unsupported type keywords
Unsupported type keywords
Past tense description
Past tense description
Version naming
TheversionName in every build.gradle file in the Termux ecosystem must comply with Semantic Versioning 2.0.0:
versionName does not match the spec, the Gradle build and the attach_debug_apks_to_release workflow will both fail.
Key rules:
- Always include the patch number: use
v0.1.0, neverv0.1. - Apply the same format when creating GitHub release tags.
- Pre-release identifiers and build metadata are allowed:
v0.119.0-beta.1,v0.119.0+build.42.
versionName in app/build.gradle is 0.118.0 (versionCode 118). The termux-shared library publishes as version 0.118.0 via its Maven publication in termux-shared/build.gradle.
Contributing checklist
Before opening a pull request, verify the following:Use TermuxConstants for all shared values
Paths, package names, intent actions, and intent extras must reference constants from
TermuxConstants rather than being written as string literals. Pull requests with hardcoded values will not be accepted.Update CHANGELOG files
When modifying
termux-shared, update the changelog in termux-shared/. When modifying the app, update the app’s changelog.Place shared code in the correct package
Termux app and plugin specific classes belong under
com.termux.shared.termux. General-purpose utilities that do not depend on Termux specifics should live outside that package.Check the termux-shared licence
The
termux-shared LICENSE must be reviewed and updated if you are introducing code with a different licence. The licences of any external libraries you add must also be honoured.