mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-03 22:19:42 +02:00
fix(mobile): let a second tap on inert transcript close the keyboard
Every terminal tap re-focuses the hidden textarea, so once the on-screen keyboard
is open the only way to close it is the accessory bar's dismiss chevron. Tapping
the transcript to get the screen back is the obvious gesture and it did nothing.
A tap on INERT content with the keyboard already up now dismisses it. Nothing
else claims that gesture: an inert row has no action to trigger, so by that point
the tap has already done its only other job (the mouse report).
Scoped to 'content' ON PURPOSE. The prompt row ('input') keeps
focus-then-position, so a second tap there still places the caret — that is real
capability and trading it away would be a worse deal than the bug. A separate
test pins it rather than leaving it to the reader.
Actionable rows are unchanged: readbacks, "esc to interrupt" status rows and menu
selections still blur via _isActionableMobileTerminalTap, which runs first.
`keeps the hidden keyboard input focused after an inert Claude transcript tap`
asserted the OLD behaviour and is renamed and inverted, since revising that
behaviour is the point of this change. Its setup already focused the terminal
before tapping, so it was always exercising the second-tap case.
test/terminal-touch-tap.test.ts: 28 tests. The two new ones fail on master —
`closes the keyboard on a second tap of INERT transcript content` behaviourally,
by asserting blur where master re-focuses.
test/mobile/keyboard.test.ts: 51 tests, 5 failed | 46 passed — the same five
pre-existing failures as master, untouched here.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3595,6 +3595,20 @@ Object.assign(CodemanApp.prototype, {
|
||||
// A synthetic xterm click can focus its helper textarea. Blur after the
|
||||
// report so collapsing a readback never opens or retains the keyboard.
|
||||
this._blurMobileTerminalInput();
|
||||
} else if (intent === 'content' && startedWithTerminalFocus) {
|
||||
// Tapping INERT transcript with the keyboard already up closes it.
|
||||
//
|
||||
// Every terminal tap re-focuses, so once the keyboard is open the only way
|
||||
// to close it is the accessory bar's dismiss chevron. Tapping the
|
||||
// transcript to get the screen back is the obvious gesture, and nothing
|
||||
// else claims it: an inert row has no action to trigger, so by this point
|
||||
// the tap has already done its only other job (the mouse report above).
|
||||
//
|
||||
// Scoped to 'content' ON PURPOSE. The prompt row ('input') keeps
|
||||
// focus-then-position, so a second tap there still places the caret —
|
||||
// pinned by "keeps the first prompt tap focus-only so it cannot activate a
|
||||
// CLI row". Toggling there would trade away real capability.
|
||||
this._blurMobileTerminalInput();
|
||||
} else {
|
||||
this._focusMobileTerminalInput();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user