[Description of issue]
PR #44 and #80 fixed premature submission with CJK IMEs for the main chat textarea by ignoring Enter while composing (event.isComposing || event.keyCode === 229) in handleChatInput.
However, every other (keydown.enter) binding in the app still submits immediately when pressing Enter to confirm an IME conversion candidate, because the handlers are invoked without the event and never check isComposing:
long-running-response.html — response input for long-running function calls (HITL): (keydown.enter)="onSend()" (2 occurrences)
add-item-dialog.component.html — "Create a new app" dialog: (keydown.enter)="createNewApp()"
add-tool-dialog.component.html
add-callback-dialog.component.html
add-eval-session-dialog.component.html
new-eval-set-dialog-component.component.html
The long-running-response input is especially painful: for agents built around human-in-the-loop (request-input) flows, every Japanese response gets submitted half-composed.
[How to re-produce]
- Run
adk web with a Japanese (or Chinese/Korean) IME.
- Open any input above — e.g. a long-running function asking for user input, or the "Create a new app" dialog.
- Type Japanese text and press Enter to confirm the conversion candidate.
- The form submits with half-composed text instead of confirming the conversion.
[Proposal]
Apply the same guard as #44/#80 to these handlers (pass $event and early-return when $event.isComposing || $event.keyCode === 229). Extracting it into a shared directive would prevent this bug from reappearing in future dialogs.
Related: #6, #51, #81 (chat input; fixed by #44 / #80).
[Description of issue]
PR #44 and #80 fixed premature submission with CJK IMEs for the main chat textarea by ignoring Enter while composing (
event.isComposing || event.keyCode === 229) inhandleChatInput.However, every other
(keydown.enter)binding in the app still submits immediately when pressing Enter to confirm an IME conversion candidate, because the handlers are invoked without the event and never checkisComposing:long-running-response.html— response input for long-running function calls (HITL):(keydown.enter)="onSend()"(2 occurrences)add-item-dialog.component.html— "Create a new app" dialog:(keydown.enter)="createNewApp()"add-tool-dialog.component.htmladd-callback-dialog.component.htmladd-eval-session-dialog.component.htmlnew-eval-set-dialog-component.component.htmlThe long-running-response input is especially painful: for agents built around human-in-the-loop (request-input) flows, every Japanese response gets submitted half-composed.
[How to re-produce]
adk webwith a Japanese (or Chinese/Korean) IME.[Proposal]
Apply the same guard as #44/#80 to these handlers (pass
$eventand early-return when$event.isComposing || $event.keyCode === 229). Extracting it into a shared directive would prevent this bug from reappearing in future dialogs.Related: #6, #51, #81 (chat input; fixed by #44 / #80).