fix(mobile): keep chat composer above the Android gesture bar - #5988
Conversation
The thread composer zeroed its bottom safe-area padding whenever the editor was focused, assuming the keyboard covers that area. On Android the back gesture closes the keyboard without blurring the editor, so the toolbar row (+, model picker, send) landed under the gesture bar. Key the padding on keyboard visibility instead of focus, matching the convention already used by NewTaskDraftScreen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Approved becc7d0 Straightforward Android bug fix that changes the condition for bottom safe area padding from focus state to keyboard visibility state. The change is small, well-commented, uses an existing library hook, and has no broader runtime implications beyond fixing the toolbar positioning edge case. You can customize Macroscope's approvability policy. Learn more. |
## What's Changed * fix(mobile): keep chat composer above the Android gesture bar by @PollyGlot in pingdotgg/t3code#5988 * fix(server): OpenCode model parsing drops models with a slash in the JSON body by @arhxam in pingdotgg/t3code#5072 * fix(web): persist sidebar shelf collapse state by @PixPMusic in pingdotgg/t3code#5136 * perf(web): skip base64 for oversized image candidates by @tarik02 in pingdotgg/t3code#5220 * fix(server): skip Linux libc detection on Windows/macOS by @bkntr in pingdotgg/t3code#5354 * fix(server): advertise 256-color TERM on Windows terminals by @yassiEmp in pingdotgg/t3code#5693 * fix(server): handle unborn HEAD in VCS status by @t3-code[bot] in pingdotgg/t3code#5944 ## New Contributors * @bkntr made their first contribution in pingdotgg/t3code#5354 * @yassiEmp made their first contribution in pingdotgg/t3code#5693 **Full Changelog**: pingdotgg/t3code@v0.0.34-nightly.20260811.1063...v0.0.34-nightly.20260811.1064 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.34-nightly.20260811.1064
What Changed
Key the chat composer's bottom safe-area padding on keyboard visibility (
useKeyboardState) instead of editor focus. This matches the convention already used byNewTaskDraftScreen.Why
ThreadDetailScreenzeroedcomposerBottomInsetwhenever the composer was expanded, assuming an expanded (focused) composer always has the keyboard under it. On Android the back gesture closes the keyboard without blurring the editor, so the composer stayed expanded with zero bottom padding and the toolbar row (+, model picker, send) landed under the gesture navigation bar.UI Changes
Tested on a Pixel emulator (API 35, gesture navigation), dev client + Metro, paired to a local backend.
Screenshots
After: keyboard open (composer still rides the keyboard, no gap)
After: collapsed composer (unchanged)
Checklist
🤖 Generated with Claude Code
Note
Low Risk
Single-screen layout tweak with no auth, data, or API changes; behavior is limited to composer padding on mobile.
Overview
Thread detail chat composer bottom safe-area padding now follows keyboard visibility (
useKeyboardState) instead of whether the composer is expanded.On Android, dismissing the keyboard with the back gesture can leave the editor focused while the keyboard is hidden; tying inset to expansion zeroed bottom padding and pushed the toolbar under the gesture navigation bar. When the keyboard is open, inset stays at zero so the composer still sits flush on the keyboard; when it is closed, normal bottom inset is restored—matching
NewTaskDraftScreen.Reviewed by Cursor Bugbot for commit becc7d0. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Fix chat composer position above Android gesture bar in ThreadDetailScreen
The
composerBottomInsetinThreadDetailScreen.tsxwas previously set to 0 when the composer was expanded, which caused it to overlap the Android gesture bar. It now uses keyboard visibility instead:0when the keyboard is visible,Math.max(insets.bottom, 12)otherwise.Macroscope summarized becc7d0.