diff --git a/packages/opencode/src/cli/cmd/tui/context/theme.tsx b/packages/opencode/src/cli/cmd/tui/context/theme.tsx index 2320c08ccc6..59e0eec252e 100644 --- a/packages/opencode/src/cli/cmd/tui/context/theme.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/theme.tsx @@ -52,6 +52,7 @@ type ThemeColors = { success: RGBA info: RGBA text: RGBA + sessionTitle: RGBA textMuted: RGBA selectedListItemText: RGBA background: RGBA @@ -131,9 +132,10 @@ type ColorValue = HexColor | RefName | Variant | RGBA type ThemeJson = { $schema?: string defs?: Record - theme: Omit, "selectedListItemText" | "backgroundMenu"> & { + theme: Omit, "selectedListItemText" | "backgroundMenu" | "sessionTitle"> & { selectedListItemText?: ColorValue backgroundMenu?: ColorValue + sessionTitle?: ColorValue thinkingOpacity?: number } } @@ -199,7 +201,7 @@ function resolveTheme(theme: ThemeJson, mode: "dark" | "light") { const resolved = Object.fromEntries( Object.entries(theme.theme) - .filter(([key]) => key !== "selectedListItemText" && key !== "backgroundMenu" && key !== "thinkingOpacity") + .filter(([key]) => key !== "selectedListItemText" && key !== "backgroundMenu" && key !== "thinkingOpacity" && key !== "sessionTitle") .map(([key, value]) => { return [key, resolveColor(value as ColorValue)] }), @@ -222,6 +224,13 @@ function resolveTheme(theme: ThemeJson, mode: "dark" | "light") { resolved.backgroundMenu = resolved.backgroundElement } + // Handle sessionTitle - optional with fallback to text + if (theme.theme.sessionTitle !== undefined) { + resolved.sessionTitle = resolveColor(theme.theme.sessionTitle) + } else { + resolved.sessionTitle = resolved.text + } + // Handle thinkingOpacity - optional with default of 0.6 const thinkingOpacity = theme.theme.thinkingOpacity ?? 0.6 diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx index f64dbe533a7..930a9c09baf 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx @@ -13,7 +13,7 @@ import { useTerminalDimensions } from "@opentui/solid" const Title = (props: { session: Accessor }) => { const { theme } = useTheme() return ( - + # {props.session().title} ) diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx index 42ac5fbe080..02c11b5619e 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx @@ -91,7 +91,7 @@ export function Sidebar(props: { sessionID: string; overlay?: boolean }) { > - + {session().title}