diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index e185e97e..0b0cf2a7 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -1,9 +1,9 @@ plugins { alias(libs.plugins.android.application) // kotlin-android NOT applied: AGP 9 enables built-in Kotlin by default, - // and KSP 2.3.x supports it (PR #2674, merged Oct 2025). serialization - // + compose-compiler are language-level Kotlin compiler plugins and - // still need explicit application. + // and KSP 2.3.x supports it. serialization + compose-compiler are + // language-level Kotlin compiler plugins and still need explicit + // application. alias(libs.plugins.kotlin.serialization) alias(libs.plugins.compose.compiler) alias(libs.plugins.ksp) @@ -31,14 +31,9 @@ android { // // versionCode is minutes since 2020-01-01 at BUILD time. It is the // value the platform decides installs by, so it must be monotonic by - // construction. - // - // This comment used to say versionCode was a commit count and that it - // was "monotonic forever". It was neither — a commit count runs ahead - // on `dev`, so a dev build outranked the `main` release meant to - // replace it and Android refused the install as a downgrade. Worth - // knowing the claim was here, stated as a reassurance, while the bug - // it denied was live. + // construction. Not a commit count: that runs ahead on `dev`, so a dev + // build would outrank the `main` release meant to replace it and + // Android would refuse the install as a downgrade. val versionNameOverride = (project.findProperty("MINSTREL_VERSION_NAME") as String?)?.takeIf { it.isNotBlank() } val versionCodeOverride = @@ -73,9 +68,9 @@ android { "proguard-rules.pro", ) // Signed with the release key or not at all. Falling back to the - // debug key made a missing secret into a published APK that no - // install could ever update (family idea #5103, practice 2). An - // unsigned build installs nowhere, so the gap shows at once. + // debug key would turn a missing secret into a published APK that no + // install could ever update. An unsigned build installs nowhere, so + // the gap shows at once. signingConfig = if (System.getenv("ANDROID_KEYSTORE_PATH").isNullOrEmpty()) { null diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index a23ca32d..cd8f9563 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -8,7 +8,7 @@ - @@ -84,11 +84,8 @@ - + ` response path. * - * kxml2 is on the test classpath (Task 4), so + * kxml2 is on the test classpath, so * `XmlPullParserFactory.newInstance()` resolves on the JVM. */ class SoapClientTest { diff --git a/android/app/src/test/java/com/fabledsword/minstrel/player/ui/QueueDragMathTest.kt b/android/app/src/test/java/com/fabledsword/minstrel/player/ui/QueueDragMathTest.kt index db08bd35..deeb9c10 100644 --- a/android/app/src/test/java/com/fabledsword/minstrel/player/ui/QueueDragMathTest.kt +++ b/android/app/src/test/java/com/fabledsword/minstrel/player/ui/QueueDragMathTest.kt @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test import kotlin.test.assertEquals /** - * The queue drag math (#2436). The delta cases mirror web's + * The queue drag math. The delta cases mirror web's * queue-row-math.test.ts one for one, so a change to either client's * rounding shows up as a disagreement here rather than as a drop that lands * one row off on one platform only. diff --git a/android/app/src/test/java/com/fabledsword/minstrel/playlists/data/PlaylistTrackAvailabilityTest.kt b/android/app/src/test/java/com/fabledsword/minstrel/playlists/data/PlaylistTrackAvailabilityTest.kt index 318e7e05..ae19726f 100644 --- a/android/app/src/test/java/com/fabledsword/minstrel/playlists/data/PlaylistTrackAvailabilityTest.kt +++ b/android/app/src/test/java/com/fabledsword/minstrel/playlists/data/PlaylistTrackAvailabilityTest.kt @@ -9,7 +9,7 @@ import kotlin.test.assertTrue /** * A playlist row can outlive its audio two ways — the track was removed * from the library, or the track is still there but its file is missing - * (#2527). Both must be unplayable, and neither may be silently dropped + *. Both must be unplayable, and neither may be silently dropped * from the list the user curated. */ class PlaylistTrackAvailabilityTest { diff --git a/android/app/src/test/java/com/fabledsword/minstrel/settings/data/NormalizationRepositoryTest.kt b/android/app/src/test/java/com/fabledsword/minstrel/settings/data/NormalizationRepositoryTest.kt index 6853887d..f47f0160 100644 --- a/android/app/src/test/java/com/fabledsword/minstrel/settings/data/NormalizationRepositoryTest.kt +++ b/android/app/src/test/java/com/fabledsword/minstrel/settings/data/NormalizationRepositoryTest.kt @@ -17,7 +17,7 @@ import retrofit2.Retrofit import java.io.IOException /** - * The normalization preference is written offline-first (rule 100): the + * The normalization preference is written offline-first: the * device shows the change at once, and a change the server has not seen * yet is never overwritten or reordered. */ diff --git a/android/app/src/test/java/com/fabledsword/minstrel/shared/UpdateVeilControllerTest.kt b/android/app/src/test/java/com/fabledsword/minstrel/shared/UpdateVeilControllerTest.kt index 58c98cf6..733fc8e4 100644 --- a/android/app/src/test/java/com/fabledsword/minstrel/shared/UpdateVeilControllerTest.kt +++ b/android/app/src/test/java/com/fabledsword/minstrel/shared/UpdateVeilControllerTest.kt @@ -30,7 +30,7 @@ private const val DRAIN_MS = 3_000L /** * The veil's job is to go up only when content actually changes, and then to * stay up until the screen has stopped moving. Each test pins one of the ways - * the original fixed-delay implementation got that wrong (issue #2327). + * a fixed-delay veil gets that wrong. * * The controller is built on `backgroundScope` throughout: its consumer * loop runs forever, so hanging it off the test's own scope would stop @@ -40,8 +40,7 @@ private const val DRAIN_MS = 3_000L * `advanceTimeBy`: **`advanceUntilIdle()` is useless here.** It advances * only while *foreground* work remains, and everything this controller * does lives in `backgroundScope` — so it returns having run nothing, and - * assertions land on a session that never started (CI run 3163 failed all - * seven of these with "expected 3, actual 0" and friends). Drive the clock + * assertions land on a session that never started. Drive the clock * deliberately instead; don't "simplify" these back to advanceUntilIdle. */ @OptIn(ExperimentalCoroutinesApi::class) diff --git a/android/app/src/test/java/com/fabledsword/minstrel/theme/BundledFontsTest.kt b/android/app/src/test/java/com/fabledsword/minstrel/theme/BundledFontsTest.kt index e061ba24..20ad44d3 100644 --- a/android/app/src/test/java/com/fabledsword/minstrel/theme/BundledFontsTest.kt +++ b/android/app/src/test/java/com/fabledsword/minstrel/theme/BundledFontsTest.kt @@ -9,11 +9,11 @@ import kotlin.test.assertTrue * Guards that the typefaces ship inside the APK instead of being fetched at * runtime. * - * Until 2026-09-09 these were resolved through the Play Services font - * provider. That needs a network the deployed app is not guaranteed, and a - * provider that devices without Play Services do not have at all. Both - * failures are silent — text just renders in the platform default, which - * reads as a styling regression rather than a missing dependency. + * Resolving them through the Play Services font provider needs a network + * the deployed app is not guaranteed, and a provider that devices without + * Play Services do not have at all. Both failures are silent — text just + * renders in the platform default, which reads as a styling regression + * rather than a missing dependency. * * Expectations are read out of Typography.kt itself rather than hardcoded, so * this cannot drift away from what the app actually declares: adding a face diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index a551209c..1f6a799d 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -5,7 +5,7 @@ # - Kotlin 2.3.x: AGP 9's built-in Kotlin path; the older kotlin-android # plugin can't cast AGP 9's ApplicationExtension to the removed # BaseExtension, and KSP 1.x isn't compatible with built-in Kotlin -# - KSP 2.3.x (PR #2674, merged Oct 2025): adds AGP 9 built-in Kotlin +# - KSP 2.3.x: adds AGP 9 built-in Kotlin # support, so we don't need the kotlin-android plugin at all agp = "9.0.1" kotlin = "2.3.21"