From 1f33dcb4c14c67922cc11d59ce8932e32728ecdb Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sat, 3 Jan 2026 20:03:42 +0700 Subject: [PATCH] fix(input): handle Cmd+D when TextInput has focus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prevents browser bookmark dialog from appearing when using Cmd+D to toggle dictation while typing. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- packages/app/src/components/message-input.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/app/src/components/message-input.tsx b/packages/app/src/components/message-input.tsx index edac26204..4d9ec5aee 100644 --- a/packages/app/src/components/message-input.tsx +++ b/packages/app/src/components/message-input.tsx @@ -351,11 +351,23 @@ export function MessageInput({ const shouldHandleDesktopSubmit = IS_WEB; - function handleDesktopSubmitKeyPress(event: WebTextInputKeyPressEvent) { + function handleDesktopKeyPress(event: WebTextInputKeyPressEvent) { if (!shouldHandleDesktopSubmit) return; - if (event.nativeEvent.key !== "Enter") return; const { shiftKey, metaKey, ctrlKey } = event.nativeEvent; + // Cmd+D or Ctrl+D: toggle dictation + if ((metaKey || ctrlKey) && event.nativeEvent.key === "d") { + event.preventDefault(); + if (isDictating) { + cancelDictation(); + } else { + startDictation(); + } + return; + } + + if (event.nativeEvent.key !== "Enter") return; + // Shift+Enter: add newline (default behavior, don't intercept) if (shiftKey) return; @@ -436,7 +448,7 @@ export function MessageInput({ onContentSizeChange={handleContentSizeChange} editable={!isDictating && isConnected && !disabled} onKeyPress={ - shouldHandleDesktopSubmit ? handleDesktopSubmitKeyPress : undefined + shouldHandleDesktopSubmit ? handleDesktopKeyPress : undefined } autoFocus={IS_WEB && autoFocus} />