Просмотр исходного кода

fix(tui): restore question prompt key handling (#28835)

Shoubhit Dash 2 месяцев назад
Родитель
Сommit
59e486a917
1 измененных файлов с 12 добавлено и 4 удалено
  1. 12 4
      packages/opencode/src/cli/cmd/tui/routes/session/question.tsx

+ 12 - 4
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: [
         {