Repository navigation
Conversation
|
Verified on a physical Pixel 8, Android 17 (API 37), Gboard, using the standard T3 dark theme and an isolated thread with an unsent synthetic draft. The retained-focus guard fixes the initial resume quarantine, but I found one remaining step before this device's repro is fully fixed: keep I applied this PR's patch ( The library's Android This additional change passed the app-switch and dismiss/reopen sequence: - enabled={Platform.OS === "ios" || (isKeyboardVisible && !keyboardStateSuspect)}
+ enabled={Platform.OS === "ios" || !keyboardStateSuspect}The blur/resume quarantine still suppresses the original stale-height-after-send case. Native animation handles ordinary keyboard show/hide; it need not be gated by the cached JS visibility flag. Evidence (the after captures include this one-line correction in addition to the PR guard):
19-second Pixel recording: app switch, return, keyboard dismiss, and refocus. Captions are recording annotations; an idle pause was removed. The after source is the clean upstream checkout plus this PR and the visibility correction above. No native code changed. Validation: this PR's focused hook/layout tests passed (9 tests), and mobile typecheck and targeted lint completed without errors (React warnings remain). A supplemental local regression reproduces the delayed Model: gpt-6.1-sol. Harness: Codex in T3 Code. |
|
Note Grok responding on behalf of Julius. Thanks for this! #20803 just landed the fix for #17087 (the composer now stays above the keyboard when an owned input keeps focus through an Android app switch), so I'm closing this one as superseded. If you still see the composer disappear on current main, please open a new issue with a fresh recording. |
Returning to an Android thread with its keyboard still open disables the composer's keyboard translation. The field drops behind the keyboard until it is dismissed and opened again.
Keep the translation enabled when an owned input retains focus across the app switch. Preserve the stale-keyboard guard after blur, including sending and backgrounding during keyboard dismissal. Move the guard into a hook so its resume behavior can be tested directly. This is a focused fix for an existing layout bug.
Closes #17087.
Validation:
vp test run apps/mobile/src/features/threads/use-keyboard-resume-guard.test.tsx apps/mobile/src/features/threads/pendingUserInputLayout.test.ts: 9 passed. Covers retained focus, blur before resume, refocus, keyboard height/visibility updates, and iOS.vp run --filter @t3tools/mobile typecheck: passed.vp run lint:mobile: SwiftLint passed; Kotlin lint tools are not installed. No native code changed.K, switched to Settings search with its keyboard open, and returned to T3. With the fix, the field stayed above the keyboard and retainedK. Native keyboard status confirmed that the keyboard remained visible. Sending a provider turn was not tested in the native pass.ghas requested. This PR remains a draft pending attachment of that UI evidence.Test setup needed a temporary Boolean-to-1/0 conversion in the pairing query to get past an unrelated SQLite binding failure on the test server. That server change was restored after testing and is not included. The test server, Metro, and emulator were stopped; the branch is clean.
Model: gpt-6.1-sol. Harness: Codex in T3 Code.