Background: 8 bottom-nav items squeeze long English labels on narrow screens. 4.5.1 introduces the 5+N pattern: 5 main tabs plus a fixed 6th "More" button that pops a second-level menu (spring bounce) with the remaining pages. Changes: - MainScreen: nav split into main (<=5, screenOrder-driven) + more (subMenuOrder); More button with popup panel + spring animation; BackHandler closes the menu before navigating back - MoreMenuPopup: bottom-end card, current page highlighted, scrim click to dismiss - UI Settings: page order card now has two zones (main menu, max 5, Settings locked last with no drag handle / more menu); move buttons between zones, drag-to-reorder within zones; new subMenuOrder pref - Defaults: main = Satellites/Passes/Radar/Map/Settings, more = Mutual/Roaming/CwDecode; old screenOrder migrates by classifying pages against the default sub menu - Hard-coded UI strings localized (Tracking/Lat/Lon/Qth/Connect/ Track/Stop/CW permission prompts) into EN/ZH/TR - NEW Indonesian locale (values-in, 181 strings + cw module strings) - user rule: every future release must update EN/ZH/TR/IN - Version 4.5.1 (451) Verified: check_strings.py OK (8 files, no bare apostrophes); :app:compileDebugKotlin BUILD SUCCESSFUL locally.
114 lines
5.5 KiB
TOML
114 lines
5.5 KiB
TOML
[versions]
|
|
#noinspection UnusedVersionCatalogEntry
|
|
appVersionCode = "451"
|
|
#noinspection UnusedVersionCatalogEntry
|
|
appVersionName = "4.5.1"
|
|
#noinspection UnusedVersionCatalogEntry
|
|
compileSdk = "37"
|
|
#noinspection UnusedVersionCatalogEntry
|
|
minSdk = "24"
|
|
#noinspection UnusedVersionCatalogEntry
|
|
jdkVersion = "21"
|
|
#noinspection UnusedVersionCatalogEntry
|
|
packageName = "com.rtbishop.look4sat"
|
|
# Fork application ID: official app uses com.rtbishop.look4sat with a different
|
|
# signing cert. Installing a fork with the same applicationId would conflict
|
|
# with the official build (signature mismatch / cannot overwrite), so the fork
|
|
# ships under its own applicationId suffix.
|
|
applicationId = "com.rtbishop.look4sat.bg7nta"
|
|
|
|
android-gradle-plugin = "9.3.1"
|
|
|
|
androidx-core-ktx = "1.19.0"
|
|
androidx-core-splashscreen = "1.2.0"
|
|
androidx-room = "2.8.4"
|
|
|
|
compose-bom = "2026.06.01"
|
|
compose-activity = "1.13.0"
|
|
compose-lifecycle = "2.11.0"
|
|
compose-navigation3 = "1.1.5"
|
|
|
|
google-ksp = "2.3.8"
|
|
|
|
kotlin = "2.4.10"
|
|
kotlin-coroutines = "1.11.0"
|
|
kotlin-serialization = "1.11.0"
|
|
|
|
other-okhttp = "5.4.0"
|
|
other-osmdroid = "6.1.20"
|
|
|
|
test-junit4 = "4.13.2"
|
|
|
|
androidTest-junit = "1.3.0"
|
|
androidTest-espresso = "3.7.0"
|
|
|
|
[libraries]
|
|
android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "android-gradle-plugin" }
|
|
#noinspection UnusedVersionCatalogEntry
|
|
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core-ktx" }
|
|
#noinspection UnusedVersionCatalogEntry
|
|
androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "androidx-core-splashscreen" }
|
|
#noinspection UnusedVersionCatalogEntry
|
|
androidx-room = { module = "androidx.room:room-ktx", version.ref = "androidx-room" }
|
|
#noinspection UnusedVersionCatalogEntry
|
|
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "androidx-room" }
|
|
#noinspection UnusedVersionCatalogEntry
|
|
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "androidx-room" }
|
|
|
|
#noinspection UnusedVersionCatalogEntry
|
|
compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" }
|
|
compose-material3 = { group = "androidx.compose.material3", name = "material3" }
|
|
#noinspection UnusedVersionCatalogEntry
|
|
compose-material3-adaptive = { group = "androidx.compose.material3", name = "material3-adaptive-navigation-suite" }
|
|
compose-runtime = { group = "androidx.compose.runtime", name = "runtime" }
|
|
compose-tooling = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
|
|
|
|
compose-activity = { module = "androidx.activity:activity-compose", version.ref = "compose-activity" }
|
|
#noinspection UnusedVersionCatalogEntry
|
|
compose-navigation3 = { module = "androidx.navigation3:navigation3-ui", version.ref = "compose-navigation3" }
|
|
compose-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "compose-lifecycle" }
|
|
|
|
compose-debug-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
|
|
compose-debug-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
|
|
|
|
#noinspection UnusedVersionCatalogEntry
|
|
kotlin-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlin-coroutines" }
|
|
kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
|
|
#noinspection UnusedVersionCatalogEntry
|
|
kotlin-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlin-serialization" }
|
|
|
|
#noinspection UnusedVersionCatalogEntry
|
|
other-okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "other-okhttp" }
|
|
#noinspection UnusedVersionCatalogEntry
|
|
other-osmdroid = { module = "org.osmdroid:osmdroid-android", version.ref = "other-osmdroid" }
|
|
|
|
test-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlin-coroutines" }
|
|
test-junit4 = { module = "junit:junit", version.ref = "test-junit4" }
|
|
|
|
androidTest-junit = { module = "androidx.test.ext:junit", version.ref = "androidTest-junit" }
|
|
androidTest-espresso = { module = "androidx.test.espresso:espresso-core", version.ref = "androidTest-espresso" }
|
|
|
|
[plugins]
|
|
android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" }
|
|
android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" }
|
|
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
|
|
google-ksp = { id = "com.google.devtools.ksp", version.ref = "google-ksp" }
|
|
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
|
|
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
|
|
# plugins defined by this project
|
|
convention-applicationPlugin = { id = "com.rtbishop.look4sat.convention.applicationPlugin" }
|
|
convention-coreDataPlugin = { id = "com.rtbishop.look4sat.convention.coreDataPlugin" }
|
|
convention-coreDomainPlugin = { id = "com.rtbishop.look4sat.convention.coreDomainPlugin" }
|
|
convention-corePresentationPlugin = { id = "com.rtbishop.look4sat.convention.corePresentationPlugin" }
|
|
convention-featurePlugin = { id = "com.rtbishop.look4sat.convention.featurePlugin" }
|
|
|
|
[bundles]
|
|
#noinspection UnusedVersionCatalogEntry
|
|
composeAll = ["compose-runtime", "compose-tooling", "compose-activity", "compose-material3", "compose-viewmodel"]
|
|
#noinspection UnusedVersionCatalogEntry
|
|
composeDebug = ["compose-debug-manifest", "compose-debug-tooling"]
|
|
#noinspection UnusedVersionCatalogEntry
|
|
unitTest = ["test-coroutines", "test-junit4"]
|
|
#noinspection UnusedVersionCatalogEntry
|
|
androidTest = ["androidTest-junit", "androidTest-espresso"]
|