From ba642416cdfdd95ee9c4de1bd938606a8fdc5e86 Mon Sep 17 00:00:00 2001 From: amosblomqvist Date: Wed, 9 Sep 2026 02:25:27 +0300 Subject: [PATCH] =?UTF-8?q?Universal=20submit=20shortcut:=20=E2=8C=98/Ctrl?= =?UTF-8?q?+Enter=20sends=20in=20every=20input?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Key-convention policy, settled: every field accepts ⌘/Ctrl+Enter (metaKey || ctrlKey — Mac gets ⌘↵, Windows/Linux Ctrl↵, the Gmail convention); plain Enter stays matched to the field's species — sends in message fields (chat composer, free-text answers — the universal chat convention, Shift+Enter still a newline), newline in the thinking field (composition, for dumping). --- components/composer.tsx | 5 ++++- components/question-dock.tsx | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/components/composer.tsx b/components/composer.tsx index 353c158..df58d36 100644 --- a/components/composer.tsx +++ b/components/composer.tsx @@ -42,7 +42,10 @@ export function Composer({ value={value} onChange={(e) => onChange(e.target.value)} onKeyDown={(e) => { - if (e.key === "Enter" && !e.shiftKey) { + // Chat convention: Enter sends, Shift+Enter is a newline. + // ⌘/Ctrl+Enter also sends — the universal submit shortcut + // across every input in the app (thinking field, answers). + if (e.key === "Enter" && (e.metaKey || e.ctrlKey || !e.shiftKey)) { e.preventDefault(); if (busy) onStop(); else if (canSend) onSend(); diff --git a/components/question-dock.tsx b/components/question-dock.tsx index f758d32..daa18fe 100644 --- a/components/question-dock.tsx +++ b/components/question-dock.tsx @@ -399,7 +399,9 @@ function QuestionDockForm({ value={text} onChange={(e) => setText(e.target.value)} onKeyDown={(e) => { - if (e.key === "Enter" && !e.shiftKey) { + // Chat convention: Enter submits, Shift+Enter is a newline; + // ⌘/Ctrl+Enter also submits (universal across the app). + if (e.key === "Enter" && (e.metaKey || e.ctrlKey || !e.shiftKey)) { e.preventDefault(); submit(); }