Imported from T-e-i-l-s/keyboard (
AGENTS.md). Install upstream withnpx skills add T-e-i-l-s/keyboard. Copyright stays with the author.
Tatar Keyboard
Android project for a Tatar-language keyboard, its settings application, and a demo application.
Modules
:keyboardis a Kotlin Multiplatform library and future home of IME integration, layout models, input processing, and keyboard UI. It must not depend on either application module.:settingsis the standalone configuration application. It may depend on:keyboardpublic APIs only.:demois the standalone demo application with text-input scenarios and project information. It may depend on:keyboardpublic APIs only.
Conventions
- Keep the minimum supported Android version at API 26 unless a change is explicitly required.
- Use Kotlin. Add UI libraries only when a feature needs them and they support Kotlin Multiplatform.
- Use only Kotlin Multiplatform-compatible libraries. Keep Android platform APIs and Android-only integration dependencies at application or Android target boundaries; never expose them from shared code.
- Keep all user-facing strings in Android resources; do not hard-code them in Kotlin. Every string resource must ship Russian (
values-ru) and Tatar (values-tt) translations, with the default resource retained as a fallback. - Keep UI colors, dimensions (including corner radii), and typography in project resources. Reuse the shared
:keyboardAndroid style resources instead of introducing literal UI values in code or layouts. Support both light and dark themes through pairedvaluesandvalues-nightresources. - Do not implement an input method service, key layouts, or settings behavior until those features are explicitly requested.
Verification
Run ./gradlew assembleDebug after Gradle or module-boundary changes. Run focused tests for changed production code when tests exist.