From 7cf18cccd6fbbe2d7338777cacfb2d06bd8703c0 Mon Sep 17 00:00:00 2001 From: Ross Tomsic Date: Tue, 8 Sep 2026 10:50:07 -0400 Subject: [PATCH] Preserve compact raw terminal viewport --- PROJECT_SPEC.md | 7 + .../dev/threadline/TranscriptScreenTest.kt | 167 +++++++- .../java/dev/threadline/TranscriptScreen.kt | 391 ++++++++++++++---- docs/BACKLOG.md | 19 +- docs/STATUS.md | 21 +- docs/images/compact-terminal-landscape.png | Bin 0 -> 133819 bytes docs/screenshots.md | 18 +- 7 files changed, 513 insertions(+), 110 deletions(-) create mode 100644 docs/images/compact-terminal-landscape.png diff --git a/PROJECT_SPEC.md b/PROJECT_SPEC.md index 65fd4d8..763166d 100644 --- a/PROJECT_SPEC.md +++ b/PROJECT_SPEC.md @@ -182,6 +182,13 @@ structured composer is deferred interaction polish; a possible set is: Do not reproduce a full desktop keyboard. +When the software keyboard leaves a compact-height raw-terminal viewport, the connected header +collapses to one row while keeping the host identity, connection state, and Transcript action +visible. Home, Diagnostics, Disconnect, Ctrl-C, and the terminal-key-row toggle remain available +through More. The terminal-key row is hidden by default in this state so at least one terminal row +remains readable; opening More must not dismiss the keyboard. The normal portrait layout is +unchanged. + ### 4.4 Command card Each submitted command creates one card. diff --git a/app/src/androidTest/java/dev/threadline/TranscriptScreenTest.kt b/app/src/androidTest/java/dev/threadline/TranscriptScreenTest.kt index 9b0b80e..d50cd12 100644 --- a/app/src/androidTest/java/dev/threadline/TranscriptScreenTest.kt +++ b/app/src/androidTest/java/dev/threadline/TranscriptScreenTest.kt @@ -8,18 +8,23 @@ import android.view.WindowManager import androidx.activity.ComponentActivity import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Text import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.input.key.Key import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.testTag import androidx.compose.ui.semantics.SemanticsProperties import androidx.compose.ui.semantics.LiveRegionMode import androidx.compose.ui.test.SemanticsMatcher @@ -266,7 +271,7 @@ class TranscriptScreenTest { }, onControlC = {}, onDisconnect = {}, - rawTerminal = { modifier -> + rawTerminal = { modifier, _ -> Text("Raw draft test surface", modifier = modifier) }, ) @@ -681,7 +686,7 @@ class TranscriptScreenTest { }, onControlC = {}, onDisconnect = {}, - rawTerminal = { modifier -> + rawTerminal = { modifier, _ -> Text("Raw terminal test surface", modifier = modifier) }, ) @@ -717,7 +722,7 @@ class TranscriptScreenTest { onControlC = {}, onDisconnect = { disconnectCount += 1 }, onOpenHome = { homeCount += 1 }, - rawTerminal = { modifier -> Text("Terminal", modifier = modifier) }, + rawTerminal = { modifier, _ -> Text("Terminal", modifier = modifier) }, ) } } @@ -763,7 +768,7 @@ class TranscriptScreenTest { }, onControlC = {}, onDisconnect = {}, - rawTerminal = { modifier -> + rawTerminal = { modifier, _ -> Text("Raw performance surface", modifier = modifier) }, ) @@ -973,7 +978,7 @@ class TranscriptScreenTest { onControlC = {}, onDisconnect = {}, onOpenDiagnostics = {}, - rawTerminal = { modifier -> Text("Terminal", modifier = modifier) }, + rawTerminal = { modifier, _ -> Text("Terminal", modifier = modifier) }, ) } } @@ -1007,6 +1012,130 @@ class TranscriptScreenTest { composeRule.onNodeWithText("Disconnect").performScrollTo().assertIsDisplayed() } + @Test + fun compactRawTerminalPreservesViewportAndGroupsSecondaryActionsAtLargeFontScale() { + var controlCCount = 0 + var homeCount = 0 + var diagnosticsCount = 0 + var disconnectCount = 0 + var minimumTerminalRowHeightPx = 0f + + composeRule.setContent { + val density = LocalDensity.current + minimumTerminalRowHeightPx = density.density * 24f + CompositionLocalProvider( + LocalDensity provides Density(density.density, fontScale = 2f), + ) { + MaterialTheme { + Box( + modifier = Modifier + .fillMaxWidth() + .height(320.dp), + ) { + ConnectedSessionScreen( + displayName = "Compact terminal session", + structuredShell = StructuredShellState.Ready("/tmp"), + transcript = CommandTranscriptState(), + onSubmit = { + CommandSubmissionResult.Accepted(CommandId("unused")) + }, + onControlC = { controlCCount += 1 }, + onDisconnect = { disconnectCount += 1 }, + onOpenHome = { homeCount += 1 }, + onOpenDiagnostics = { diagnosticsCount += 1 }, + rawTerminal = { modifier, showExtraKeys -> + CompactTerminalTestSurface(modifier, showExtraKeys) + }, + ) + } + } + } + } + + composeRule.onNodeWithTag(TranscriptTags.MODE_SWITCH).performClick() + composeRule.onNodeWithTag(TranscriptTags.COMPACT_HEADER).assertIsDisplayed() + composeRule.onNodeWithText("Compact terminal session", useUnmergedTree = true) + .assertIsDisplayed() + composeRule.onNodeWithTag(TranscriptTags.MODE_SWITCH).assertIsDisplayed() + val terminalHeight = composeRule.onNodeWithTag(TranscriptTags.RAW_TERMINAL_VIEWPORT) + .assertIsDisplayed() + .fetchSemanticsNode() + .boundsInRoot + .height + assertTrue( + "Raw terminal viewport was only $terminalHeight px", + terminalHeight >= minimumTerminalRowHeightPx, + ) + + composeRule.onNodeWithTag(TranscriptTags.TERMINAL_CONTROL).assertDoesNotExist() + composeRule.onNodeWithTag(TranscriptTags.HOME).assertDoesNotExist() + composeRule.onNodeWithText("Diagnostics").assertDoesNotExist() + composeRule.onNodeWithText("Disconnect").assertDoesNotExist() + composeRule.onNodeWithTag(TranscriptTags.SESSION_OVERFLOW).performClick() + composeRule.onNodeWithText("Show terminal keys").assertIsDisplayed().performClick() + composeRule.onNodeWithTag(TranscriptTags.TERMINAL_CONTROL).assertIsDisplayed() + composeRule.onNodeWithTag(TranscriptTags.SESSION_OVERFLOW).performClick() + composeRule.onNodeWithText("Hide terminal keys").assertIsDisplayed().performClick() + composeRule.onNodeWithTag(TranscriptTags.TERMINAL_CONTROL).assertDoesNotExist() + composeRule.onNodeWithTag(TranscriptTags.SESSION_OVERFLOW).performClick() + composeRule.onNodeWithText("Ctrl-C").assertIsDisplayed().performClick() + composeRule.onNodeWithTag(TranscriptTags.SESSION_OVERFLOW).performClick() + composeRule.onNodeWithTag(TranscriptTags.HOME).assertIsDisplayed().performClick() + composeRule.onNodeWithTag(TranscriptTags.SESSION_OVERFLOW).performClick() + composeRule.onNodeWithText("Diagnostics").assertIsDisplayed().performClick() + composeRule.onNodeWithTag(TranscriptTags.SESSION_OVERFLOW).performClick() + composeRule.onNodeWithText("Disconnect").performScrollTo().assertIsDisplayed().performClick() + composeRule.runOnIdle { + assertEquals(1, controlCCount) + assertEquals(1, homeCount) + assertEquals(1, diagnosticsCount) + assertEquals(1, disconnectCount) + } + } + + @Test + fun compactHeaderTransitionKeepsRawTerminalCompositionAlive() { + val containerHeight = mutableStateOf(600.dp) + var rawTerminalDisposeCount = 0 + + composeRule.setContent { + MaterialTheme { + Box( + modifier = Modifier + .fillMaxWidth() + .height(containerHeight.value), + ) { + ConnectedSessionScreen( + displayName = "Resize test session", + structuredShell = StructuredShellState.Ready("/tmp"), + transcript = CommandTranscriptState(), + onSubmit = { + CommandSubmissionResult.Accepted(CommandId("unused")) + }, + onControlC = {}, + onDisconnect = {}, + rawTerminal = { modifier, showExtraKeys -> + DisposableEffect(Unit) { + onDispose { rawTerminalDisposeCount += 1 } + } + CompactTerminalTestSurface(modifier, showExtraKeys) + }, + ) + } + } + } + + composeRule.onNodeWithTag(TranscriptTags.MODE_SWITCH).performClick() + composeRule.onNodeWithTag(TranscriptTags.COMPACT_HEADER).assertDoesNotExist() + composeRule.runOnIdle { containerHeight.value = 320.dp } + composeRule.onNodeWithTag(TranscriptTags.COMPACT_HEADER).assertIsDisplayed() + composeRule.runOnIdle { assertEquals(0, rawTerminalDisposeCount) } + composeRule.runOnIdle { containerHeight.value = 600.dp } + composeRule.onNodeWithTag(TranscriptTags.COMPACT_HEADER).assertDoesNotExist() + composeRule.onNodeWithTag(TranscriptTags.RAW_TERMINAL_VIEWPORT).assertIsDisplayed() + composeRule.runOnIdle { assertEquals(0, rawTerminalDisposeCount) } + } + @Test fun runningTurnShowsLiveDuration() { val turn = turn( @@ -1429,6 +1558,34 @@ class TranscriptScreenTest { .assertIsDisplayed() } + @androidx.compose.runtime.Composable + private fun CompactTerminalTestSurface( + modifier: Modifier, + showExtraKeys: Boolean, + ) { + Column(modifier = modifier) { + Box( + modifier = Modifier + .weight(1f) + .fillMaxWidth() + .testTag(TranscriptTags.RAW_TERMINAL_VIEWPORT), + ) { + Text("Raw terminal test surface") + } + if (showExtraKeys) { + HorizontalDivider() + TerminalExtraKeyRow( + modifiers = TerminalModifiers(), + onToggleControl = {}, + onToggleAlt = {}, + onKey = {}, + onShowKeyboard = {}, + modifier = Modifier.fillMaxWidth(), + ) + } + } + } + private fun runningShell() = StructuredShellState.Running( activeCommand = ActiveCommand( id = CommandId("command-42"), diff --git a/app/src/main/java/dev/threadline/TranscriptScreen.kt b/app/src/main/java/dev/threadline/TranscriptScreen.kt index b0f31c6..b92b9b7 100644 --- a/app/src/main/java/dev/threadline/TranscriptScreen.kt +++ b/app/src/main/java/dev/threadline/TranscriptScreen.kt @@ -8,13 +8,17 @@ import androidx.compose.foundation.interaction.collectIsDraggedAsState import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.ime import androidx.compose.foundation.layout.imePadding +import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.lazy.LazyListState @@ -57,6 +61,7 @@ import androidx.compose.ui.input.key.key import androidx.compose.ui.input.key.onPreviewKeyEvent import androidx.compose.ui.input.key.type import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.testTag import androidx.compose.ui.semantics.LiveRegionMode @@ -73,7 +78,9 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextDecoration +import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.PopupProperties import dev.threadline.core.shell.CommandExecutionMode import dev.threadline.core.shell.CommandSubmissionRejection import dev.threadline.core.shell.CommandSubmissionResult @@ -106,6 +113,9 @@ internal object TranscriptTags { const val TERMINAL_KEYBOARD = "terminal-keyboard" const val SUBMISSION_ERROR = "command-submission-error" const val SESSION_ACTIONS = "session-actions" + const val SESSION_OVERFLOW = "session-overflow" + const val COMPACT_HEADER = "session-compact-header" + const val RAW_TERMINAL_VIEWPORT = "raw-terminal-viewport" const val HOME = "session-home" private const val TERMINAL_KEY_PREFIX = "terminal-key-" private const val OUTPUT_PREFIX = "command-output-" @@ -138,6 +148,8 @@ private val terminalExtraKeys = listOf( TerminalExtraKey(TerminalKey.DELETE, "Del", "Delete"), ) +private val CompactRawSessionHeight = 360.dp + @Composable internal fun ConnectedSessionScreen( displayName: String, @@ -149,9 +161,12 @@ internal fun ConnectedSessionScreen( onDisconnect: () -> Unit, onOpenHome: () -> Unit = {}, onOpenDiagnostics: () -> Unit = {}, - rawTerminal: @Composable (Modifier) -> Unit = { RawTerminal(it) }, + rawTerminal: @Composable (Modifier, Boolean) -> Unit = { modifier, showExtraKeys -> + RawTerminal(modifier, showExtraKeys) + }, ) { var rawModeRequested by rememberSaveable { mutableStateOf(false) } + var compactTerminalKeysVisible by rememberSaveable { mutableStateOf(false) } val transcriptStateHolder = rememberSaveableStateHolder() val rawModeRequired = structuredShell is StructuredShellState.Unavailable val showingRawTerminal = rawModeRequested @@ -160,88 +175,213 @@ internal fun ConnectedSessionScreen( if (rawModeRequired) rawModeRequested = true } - Scaffold( - topBar = { - Column(modifier = Modifier.statusBarsPadding()) { - Row( - modifier = Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - ) { - Column( - verticalArrangement = Arrangement.spacedBy(2.dp), + BoxWithConstraints { + val density = LocalDensity.current + val imeHeight = with(density) { WindowInsets.ime.getBottom(this).toDp() } + val compactHeader = showingRawTerminal && + (maxHeight - imeHeight).coerceAtLeast(0.dp) <= CompactRawSessionHeight + + LaunchedEffect(compactHeader) { + if (!compactHeader) compactTerminalKeysVisible = false + } + + Scaffold( + topBar = { + ConnectedSessionHeader( + displayName = displayName, + status = structuredShell.statusLabel(), + showingRawTerminal = showingRawTerminal, + canSwitchMode = !rawModeRequired || transcript.turns.isNotEmpty(), + compact = compactHeader, + compactTerminalKeysVisible = compactTerminalKeysVisible, + onSwitchMode = { rawModeRequested = !rawModeRequested }, + onToggleTerminalKeys = { + compactTerminalKeysVisible = !compactTerminalKeysVisible + }, + onControlC = onControlC, + onOpenHome = onOpenHome, + onOpenDiagnostics = onOpenDiagnostics, + onDisconnect = onDisconnect, + ) + }, + ) { contentPadding -> + if (showingRawTerminal) { + rawTerminal( + Modifier + .padding(contentPadding) + .fillMaxSize(), + !compactHeader || compactTerminalKeysVisible, + ) + } else { + transcriptStateHolder.SaveableStateProvider("transcript") { + TranscriptSurface( + structuredShell = structuredShell, + transcript = transcript, + onSubmit = onSubmit, + onSubmitIsolated = onSubmitIsolated, + onStop = onControlC, + onDisconnect = onDisconnect, + onOpenTerminal = { rawModeRequested = true }, modifier = Modifier - .weight(1f) - .padding(start = 16.dp, top = 8.dp, bottom = 8.dp), - ) { - Text( - displayName, - style = MaterialTheme.typography.titleLarge, - modifier = Modifier.semantics { heading() }, - ) - Text( - structuredShell.statusLabel(), - style = MaterialTheme.typography.labelSmall, - ) - } - if (!rawModeRequired || transcript.turns.isNotEmpty()) { - TextButton( - onClick = { rawModeRequested = !rawModeRequested }, - modifier = Modifier - .padding(end = 8.dp) - .testTag(TranscriptTags.MODE_SWITCH), - ) { - Text(if (showingRawTerminal) "Transcript" else "Terminal") - } - } - } - Row( - modifier = Modifier - .fillMaxWidth() - .horizontalScroll(rememberScrollState()) - .padding(horizontal = 8.dp) - .testTag(TranscriptTags.SESSION_ACTIONS), - horizontalArrangement = Arrangement.spacedBy(4.dp), - ) { - if (showingRawTerminal) { - TextButton(onClick = onControlC) { Text("Ctrl-C") } - } - TextButton( - onClick = onOpenHome, - modifier = Modifier.testTag(TranscriptTags.HOME), - ) { - Text("Home") - } - TextButton( - onClick = onOpenDiagnostics, - modifier = Modifier.testTag(DiagnosticTags.OPEN), - ) { - Text("Diagnostics") - } - TextButton(onClick = onDisconnect) { Text("Disconnect") } + .padding(contentPadding) + .fillMaxSize(), + ) } - HorizontalDivider() } - }, - ) { contentPadding -> - if (showingRawTerminal) { - rawTerminal( - Modifier - .padding(contentPadding) - .fillMaxSize(), + } + } +} + +@Composable +private fun ConnectedSessionHeader( + displayName: String, + status: String, + showingRawTerminal: Boolean, + canSwitchMode: Boolean, + compact: Boolean, + compactTerminalKeysVisible: Boolean, + onSwitchMode: () -> Unit, + onToggleTerminalKeys: () -> Unit, + onControlC: () -> Unit, + onOpenHome: () -> Unit, + onOpenDiagnostics: () -> Unit, + onDisconnect: () -> Unit, +) { + Column(modifier = Modifier.statusBarsPadding()) { + if (compact) { + CompactConnectedSessionHeader( + displayName = displayName, + status = status, + showingRawTerminal = showingRawTerminal, + canSwitchMode = canSwitchMode, + terminalKeysVisible = compactTerminalKeysVisible, + onSwitchMode = onSwitchMode, + onToggleTerminalKeys = onToggleTerminalKeys, + onControlC = onControlC, + onOpenHome = onOpenHome, + onOpenDiagnostics = onOpenDiagnostics, + onDisconnect = onDisconnect, ) } else { - transcriptStateHolder.SaveableStateProvider("transcript") { - TranscriptSurface( - structuredShell = structuredShell, - transcript = transcript, - onSubmit = onSubmit, - onSubmitIsolated = onSubmitIsolated, - onStop = onControlC, - onDisconnect = onDisconnect, - onOpenTerminal = { rawModeRequested = true }, - modifier = Modifier - .padding(contentPadding) - .fillMaxSize(), + ExpandedConnectedSessionHeader( + displayName = displayName, + status = status, + showingRawTerminal = showingRawTerminal, + canSwitchMode = canSwitchMode, + onSwitchMode = onSwitchMode, + onControlC = onControlC, + onOpenHome = onOpenHome, + onOpenDiagnostics = onOpenDiagnostics, + onDisconnect = onDisconnect, + ) + } + HorizontalDivider() + } +} + +@Composable +private fun CompactConnectedSessionHeader( + displayName: String, + status: String, + showingRawTerminal: Boolean, + canSwitchMode: Boolean, + terminalKeysVisible: Boolean, + onSwitchMode: () -> Unit, + onToggleTerminalKeys: () -> Unit, + onControlC: () -> Unit, + onOpenHome: () -> Unit, + onOpenDiagnostics: () -> Unit, + onDisconnect: () -> Unit, +) { + var overflowExpanded by remember { mutableStateOf(false) } + + Row( + modifier = Modifier + .fillMaxWidth() + .navigationBarsPadding() + .testTag(TranscriptTags.COMPACT_HEADER), + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + verticalArrangement = Arrangement.spacedBy(2.dp), + modifier = Modifier + .weight(1f) + .padding(start = 12.dp, top = 4.dp, bottom = 4.dp), + ) { + Text( + displayName, + style = MaterialTheme.typography.titleSmall, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + modifier = Modifier.semantics { heading() }, + ) + Text( + status, + style = MaterialTheme.typography.labelSmall, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + } + if (canSwitchMode) { + TextButton( + onClick = onSwitchMode, + modifier = Modifier.testTag(TranscriptTags.MODE_SWITCH), + ) { + Text(if (showingRawTerminal) "Transcript" else "Terminal") + } + } + Box { + TextButton( + onClick = { overflowExpanded = true }, + modifier = Modifier.testTag(TranscriptTags.SESSION_OVERFLOW), + ) { + Text("More") + } + DropdownMenu( + expanded = overflowExpanded, + onDismissRequest = { overflowExpanded = false }, + properties = PopupProperties(focusable = false), + ) { + DropdownMenuItem( + text = { + Text(if (terminalKeysVisible) "Hide terminal keys" else "Show terminal keys") + }, + onClick = { + overflowExpanded = false + onToggleTerminalKeys() + }, + ) + if (showingRawTerminal) { + DropdownMenuItem( + text = { Text("Ctrl-C") }, + onClick = { + overflowExpanded = false + onControlC() + }, + ) + } + DropdownMenuItem( + text = { Text("Home") }, + onClick = { + overflowExpanded = false + onOpenHome() + }, + modifier = Modifier.testTag(TranscriptTags.HOME), + ) + DropdownMenuItem( + text = { Text("Diagnostics") }, + onClick = { + overflowExpanded = false + onOpenDiagnostics() + }, + modifier = Modifier.testTag(DiagnosticTags.OPEN), + ) + DropdownMenuItem( + text = { Text("Disconnect") }, + onClick = { + overflowExpanded = false + onDisconnect() + }, ) } } @@ -249,7 +389,77 @@ internal fun ConnectedSessionScreen( } @Composable -private fun RawTerminal(modifier: Modifier = Modifier) { +private fun ExpandedConnectedSessionHeader( + displayName: String, + status: String, + showingRawTerminal: Boolean, + canSwitchMode: Boolean, + onSwitchMode: () -> Unit, + onControlC: () -> Unit, + onOpenHome: () -> Unit, + onOpenDiagnostics: () -> Unit, + onDisconnect: () -> Unit, +) { + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + verticalArrangement = Arrangement.spacedBy(2.dp), + modifier = Modifier + .weight(1f) + .padding(start = 16.dp, top = 8.dp, bottom = 8.dp), + ) { + Text( + displayName, + style = MaterialTheme.typography.titleLarge, + modifier = Modifier.semantics { heading() }, + ) + Text(status, style = MaterialTheme.typography.labelSmall) + } + if (canSwitchMode) { + TextButton( + onClick = onSwitchMode, + modifier = Modifier + .padding(end = 8.dp) + .testTag(TranscriptTags.MODE_SWITCH), + ) { + Text(if (showingRawTerminal) "Transcript" else "Terminal") + } + } + } + Row( + modifier = Modifier + .fillMaxWidth() + .horizontalScroll(rememberScrollState()) + .padding(horizontal = 8.dp) + .testTag(TranscriptTags.SESSION_ACTIONS), + horizontalArrangement = Arrangement.spacedBy(4.dp), + ) { + if (showingRawTerminal) { + TextButton(onClick = onControlC) { Text("Ctrl-C") } + } + TextButton( + onClick = onOpenHome, + modifier = Modifier.testTag(TranscriptTags.HOME), + ) { + Text("Home") + } + TextButton( + onClick = onOpenDiagnostics, + modifier = Modifier.testTag(DiagnosticTags.OPEN), + ) { + Text("Diagnostics") + } + TextButton(onClick = onDisconnect) { Text("Disconnect") } + } +} + +@Composable +private fun RawTerminal( + modifier: Modifier = Modifier, + showExtraKeys: Boolean = true, +) { val bridge = SessionRuntime.terminal val modifiers by bridge.modifiers.collectAsState() var showSoftKeyboard by remember { mutableStateOf(true) } @@ -272,7 +482,8 @@ private fun RawTerminal(modifier: Modifier = Modifier) { Box( modifier = Modifier .weight(1f) - .fillMaxWidth(), + .fillMaxWidth() + .testTag(TranscriptTags.RAW_TERMINAL_VIEWPORT), ) { Terminal( terminalEmulator = bridge.emulator, @@ -282,15 +493,17 @@ private fun RawTerminal(modifier: Modifier = Modifier) { modifier = Modifier.fillMaxSize(), ) } - HorizontalDivider() - TerminalExtraKeyRow( - modifiers = modifiers, - onToggleControl = bridge::toggleControl, - onToggleAlt = bridge::toggleAlt, - onKey = bridge::sendKey, - onShowKeyboard = { showSoftKeyboard = false }, - modifier = Modifier.fillMaxWidth(), - ) + if (showExtraKeys) { + HorizontalDivider() + TerminalExtraKeyRow( + modifiers = modifiers, + onToggleControl = bridge::toggleControl, + onToggleAlt = bridge::toggleAlt, + onKey = bridge::sendKey, + onShowKeyboard = { showSoftKeyboard = false }, + modifier = Modifier.fillMaxWidth(), + ) + } } } diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 70f1bfe..3c08ad8 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -111,9 +111,9 @@ layout bug instead of leaving it in polish. ## Compact-height connected-session layout -**Status:** Deferred responsive-layout work; the alpha.3 session/resize behavior -is accepted, but raw-terminal visibility with a landscape software keyboard is -not a finished experience. +**Status:** Implemented in the issue #36 source with focused 200% font-scale +regressions and API 35 emulator acceptance; Galaxy owner-device recheck remains +for the next shared candidate. Permanent alpha.3 testing on the Galaxy S25 Ultra confirmed that a running command survives transcript/raw-terminal switching and rotation in both views. @@ -125,11 +125,14 @@ evidence about the constraint, not a request to reproduce its layout or style. Keep rotation support: it is normal Android behavior, useful for wide terminal lines, and more important on tablets, foldables, and hardware keyboards. During -the visual/responsive pass, evaluate a compact connected header, moving -secondary actions into overflow, and an optional focused or immersive terminal -presentation. Define a minimum visible terminal viewport when the IME is open, -while keeping connection state and a route back to the transcript reachable. -Portrait remains the primary phone layout. +compact-height raw-terminal use, the connected header now collapses to the host +identity and state plus immediate Transcript and More actions. More keeps Gboard +open and contains the terminal-key toggle, Ctrl-C, Home, Diagnostics, and an +intentionally last Disconnect action. The terminal-key row is hidden by default +so the live terminal retains readable rows; showing it is an explicit temporary +tradeoff. Gesture and three-button API 35 checks both preserve the terminal +viewport and keep More clear of the navigation bar. Portrait remains the primary +phone layout and is unchanged. ## Drafting and queued commands while a turn runs diff --git a/docs/STATUS.md b/docs/STATUS.md index 315c7b9..b143bab 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -1,6 +1,6 @@ # Threadline current status -Updated: 2026-08-27 +Updated: 2026-09-08 This is the canonical execution-status page. `PROJECT_SPEC.md` remains the normative product and technical specification. Dated investigations are historical evidence for the boundary they @@ -10,7 +10,7 @@ record; their old "next" or "remaining" sections do not override this page. **Phase 5 — Alpha polish is in progress.** Phases 0 through 4 are complete. -Four Phase 5 slices are implemented: +Five Phase 5 slices are implemented: - **Accessibility and error UX:** typed, non-secret errors; direct recovery and focus movement; assertive announcements; navigable headings; spoken terminal-key labels; and connected-session @@ -24,6 +24,8 @@ Four Phase 5 slices are implemented: - **Basic onboarding:** a versioned one-screen introduction, contextual connection/security guidance, a Help reopen path, blank production connection defaults, and status-bar-safe custom headers. +- **Compact raw-terminal UX:** a one-row connected header, immediately reachable Transcript and + More actions, and a keyboard-open terminal viewport across gesture and three-button navigation. Their evidence is recorded in the [accessibility and error investigation](investigations/2026-07-31-phase5-accessibility-error-ux.md), @@ -48,8 +50,9 @@ alignment, identity, and version inspection. On the Galaxy S25 Ultra, the critical physical path passed: password SSH, structured and raw views, repeated switching while `ping` remained active, and rotation in each view all preserved the live session without the alpha.2 crash. The release/JNI blocker is closed; -the landscape software-keyboard screenshot adds a deferred compact-height -layout issue because little or no terminal output remains visible. Two +the landscape software-keyboard screenshot captured a compact-height layout +issue because little or no terminal output remained visible. The current source +candidate addresses that boundary as described below. Two portable AES-256-encrypted signing-key backups are held separately from their decryption secret; independent download, extraction, key-entry, alias, and certificate checks passed for both provider copies, closing restore @@ -203,6 +206,16 @@ API 35 instrumentation dismisses and restores the real terminal IME, and the trailing half of the screen. Exact merged-main CI, permanent signing, update installation, and owner-device acceptance remain pending. +The issue #36 source keeps multiple raw-terminal rows visible with Gboard open +in landscape by collapsing the connected header and hiding the mobile-key row +until requested. Transcript stays immediate; More exposes the terminal-key +toggle, Ctrl-C, Home, Diagnostics, and Disconnect without dismissing the IME. +Focused constrained-height tests cover 200% font scale and preserve the live +terminal composition through compact-mode transitions. API 35 emulator checks +pass with gesture and three-button navigation. The three-button inset keeps More +clear of the side navigation bar. This work does not require a dedicated signed +alpha; Galaxy owner-device acceptance remains for the next shared candidate. + ## Remaining Phase 5 boundaries - Technical-alpha use sufficient to evaluate the Phase 5 exit criterion. diff --git a/docs/images/compact-terminal-landscape.png b/docs/images/compact-terminal-landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..68998b95ee32b513b3355d4256e285d8d157b249 GIT binary patch literal 133819 zcmeFZXH-*b+b)V-X)X&WC}5!@p!ALnF!bJwique~gicUFP!NzVgx(=Q=q(UL6r|S> zIs#Hc=qutaUGX2&E`(@~Au!T+mGTdkkwrr2n!C_(7cwRnH zAJDn<+N=KKwV4i!P;6(c?myNJhjsY*z z&B^EX0dpyM;YQke=9%QAxr(}@itQSaI7 z4`buwk``uvZq9C2etv#m0t{O2j8&Zd{mR`M_3qnA-s2bXvB$;Amo7y}SZr`5h{4nA z>gpu$L=twzjs6g)kQvEpQ$CM3&UG;@9LFl$12`^sEWh zY(DG%NM=H25y!7vLV8KZ#8jAh0=L`BXt&Kv`jLY!EKaSut*q;Y1j;P zpK!}_p|;LW6=r5;P>EVT#&z;x*YkQl_oxoD{8=S9*OD7r7iCh2!W@;FV2eh$S;d~t zC;Aq#e?r{K=pC}?wn5#U;(;hCEBBFHR#pc{Mo`fq`f^q&`03&vsMt+f-_3DR!`(fr z!Xn{#<=VYwBO&MApQ@g2;LPC%KmA*L&6G|QjC;EgwndMJU;V=C`+hrE=#pH~)VCgT zN=f6|-rfe4l}*Q^XT3Thou6A^?N-=pt?i*--StK0NmC#-c@u$RiiwZO^ADn3e7*mI z?kYW}EI+E%_uJzpA-4`Ouuk8GK=|{j+4{6Q_v~NwpRjNtgKH-SN3_tIIE3P{_OH!zcsau zGpiu3i;{%is}xfhV4W;eGg=sBR8Tm`_m`a`2$)e3FRv-YSFE)A_vqj z@$iYLf@0Fq(#mK8o6qgO3fP}*{6F^w`F%*?fFvdz`##U^N3DMEhk7xrNihQu)p2i-N7b?wYelj zf;$(3)U{p3)R$`OxqE(H(wEQBn2?cCgsAprUWmHNaA~-(`%n9MJ?$cP(-8Brh8}(t zzv+k`w>UoX^;-HUOZc|Q-#4I@?dGkJW6pE~v$zaERQIud%UcS1ulM=++`fmc3SH~v z{W*k4Dt;%fbJuTPEqDa+-&!P~7JoGgVX;`7#`H4@n+S0xz8m@)>n;{KN2GJsJ1S+8 z<&%*XO4_Cxd=N6Adau;#oj7r#i(qPMN_mk=&)6=})CYfte1J(z{Ya%bLO%35HqAyE;=SD%lBYM(e^wylZ4N+kEbr9rQYb6nV~?T+s=0}GqWBrADt%RB8^u)^WbUqboeW@LB2EvzE4tgM)*MIVrjlEe#T@K5=W<-szV!LZmIht!+^= zNTlvjd8yV(eK)iTK!Yx)26##B?za#+X8IL7sCz(8PR@P+(FUgG-0pdHtf|{p3nw83Bl;++A3A>VSY_J_{mHm%>u(> zXiiGBRxXbwrl?6<*oMTo?eE}`tx?%xEk;$2%WIqM?d?e^r%s)eEXN%k>p&tIM-FHp z41Lr4y&3Y7va2KYS}`$6EVb*Kn_2)6GXoz+c3QgB!0YI~Q=jz*ODJLNSs-mou+=dc zU)u)wOG!neW!Erd$>RuMW_E7QwzZEfABlvz)`KRi6w9aK;NXyfYQF>k(W%6VlI8+T zrsZWxZr6xMLzlXd(dhE5sF9|L$+BI}h5ueAMIoMd3Yp3+VzdO&)Kf)g&0wP zj*f{DmpymZ?cST1i1?{PDUY>(;ydT)aSHNJ+ge6j#Jf7$mU=dg%-saR%Cw7D8WwW% z@I$A<=C+@P8Y%( z{9U0u$!@In?&35Re{aD074$N7=WQSCp7o;-%z9vfG~;u5Pvn01aDINibVDE}Hinz? z{!a@PRfn(%kInhx{`-hd376)0l@)haiq>u%s?*9*5&j6X>0)Gfzz{0`qq*4zw~`c@ zIUPAoE8QTxva&+CcJXuL^UqCFpR;NW0jc56}o_gtZX&ty>QPFzmzem*dCAw22Lint&FGAXL)QUI1p~_~1=UazxR$^v9qe zYHDh@?%(QR6T>k9wnWF0k{bPpOCk}j4?rCsvHBNvFaI5EW|mg4bT2E5X#t-h#>TpZ zqievV8zp0ncWs-u81|>z`DT1@?HwE_+2-zR>FQ>KQ_<1Yt*klO)7yRF{CVqs>Bh#!uI{X?Ec@D=dMPQX ztBjWysS|Xxb*)i`(xs!LQ-P-t2!sk3qAGarv&e5v z2f1n1362hIG8Mr zo}DM;T$o`OLYuvK@pjY2$*F`~zbXik{PLyw``Xsea+^OfAhp<2`d+FHE-u>6Te-Uv zEpbfC3$O}U=wy~4D4+N5-*a)9)XqX0@XNqxyyF%q!>)P7@Y%Wl(Dy7!%WWO_!r zu(f*W2Gs_@|2*Hk10f+7>x`WkVPWBsYR`;VpW`HMBsXFlRh+9n$!~H8aPLqSNx&{L z2GmL1+YiCYBVP%`3t9iV1vojZ6}R%%@MqdXp> zrU?Y(rRERP`1X0`uwc5`CIH$lcwa%)_B(KNfVQq-2OxIBzj$UCQ*1O<8l>^B_~lR}E) zHzFitQNE^yMV8WME>JQ%OXC^fz2F`~cYCISLqnG%c0xdB1lrZG(kHLdZuAadqhA)T zCrK0RXjB>cas_Vw7kMeR%A>i$vZpni*R zCb7@?-@ctJG^mm%z1(k|oHPTA08m=Oei7eNvD*8heq+NK{A=@Yx&V82ie{wN)$9KZ z<*hnPg#{F24vr)}y}WFHuSEoh1rLf_C1rrm2PBU;H2i0=Qn|`3yEH-f6S1EdvhThr z>|AcynTVb3w&C-^j;fRLp=6?VpVi_+dWLy)eEe<5ez(!_U?^^KfHR;%7S=G=>1QTh zBhI%8&VCv02IxgHe44>x{#EBoMdA*EgW@bs^Gs^D+0v0-t50x~ZwAWS;aJF*{ zf}^CRqUpK0xyzOLC=_UiN$rWO+ZR?dsNk@-K!{aXv|9o;)oxkF1q_VMxds&E3J0_= zfK07>bEmZ|vY@lY8KXO}xZIzdWI884JPbrVp(o9sOs(0~67PYnB&Q%(g^tc_n(6^- z4qNDX1jH>M2@2-&p&Ht+v^g5&4!U&BOE~%Y)ij^T-3Ng3KIr|Gzx<{ip7GbqG(gk1 z&z-E*banmYP`wk#=hyY|GUhSv?wj|fjdmi04JCe@66%mlrvbKj?Yy@VvRiol<7vxJ z%PMgmCWxkH-^1n6Dx7Bn3gsA->?ja_^$Jt}V(o*BX6u8nWka+>D67qQAT0ExzI1QG ziay{Nd~b7WYbA8ZMo>#m?+75|oEC`k{(XrM|*))pG(PZ`xcs8(y@(bz; zR1VJUp5v6@HUwQCT);@NjlZIz(yRN|qoak?fuNXOULOD9h!p@xLgvmlL`}8WRU$y8 z12r&MXqH2B14mr=yRO8+ff{O-MZGrg9EnW%weM0;DR7rjM@BkMyd8(;Zhp<8p2D0X zaIaRRx*));^9luAWFhv36`|05E`LOm7cx@mi>$PtTr73ySSYDoJEYo1%gRhAZf@iC zDF`0Q*F_r{zP5FAs2do>E8Te9uTgk>lU4z-BjuIU`f72Fp+G( z%fbGU$J3NG8Ad^`PqfU+zzm2lEh{YtM4>Z5TnYGo|7nAK2N;d^@8+PXs-(CD0z=`I z5MzbgxZ&(8D{}pUJ)NNt>W1-Cd%ze(a1y4W^;MsJnWJO>q_X7nQ%bWm z?|;Bn6|h^lFTJt0TK;mDve2N+aF%Yi3kr~ZA(|`48lY)gSF2lBOAE)(rlyS1E)P4Z zTHyD@QN#ju1X!itivcWFT-H4^Y5LN{!~`WZHCg8aL2e=Uo|2ME=)TSKGGaC0e?TFM zn)pSD*o~x;AzxHf0dPedn{z_P8GE&}%|^eMmw7=Qk`yXx1reQHzck&!x8UV#$f+g; z>sd9~{Pfbth$@Fc&>83$F6Dik;jlf}u?Nm1)F}mUGctz)pWoKeHV|uXq^)6a8x-E9 zyYk$8B1P?2`U=-KxBI~o3Y+g!1B}bhEPsmBMfFuFVIr`$F~IhDtzO)f0CPin7aBFF z=AGL?A1?i&r4RK8DLrO-rtp{v-{U0J$%D3bl;&~3Q4(ggSG9ai#|4WDOWoI*zXkR- z2k>jJCHY10iLIUle6!8ak*uVZin(|s+xI+yp)&4;$uK&AXaX~%eQ2_Ka&P!$Nx4mT z2F}wPrW%5N^M(Qx9uJ480=N-i?PJFs9EDkd`50-CbPz2ei~&DtV1doZklrQ_j8?8{nu5m#1aPBUdvV*?iLf9hr`S_9{vV zR5MTuDGd$4sOwoY1?G)}>q6?{-){OtVuF-Y>Bh$9*0TGg>qxSoRbn1EdG`^xig+*R zs?e|b75C{!Q1h3sJmdkK;*dn5yL@x{GA1&!a1`#K^hN4^jZrs@b;%dH$ti#A=<)#sxhQ(vIfn8aL)%uGmN1Z$I*Tb-*yWDJ#;+Y0Tmh%=s}js{2t zHi;q(25bA-p$@>$#dqWDZ&jP5AyZ%iMO=zVxDQVUEf)Zy+v-FXDeqtwkI!>5Z|0Ja z$R0k($S@bO9Jo&IhoG-6Pt+>`Ujrc2OpA*8)5#CaG+&q^0E5YDk0VpovgKbTvf)7P z1Cm>KghZj@o|Lov5$rvJe23WgiV)^8F7GVXi-YeQYKygYY`Z>Q$Jo+fQ4$yFieG;d zcisIg;xKY6FHP1?q3v93TpZzjgEW8M?eCjCr!I<8dNUz2%fDMJ&CJXQtc>QMHaFjv zpDIjFtF1Kzc-G~lZ>^6cmdk+~pMEE!95zZnyzDkRKW{@!9;ZyY$?f0Rvq%E+TO&e4 zf>drpc21qeZUU9t5B5vB%_jT21n7MD#d6 z&Gwz+XMevIpx}8`6Y-yuZuZK13zOT!@b6eJNU(xpnm z+tR=Y=ufUk$Hd2{1-AvuPm%jgew(8G?xY_JZ)T|2lPoZ@-=N z_EHpiixXvlyF|9j&|9ks9Ok=}Ng)*Us+_00k#uxbPFG=8wRx0hE`)Wwjm z*!@gT^QC48F_ZZj3{HE2)@C4qk58m)Pn>u84P^)=9pmNvxlATym$NSpeMnd77+`g% zURFm(M>z!r9-s=GtijdF3>occMm)l$fUo#xSPfHc-{A?iq$(J085VhU--m1v_r6BYB+mR9%bh~t`zh<=5 zeFI>M7}mR02nY(ksxX`d3|T8DF&`X<*)#6$GE=w?Fh+8hXD@-e0z}r!aRNQ={FgFZ zI1i)~X>Lby`?sK4ZgzI|II&9CI_s|L;2Iq$D!p#vz{wG^Fg;E<;Ah%3qu}P_GX>;w zu_qa@|CtuG*I{w@Ozr@-zT_41BR#7f;~v%$$~4L8akW?UG4Q9m)`Mes62`k7s-VLc z+u;+AW4rRaG?I6?1r+_yvPpJ-0avF3)veeKQxLpPO*RYEpFc5ris+oXj1h=ePI%xO zI5y^`5Zm9>^yI?&1wbM0K=KRn2R7*1bu=_?gXK)}-l^eh@Q{|4hV2xTkyilV583Sn zJvNf@odx(UCd%DEKulps&rDwggpAjioGc@^_4r7ZoG|%%C0KyAvjrU`-XPxa5c^X4 zXuz!8s@nlV6O&$q-mleddhnMagivW$y(!zv;6)}3^zf2m4X9{dn$9n8mb&?SzSbfL zVW)53!LC99+@>oUF?7bwedqT>9cuVrUChNTRN?zcu zj?CrD(~2ih+X3s9?V_TFkFgIb7Y=(0`ipA3PjFp*9nd~H+S<9G2`bs1&r|^^4Y(WN zzbJN9-KUf1A$@%;vE)z>+;tE#k;5X&3$*w~(Lby3#w_rE1WOC7dvD$(HTrinpG0pf z6DA!rAp(;H^i77{WQhsr4SG7Tn9{N`Z9TntXK4We#i}un5J9p2#Kf_i_3Lwlu99K9 z!Fa(gyYeD64;B;G#vl7@GkcMYC$&c1?Qqo(X0FoHvqM0dgIyFxYHJ(+u3H7Zl#K{P z((AW1xl@9-MX{2+R}kbZD3F@@4nIGCOiYYTf2_(#l_P31xeTZXV2099=1G%1{f}4J z@ge-OaZOX|^76Ixe)alsW?nUS_T|g3Cxf^G0qgxk~WTZheVQ52y7=nx^W{F&{rk;fQbsd`1Vu| z7<{h;w%10tXzRJ2|MB{N{T2dhD$6Pp+CLXsSj6-{GRDG6JibY9fe~a(1Z{2IYVG$D z-vIRo9c);A{O2fo+n1Z$xLM`>hcL0_fqo#yE1pl~0CLsV+B%rdPcMQ#N~hu*1W|#A z_qestBFJlSH;z4@coSD5SnWsZN`}p@lAG^*B1}~Y)$ag&LPi<8>eAA(a;N^Y0IewCSif~QFw1WM%eP{eT}v#(T>Y*zt`6Gjro z@c``@esrYPRRPTGeV_IDu0j9CM~&n+gAVJxutg&)ThDc9ArS9{_51_2iHSg-oFzMn zyvz8lVgLU<3-GWEdinA`ArR`gP%48h$$0w{~P7nOwpIhlTZm5Xxk3Cu^nuh;+aT`S=l1>(@m}+NtX*a@g+HGXjhe-z+^>)V&jfkD)ou%jOdmXeh?@D8`S|*J zZwQYRfav*LAML`d-yu23iDV@kV%KFfK|cTh<b=EjFaaN^vXv;$VZk5wKN1^ zPjEr&E4C355yPDY3k%kvHw0CIC01WK!tmd#d=u55&5PJ-M#!FfV>#)ABnNP8-HUl` zdZ&w3nagjThCc$PwlH7`o?afd>$niu?%HjT7La#l=LmMB&NB*_%i8vNu~=JJAPN+X zeCW+WGqXd&jP0r6{;{#KtE2q7*UUUV${c!NG6U5Ivpa9F32Q%-oQ@3P(`onuufOBN zCVYAZ7^^_};GMfxfK&ui5*N(=w1fq>4EaxefCep&u3~z@_hi>8oac&P=&s8wSLB(JFjLTm$45?z_4hR}(@%8Li$@4}3^EHl7-{c3TdkR41Ubcf( zFmiIBNd)&QPieP(Hazx(WBDeyo#b(fWMA)c^Lbiwkl?9adX}9wIy^jlZ0u*oUsFDBW)vu>cF%y@ z3jmp$mj@e`Bw6k{OyuU`)d0y}f`CnMAPoaM*l7%*&B-#hIVFaLfSN`P{39UQ>u>SD zuL68ewfaBCha^1PM*eyS1;sa>)nCPFDJlC{{D?uS!{`ai{tcE`!a>#~ba=y}t+f+o z3L@{G0H+ziUY~|CKG5v#?M>QH{<~^_J?(>@)Mv|LQ&f@uB@h=Gd56Vum06P zGuObyB^>t#@wr%aeaV|ohU1vonIlf4dG z9Xv(;K2Fcollreqpg2A-f)H0TDZ7CNnib+K7!L?Z&x!=&zurr@?!8a3U_wbrY255o zQnGlh9~GqfuhZIcI9>b;#QI|vH^J~$km_HMMM1FzZ}>nT048q?E4*TK3k@;~mXztP z(eZ$ppa%~g05X%#uJVObR<>bgL{LyrOZKQ-^M9P$!joOdQ=N7iUFP;piiIzep;4^qqYe+H7jMr z#BT;LKn4uFi$K#Pxqzz&>Q3{;i!@ez49*l*V>NMjF#w8fTO-k_E_R)?D2b8<_!j(0EthNMNSxAV@!co^rq*oT&ej#RitAq`cBC&KNmupa z4o2A~@fqQ=&SA$p-^?o9CuPQuN6%>+84(gw;9fJIhv!2YdH_#Dc64;GryP$Ejt9Q< zns4RE9%?)ZqPE{j{JWwTOjJkc13)Z6t_OeqT2aI}i6{avbLL~X`Y@(NF^1v1CyUdRy8eWm04=-R`*gqV&)-0SL}0=#p6cR79I8uP z?Zt~1z(nd#@4g0n!XZymXU(xLU_%ZK+m-SMfT>CEd^amU44UQJyc-nW6V0Xd8_dO- zpxuE|y(Wnw*F%xGJ9LVJ>MA4SV&Y^XK0;z{S#L;Wpz(b zuuKEmgeRfIuF2V9qlB%5%+@*IW~%Ur#BwBr5OkP-z&c{^nI z-P+K@?%arst?%aH=l~Qe7nqJwlRnB+LP$Xph>dmf-WWgaH_vR(_Zho)R`7v#0#tD3 z(N>Ux$=rl*_qLQ$96yX<(zPj+Zwh(0OOhzXM*GY)eiZF!mI13DPn2AB%cH1tBT4w~ z&A!Br+Ij8QSeXo(`b^15EDz+3`+j#jnCCg}F*`c^qKfcJIGaN~2p00{wNZ68yCVe_ z2_7Q|4Yu!S7cE;IfXWOE)>k{6b&9L;+?>zLudOBgHNFgLgUPw?OflHu+l@h+CUbC? z119o#hjV>+RnCeeM&ONir8=jERh#7Kn?B!!5aZBLQSfAO3p6=hBVYt()*9G683& zS^OH9{yw+jor(^}-L~qKK(_9IDX&h%D&ueTUN!xZ4 z0W<(hCg4OS5(ygzKoL7dQaueuC29#_lG_`yrZ%q2#ABj27^`Cz(>Va;Yqw(vhEFqU zu9@u2i*BiMm{7DETEQ5qga>ATNUaUup7#X<*Cs_wqx5SYz$9HL@}9Q_ zq`}@ik zG{~O=;LO6uZaaT2I;KXqOTsI~+~_)eTy*)SD~+k=vQFGu3=oveBoYhR76f*Gb%F2N zF>{{+i{C)n{5CzHz$&_L!O#KjikfVeU&9f9yrIpqNBY{9-AzvKrCwPU9J7;?QBWv?Vq+B}0ac#u>$?y9#GDj2ud;)3x1B3L^o~g*SxM<&?>f}r>Ende zWHwzhR-bq?jk5QRbS@tPd-s<>QEqMzklnT0f4M{y6boM97J$KT-PYDtJ{PJ6{efxe z7E>09SGoH?wp_xlOwZ6=VVWtO3!;++<7vS6S^-hSiuW3PUKY{G4gn*u?gj)r{&p4p z$cp_?b=r@zl=DE5kaLfkj?S7*2hz^bIU%2+`}4*iA_T2)){-b*864jWuEij5Vw^MJmUa8puV~KN zP6vFX+%r>ZG9P7_`#opdK3J%dygW{vggPHz=|mnM27%-!X(nLT!^C@A*xB73*K|?l zcc~jVFB?)|_7f`*X!Fg)KGuPJgz(M051|)kC?{uWW!6<)}!jG(LI+>=SICh0->z;keTx+{wIUamm0+c;o;V zcVxKQ<=xG|3If(1I-GHq_bNsKJbn-r7njr5FDT@AB*m-08{b|J2F-@|#65rA0{ber zprAwCef1P^F(Qbi_rr@OHb@XH%U}?TUv9W8DYI7`q-LXs+Y2;cnm=1~;xMj#3@i$8 zm{}lwnIEHE*WX|JPobh@*9Wfbzn(ahw?EzV?VE8kkM2=!)r6;!dCRAW|I7sS^r%Dn z0L?WXoSU0nY&LQj1h%Ixn1=)~M$0Ub>ptnH24(;j6XT?tYphZ-!e#dKp@T(ET_8J( z8YzV#0e7GT^QUpG*4p5y1l^;psEJ)-gSNgtC!}^I`^Hx9ITmg)&RnIgzbr6-@V&@W z`sAiahA9zL!`8IY@A-KS;5tcf{?@9U+b1OI>Pc-_-=2_sI~U@ zm-SZsO1&jb+SRJX4#RRV6w%gpTJ zkDZJ7=*={OwjLJWR5b{lkG*;3tS3GlDbHo$@l=h4ikFigsnMMFl8#QBOR`?u_YR4U zc`E1EKP+-j&y_>F+ky?5RCzSP2awPkvxL>O-S6t)06h6D3;{(0VBMJ_qQ7JkCq4Dt z#|0I@QwX*&5+Ke0>Fs{UN1a9D7HwBa2iu~sNyk<2zzH1bE%SPkR68>`dZTmFqbaoQ z=g%I=)rQe&QjV&)9C-jIudf0=Lr!Ku7S-VW8`NngjDSOTNPA5BhjuYvVagy^J;1_f zmzA1pDYz}0e(=~@iVNTE+mFbL3^=1MvRi~P)N65_1BQj^@o-c*A%A9c)({-XJ5IL9 zcsQ_1LWVrMd3sQ*j?f(3f5!Y@|_L;+?lhb`?ul#9ehFY51g?h=RgL&Sx%*=U` zEHd?4#HaHImc6QlMxM_iwRH@TqDQrl)f(I)r0P4Qz3&V0NEbds$)M|ceI|1$r1uYN zmPa;&9EmpT9HWe#Y7&JFMK!R;=$)sdTSr&b&QUMOK1}gF%u7COzXB-gt0*Y>=`D`q zjR1O|El3C;r>gM+a>piz6)W`z%s+lKi`1@w*%TiBhQ}e-;6><_YAs+x^fHP@LBdJ+ zZZ8rRC*-g+B#*m$_wF`XDIieCN`hTtO|yn>Zk3g*L%oaQ-iB_fVadKz;&C;jj`b?7 z{%3`2juw$cy3=o-&R6GyEFUm@&^_C0gIIi?0cgSve_OMb_a}tA93PRk@j)pIU?9hO zBOXMkeUdJdgT5{+I&b_A`ZDYpTiX5%zRb)b5x+tp#brUFdN(?_jOz?X>c^* zu;wq6OyxS`Nyj%cGU62zhjra^>Ay%1B?KzZH~1e=p%3FZ&|?JxOcLs@W5nTQ+CoEk zDwS$L<^3Vv7FJ``m&4-X-1qKj>*!?p`1sHjCgl8v-e@B`g9HBojP3 zxv>ewNSSK^^e2yrgGuT$=g#rmPHPxD|EoMVzt#|pMQIxtaPjjy%01oE0i$G{MJUi% z8=nM$qjNbrf`P*zo^;1a2dVXL&PzvtLf^X`eS(0l}* zx5yI@!M%|`e)~d#IQ^oth`0k=jV?=rh9WNWA5-vWt#rnrCXdV9C#N*%4p>@bFW@iO zoYuS*-IH~>B& zGPXlv>dR;$ZDjl7Wd}r++ujL-$i7flB1VOdaRs$hU~E6?syuouRn*U+6`d5rbNtY; z!n*&V?^$6zl6r%{Dz7k`lAnWEx-VK4uj~^n(C4C!n^ZdSXu=lDr_F>G(X8Lc%&s7{ zIJ#|G=4M8!4$8aOb9f|q)WBy`(x8xh(u_zQ$pa#nP7&(jvSfydq$(rM!xIf18mi3p z5-pI)4Cv33uT^NUwEag{FGn?5Yip!QqIkai9t6L!;ihL@-B7#rNxP-}MxH9u=70ehju2i7JJtVRc=U55d zj`Zd3V~eDGSGv>u9lG5|3jRPnkm=eCk#3 zHp3$JV%5Y?gN0(bJ?H&Mq#{$>-dcFg%JO4#s>lBY9105c+eR7T`1Wv-gp)k1!>6qd zOEywX{a)C7Y}EVlV@0h8+0BP-ov~`ahqjoxRDblX^s>J=B^Wj&Y!U|%C#!<@7c;C$ zyFcg=zmU@fx;FT4;|Zh`9k(h^C8f^38-j6A?8{N`PpUV|7ADpB`Y>O#vaTJbZ0x|~ zIz8R};rq@=l{FoW7FrHM#e5vTBTpM`@$0&QLCxYsRi1IMPXR&qX1QPEv7MonDL#L) zhrX?=twL+RZY)vCcVkDw_joTw1e~cw=KR8Fw+NwZm=J?7+V|noPIf|oWz%C(ARxoj z?cbq-C1KNv6CUt9t`EiRxBvB5543+`OmY;dg`BxA8#@V!KwKs#t-1BU);4c;?*TUu zJGr`;S0sG{QPlmcdoXA9P-E`E@o44)04eR9FrXMo6Po_Klqfj!~8sid24M zHZG*tP=yM&8qb3|k>w_#_2h|K_mSr+b?7+5O8e(7-E3Hk3dIymnW+LTd%^}G2#b9) z#VdRmTxmPb*Wt>?&u_NcfEg(-OqZU;6WTbb`_{Kywc?l~7==nJB;3QJ5eV_<--&Eb zTx5rym#4W9pV8c$P&^e>#a%M-%>{gqRAU$&oT>w`b_ToIYms#4Q{8TLnS`;OF&%gw zPi6FCZB0!+w42@S)R~ZdJkoyTu;r3ga!wq=YYUovNzXKU#TU`m)L&O(x;3KTdEn+< zvyvk<;|6Z9Vg0KHd>tw!XrI=hXljN}YknodxzGjU zh0ewXdC`388zYJ)oHW+GH-e1NtBk7Z-YYy`CC`F2Gnxt3&2hrP26B<32;GC>8&^=n zr~=KwxqlDS`UXo9gkGZ z1dPCfdp_{+3vO&~Y*x4p?>(&S8ovu`S{_G^6)9;QKx@yTd~ga zc%@%aD#|hwy<>aFO!lHh+@&|L*Q*S?$M)e|DBt<>D*Jk7{rb6Ik%178`d^>Sn)V+f1hWo(Fx=O>Wp;H&KH%UR2_s@Wl z=#Y?*=1;57+uFO@bPg|U(trGM%Aj`Z!@!qyCcDb>cH?}?R~%}_qV;^XS-jg832n8@ z6EfLvZa^q0cY4P!(tfro!G?J$vI;3gCrJ#?80$3_f?#>8T_h!0d;I_LRPd(d_G~-g2=ibXp2b(3ZGiD>Ue*n(m~3$EZ-Qi6gmoclD#pM zmifkm6#)eAMXCzhYx(;xU@&$WIn72Alg#JTN~R_y-(#we6!-pW6Te=w6}nl3qtTwH z08{F#QYQ$f8gRj|5ePKW*<~YSz+L9nj~{Zj6SbI~rB9+8n0+zBq9VS%;2~o|MF%uCFA8dP4JmY&PHcXGIYo@P zf8?w%N#b+NtdZ+`kNjCd(B6mb+ze4EwJ|q<2}3oy&wq`itmJ0@gSiPnxR zAF%sj7t%j<>Z63yVF3Vx==ccpg3~b`*;{m|U>=N$fzuEFgpJL@?5zcW9Vd(X`b)PP zZ$N*~5Yl!`?hKUL=NgvVr1re_Llj;JQ53UxaDQGL&h-Y#T7ULwj2EUlcn9W*<+=Mg ze|IM=@)e}(76p7kiHA*AiH5J|00mGvAwqV`EY@ z4CBo|`7v}a4Q=trlP1cViuzNz1%)gc!g8m^4i~-hK^w3)^?Mq5mBn2*=puVQM7#J% z-&5v#J3s*@en;#49FNaB8Zwx<<+FlqHTec!37%3{Q8{;{r0knwnoV#ek6{7Au3c@f zcmDZX)luAB1Pp_q$0Rfhx=b8k26LJ8FvfBb->!IqPN3H&ft6R+aC2U+)= znVZYMG{YA)Dp&XJ=83=mFxJr{ymfP)^0k%lb1+g7q?QtC!R|@Ph5cthvEh}a* z9(*dhaISXS;pLUj&bPm>sBvx|mNY@K%b`ry-UlA&Sw*QUkM2xSp5GY!k0uKgE>YyI z6fi&?(NWpjjnyS{B}F7>RA;n;L;qY62BeQ$vc1m!dH>68?WgOWQ3wRe|DY=uhAvjb z;q6ZUt$Qhg6jfS9$hbLc*m87PGDkHLxx&r>Pq~)Cw&~7*hd(h~m}`|*x;L5&`OGLn z+qZtVReoal_a@I1;ZM}jfT;Cpc2BMXIx1}aig1~rBp#Q?FEeCKsY)2haI$dBQVeTm zkMV+&@}Fe8f*s^cypK}DyjB;1){XFro+)rPNk04v&oLs(SIi zsC&z}Dzqkibeo6>Sb&l$h|+>|swjgN=r=p@#f`oMEreV_|l9Cde4(aaR)Sdml z?>WcwzrTAw+;5jJha)@JS~K&^Gc(WXWMMT1AEPOu_IVMG*1&+%MWf#;^Sjy1+3n_k z7&jtK>$8PSC@dLd+aapt6`FwC2_45{$$wNCw8tz9MYk->q$Ki*m5N_N|n&r%l9N(b;_4K304FQni-4^ z#8@mg%Y?*n(>Y(tatL5JP%hc4zliNS1|}C465v($xeKo zdIm$GWiR#AG&PgPRkU9<4;4Jr2Ir#3^^s*=Dq_^t=)Ja^{io+T--$Mxeg1{MJcT*T zv}Md;s=Mtc*M^|0K^E<>bt$9-x5Rm!4l|Vxt5iJ9{0d41`4~EAJLGunERsAQSwy3* zn=Zm?Wc9`Bq*RYM!xL~hloxm*r>QzQlu1sF)){FYN%U7Q#^XS9*-DXRX}N#D9~K&s z6?S3~m|c>cs9tD(i%^Cu8jxd)$57(8<(XSyaw^3+MF)%l4%%wz@diU_k^v1HglqD~ z5}^rw4aNgGE>hEnXDWIsWfUS8&v>~>%^P@sMM3^+Jak)18F^iEOyzNXbDaK@+9Py= z^cjkNo5A2!^~PsmyTUn~b)h>;sOIVGYQHR}ueDQ{pkNdGC0R7G{a%MfbR&knITES7@vH=1W zT6b!{JhC9GQ!!-hoMiE5wnKK{`TZNP$hzAJaF|MIFk$XCG+~dt%&4|X_9D~I`IjUa zGyu7<=o7OFh&fgzcewqN0deK=A)Aw98Qp^>4QNf55D0r|v&_L|7Z{M^P1hmxOQU#r zL~^ydNTm0KY0PHDG^OhBL0OOeCGt**5sV_UXM-FBQIz8-GgC}4vd7vZvPXJUaD{U} zYv}#J6w{u&H!+;bAltq(M?_OeOvEN%tGptI&g$B&P|}^;LFOsFgWStJwo4^Ppja{d zCQlFz5}i@M>0q?(dSFlke%wK7o`J9^Yjl_Yzgf>%- zY$SnR2AQnQ+Z>vrTYvU_p>=^K=s~Fr)Nln#d$BvdFi{u{^b&9G$f+{Bpizw1EkH;B zjv|##2oPuLqymIfO-)VPZTx7nLA5kUE~TrgtNAONNxrec;W}FGH4ibV@G4xq9{>CD z7+Z^9bt!TrBourPqt#1BZe>UaHyDYxdJJ{Z%JEoaLnz2mp=t0a2oUo2Z-rWPnz(Gp zXmMKZ1rKQtJ;nD6JkA4IJLVQLoDvU{*Jhd3EHe za6_S7ZPR!8#lig7*WH*}&c~YBcA9`esqra>l$q4~9Hz1qCA`+k%G@M$ z+D^>9dvkcxGFvsf_g^tRu|?xYOK5`bVD%VU!TmS}n-jzKOV4U*nWzT0K5K>;37`!< zIE_O?lv&nWBViS5PIr(MF$cWOZH=`GQE_^YG{)}^FdRD`3p^hh-FETzV z%5@*dkuK>?Y}?Lzk}eIFEZNqbYa-6@$r|W22h>Wj&Pl%gB`^Zg;Mmi(k2bP=74K6E zh*~u=Vsr2?mFWdfo4ZlZL+;XP&Cl~}tXru(`Vz3{8jPj%J^?6SX&3?@4>KJXZ2?^;C3Se>rtM(frdzLrMIqlY5|KapKeImQhw!oX*YY3``W=u9XowUfsUJggM$Z#=G3q)}{nase#!V#pb9ALSujFNUr(qlPZw5 zI9^b>XqXVe(H-BfDlR`%WQJU>JnqlcE|!XT zowR$5(tycX^p3k_)wAjoP=GV;mC`D+wX!xbPVK^cgd%bga z%rz%#sED4QQEHjlWOj)*K2%IxypvFfB=gv2dCz28Io1EGhT_4mMh>zLmA~E)p?QDg zfZfjinx}fp{3+F{sw$A2qhHrlef@1hrd~3L*M9DGF?ohg-YynL}XO!AG37{l5d(N3lo4WPes=ZT6o zYx_*u;h}5&(&x^Vk@Aq>C`LG&(5RPg5|#~877Xi^?J)vK&~=myg7jKp*L;LV{9tFb zyVpzuI*S=~gmmmo$K;}U?Sp-MB*T|wBxU+SnKW$g?|kX%>befCWetITcKg#>)04{z zGuzO!gRxm8juy00hmO~H{3mEQ#h)(_=2&~c0J)j(=<8rVW8&oV_@w<=9Uy8s!n~RS z5~*g#HU&FW+;Od~Qc#LRsszMv_DOWXurPMu7bZI+H@HlPu`^xhEREtP47G~({9^L? zcd-(Qz3Y>W*n%Bqdl3m=$#^hHJbYCnd>y6@l|!L(I};@MU<^{ykCa0`R=bku#*Npz z5!hzb;ZmC*8km{2Tkb;DS;JRWke3gl*(|Y3*~cRh3o5gp&*03`2wNnD;3)uIZi_o+ zFp~{}48YVv?(+Z-}>skRicCb39v(KY@s%m%F zhq-s`mO$zL`!Q5Xzilvd>3|za$zSbomx0#bT#eY`;^LW;Eg#BoL21w?;|ST@+Ul9? zrtHotmSP|2z=LVIIq68#L61d>VsZNZw;R!1W6bN6lJeo}Utmw6gXO73#kP(?eOy9z z^@_8!%ia|hsvHA7kzzG=9~X2x}bwinT7OqrFWT&RO${8V~br4x{pLl-l-B9bp#N=L3*tk(`{f{uDy5NM#mPa=Lv{m$tv21#V{%=X=s1Foy3B65rer#rS$EsKw3AS5h{ileL?|VZ^8z2?qtnHhi~mpt;Aus&RXV%%Zt1 zYbqPtWx-S|U3f5g%(6L4moJw@=`=TfwZmg)pIqQ*>7mHr(2zzvKIxpJW|Xy!O$cnD zXo^tALtMkH9G7FGGEO=kHHTrlROv4YayB#Vouid5TR%l(`;X+b>C3C>?@&_<*NXVv zU)O|Xh;iS!36?x!znCOZE&43P&I4x1oL^uPG4o-u%f0Ju4r8y!j@=?Q*Hby)JXE3p zfn3U-x}ke?w{O?XxLvz?m3=>^e5uG}E$(rb@8&#yCz)OSx4aZKZ+!#5-_XU&p`SE@ zVGf>VP`;7lO+YE14c$}o=euWBdsN0;vp(RH88-{9qIkkU3om_lEcI?n=wO!1_8`Zg z^W@mpxC>Pp_>SZvgVqq0`vXCy#T0Meyiwn6z_U!OqV z-8d~b&=FrU$j^clRsuWY`PXhh9{I>lTuMTIq|A=Pdhf!B-RukexxO)Ohn*!gX&2YB zz$#1za=S4Dg)vzqSRTBRm>TQa%v}s`1P%Ps>8mKWMuMZo7>|YGeLR%;G-=z>mQ6RO zW^C(z&z6@5s1wK-%~b2KcLm6}NDXnCb!NO|K)sxNC0%vo`uls!iPJN00tz;*ljckn z-`_~*ni^+=UK5M~T0KjnRODf-3s#^dD9JA}VSD`^l}cGPy-9QR3VK4vqi-+-xebeP zpPs&%dlwY`=9@aHMKEoBCrCSnzPW)^!*2_!Wv}ykvosS8k5`S9o~iBb{*03G`+gQC zJ&(q&$rx{Mgs4|LN587x_RqW955Zu26lXOuJ8Qua+=H|I%%;c}Z)muWao?cJQmv3e zhGzA&uvEQpu%i?=CLd7sI)9113;HVy=oD;y3P3n#d#NAJ=0rols4jQ>^T&_( z`#3&{iA9CMPffohal!@mIjKg-D9oOTS8K%xO63Ypg_7tB|z}-BgEtszs26g zf&jtJmu4(q6?4(Qj|fL~CX8*L-PH)%-YabMUEe=m+U-eN-(MbjRlS=HvTf)7lk>;8{K@}` z+6Y8}dim*4nj=n+_&a3J2B$1WiqM4#KYdSJ)Zusq(dfX)wctEwmUg)agEDa@Wx+~- z5WC|q-SX9k>oXc#bF~3C=0*HSe>NI^XgD!@OGC%RB#lErDI34NBXm*}iK(Ro%1en(jy_oEQGzQvp>^NZRgfDxw_ zCle1SogW2l&CkXfZBRH2j>KdY9%uM2=9Fs_3axz!^f$epKGT-K?%FB_>@YSE;<;_=?)mcHPKVVGgb(nNKMb-1palfL1R6=*(~^a+4j-#fDG0v8Jv|8jW-l^pt# zjxmyX?0I`D97>EUShf?fzOi0ZO&TEp;Q+nK(ynN4ADSY-FMWjB$+Dz)j|I1Ipzn%L zem3J#i2(Ut4Z_h~&p`8@v_P2d@nsssq7~@EO;c#}7YV<1@A>PUgH=*!!VHi9)vH%+*#xz9JP!O)M)~T^`Dn-7Q&(bK-M165yD`!xT`XNytGI$b zsh}_BwWA?wUH`adiBHMe!(9zS_n;bda~|s^ninQBT1%T<33hsBoYW}jH{B+ito}je zh+HKTmG78U6N`R)+J)}&0QJy;W(IIp!Ro$kOHa5e;*l)bzanZ|+CjHqa@xoAffOIsq zs4sg_5B(*^yj1KS2NjX{e*WAAqatQWVT`D1im1d8dk>SoEDnqy4Ncwk7jkJ1Iio;4 zqmtetyqEbpEKVt-*9-L~&rjNkiG6JFr!=r}1H30uE`Yxz^nEWAA|6(_W>QmMJ}8t} zjmTs#S1-BuWe03i&x{b4Nn?9-#7>>9T2`+FnpzyJJ4`Wm`qeXKjq>>qWM&(@whwUj zY3|;Q7&EE2hQlU7KR0I5D3hB`4Z0r1#JJ6v2_y@2*&7y9T+2pfB?=!9q-<55?1f!% zRRT{X0aA}5WqX|NN)$fNl!^jc64_#f#f=XtG6_QVtE{F<{zwJ-Gf)h=b_@MKS9k!y zfdul6c|ei%(cJMiv+Z;sw;oiOA?B%|Y_FWYI<3+N^jAxFcQCW&d`6l-1#c6C!<#p6 z^1AF~nwOd-(2lXH0dP`z?IkPDW;UeK<6mu0n&XX6k-=MkS|I7|cOQ-x6*@@G^h>^Y%~2PB|N zJcI^xVvTiAP6cHM#(?0dSp_AJ>(gWmHB2Q!e=VA2(>;(TOBE#{e4a3n<{8O=`vbu4 zTIIG`mPbKgf4UU}1Q($uDw(|S6H>cfkf;Y&xP} zLHW?S5OAFK5jMs~Y-5l?NqY+Gyw+Q337@kFl$tt<-`QW+;AkEl#=l4)pPzi|QOX`S zazT|*F+`9#0FL?H^ySTbUZ~VI$W8v8EJ1rmzB-ww66KJ?(k~KdSA`Umj+%P%ZM6ri zTjk+IHOKUEx`@k4WsdGpfqfXN`%8@%hi#Lr-AeyY+Wxy$O~%T%w-*N70zQ8HX#Cn~ z8l9sv7W`aV+RjWV&Hbrdlv)F>ddYSuh`*=7UDa>?52V$smyc zQmuLCW(MY!!)B53@p1bWj@P;?2T4g!%TK9Jcjl7YF}~~y{U~fsTE1GH3c16L zeb#b)EI74*`6dvPNWg|z4u4bAsE#HvE^QYlv~P%7b8V_>uF~`8{$JItM+a0PDQ z?Nwg#zkCrxcyWEZKuayH0<*J{SZ23KfA{V)2$Z0$6UpnakU2)o#MXR?Oucj&=We=O zqKNZGUL%8>Tl`oUW2oZgwH~Bs2YsJPXip*gBua3pVx&fk@e`l&~)tX!p@MnilywAz}<$(6ExDI!v67KH)Jf8 z+YOPm)G;n0hZZ&=Lmzb8~(*05Mmk4e3Acz9?FVz95ez0`%pR^1k?p z-7RlQM={Az#$Go~xpw#u;RQgTR2S49FH<#T`Pxm7RTQ{Xfg~=wd$?b7!Z-%YWdKf7G zap8MJv2GQJmiXHAX+PAqi#pu5=r5`1A2b7mL^351$z@?~T6@D~FL%Vcepb%WQPqwU z`4s$PkPQYlF~w=#)c?kxK;=NQg<1Z9oX@`1apXAPo>QnJ1f+%!k_kNR0^sDHv&1+a}kLDxGAvr9QHJYENXJ!(Bdf#g1juvl* zTbO^!LAJSJdlVh(N!b1-d@bi)d*?^rXza=lttYo9k|p81H<%A3O}&V$$nb{*nU^%j zg*1C^wsUz(udX+Phi7LU(-c=6Hy+xKSviOBpNx2X}7HMHgp^I%f5#pXlC z60_6ODw2HABIvG@uUgHbmT6Ia(yp4GF}FW;N9Y62`Is?#%eA-~ka-TFi575Cwh@dq zuvw1kn7z-%1!}cKM9EDeezx)aFdG4iM6A;W`{o7t2Zsd4@gyB)A5vDpdHi)KjtGOCWaBQy*$tbI#TtQp`;}$4) zd`!1{v*s+xk5RV++wQtZ$n+Rsb|dwh7At1%>t@YGv!Nn%(>S$hHXh!?9A4WKuU(U= zkAXm*cGp#_$jJJF(Bmuq?LyiSr*ayY;Mpd1K@*j&W602jMheNPsU}Aa_#(P3mAf+N z2qGlW6-wsxg~@dHBTU(D>`B++iJNfH*7!XtqmwsBq@1STUZ9M(BRJIaO^r%d4f}uT zId4W6OF2#EP_mGagk9YFJej3k3DSRRK}mYT-rBjl+d%X^JlQQ=Iqnmp5r+{JKkS$b zvcd0bjzvxXVWwE_1XwnQ`4SOHrrR?mJ4WS{fN0j)=ER~lNy7|doj>r3gu|!vy4!vD z9_6DK+|{e~Dve$O`X0#$*;yI7CytHHASwoOZR5Y}Z5R6Gayp!)31wWKLTZiK4~yO2 z1cfivon#ViMaUARoVZ3Tzxq?~rR)kFJ_=&DsBvx6crZ3I=)K}03q(#=ycvrR@Gc2l zX7XDp(wwuPLd(85meT~Z#*F5RL@|6S-qs7I{Uvnj*pMr|*o!8;#0Kd~C8n8C0MpM7 z&~4#`YlXJkBuAt*kd)4Dy(TH&&x-n{mfssoj`mpY$)9eyD~{~V?9Jdn`fbX!Mf~jR zli@oVRGX=^UHbKyNu#jm_{@P{#p5$LA&DdzeJpqvi(;1sD!tX&Evz1oxnQT3cjj+8 z8#iO5eg*_R641gGuLGo$cL7bLB^mJm;fwa&pW| z_gB@|HeLO0a1PtHUzx;SC}mN-9!lxHb{h@BE4m!=A&h=I2`Rg!Zs|%b8m%Nv%Ej5G z#cQYBO)D)?nt-7Yav#2+f77GQF|}~KSA%vTjLN+ita32(d|!eSUYp~>O}Cx()C`^K zDuqE6#g`5GN|=5%tRrZt$i$@|3j4kV!wQet4pE*&IgOwXm#UwK|x%Fy3wDl3xJR! zd`wV%N-rtl2Bj<{*d9=EbPmz$sS_dJzTF3K&SBawD>yp6>XQLV!99?4L*&G&KVP|W zb)Q!|1cN(#>HaY z1RGV|=rIBK7tJoKHxQv202=|JCl9kPrw`9W@vgSWkLJyN6ttg-VhHeY)9$4SS^lHb z$1_V(5P|2f$AZ8k(FQi_gD-i?WMhD25NEbV4yfLy7R`^HIH>`PZ9H6(2fXI()S~2~ zgn&PAk|jZLz7L{A6@-K5y&%tjo0EOxVefp6N)Y?#c%zqn+<`W|A|_<^Uo22-#ml<-PeOaggpH}E_zeE z`ma73NFBug-Gzd9bQiwtzh3tLUoT=Fc{04R^e>Sc#P?^P{?(p=K*R+NFQD=4?aBW2 zO@Aj$1;y&2c+0O?QmR;x82%wd36CpzopP% z`k8MJ4gCuuXKdl7j=@|#FYuqq;SUXY%Xv`E$^5gjmE=4YqJE^wPMb6HziYfC#KdG> zT`TnU_1PU(G;vVGAy$BS_u8{dcx+~F9KG}Du0P(ru~{_nt(b(W0frl}KeD{1b9Jqu zZZJuue6ru+5gM*DG$eNoD{&L1Wv})=o5%9Er$3cYHa1fS9i9kvd#i=6WS_x8BWloJ z#lOjx)U~ZRV-slHu9}0pe1G1%rLOKNg@Ci-VsBQr$MGf=%5

rVKm|$O%<$G&2x6 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 literal 0 HcmV?d00001 diff --git a/docs/screenshots.md b/docs/screenshots.md index f1d5a3e..745ce34 100644 --- a/docs/screenshots.md +++ b/docs/screenshots.md @@ -1,10 +1,11 @@ # Threadline prototype screenshots These screenshots were captured from the Android prototype on an API 35 emulator -at the default font scale. The onboarding capture was refreshed on 2026-09-06; -the remaining captures are from 2026-08-01. They use the repository's local OpenSSH -fixture, its documented emulator address, and synthetic test output. No production -host, credential, command, or server fingerprint is shown. +at the default font scale. The compact landscape capture was added on 2026-09-08, +the onboarding capture was refreshed on 2026-09-06, and the remaining captures +are from 2026-08-01. They use the repository's local OpenSSH fixture, its documented +emulator address, and synthetic test output. No production host, credential, +command, or server fingerprint is shown. The screenshots document working behavior. Typography, spacing, color, and responsive layout remain prototype UI rather than a final visual design. @@ -26,6 +27,15 @@ code, output, and follow-up actions together. The terminal view remains attached to the same PTY for interactive work and exposes mobile modifier and navigation keys. +## Compact landscape terminal + +[![The raw terminal retaining readable rows above Gboard with a compact connected header](images/compact-terminal-landscape.png)](images/compact-terminal-landscape.png) + +On API 35, opening Gboard in landscape collapses the connected header while +keeping the session identity, state, Transcript, and More reachable. The +terminal-key row stays available through More and is hidden by default in this +constrained state. Gesture and three-button navigation were checked separately. + ## Local transcript history [![The saved-transcript dialog showing one synthetic local fixture session](images/prototype-history.png)](images/prototype-history.png)