diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx index 0d5aefe7bc3..543487b2b79 100644 --- a/packages/opencode/src/cli/cmd/tui/app.tsx +++ b/packages/opencode/src/cli/cmd/tui/app.tsx @@ -577,17 +577,11 @@ function App() { }, }, { - title: terminalTitleEnabled() ? "Disable terminal title" : "Enable terminal title", - value: "terminal.title.toggle", - keybind: "terminal_title_toggle", + title: kv.get("sidebar_overlay", true) ? "Disable sidebar overlay" : "Enable sidebar overlay", + value: "sidebar_overlay", category: "System", onSelect: (dialog) => { - setTerminalTitleEnabled((prev) => { - const next = !prev - kv.set("terminal_title_enabled", next) - if (!next) renderer.setTerminalTitle("") - return next - }) + kv.set("sidebar_overlay", !kv.get("sidebar_overlay", true)) dialog.clear() }, }, 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 77872eedadd..e7430ea9eca 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -149,6 +149,7 @@ export function Session() { const [showDetails, setShowDetails] = kv.signal("tool_details_visibility", true) const [showAssistantMetadata, setShowAssistantMetadata] = kv.signal("assistant_metadata_visibility", true) const [showScrollbar, setShowScrollbar] = kv.signal("scrollbar_visible", false) + const [sidebarOverlayEnabled, setSidebarOverlayEnabled] = kv.signal("sidebar_overlay", true) const [diffWrapMode] = kv.signal<"word" | "none">("diff_wrap_mode", "word") const [animationsEnabled, setAnimationsEnabled] = kv.signal("animations_enabled", true) @@ -159,8 +160,12 @@ export function Session() { if (sidebar() === "auto" && wide()) return true return false }) + const sidebarOverlay = createMemo(() => { + if (!sidebarOverlayEnabled()) return false + return sidebarVisible() && !wide() + }) const showTimestamps = createMemo(() => timestamps() === "show") - const contentWidth = createMemo(() => dimensions().width - (sidebarVisible() ? 42 : 0) - 4) + const contentWidth = createMemo(() => dimensions().width - (sidebarVisible() && !sidebarOverlay() ? 42 : 0) - 4) const scrollAcceleration = createMemo(() => { const tui = sync.data.config.tui @@ -958,7 +963,7 @@ export function Session() { - +
- + - + sync.session.get(props.sessionID)!) @@ -78,7 +78,7 @@ export function Sidebar(props: { sessionID: string; overlay?: boolean }) { paddingBottom={1} paddingLeft={2} paddingRight={2} - position={props.overlay ? "absolute" : "relative"} + position="relative" > diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index a231a530072..12ffe418301 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -810,6 +810,7 @@ export namespace Config { .default("h") .describe("Toggle code block concealment in messages"), tool_details: z.string().optional().default("none").describe("Toggle tool details visibility"), + sidebar_overlay_toggle: z.string().optional().default("none").describe("Toggle sidebar overlay mode"), model_list: z.string().optional().default("m").describe("List available models"), model_cycle_recent: z.string().optional().default("f2").describe("Next recently used model"), model_cycle_recent_reverse: z.string().optional().default("shift+f2").describe("Previous recently used model"),