From 6d679423e29ca429c22ad0a7cb36f2fbd8a5898a Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Wed, 24 Dec 2025 00:05:42 -0500 Subject: [PATCH 1/3] feat: add config option to disable sidebar overlay mode - Add tui.sidebar_overlay config option (default: true) - When set to false, sidebar always renders side-by-side with content - Prevents dimming overlay behavior for users who prefer persistent side-by-side layout - Addresses user preference for no dimming on narrow screens --- packages/opencode/src/cli/cmd/tui/routes/session/index.tsx | 5 ++++- packages/opencode/src/config/config.ts | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx index c685d8c66cc..98cea7b361d 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -138,7 +138,10 @@ export function Session() { if (sidebar() === "auto" && wide()) return true return false }) - const sidebarOverlay = createMemo(() => sidebarVisible() && !wide()) + const sidebarOverlay = createMemo(() => { + if (sync.data.config.tui?.sidebar_overlay === false) return false + return sidebarVisible() && !wide() + }) const contentWidth = createMemo(() => dimensions().width - (sidebarVisible() && !sidebarOverlay() ? 42 : 0) - 4) const scrollAcceleration = createMemo(() => { diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index ba9d1973025..5bf5c17bbab 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -585,6 +585,10 @@ export namespace Config { .enum(["auto", "stacked"]) .optional() .describe("Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column"), + sidebar_overlay: z + .boolean() + .optional() + .describe("Enable sidebar overlay mode on narrow screens (default: true). Set to false to always show sidebar side-by-side with content"), }) export const Layout = z.enum(["auto", "stretch"]).meta({ From 56365f40d0edf12d95ce4b0023110f5a1308928b Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Wed, 24 Dec 2025 05:31:31 -0500 Subject: [PATCH 2/3] fix: regenerate SDK types for sidebar_overlay config property The sidebar_overlay property was already added to the config schema but the SDK types weren't regenerated, causing a TypeScript error. This regenerates the types to fix the missing property in Config.TUI. --- packages/opencode/src/config/config.ts | 4 +++- packages/sdk/js/src/v2/gen/types.gen.ts | 4 ++++ packages/sdk/openapi.json | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 5bf5c17bbab..dd14461ae5d 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -588,7 +588,9 @@ export namespace Config { sidebar_overlay: z .boolean() .optional() - .describe("Enable sidebar overlay mode on narrow screens (default: true). Set to false to always show sidebar side-by-side with content"), + .describe( + "Enable sidebar overlay mode on narrow screens (default: true). Set to false to always show sidebar side-by-side with content", + ), }) export const Layout = z.enum(["auto", "stretch"]).meta({ diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index 0a31394ed9c..68f3515e44f 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -1409,6 +1409,10 @@ export type Config = { * Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column */ diff_style?: "auto" | "stacked" + /** + * Enable sidebar overlay mode on narrow screens (default: true). Set to false to always show sidebar side-by-side with content + */ + sidebar_overlay?: boolean } /** * Command configuration, see https://opencode.ai/docs/commands diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json index 96ba0720c73..24b1c467585 100644 --- a/packages/sdk/openapi.json +++ b/packages/sdk/openapi.json @@ -8167,6 +8167,10 @@ "description": "Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column", "type": "string", "enum": ["auto", "stacked"] + }, + "sidebar_overlay": { + "description": "Enable sidebar overlay mode on narrow screens (default: true). Set to false to always show sidebar side-by-side with content", + "type": "boolean" } } }, From bb09c49874f06a0199d7d2afddff169d439bf5b9 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Wed, 24 Dec 2025 11:43:38 -0500 Subject: [PATCH 3/3] Merge dev into feat/configurable-sidebar-overlay-behaviour - Fixed provider type compatibility issues with bundled providers - Regenerated SDK types to include sidebar_overlay field - All typechecks and tests passing --- packages/opencode/src/provider/provider.ts | 2 +- packages/sdk/js/src/v2/gen/types.gen.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 0fdf26392f6..825b51a237a 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -38,7 +38,7 @@ import { createPerplexity } from "@ai-sdk/perplexity" export namespace Provider { const log = Log.create({ service: "provider" }) - const BUNDLED_PROVIDERS: Record SDK> = { + const BUNDLED_PROVIDERS: Record any> = { "@ai-sdk/amazon-bedrock": createAmazonBedrock, "@ai-sdk/anthropic": createAnthropic, "@ai-sdk/azure": createAzure, diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index 0a31394ed9c..68f3515e44f 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -1409,6 +1409,10 @@ export type Config = { * Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column */ diff_style?: "auto" | "stacked" + /** + * Enable sidebar overlay mode on narrow screens (default: true). Set to false to always show sidebar side-by-side with content + */ + sidebar_overlay?: boolean } /** * Command configuration, see https://opencode.ai/docs/commands