Files
oxmc c85367f3d4 setupwizard: replace with new Kotlin/Compose implementation
Replaces the LineageOS-based Java wizard with a new Kotlin/Jetpack
Compose wizard built on the PawletOS design language.

Key changes:
- Extensible WizardPage registry with DeviceProfile-based gating
  (phone/tablet/embedded form factors, hasWifi, hasTelephony)
- SetupWizardManager drives navigation via StateFlow<Int> over
  a runtime-built page list; supports oxn://page?id= deep link jumps
- Circular-reveal collapse animation on finish (900ms, matches
  LineageOS FinishActivity behaviour) via Compose drawWithContent/clipPath
- finishSetupWizard() sets DEVICE_PROVISIONED + USER_SETUP_COMPLETE
  and disables the HOME component on completion
- EntryPoint registered with CATEGORY_HOME + CATEGORY_SETUP_WIZARD
  so AOSP launches the wizard on first boot
- Deep link handling: cdn.oxmc.me / oxmc.me / pawlet.oxmc.me (http/https)
  and oxn:// scheme (apk install, page navigation, management)
- Full package rename: dev.oxmc.setupwizard -> me.pawlet.setupwizard
- Dual build system: Gradle (app/build.gradle.kts) for Studio development,
  Android.bp + root AndroidManifest.xml for AOSP/Soong ROM build
- Signed with platform certificate, system_ext, sharedUserId=android.uid.system
2026-06-16 22:30:40 -07:00

40 lines
2.2 KiB
TOML

[versions]
agp = "9.0.1"
kotlin = "2.2.10"
coreKtx = "1.17.0"
lifecycleRuntimeKtx = "2.6.1"
activityCompose = "1.8.0"
composeBom = "2024.09.00"
coil = "2.7.0"
okhttp = "4.12.0"
splashscreen = "1.0.1"
gson = "2.11.0"
material = "1.9.0"
appcompat = "1.7.0"
animation = "1.10.3"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
androidx-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended" }
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
androidx-material = { group = "com.google.android.material", name = "material", version.ref = "material" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
coil-compose = { group = "io.coil-kt", name = "coil-compose", version.ref = "coil" }
coil-svg = { group = "io.coil-kt", name = "coil-svg", version.ref = "coil" }
okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" }
okhttp-logging = { group = "com.squareup.okhttp3", name = "logging-interceptor", version.ref = "okhttp" }
androidx-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "splashscreen" }
gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
androidx-compose-animation = { group = "androidx.compose.animation", name = "animation", version.ref = "animation" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }