diff --git a/buildSrc/src/main/kotlin/ProjectConfig.kt b/buildSrc/src/main/kotlin/ProjectConfig.kt index 937c3b1c7..038626994 100644 --- a/buildSrc/src/main/kotlin/ProjectConfig.kt +++ b/buildSrc/src/main/kotlin/ProjectConfig.kt @@ -55,6 +55,6 @@ const val NEWPIPE_APPLICATION_ID_NEW = "net.newpipe.app" // vc=19 / 0.1.0-AE — rust pipeline cutover. Extraction via // strawcore-core (Sulkta-Coop/strawcore) via the UniFFI wrapper; no // NewPipeExtractor in the runtime path. -const val STRAW_VERSION_CODE = 49 -const val STRAW_VERSION_NAME = "0.1.0-BI" +const val STRAW_VERSION_CODE = 50 +const val STRAW_VERSION_NAME = "0.1.0-BJ" const val STRAW_APPLICATION_ID = "com.sulkta.straw" diff --git a/strawApp/src/main/kotlin/com/sulkta/straw/feature/settings/SettingsScreen.kt b/strawApp/src/main/kotlin/com/sulkta/straw/feature/settings/SettingsScreen.kt index a97af48b4..b79b2dd5d 100644 --- a/strawApp/src/main/kotlin/com/sulkta/straw/feature/settings/SettingsScreen.kt +++ b/strawApp/src/main/kotlin/com/sulkta/straw/feature/settings/SettingsScreen.kt @@ -16,7 +16,9 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.statusBarsPadding +import com.sulkta.straw.feature.player.NowPlaying import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.AlertDialog @@ -77,10 +79,18 @@ fun SettingsScreen() { } } + // Clear the gesture-bar / 3-button nav bar at the bottom and add + // extra room for the minibar overlay when something's playing — + // otherwise the bottom rows of Settings render UNDER both. The + // minibar is a process-wide BottomCenter overlay (StrawActivity + // ScreenContent) so each scrolling screen has to leave its own gap. + val showingMinibar by NowPlaying.current.collectAsState() + val minibarReserve = if (showingMinibar != null) 72.dp else 0.dp Column( modifier = Modifier .fillMaxSize() .statusBarsPadding() + .navigationBarsPadding() .verticalScroll(rememberScrollState()) .padding(horizontal = 20.dp, vertical = 16.dp), ) { @@ -415,6 +425,11 @@ fun SettingsScreen() { Text("Pick export file…") } } + + // Tail spacer to clear the minibar overlay when something's + // playing. Without this the last Settings row gets eaten by + // the 64dp BottomCenter chip. + Spacer(modifier = Modifier.height(minibarReserve)) } importResult?.let { res ->