summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorjustfortheloveof <[email protected]>2026-01-24 12:01:46 -0500
committerGitHub <[email protected]>2026-01-24 12:01:46 -0500
commit077d17d433ab3fc3dbf40ecd9ca7a1f9c7c5d2bf (patch)
tree88a86c8e0c3711e696944522d9429d0a8da7f400
parent65112431526d23da27ff73dbcaf30862375f896e (diff)
downloadopencode-077d17d433ab3fc3dbf40ecd9ca7a1f9c7c5d2bf.tar.gz
opencode-077d17d433ab3fc3dbf40ecd9ca7a1f9c7c5d2bf.zip
fix: permission prompt should ignore keyboard events while dialog stack len > 0 (#10338)
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/permission.tsx7
1 files changed, 7 insertions, 0 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/permission.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/permission.tsx
index 0414ec39b..9e79c76bf 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/permission.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/permission.tsx
@@ -14,6 +14,7 @@ import { LANGUAGE_EXTENSIONS } from "@/lsp/language"
import { Keybind } from "@/util/keybind"
import { Locale } from "@/util/locale"
import { Global } from "@/global"
+import { useDialog } from "../../ui/dialog"
type PermissionStage = "permission" | "always" | "reject"
@@ -304,8 +305,11 @@ function RejectPrompt(props: { onConfirm: (message: string) => void; onCancel: (
const textareaKeybindings = useTextareaKeybindings()
const dimensions = useTerminalDimensions()
const narrow = createMemo(() => dimensions().width < 80)
+ const dialog = useDialog()
useKeyboard((evt) => {
+ if (dialog.stack.length > 0) return
+
if (evt.name === "escape" || keybind.match("app_exit", evt)) {
evt.preventDefault()
props.onCancel()
@@ -384,8 +388,11 @@ function Prompt<const T extends Record<string, string>>(props: {
})
const diffKey = Keybind.parse("ctrl+f")[0]
const narrow = createMemo(() => dimensions().width < 80)
+ const dialog = useDialog()
useKeyboard((evt) => {
+ if (dialog.stack.length > 0) return
+
if (evt.name === "left" || evt.name == "h") {
evt.preventDefault()
const idx = keys.indexOf(store.selected)