From 9b86d4e595c9f1ac7dea880713fbedd7bfa4c8b6 Mon Sep 17 00:00:00 2001 From: rari404 <138394996+edlsh@users.noreply.github.com> Date: Mon, 8 Dec 2025 12:06:46 -0500 Subject: [PATCH] feat: add theme support for thinking text opacity (#5240) --- packages/opencode/src/cli/cmd/tui/context/theme.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/context/theme.tsx b/packages/opencode/src/cli/cmd/tui/context/theme.tsx index 8fea3db3d..dd25024f3 100644 --- a/packages/opencode/src/cli/cmd/tui/context/theme.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/theme.tsx @@ -93,6 +93,7 @@ type ThemeColors = { type Theme = ThemeColors & { _hasSelectedListItemText: boolean + thinkingOpacity: number } export function selectedForeground(theme: Theme): RGBA { @@ -125,6 +126,7 @@ type ThemeJson = { theme: Omit, "selectedListItemText" | "backgroundMenu"> & { selectedListItemText?: ColorValue backgroundMenu?: ColorValue + thinkingOpacity?: number } } @@ -183,9 +185,9 @@ function resolveTheme(theme: ThemeJson, mode: "dark" | "light") { const resolved = Object.fromEntries( Object.entries(theme.theme) - .filter(([key]) => key !== "selectedListItemText" && key !== "backgroundMenu") + .filter(([key]) => key !== "selectedListItemText" && key !== "backgroundMenu" && key !== "thinkingOpacity") .map(([key, value]) => { - return [key, resolveColor(value)] + return [key, resolveColor(value as ColorValue)] }), ) as Partial @@ -206,9 +208,13 @@ function resolveTheme(theme: ThemeJson, mode: "dark" | "light") { resolved.backgroundMenu = resolved.backgroundElement } + // Handle thinkingOpacity - optional with default of 0.6 + const thinkingOpacity = theme.theme.thinkingOpacity ?? 0.6 + return { ...resolved, _hasSelectedListItemText: hasSelectedListItemText, + thinkingOpacity, } as Theme } @@ -554,7 +560,7 @@ function generateSubtleSyntax(theme: Theme) { Math.round(fg.r * 255), Math.round(fg.g * 255), Math.round(fg.b * 255), - Math.round(0.6 * 255), + Math.round(theme.thinkingOpacity * 255), ), }, }