From efa53fb3be518378fd89d0c1d991e0339682fb40 Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Fri, 5 Jun 2026 21:01:20 -0500 Subject: [PATCH] feat(desktop): reserve Cmd/Ctrl+Enter strictly for steer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cmd/Ctrl+Enter now steers when there's a steerable draft and is a no-op otherwise — it never falls through to a send, so the shortcut can't surprise-send. Plain Enter keeps its role (queue while busy, send when idle). --- apps/desktop/src/app/chat/composer/index.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/desktop/src/app/chat/composer/index.tsx b/apps/desktop/src/app/chat/composer/index.tsx index 185eca7baf..1af6430ec1 100644 --- a/apps/desktop/src/app/chat/composer/index.tsx +++ b/apps/desktop/src/app/chat/composer/index.tsx @@ -797,11 +797,15 @@ export function ChatBar({ return } - // Cmd/Ctrl+Enter steers the draft into the live run (nudge, no interrupt); - // plain Enter still queues while busy. - if (event.key === 'Enter' && (event.metaKey || event.ctrlKey) && !event.shiftKey && canSteer) { + // Cmd/Ctrl+Enter is reserved for steering the live run — never a send. + // Steer when there's a steerable draft, otherwise swallow it so it can't + // surprise-send. (Plain Enter still queues while busy / sends when idle.) + if (event.key === 'Enter' && (event.metaKey || event.ctrlKey) && !event.shiftKey) { event.preventDefault() - steerDraft() + + if (canSteer) { + steerDraft() + } return }