tawasuyu

sergio/humanoid

HTML 50Markdown 1TOML 10 Sutichaykuna

consola: fila de teclas adaptable a insets (no más tapada por Android)

Edge-to-edge dibujaba la fila de teclas detrás de la barra de
navegación. Ahora respeta WindowInsets.ime ∪ navigationBars: se sube
sobre el teclado cuando está abierto y sobre los botones del sistema
cuando no. Barras superiores con statusBarsPadding y FABs de la lista
con navigationBarsPadding.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

27b08342128f316969bced8d4980e1afcdb3fb67 · ruwaq Sergio · (4 killa ñawpaq) · tayta b4a7a20b3 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

2 qillqakuna · +19 −4

diff --git a/consola/src/main/java/com/rizoma/consola/ui/SessionListScreen.kt b/consola/src/main/java/com/rizoma/consola/ui/SessionListScreen.kt
index e2d3fb0..1d326c3 100644
--- a/consola/src/main/java/com/rizoma/consola/ui/SessionListScreen.kt
+++ b/consola/src/main/java/com/rizoma/consola/ui/SessionListScreen.kt
@@ -8,7 +8,9 @@ import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.navigationBarsPadding
 import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.statusBarsPadding
 
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.items
@@ -52,7 +54,8 @@ fun SessionListScreen(
 
     Column(Modifier.fillMaxSize().background(Vacio)) {
         Row(
-            Modifier.fillMaxWidth().background(Superficie).padding(horizontal = 16.dp, vertical = 12.dp),
+            Modifier.fillMaxWidth().background(Superficie).statusBarsPadding()
+                .padding(horizontal = 16.dp, vertical = 12.dp),
             verticalAlignment = Alignment.CenterVertically,
         ) {
             Column(Modifier.weight(1f)) {
@@ -91,8 +94,9 @@ fun SessionListScreen(
             }
 
             // Acciones flotantes: un Claude de un toque (danger) + el genérico.
+            // navigationBarsPadding para que no queden bajo los botones de Android.
             Row(
-                Modifier.align(Alignment.BottomEnd).padding(24.dp),
+                Modifier.align(Alignment.BottomEnd).navigationBarsPadding().padding(24.dp),
                 horizontalArrangement = Arrangement.spacedBy(12.dp),
                 verticalAlignment = Alignment.CenterVertically,
             ) {
diff --git a/consola/src/main/java/com/rizoma/consola/ui/TerminalScreen.kt b/consola/src/main/java/com/rizoma/consola/ui/TerminalScreen.kt
index 1aa75f4..4f5c0cb 100644
--- a/consola/src/main/java/com/rizoma/consola/ui/TerminalScreen.kt
+++ b/consola/src/main/java/com/rizoma/consola/ui/TerminalScreen.kt
@@ -12,8 +12,14 @@ import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.heightIn
+import androidx.compose.foundation.layout.WindowInsets
+import androidx.compose.foundation.layout.ime
+import androidx.compose.foundation.layout.navigationBars
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.statusBarsPadding
+import androidx.compose.foundation.layout.union
+import androidx.compose.foundation.layout.windowInsetsPadding
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.horizontalScroll
 import androidx.compose.foundation.verticalScroll
@@ -98,9 +104,10 @@ fun TerminalScreen(
     }
 
     Column(Modifier.fillMaxSize().background(Vacio)) {
-        // Barra superior.
+        // Barra superior — respeta el status bar (edge-to-edge).
         Row(
-            Modifier.fillMaxWidth().background(Superficie).padding(horizontal = 14.dp, vertical = 10.dp),
+            Modifier.fillMaxWidth().background(Superficie).statusBarsPadding()
+                .padding(horizontal = 14.dp, vertical = 10.dp),
             verticalAlignment = Alignment.CenterVertically,
         ) {
             Text("‹", color = NeonVerde, modifier = Modifier.clickable { onBack() }.padding(end = 12.dp))
@@ -339,6 +346,10 @@ private fun FunctionKeyRow(
         Modifier
             .fillMaxWidth()
             .background(SuperficieAlta)
+            // Adaptable: se sube sobre el teclado (IME) cuando está abierto y,
+            // si no, sobre la barra de navegación de Android — antes quedaba
+            // tapada por los botones del sistema. El fondo llena hasta el borde.
+            .windowInsetsPadding(WindowInsets.ime.union(WindowInsets.navigationBars))
             .horizontalScroll(scroll)
             .padding(horizontal = 8.dp, vertical = 6.dp),
         horizontalArrangement = Arrangement.spacedBy(6.dp),