From 6fefa6fbabc3c5811a8a1c5c4b1ce2b9d15c6285 Mon Sep 17 00:00:00 2001 From: xu0o0 Date: Mon, 13 Apr 2026 16:58:44 +0800 Subject: [PATCH] fix(web-ui): ignore key events during IME composition (#2982) * fix(web-ui): ignore key events during IME composition * fix(web-ui): ignore key events during IME composition in ModelSelector --- packages/web-ui/src/components/MessageEditor.ts | 3 +++ packages/web-ui/src/dialogs/ModelSelector.ts | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/web-ui/src/components/MessageEditor.ts b/packages/web-ui/src/components/MessageEditor.ts index f0987c4d..9a12f1d0 100644 --- a/packages/web-ui/src/components/MessageEditor.ts +++ b/packages/web-ui/src/components/MessageEditor.ts @@ -60,6 +60,9 @@ export class MessageEditor extends LitElement { }; private handleKeyDown = (e: KeyboardEvent) => { + // Ignore key events during IME composition (e.g. CJK input) + if (e.isComposing || e.key === "Process") return; + if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); if (!this.isStreaming && !this.processingFiles && (this.value.trim() || this.attachments.length > 0)) { diff --git a/packages/web-ui/src/dialogs/ModelSelector.ts b/packages/web-ui/src/dialogs/ModelSelector.ts index 192c3c53..8c864459 100644 --- a/packages/web-ui/src/dialogs/ModelSelector.ts +++ b/packages/web-ui/src/dialogs/ModelSelector.ts @@ -113,6 +113,9 @@ export class ModelSelector extends DialogBase { // Add global keyboard handler for the dialog this.addEventListener("keydown", (e: KeyboardEvent) => { + // Ignore key events during IME composition (e.g. CJK input) + if (e.isComposing || e.key === "Process") return; + // Get filtered models to know the bounds const filteredModels = this.getFilteredModels();