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 e1423e22c22..543c784ed46 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -149,7 +149,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 6f04ecc6854..64e2fe79eb2 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -715,6 +715,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/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index 97a695162ed..eaa5be24c20 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -1492,6 +1492,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 f697f6e3f3e..7ba96f6ad0e 100644 --- a/packages/sdk/openapi.json +++ b/packages/sdk/openapi.json @@ -8778,6 +8778,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" } } },