From 59e486a91772fcc79223c9d1eae7b7c0b3d04898 Mon Sep 17 00:00:00 2001 From: Shoubhit Dash Date: Fri, 22 May 2026 21:47:13 +0530 Subject: [PATCH] fix(tui): restore question prompt key handling (#28835) --- .../src/cli/cmd/tui/routes/session/question.tsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx index c484c62f75..4d7b520430 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx @@ -1,5 +1,5 @@ import { createStore } from "solid-js/store" -import { createMemo, createSignal, For, Show } from "solid-js" +import { createMemo, createSignal, For, onCleanup, onMount, Show } from "solid-js" import { useRenderer } from "@opentui/solid" import type { TextareaRenderable } from "@opentui/core" import { selectedForeground, tint, useTheme } from "../../context/theme" @@ -7,13 +7,16 @@ import type { QuestionAnswer, QuestionRequest } from "@opencode-ai/sdk/v2" import { useSDK } from "../../context/sdk" import { SplitBorder } from "../../component/border" import { useTuiConfig } from "../../context/tui-config" -import { OPENCODE_BASE_MODE, useBindings } from "../../keymap" +import { useBindings, useOpencodeModeStack } from "../../keymap" + +const QUESTION_MODE = "question" export function QuestionPrompt(props: { request: QuestionRequest }) { const sdk = useSDK() const { theme } = useTheme() const renderer = useRenderer() const tuiConfig = useTuiConfig() + const modeStack = useOpencodeModeStack() const questions = createMemo(() => props.request.questions) const single = createMemo(() => questions().length === 1 && questions()[0]?.multiple !== true) @@ -119,8 +122,13 @@ export function QuestionPrompt(props: { request: QuestionRequest }) { pick(opt.label) } + onMount(() => { + const popMode = modeStack.push(QUESTION_MODE) + onCleanup(popMode) + }) + useBindings(() => ({ - mode: OPENCODE_BASE_MODE, + mode: QUESTION_MODE, enabled: store.editing && !confirm(), commands: [ { @@ -201,7 +209,7 @@ export function QuestionPrompt(props: { request: QuestionRequest }) { const max = Math.min(total, 9) return { - mode: OPENCODE_BASE_MODE, + mode: QUESTION_MODE, enabled: !store.editing, commands: [ {