diff --git a/packages/opencode/src/cli/cmd/tui/config/keybind.ts b/packages/opencode/src/cli/cmd/tui/config/keybind.ts index a375573828..bd26cd5d95 100644 --- a/packages/opencode/src/cli/cmd/tui/config/keybind.ts +++ b/packages/opencode/src/cli/cmd/tui/config/keybind.ts @@ -188,7 +188,6 @@ export const Definitions = { "dialog.select.home": keybind("home", "Move to first dialog item"), "dialog.select.end": keybind("end", "Move to last dialog item"), "dialog.select.submit": keybind("return", "Submit selected dialog item"), - "dialog.prompt.submit": keybind("return", "Submit dialog prompt"), "dialog.mcp.toggle": keybind("space", "Toggle MCP in MCP dialog"), "prompt.autocomplete.prev": keybind("up,ctrl+p", "Move to previous autocomplete item"), "prompt.autocomplete.next": keybind("down,ctrl+n", "Move to next autocomplete item"), 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 dfd8091852..34ab9161f6 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx @@ -1,10 +1,8 @@ import { TextareaRenderable, TextAttributes } from "@opentui/core" import { useTheme } from "../context/theme" import { useDialog, type DialogContext } from "./dialog" -import { Show, createEffect, createSignal, onMount, type JSX } from "solid-js" +import { Show, createEffect, onMount, type JSX } from "solid-js" import { Spinner } from "../component/spinner" -import { useTuiConfig } from "../context/tui-config" -import { useBindings, useCommandShortcut } from "../keymap" export type DialogPromptProps = { title: string @@ -20,32 +18,8 @@ export type DialogPromptProps = { export function DialogPrompt(props: DialogPromptProps) { const dialog = useDialog() const { theme } = useTheme() - const tuiConfig = useTuiConfig() - const submitShortcut = useCommandShortcut("dialog.prompt.submit") - const [textareaTarget, setTextareaTarget] = createSignal() let textarea: TextareaRenderable - function confirm() { - if (props.busy) return - props.onConfirm?.(textarea.plainText) - } - - useBindings(() => ({ - target: textareaTarget, - enabled: textareaTarget() !== undefined && !props.busy, - // Dialog form semantics must win over the global managed textarea input layer. - priority: 1, - commands: [ - { - name: "dialog.prompt.submit", - title: "Submit dialog prompt", - category: "Dialog", - run: confirm, - }, - ], - bindings: tuiConfig.keybinds.gather("dialog.prompt", ["dialog.prompt.submit"]), - })) - onMount(() => { dialog.setSize("medium") setTimeout(() => { @@ -85,10 +59,13 @@ export function DialogPrompt(props: DialogPromptProps) { {props.description}