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>(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)