Contributing¶
Local Setup¶
Use JDK 17 and the checked-in Gradle wrapper.
./gradlew check
Install docs dependencies before editing MkDocs content:
python -m pip install -r requirements-docs.txt
mkdocs build --strict
Component Changes¶
- Use
AppThemetokens instead of hardcoded colors or rawdpliterals in:components. - Put reusable pure-Kotlin helpers in
:foundationand keep that module free of Android or Compose dependencies. - Keep APIs state-hoisted and slot-based.
- Add or update light/dark previews, 200% font-scale previews, tests, docs, and screenshot coverage for visible changes.
- Check accessibility: 48dp touch targets, meaningful icon descriptions, readable state text, and 200% font scale behavior.
- Prefer
:testinghelpers for repeated Compose accessibility assertions.
Verification¶
Run the focused task for your change first, then the full verification before opening a PR:
./gradlew ktlintCheck detekt check :components:recordRoborazziDebug :catalog:assembleDebug :sample:assembleDebug :baselineprofile:assembleDebug
mkdocs build --strict
Releases¶
Releases are automated after CI succeeds on main, with tags matching X.Y.Z (no v prefix).
- Use Conventional Commit PR titles such as
fix:,feat:, andfeat!:so the workflow can compute the correct version bump. - The release workflow creates the tag, publishes to Maven Central, and creates the GitHub Release automatically.
- After a release, update
VERSION_NAMEandAPI_BASELINE_VERSIONingradle.propertiesonmainto match the released version. - Do not commit signing keys or Maven credentials; configure them as repository secrets.