From e0f3df8252c93634de7067f7fbc9934d47453700 Mon Sep 17 00:00:00 2001 From: Cas <10153929+CasualDeveloper@users.noreply.github.com> Date: Tue, 28 Apr 2026 04:31:49 +0800 Subject: [PATCH] fix(tui): consume Enter in dialog useKeyboard handlers (#23390) --- .../opencode/src/cli/cmd/tui/component/dialog-go-upsell.tsx | 2 ++ .../src/cli/cmd/tui/component/dialog-session-delete-failed.tsx | 2 ++ packages/opencode/src/cli/cmd/tui/ui/dialog-alert.tsx | 2 ++ packages/opencode/src/cli/cmd/tui/ui/dialog-confirm.tsx | 2 ++ packages/opencode/src/cli/cmd/tui/ui/dialog-export-options.tsx | 2 ++ packages/opencode/src/cli/cmd/tui/ui/dialog-help.tsx | 2 ++ packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx | 2 ++ 7 files changed, 14 insertions(+) diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-go-upsell.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-go-upsell.tsx index ace4b090bc..b512f9021c 100644 --- a/packages/opencode/src/cli/cmd/tui/component/dialog-go-upsell.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/dialog-go-upsell.tsx @@ -77,6 +77,8 @@ export function DialogGoUpsell(props: DialogGoUpsellProps) { return } if (evt.name === "return") { + evt.preventDefault() + evt.stopPropagation() if (selected() === "subscribe") subscribe(props, dialog) else dismiss(props, dialog) } diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-session-delete-failed.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-session-delete-failed.tsx index 4a22a0c492..3d3059d953 100644 --- a/packages/opencode/src/cli/cmd/tui/component/dialog-session-delete-failed.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/dialog-session-delete-failed.tsx @@ -42,6 +42,8 @@ export function DialogSessionDeleteFailed(props: { useKeyboard((evt) => { if (evt.name === "return") { + evt.preventDefault() + evt.stopPropagation() void confirm() } if (evt.name === "left" || evt.name === "up") { diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-alert.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-alert.tsx index 642c73b485..fb159115dc 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-alert.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-alert.tsx @@ -15,6 +15,8 @@ export function DialogAlert(props: DialogAlertProps) { useKeyboard((evt) => { if (evt.name === "return") { + evt.preventDefault() + evt.stopPropagation() props.onConfirm?.() dialog.clear() } diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-confirm.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-confirm.tsx index 48adddaedc..3870cf816c 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-confirm.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-confirm.tsx @@ -25,6 +25,8 @@ export function DialogConfirm(props: DialogConfirmProps) { useKeyboard((evt) => { if (evt.name === "return") { + evt.preventDefault() + evt.stopPropagation() if (store.active === "confirm") props.onConfirm?.() if (store.active === "cancel") props.onCancel?.() dialog.clear() diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-export-options.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-export-options.tsx index 513d34910b..b9362db46b 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-export-options.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-export-options.tsx @@ -35,6 +35,8 @@ export function DialogExportOptions(props: DialogExportOptionsProps) { useKeyboard((evt) => { if (evt.name === "return") { + evt.preventDefault() + evt.stopPropagation() props.onConfirm?.({ filename: textarea.plainText, thinking: store.thinking, diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-help.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-help.tsx index 4e45279303..24b93b96a7 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-help.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-help.tsx @@ -11,6 +11,8 @@ export function DialogHelp() { useKeyboard((evt) => { if (evt.name === "return" || evt.name === "escape") { + evt.preventDefault() + evt.stopPropagation() dialog.clear() } }) diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx index 6df99c33fd..92d6d277d0 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx @@ -29,6 +29,8 @@ export function DialogPrompt(props: DialogPromptProps) { return } if (evt.name === "return") { + evt.preventDefault() + evt.stopPropagation() props.onConfirm?.(textarea.plainText) } })