Keep this file under 100 lines. Prefer terse descriptions. Don't duplicate what's in README.md or DEVELOPMENT.md.
export ANDROID_HOME=/home/user/android-sdk
./gradlew assembleDebug # Build debug APK
./gradlew assembleRelease # Build release/production APK
./gradlew test # Run unit tests (JUnit 5)
Debug APK: app/build/outputs/apk/debug/com.simplauncher.apk
Release APK: app/build/outputs/apk/release/com.simplauncher.apk
Version tracked in app/build.gradle.kts: versionName (semver) + versionCode (integer).
versionCode by 1 on every release regardless of semver bump.git tag -a v1.0.0 -m "description" then git push origin v1.0.0https://gogs.altsol.dev/claude/simplauncher.gitmaster onlySingle-activity (MainActivity), multi-fragment app using Navigation Component. MVVM-lite: fragments observe DataRepository via LiveData. Hilt DI throughout.
Package: com.simplauncher — all source under app/src/main/java/com/simplauncher/
HomeFragment (start) → OptionsFragment
→ CustomizeHomeFragment → CustomizeHomeAppsAddAppFragment
→ CustomizeAppDrawerFragment → CustomizeVisibleAppsFragment
→ CustomizeSearchFieldFragment
→ CustomizeFoldersFragment → CustomizeFolderDetailFragment
Three storage systems (migrating everything to Proto DataStore):
core_preferences.proto, unlauncher_apps.proto, quick_button_preferences.proto, app_drawer_folders.protoBaseDatabase with HomeApp entity, 9 migrationsDataRepository wraps DataStore with LiveData observation, sync get(), and updateAsync().
All new data should use Proto DataStore.
9 themes: system (light/dark), midnight, jupiter, teal, candy, pastel, noon, vlad, groovy.
QUERY_ALL_PACKAGES, REQUEST_DELETE_PACKAGES, EXPAND_STATUS_BAR, SET_WALLPAPER, SET_ALARM
JUnit 5 + Kotest assertions + MockK. Coverage excludes generated proto/Hilt classes.