From 57776847090ef8c416387201cec74dcfd7fff348 Mon Sep 17 00:00:00 2001 From: Decayo Date: Thu, 14 Aug 2025 14:00:44 +0800 Subject: [PATCH 1/2] Fix: prevent Enter submit while IME composing (CJK) --- src/components/FloatingPromptInput.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/FloatingPromptInput.tsx b/src/components/FloatingPromptInput.tsx index c3f5ea28..8ce27753 100644 --- a/src/components/FloatingPromptInput.tsx +++ b/src/components/FloatingPromptInput.tsx @@ -225,6 +225,7 @@ const FloatingPromptInputInner = ( const [cursorPosition, setCursorPosition] = useState(0); const [embeddedImages, setEmbeddedImages] = useState([]); const [dragActive, setDragActive] = useState(false); + const [isComposing, setIsComposing] = useState(false); const textareaRef = useRef(null); const expandedTextareaRef = useRef(null); @@ -679,7 +680,9 @@ const FloatingPromptInputInner = ( return; } - if (e.key === "Enter" && !e.shiftKey && !isExpanded && !showFilePicker && !showSlashCommandPicker) { + // 在中文輸入法組字期間,不要觸發送出(部分瀏覽器 keyCode 會是 229) + const composing = (e as any).nativeEvent?.isComposing || isComposing || (e as any).keyCode === 229; + if (e.key === "Enter" && !e.shiftKey && !isExpanded && !showFilePicker && !showSlashCommandPicker && !composing) { e.preventDefault(); handleSend(); } @@ -834,6 +837,8 @@ const FloatingPromptInputInner = ( ref={expandedTextareaRef} value={prompt} onChange={handleTextChange} + onCompositionStart={() => setIsComposing(true)} + onCompositionEnd={() => setIsComposing(false)} onPaste={handlePaste} placeholder="Type your message..." className="min-h-[200px] resize-none" @@ -1157,6 +1162,8 @@ const FloatingPromptInputInner = ( value={prompt} onChange={handleTextChange} onKeyDown={handleKeyDown} + onCompositionStart={() => setIsComposing(true)} + onCompositionEnd={() => setIsComposing(false)} onPaste={handlePaste} placeholder={dragActive ? "Drop images here..." : "Message Claude (@ for files, / for commands)..."} disabled={disabled} From 09d097abfd4a93310fbcc016ba16d88e168df9a8 Mon Sep 17 00:00:00 2001 From: Decayo Date: Thu, 14 Aug 2025 14:08:50 +0800 Subject: [PATCH 2/2] chore: remove non-English inline comment and keep IME guard minimal --- src/components/FloatingPromptInput.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/FloatingPromptInput.tsx b/src/components/FloatingPromptInput.tsx index 8ce27753..27962a85 100644 --- a/src/components/FloatingPromptInput.tsx +++ b/src/components/FloatingPromptInput.tsx @@ -680,7 +680,6 @@ const FloatingPromptInputInner = ( return; } - // 在中文輸入法組字期間,不要觸發送出(部分瀏覽器 keyCode 會是 229) const composing = (e as any).nativeEvent?.isComposing || isComposing || (e as any).keyCode === 229; if (e.key === "Enter" && !e.shiftKey && !isExpanded && !showFilePicker && !showSlashCommandPicker && !composing) { e.preventDefault();