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 d5298518700..4ded6a0213e 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -136,7 +136,11 @@ export function Session() { if (sidebar() === "auto" && wide()) return true return false }) - const contentWidth = createMemo(() => dimensions().width - (sidebarVisible() ? 42 : 0) - 4) + 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(() => { const tui = sync.data.config.tui diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 66f42e5a851..ec0560d524d 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -593,6 +593,12 @@ 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 Server = z 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 5c4cc69423d..2c57bd76ff0 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -1433,6 +1433,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 } server?: ServerConfig /** diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json index 3903566b91e..a74c84f3c7f 100644 --- a/packages/sdk/openapi.json +++ b/packages/sdk/openapi.json @@ -8233,6 +8233,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" } } },