Skip to content

Fix chat composer overlapping nav bar, remove focus mode toggle#82

Merged
yuga-hashimoto merged 1 commit into
mainfrom
claude/mobile-menu-button-layout-1w4pjh
Jul 25, 2026
Merged

Fix chat composer overlapping nav bar, remove focus mode toggle#82
yuga-hashimoto merged 1 commit into
mainfrom
claude/mobile-menu-button-layout-1w4pjh

Conversation

@yuga-hashimoto

@yuga-hashimoto yuga-hashimoto commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Summary

  • The chat screen's bottom chip row (agent mode / auto-accept / context usage, in ChatComposer inside ChatHomeScreen.kt) only had imePadding(), no navigation-bar inset handling. On devices/OS states that draw content edge-to-edge, this let the row render partially behind the system navigation bar (matches the reported screenshots: the "build" mode chip and neighboring controls sitting right against/under the 3-button nav bar). Added navigationBarsPadding() alongside the existing imePadding().
  • Removed the "focus mode" fullscreen-toggle FAB (FocusModeOverlay, top-right corner button). Tapping it hid the chat title, drawer (hamburger) button, and new-chat ("+") button with no other way to bring them back — confusing, unrequested behavior. Deleted FocusModeOverlay.kt and its wiring (focusMode state, the AnimatedVisibility wrapper around the top app bar, and the FAB call) since nothing else referenced it.

Test plan

  • ./gradlew :app:compileDebugKotlin (could not run in this sandbox — no Android SDK available; changes only add a standard, stable androidx.compose.foundation.layout modifier and remove now-dead code/state)
  • Manually verify on a device with 3-button navigation that the mode/context chip row no longer overlaps the nav bar
  • Manually verify the top app bar (title, hamburger, +) no longer has a fullscreen-toggle button and is always visible

- The bottom mode/auto-accept/context chips row had no navigation-bar
  inset handling, so it could render partially behind the system
  navigation bar. Add navigationBarsPadding() alongside the existing
  imePadding().
- Remove the focus-mode fullscreen toggle FAB: tapping it hid the
  chat title, drawer button, and new-chat button with no way back
  other than tapping the same spot again, which was confusing and
  unwanted.
@yuga-hashimoto
yuga-hashimoto force-pushed the claude/mobile-menu-button-layout-1w4pjh branch from c5159c4 to 9e3d3f0 Compare July 25, 2026 05:26
@yuga-hashimoto yuga-hashimoto changed the title Fix chat composer overlapping the system navigation bar Fix chat composer overlapping nav bar, remove focus mode toggle Jul 25, 2026
@yuga-hashimoto
yuga-hashimoto marked this pull request as ready for review July 25, 2026 05:36
@yuga-hashimoto
yuga-hashimoto merged commit 36652f2 into main Jul 25, 2026
1 of 3 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

API 34 emulator screenshot failure

Diagnostic logs were uploaded as the emulator-ui-diagnostics-30145774732 workflow artifact.


> Task :app:stripDebugDebugSymbols
Unable to strip the following libraries, packaging them as they are: libandroid-shmem.so, libandroidx.graphics.path.so, libopencode_android_proot.so, libopencode_android_proot_loader.so, libopencode_android_proot_loader32.so, libtalloc.so, libtensorflowlite_jni.so.

> Task :app:processDebugAndroidTestManifest
> Task :app:generateDebugAndroidTestBuildConfig
> Task :app:generateDebugAndroidTestResValues
> Task :app:checkDebugAndroidTestAarMetadata
> Task :app:mapDebugAndroidTestSourceSetPaths
> Task :app:generateDebugAndroidTestResources
> Task :app:javaPreCompileDebugAndroidTest
> Task :app:mergeDebugAndroidTestShaders
> Task :app:compileDebugAndroidTestShaders NO-SOURCE
> Task :app:generateDebugAndroidTestAssets UP-TO-DATE
> Task :app:mergeDebugAndroidTestResources
> Task :app:mergeDebugAndroidTestAssets
> Task :app:compressDebugAndroidTestAssets
> Task :app:desugarDebugAndroidTestFileDependencies
> Task :app:processDebugAndroidTestResources
> Task :app:checkDebugAndroidTestDuplicateClasses
> Task :app:mergeDebugAndroidTestJniLibFolders
> Task :app:kspDebugKotlin
> Task :app:mergeExtDexDebugAndroidTest
> Task :app:mergeLibDexDebugAndroidTest
> Task :app:mergeDebugAndroidTestNativeLibs NO-SOURCE
> Task :app:stripDebugAndroidTestDebugSymbols NO-SOURCE
> Task :app:validateSigningDebugAndroidTest
> Task :app:writeDebugAndroidTestSigningConfigVersions
> Task :app:mergeExtDexDebug
> Task :app:compileDebugKotlin
w: file:///home/runner/work/opencode-android/opencode-android/app/src/main/java/com/opencode/android/feature/chat/LiveTranscriptOverlay.kt:107:44 'val Icons.Filled.Send: ImageVector' is deprecated. Use the AutoMirrored version at Icons.AutoMirrored.Filled.Send.
w: file:///home/runner/work/opencode-android/opencode-android/app/src/main/java/com/opencode/android/feature/chat/OpenCodeChatScreen.kt:678:5 'fun ClickableText(text: AnnotatedString, modifier: Modifier = ..., style: TextStyle = ..., softWrap: Boolean = ..., overflow: TextOverflow = ..., maxLines: Int = ..., onTextLayout: (TextLayoutResult) -> Unit = ..., onClick: (Int) -> Unit): Unit' is deprecated. Use Text or BasicText and pass an AnnotatedString that contains a LinkAnnotation.
w: file:///home/runner/work/opencode-android/opencode-android/app/src/main/java/com/opencode/android/feature/search/CommandPalette.kt:103:46 'val Icons.Filled.Chat: ImageVector' is deprecated. Use the AutoMirrored version at Icons.AutoMirrored.Filled.Chat.
w: file:///home/runner/work/opencode-android/opencode-android/app/src/main/java/com/opencode/android/feature/settings/SettingsScreen.kt:132:34 'fun Modifier.menuAnchor(): Modifier' is deprecated. Use overload that takes MenuAnchorType and enabled parameters.
w: file:///home/runner/work/opencode-android/opencode-android/app/src/main/java/com/opencode/android/feature/settings/SettingsScreenV2.kt:191:42 'val Icons.Filled.Chat: ImageVector' is deprecated. Use the AutoMirrored version at Icons.AutoMirrored.Filled.Chat.
w: file:///home/runner/work/opencode-android/opencode-android/app/src/main/java/com/opencode/android/feature/settings/SettingsScreenV2.kt:207:42 'val Icons.Filled.Chat: ImageVector' is deprecated. Use the AutoMirrored version at Icons.AutoMirrored.Filled.Chat.
w: file:///home/runner/work/opencode-android/opencode-android/app/src/main/java/com/opencode/android/feature/settings/SettingsScreenV2.kt:214:42 'val Icons.Filled.Chat: ImageVector' is deprecated. Use the AutoMirrored version at Icons.AutoMirrored.Filled.Chat.
w: file:///home/runner/work/opencode-android/opencode-android/app/src/main/java/com/opencode/android/ui/components/FileTypeIcon.kt:82:52 'val Icons.Filled.InsertDriveFile: ImageVector' is deprecated. Use the AutoMirrored version at Icons.AutoMirrored.Filled.InsertDriveFile.
w: file:///home/runner/work/opencode-android/opencode-android/app/src/main/java/com/opencode/android/ui/theme/Theme.kt:145:20 'var statusBarColor: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/opencode-android/opencode-android/app/src/main/java/com/opencode/android/ui/theme/Theme.kt:146:20 'var navigationBarColor: Int' is deprecated. Deprecated in Java.

> Task :app:compileDebugJavaWithJavac
> Task :app:dexBuilderDebug
> Task :app:mergeDebugGlobalSynthetics
> Task :app:processDebugJavaRes
> Task :app:bundleDebugClassesToCompileJar
> Task :app:mergeProjectDexDebug
> Task :app:mergeDebugJavaResource
> Task :app:kspDebugAndroidTestKotlin
> Task :app:packageDebug
> Task :app:createDebugApkListingFileRedirect
> Task :app:assembleDebug

> Task :app:compileDebugAndroidTestKotlin FAILED
e: file:///home/runner/work/opencode-android/opencode-android/app/src/androidTest/java/com/opencode/android/ui/UiScreenshotInstrumentedTest.kt:139:29 No value passed for parameter 'workspaces'.
e: file:///home/runner/work/opencode-android/opencode-android/app/src/androidTest/java/com/opencode/android/ui/UiScreenshotInstrumentedTest.kt:139:29 No value passed for parameter 'selectedWorkspacePath'.
e: file:///home/runner/work/opencode-android/opencode-android/app/src/androidTest/java/com/opencode/android/ui/UiScreenshotInstrumentedTest.kt:139:29 No value passed for parameter 'onSelectProject'.
e: file:///home/runner/work/opencode-android/opencode-android/app/src/androidTest/java/com/opencode/android/ui/UiScreenshotInstrumentedTest.kt:276:17 No value passed for parameter 'wakeWordEnabled'.
e: file:///home/runner/work/opencode-android/opencode-android/app/src/androidTest/java/com/opencode/android/ui/UiScreenshotInstrumentedTest.kt:276:17 No value passed for parameter 'onWakeWordChange'.
gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-results/emulator-1784957340724.json

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugAndroidTestKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
   > Compilation error. See log for more details

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 14m 12s
63 actionable tasks: 63 executed
OK: killing emulator, bye bye

OK

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants