app/: main Android application module (Kotlin + Jetpack Compose).app/src/main/: production code and resources.app/src/test/: local JVM unit tests (JUnit).app/src/androidTest/: instrumented tests (AndroidX test runner).- Top-level docs:
README.md,SPEC.md,PLAN.md,TESTPLAN.mddefine product intent and testing scope.
Use the Makefile wrappers (preferred) or Gradle tasks directly.
make doctor: verify JDK/SDK setup and Gradle wrapper.make setup: download dependencies and warm Gradle caches.make build: assemble debug APK.make test: run local unit tests.make connected: run instrumented tests on a device/emulator.make lint: run Android lint.make ci: clean + setup + check (local CI pipeline).
- Kotlin with 4-space indentation; keep files organized by feature.
- Package namespace is
org.tomasino.stutter. - Use conventional Kotlin/Android naming:
PascalCasetypes,camelCasefunctions/vars. - Prefer small, testable components (see
README.mdpipeline: tokenizer, scheduler, reader view).
- Unit tests live in
app/src/test; instrumented tests inapp/src/androidTest. - Name tests with
*Testand keep behavior-focused test names. - Run unit tests with
make testand device tests withmake connected. - Timing regressions are release-blocking per
README.mdandTESTPLAN.md.
- Recent commits are short, present-tense statements (e.g., “adds android project”); follow that style.
- Keep commits scoped and describe intent over implementation details.
- PRs should include: summary, testing done (
make test,make lint, etc.), and screenshots for UI changes. - For releases/versioning, follow
RELEASE.mdand updatemetadata/android/en-US/changelogs/when applicable.
local.propertiesis machine-specific (SDK path) and should not be committed.- Set
ANDROID_SDK_ROOTandJAVA_HOMEfor CLI Gradle usage.