Operating system
Other: Android on Galaxy Fold7 with Samsung Keyboard Korean IME
Orca version
Details
Short summary:
After #7011, Korean cannot be typed into the Orca mobile terminal at all. While composing Hangul, nothing reaches the terminal — no live echo, no committed text — and Space does not send the pending text either. English/ASCII input still works, so the breakage is Korean-only.
What happened:
#7011 fixed the original jamo-splitting bug (#7000) by deferring Hangul IME preedit values instead of sending each onChangeText intermediate. But the deferral has no exit path during normal typing:
mobile/src/terminal/terminal-live-text-commit.ts returns { kind: 'defer', delayMs: null } for ANY text containing Hangul — unlike other IME text, which gets a 150 ms settle timer.
mobile/src/terminal/use-terminal-live-pending-input-flush.ts never schedules a commit timer when delayMs === null, so pending Hangul is only flushed by Enter, special keys (Tab/arrows/Esc/F-keys), or accessory-bar keys.
- Space is plain text, not a flush trigger:
'한글 ' still contains Hangul, so the whole string re-defers forever. Any ASCII typed after a Hangul character is swallowed with it ('한글abc' defers as a whole, because the check scans the entire field value).
- The pending text lives in the hidden capture
TextInput, which is opacity: 0, width: 1, height: 1 — the user can never see it.
Net effect: typing Korean produces zero feedback anywhere. Before #7011, intermediates were at least visible (as split jamo); now nothing is.
Compounding factors:
- On Samsung Keyboard, the first Enter during active composition often only commits the composition without firing
onSubmitEditing, so even the one primary flush path can appear dead on first press.
- The pending-clear effect in
mobile/src/terminal/use-terminal-live-input-commit.ts wipes pending composition whenever the active session tab type is transiently undefined (the mobile tab list briefly lagging desktop state), silently dropping in-progress Hangul.
How can we reproduce it?
- Use Orca mobile on Android with Samsung Keyboard set to Korean input.
- Open a terminal session and focus the terminal live input surface.
- Type
한글 and keep typing, including a trailing space.
- Observe the terminal receives nothing while typing; only Enter (sometimes needing a second press mid-composition) eventually delivers text, executing the line immediately with no chance to preview it.
Expected behavior:
Korean typing should echo to the terminal as you type (without leaking decomposed jamo), Space should commit the composed syllables, and Enter should submit the full text plus a newline.
Fix direction:
Replace the indefinite deferral with a mirror model: stream the stable prefix of the capture field to the PTY immediately (Hangul composition only ever mutates the trailing syllable), hold at most the last Hangul code point with a short settle timer, treat a trailing non-Hangul character (Space/punctuation/ASCII) as the composition-commit signal, and repair premature commits with DEL corrections. PR: #7181.
Operating system
Other: Android on Galaxy Fold7 with Samsung Keyboard Korean IME
Orca version
1.4.120-rc.2Details
Short summary:
After #7011, Korean cannot be typed into the Orca mobile terminal at all. While composing Hangul, nothing reaches the terminal — no live echo, no committed text — and Space does not send the pending text either. English/ASCII input still works, so the breakage is Korean-only.
What happened:
#7011 fixed the original jamo-splitting bug (#7000) by deferring Hangul IME preedit values instead of sending each
onChangeTextintermediate. But the deferral has no exit path during normal typing:mobile/src/terminal/terminal-live-text-commit.tsreturns{ kind: 'defer', delayMs: null }for ANY text containing Hangul — unlike other IME text, which gets a 150 ms settle timer.mobile/src/terminal/use-terminal-live-pending-input-flush.tsnever schedules a commit timer whendelayMs === null, so pending Hangul is only flushed by Enter, special keys (Tab/arrows/Esc/F-keys), or accessory-bar keys.'한글 'still contains Hangul, so the whole string re-defers forever. Any ASCII typed after a Hangul character is swallowed with it ('한글abc'defers as a whole, because the check scans the entire field value).TextInput, which isopacity: 0, width: 1, height: 1— the user can never see it.Net effect: typing Korean produces zero feedback anywhere. Before #7011, intermediates were at least visible (as split jamo); now nothing is.
Compounding factors:
onSubmitEditing, so even the one primary flush path can appear dead on first press.mobile/src/terminal/use-terminal-live-input-commit.tswipes pending composition whenever the active session tab type is transientlyundefined(the mobile tab list briefly lagging desktop state), silently dropping in-progress Hangul.How can we reproduce it?
한글and keep typing, including a trailing space.Expected behavior:
Korean typing should echo to the terminal as you type (without leaking decomposed jamo), Space should commit the composed syllables, and Enter should submit the full text plus a newline.
Fix direction:
Replace the indefinite deferral with a mirror model: stream the stable prefix of the capture field to the PTY immediately (Hangul composition only ever mutates the trailing syllable), hold at most the last Hangul code point with a short settle timer, treat a trailing non-Hangul character (Space/punctuation/ASCII) as the composition-commit signal, and repair premature commits with DEL corrections. PR: #7181.