The server half went to rustfmt's defaults earlier today; this is the same move for the app, and the same reasoning. Kotlin ships no formatter with the Gradle build, so the question was which to adopt: ktfmt is Kotlin-org owned now (it moved from facebook/ktfmt), is a formatter rather than a configurable linter, and has essentially nothing to tune -- which is what rule 27 is asking for. ktlint's .editorconfig surface is the thing that rule warns against, and detekt is static analysis, whose job Android Lint already does here. One setting, and it is a choice between the tool's own two styles rather than a tuning: kotlinLangStyle() is the 4-space one, which is what this code already was. The 2-space default would have reindented every file to say nothing. ./gradlew :androidApp:ktfmtFormat to apply ./gradlew :androidApp:ktfmtCheck to verify Formatting only. The one thing worth checking by hand was the generated PEM constant, since a leading newline there costs Android's CertificateFactory its preamble sniff and fails at runtime nowhere near the cause: ktfmt moved `.trimMargin()` onto its own line and left the template alone, and the regenerated constant still starts at the opening quotes. Verified after: ktfmtCheck, compileDebugKotlin and lintDebug all pass, and the APK builds. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017xn8nHw1tw1R6PtiY1eEtw
46 lines
2.6 KiB
TOML
46 lines
2.6 KiB
TOML
# Latest stable versions as of 2026-08-24 (checked against Google Maven /
|
|
# Maven Central; prereleases deliberately skipped). zxing-embedded checked
|
|
# 2026-08-25.
|
|
[versions]
|
|
agp = "9.3.2"
|
|
kotlin = "2.4.10"
|
|
compose-multiplatform = "1.11.1"
|
|
# material3 ships on its own release train, separate from the CMP version.
|
|
compose-material3 = "1.9.0"
|
|
androidx-activityCompose = "1.13.0"
|
|
# Declared rather than inherited because this
|
|
# code now calls its extensions directly (SharedPreferences.edit, String
|
|
# .toUri), and a transitive it merely inherited could change under it.
|
|
androidx-core-ktx = "1.19.0"
|
|
zxing-embedded = "4.3.0"
|
|
# The Kotlin formatter, run at its defaults (see CODE_RULES rule 27). ktfmt
|
|
# itself is Kotlin-org owned and has almost nothing to configure, which is
|
|
# the point; this is the Gradle wrapper for it. Checked 2026-08-28.
|
|
ktfmt-gradle = "0.27.0"
|
|
# Backports java.time (and more) to API 24, which UsageScreen needs: its
|
|
# reset countdown is OffsetDateTime/Duration, both API 26. Checked
|
|
# 2026-08-28 against Google Maven.
|
|
desugar-jdk-libs = "2.1.5"
|
|
|
|
[libraries]
|
|
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" }
|
|
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core-ktx" }
|
|
# In-app QR scanner: a ready-made scanning Activity (camera preview, runtime
|
|
# permission prompt, flashlight toggle) reached through the AndroidX Activity
|
|
# Result API (ScanContract, added in 4.3.0). Fully offline -- no Play
|
|
# Services / ML Kit model download involved.
|
|
zxing-embedded = { module = "com.journeyapps:zxing-android-embedded", version.ref = "zxing-embedded" }
|
|
desugar-jdk-libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar-jdk-libs" }
|
|
# Declared directly rather than through the plugin's `compose.*` accessors,
|
|
# which are deprecated as of CMP 1.11.
|
|
compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose-multiplatform" }
|
|
compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "compose-multiplatform" }
|
|
compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "compose-material3" }
|
|
compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose-multiplatform" }
|
|
|
|
[plugins]
|
|
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
|
composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" }
|
|
composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
|
|
ktfmt = { id = "com.ncorti.ktfmt.gradle", version.ref = "ktfmt-gradle" }
|