diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog.tsx index 43f1a1ff58d..b1f518043d5 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog.tsx @@ -6,6 +6,7 @@ import { createStore } from "solid-js/store" import { useToast } from "./toast" import { Flag } from "@/flag/flag" import { Selection } from "@tui/util/selection" +import { useSync } from "@tui/context/sync" export function Dialog( props: ParentProps<{ @@ -16,6 +17,10 @@ export function Dialog( const dimensions = useTerminalDimensions() const { theme } = useTheme() const renderer = useRenderer() + const sync = useSync() + + const overlayMode = () => sync.data.config.experimental?.dialog_background_overlay ?? "full" + const showOverlay = () => overlayMode() === "full" let dismiss = false @@ -38,7 +43,7 @@ export function Dialog( paddingTop={dimensions().height / 4} left={0} top={0} - backgroundColor={RGBA.fromInts(0, 0, 0, 150)} + backgroundColor={showOverlay() ? RGBA.fromInts(0, 0, 0, 150) : undefined} > { diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 47afdfd7d0f..1b78b2a1344 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -1225,6 +1225,10 @@ export namespace Config { .positive() .optional() .describe("Timeout in milliseconds for model context protocol (MCP) requests"), + dialog_background_overlay: z + .enum(["full", "limited", "none"]) + .optional() + .describe("Control dialog background overlay: 'full' = semi-transparent overlay (default), 'limited' = overlay only within dialog bounds, 'none' = no overlay"), }) .optional(), }) diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index ec797f2ba81..22a51df853e 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -1503,6 +1503,10 @@ export type Config = { * Timeout in milliseconds for model context protocol (MCP) requests */ mcp_timeout?: number + /** + * Control dialog background overlay: 'full' = semi-transparent overlay (default), 'limited' = overlay only within dialog bounds, 'none' = no overlay + */ + dialog_background_overlay?: 'full' | 'limited' | 'none' } }