From 5e77e21e8f435aa54be76900f6b754f1556341a0 Mon Sep 17 00:00:00 2001 From: Maharshi Patel Date: Wed, 4 Feb 2026 17:52:47 -0500 Subject: [PATCH] fix(tui): add hover states to question tool tabs Adds mouse hover visual feedback to question tool tabs in the TUI, matching the existing pattern used for subagent navigation buttons. Changes: - Added tabHover signal to track which tab is being hovered - Updated question tabs to show theme.backgroundElement on hover vs theme.backgroundPanel when not hovered - Active tabs keep their theme.accent color unchanged - Same pattern applied to the Confirm tab Fixes #12202 --- .../cli/cmd/tui/routes/session/question.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 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 88e99c6ea8b..1565a300818 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, For, Show } from "solid-js" +import { createMemo, createSignal, For, Show } from "solid-js" import { useKeyboard } from "@opentui/solid" import type { TextareaRenderable } from "@opentui/core" import { useKeybind } from "../../context/keybind" @@ -19,6 +19,7 @@ export function QuestionPrompt(props: { request: QuestionRequest }) { const questions = createMemo(() => props.request.questions) const single = createMemo(() => questions().length === 1 && questions()[0]?.multiple !== true) const tabs = createMemo(() => (single() ? 1 : questions().length + 1)) // questions + confirm tab (no confirm for single select) + const [tabHover, setTabHover] = createSignal(null) const [store, setStore] = createStore({ tab: 0, answers: [] as QuestionAnswer[], @@ -269,7 +270,15 @@ export function QuestionPrompt(props: { request: QuestionRequest }) { setTabHover(index())} + onMouseOut={() => setTabHover(null)} onMouseUp={() => selectTab(index())} > setTabHover("confirm")} + onMouseOut={() => setTabHover(null)} onMouseUp={() => selectTab(questions().length)} > Confirm