From 12a087149e213e8d28ec4a64674f40f1475cca7e Mon Sep 17 00:00:00 2001 From: Scott Olcott Date: Thu, 24 Sep 2026 16:23:20 -0600 Subject: [PATCH 1/5] Update Gradle to v9.8.0 Signed-off-by: Scott Olcott --- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 760c459..1eca32e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=acd53f1edaf02f1a8ff99879f8a34b302661a057d9b063ae9e35b552f804d20a -distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip +distributionSha256Sum=bafd5ce9cfaea0fbccfdc8439a1ac42fbd4cd9c89dc9a988228d8a2639a58e6c +distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.0-bin.zip networkTimeout=10000 retries=0 retryBackOffMs=500 From a698ac73924ecf211eaa32e59541d1a756ff8197 Mon Sep 17 00:00:00 2001 From: Scott Olcott Date: Thu, 24 Sep 2026 16:24:00 -0600 Subject: [PATCH 2/5] Update multiple dependencies - Update androidx-compose-material3 to v1.5.0-alpha29 - Update metro to v1.4.5 - Update detekt-compose-rules to v0.6.7 Signed-off-by: Scott Olcott --- gradle/libs.versions.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 91bf5d3..c350f49 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,7 +9,7 @@ androidMinSdk = "28" #noinspection UnusedVersionCatalogEntry androidTargetSdk = "36" androidx-compose = "1.12.1" -androidx-compose-material3 = "1.5.0-alpha28" +androidx-compose-material3 = "1.5.0-alpha29" appdirs = "1.5.0" circuit = "0.39.0" coil = "3.6.3" @@ -38,7 +38,7 @@ kotlinx-coroutines = "1.11.0" kotlinx-serialization = "1.11.0" ksp = "2.3.12" ktor = "3.6.0" -metro = "1.4.4" +metro = "1.4.5" room = "3.0.3" sqlite = "2.7.1" store = "5.1.0-beta01" @@ -125,7 +125,7 @@ dataresultStore5 = { module = "io.github.solcott:dataresult-store5", version.ref uistate = { module = "io.github.solcott:uistate", version.ref = "dataresult" } uistateCircuit = { module = "io.github.solcott:uistate-circuit", version.ref = "dataresult" } #noinspection UnusedVersionCatalogEntry -detekt-compose-rules = { module = "io.nlopez.compose.rules:detekt", version = "0.6.6" } +detekt-compose-rules = { module = "io.nlopez.compose.rules:detekt", version = "0.6.7" } junit = { group = "junit", name = "junit", version.ref = "junit" } kermit = { module = "co.touchlab:kermit", version.ref = "kermit" } kermit-core = { module = "co.touchlab:kermit-core", version.ref = "kermit" } From beb42701bd8e34e4714228e13b9b731f50a32f19 Mon Sep 17 00:00:00 2001 From: Scott Olcott Date: Thu, 24 Sep 2026 16:24:20 -0600 Subject: [PATCH 3/5] Enable Gradle configuration cache Signed-off-by: Scott Olcott --- gradle.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/gradle.properties b/gradle.properties index 26e792b..f955f17 100644 --- a/gradle.properties +++ b/gradle.properties @@ -29,3 +29,4 @@ kotlin.incremental.native=true kotlin.js.runViaBuildToolsApi=true kotlin.wasm.runViaBuildToolsApi=true kotlin.metadata.runViaBuildToolsApi=true +org.gradle.configuration-cache=true From d01dd85f83ce90ad181ac2becb961280124984ec Mon Sep 17 00:00:00 2001 From: Scott Olcott Date: Thu, 24 Sep 2026 16:39:33 -0600 Subject: [PATCH 4/5] Disable Gradle configuration cache Comment out `org.gradle.configuration-cache` in `gradle.properties` because the Detekt Gradle plugin is not compatible with it. Signed-off-by: Scott Olcott --- gradle.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index f955f17..25de667 100644 --- a/gradle.properties +++ b/gradle.properties @@ -29,4 +29,5 @@ kotlin.incremental.native=true kotlin.js.runViaBuildToolsApi=true kotlin.wasm.runViaBuildToolsApi=true kotlin.metadata.runViaBuildToolsApi=true -org.gradle.configuration-cache=true +# Detekt gradle plugin is not compatible with configuration cache +#org.gradle.configuration-cache=true From 73112a58690314c00efa29b32fcb3d8415e4752a Mon Sep 17 00:00:00 2001 From: Scott Olcott Date: Thu, 24 Sep 2026 16:59:51 -0600 Subject: [PATCH 5/5] Add @ReadOnlyComposable to state-reading functions Annotate `appBarShowsScreenTitle()` in `AppBarScreenTitle.kt` and `isShortWindow()` in `ScreenUtils.kt` with `@ReadOnlyComposable` to optimize their execution. Signed-off-by: Scott Olcott --- .../kotlin/com/scottolcott/recipe/AppBarScreenTitle.kt | 2 ++ .../commonMain/kotlin/com/scottolcott/recipe/ui/ScreenUtils.kt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ui/src/commonMain/kotlin/com/scottolcott/recipe/AppBarScreenTitle.kt b/ui/src/commonMain/kotlin/com/scottolcott/recipe/AppBarScreenTitle.kt index c5413d9..8e94363 100644 --- a/ui/src/commonMain/kotlin/com/scottolcott/recipe/AppBarScreenTitle.kt +++ b/ui/src/commonMain/kotlin/com/scottolcott/recipe/AppBarScreenTitle.kt @@ -1,6 +1,7 @@ package com.scottolcott.recipe import androidx.compose.runtime.Composable +import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.runtime.compositionLocalOf import com.scottolcott.recipe.domain.isCupertino import com.scottolcott.recipe.domain.presenter.RecipeScaffoldState @@ -29,6 +30,7 @@ val LocalAppBarShowsScreenTitle = compositionLocalOf { false } * [LocalAppBarShowsScreenTitle] to decide whether to head themselves. */ @Composable +@ReadOnlyComposable internal fun RecipeScaffoldState.appBarShowsScreenTitle(): Boolean = isCupertino && !searchVisible /** diff --git a/ui/src/commonMain/kotlin/com/scottolcott/recipe/ui/ScreenUtils.kt b/ui/src/commonMain/kotlin/com/scottolcott/recipe/ui/ScreenUtils.kt index cc39423..3c79e3f 100644 --- a/ui/src/commonMain/kotlin/com/scottolcott/recipe/ui/ScreenUtils.kt +++ b/ui/src/commonMain/kotlin/com/scottolcott/recipe/ui/ScreenUtils.kt @@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.runtime.Composable +import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment @@ -26,6 +27,7 @@ import com.scottolcott.recipe.domain.isPointer * the horizontal recipe card and the wider grid cell that card needs. */ @Composable +@ReadOnlyComposable fun isShortWindow(): Boolean = !LocalWindowSizeClass.current.isHeightAtLeastBreakpoint(HEIGHT_DP_MEDIUM_LOWER_BOUND)