Repository navigation
Conversation
|
Thanks for this PR, johoja12, and for the careful write-up and the RCA on your fork. It makes an explicit session selection on a touch device focus the terminal, and so open the on-screen keyboard, even when the keyboard is closed; today a tab switch on touch focuses the terminal only when the keyboard is already up. Open question. Today's behaviour is deliberate: What a version going ahead would need. From reading the change against its call sites and running it:
Two things that are good as they stand: Nothing needs to change on your side until the open question is answered; the list above is what a version going ahead would need. |
|
Converted this PR to draft after the reporter confirmed the phone keyboard still fails and may feel worse. Expanded full-page testing found gaps the original shell-only focus tests missed: a webview-return focus is attempted while terminal-wrap is display:none; a lingering touch-selection focus guard rejects focus; and the late post-load refocus can steal focus from a control selected during a slow load. Candidate lifecycle changes and broader matrix tests are isolated in the fork investigation. Chromium focus is not proof that the native iOS keyboard opens. Please hold review/merge while that investigation is completed. |
Explicit session selection can leave the mobile keyboard closed. Native dismissal can also leave xterm's textarea focused after the keyboard disappears, so the next tap focuses an already-focused element and does not reopen input. A delayed closing viewport event can then blur a newer tab's input. Opening another control happens to clear the stale editing focus, which explains the reported menu workaround.
This updates the original tab-focus fix with the final keyboard lifecycle recovery from the fork:
window.focus()workaround.Only shared upstream keyboard code is included. The fork's tab sheet, header utility menu, case-group UI, OpenCode click fallback and unrelated backend changes are excluded.
Validation on this upstream branch:
The broader mobile keyboard suite finished with 48 passing and five failing tests. All five failures were reproduced against the previous PR head
15e27275in a separate baseline worktree: toolbar transform, CJK local-echo text, readback collapse focus, inert transcript classification, and subagent status classification. These remain failing checks; they are not reported as passing keyboard gates.The isolated Codex/shell smoke completed with 103 passing checks and three failing screenshot attachment-history assertions (the same category recorded in the original PR). Terminal replay, switching, scrollback retention and browser page/console checks passed. The runner was calibrated to upstream's 50,000-line default rather than the fork's 100,000-line default. The full Claude-enabled run stopped at preflight because the local OAuth session expired; the completed run explicitly skipped Claude. No remote-host smoke was configured. All temporary smoke sessions were removed and both temporary instances stopped.
Chromium touch emulation verifies focus and event routing; it does not prove native iOS keyboard presentation. The final fork build received a user report of improvement, but this adapted upstream build still needs physical-device confirmation. Keep this PR draft pending that verification.
RCA and fork implementation: johoja12#35 and johoja12#37.