Skip to content

Commit cc9c0b1

Browse files
authored
Revert "add dialog prompt submit keybind (#27807)" (#27815)
1 parent f3b0d3d commit cc9c0b1

5 files changed

Lines changed: 8 additions & 183 deletions

File tree

packages/opencode/src/cli/cmd/tui/config/keybind.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,6 @@ export const Definitions = {
188188
"dialog.select.home": keybind("home", "Move to first dialog item"),
189189
"dialog.select.end": keybind("end", "Move to last dialog item"),
190190
"dialog.select.submit": keybind("return", "Submit selected dialog item"),
191-
"dialog.prompt.submit": keybind("return", "Submit dialog prompt"),
192191
"dialog.mcp.toggle": keybind("space", "Toggle MCP in MCP dialog"),
193192
"prompt.autocomplete.prev": keybind("up,ctrl+p", "Move to previous autocomplete item"),
194193
"prompt.autocomplete.next": keybind("down,ctrl+n", "Move to next autocomplete item"),

packages/opencode/src/cli/cmd/tui/ui/dialog-prompt.tsx

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import { TextareaRenderable, TextAttributes } from "@opentui/core"
22
import { useTheme } from "../context/theme"
33
import { useDialog, type DialogContext } from "./dialog"
4-
import { Show, createEffect, createSignal, onMount, type JSX } from "solid-js"
4+
import { Show, createEffect, onMount, type JSX } from "solid-js"
55
import { Spinner } from "../component/spinner"
6-
import { useTuiConfig } from "../context/tui-config"
7-
import { useBindings, useCommandShortcut } from "../keymap"
86

97
export type DialogPromptProps = {
108
title: string
@@ -20,32 +18,8 @@ export type DialogPromptProps = {
2018
export function DialogPrompt(props: DialogPromptProps) {
2119
const dialog = useDialog()
2220
const { theme } = useTheme()
23-
const tuiConfig = useTuiConfig()
24-
const submitShortcut = useCommandShortcut("dialog.prompt.submit")
25-
const [textareaTarget, setTextareaTarget] = createSignal<TextareaRenderable>()
2621
let textarea: TextareaRenderable
2722

28-
function confirm() {
29-
if (props.busy) return
30-
props.onConfirm?.(textarea.plainText)
31-
}
32-
33-
useBindings(() => ({
34-
target: textareaTarget,
35-
enabled: textareaTarget() !== undefined && !props.busy,
36-
// Dialog form semantics must win over the global managed textarea input layer.
37-
priority: 1,
38-
commands: [
39-
{
40-
name: "dialog.prompt.submit",
41-
title: "Submit dialog prompt",
42-
category: "Dialog",
43-
run: confirm,
44-
},
45-
],
46-
bindings: tuiConfig.keybinds.gather("dialog.prompt", ["dialog.prompt.submit"]),
47-
}))
48-
4923
onMount(() => {
5024
dialog.setSize("medium")
5125
setTimeout(() => {
@@ -85,10 +59,13 @@ export function DialogPrompt(props: DialogPromptProps) {
8559
<box gap={1}>
8660
{props.description}
8761
<textarea
62+
onSubmit={() => {
63+
if (props.busy) return
64+
props.onConfirm?.(textarea.plainText)
65+
}}
8866
height={3}
8967
ref={(val: TextareaRenderable) => {
9068
textarea = val
91-
setTextareaTarget(val)
9269
}}
9370
initialValue={props.value}
9471
placeholder={props.placeholder ?? "Enter text"}
@@ -103,11 +80,9 @@ export function DialogPrompt(props: DialogPromptProps) {
10380
</box>
10481
<box paddingBottom={1} gap={1} flexDirection="row">
10582
<Show when={!props.busy} fallback={<text fg={theme.textMuted}>processing...</text>}>
106-
<Show when={submitShortcut()}>
107-
<text fg={theme.text}>
108-
{submitShortcut()} <span style={{ fg: theme.textMuted }}>submit</span>
109-
</text>
110-
</Show>
83+
<text fg={theme.text}>
84+
enter <span style={{ fg: theme.textMuted }}>submit</span>
85+
</text>
11186
</Show>
11287
</box>
11388
</box>

packages/opencode/test/cli/tui/dialog-prompt.test.tsx

Lines changed: 0 additions & 146 deletions
This file was deleted.

packages/opencode/test/config/tui.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,6 @@ it.instance("resolves keybind lookup from canonical keybinds", () =>
470470
which_key_toggle: "alt+k",
471471
editor_open: "ctrl+e",
472472
"prompt.autocomplete.next": "ctrl+j",
473-
"dialog.prompt.submit": "ctrl+s",
474473
"dialog.mcp.toggle": "ctrl+t",
475474
model_favorite_toggle: "ctrl+f",
476475
"dialog.plugins.install": "shift+i",
@@ -492,7 +491,6 @@ it.instance("resolves keybind lookup from canonical keybinds", () =>
492491
)
493492
expect(config.keybinds.get("prompt.editor")?.[0]?.key).toBe("ctrl+e")
494493
expect(config.keybinds.get("prompt.autocomplete.next")?.[0]?.key).toBe("ctrl+j")
495-
expect(config.keybinds.get("dialog.prompt.submit")?.[0]?.key).toBe("ctrl+s")
496494
expect(config.keybinds.get("dialog.mcp.toggle")?.[0]?.key).toBe("ctrl+t")
497495
expect(config.keybinds.get("model.dialog.favorite")?.[0]?.key).toBe("ctrl+f")
498496
expect(config.keybinds.get("dialog.plugins.install")?.[0]?.key).toBe("shift+i")

packages/web/src/content/docs/keybinds.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ OpenCode has a list of keybinds that you can customize through `tui.json`.
145145
"dialog.select.home": "home",
146146
"dialog.select.end": "end",
147147
"dialog.select.submit": "return",
148-
"dialog.prompt.submit": "return",
149148
"dialog.mcp.toggle": "space",
150149
"prompt.autocomplete.prev": "up,ctrl+p",
151150
"prompt.autocomplete.next": "down,ctrl+n",

0 commit comments

Comments
 (0)