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 10e340d7f8f..fe84a830083 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -141,9 +141,12 @@ export function Session() { const [conceal, setConceal] = createSignal(true) const [showThinking, setShowThinking] = kv.signal("thinking_visibility", true) const [timestamps, setTimestamps] = kv.signal<"hide" | "show">("timestamps", "hide") + const [usernameVisible, setUsernameVisible] = kv.signal("username_visible", true) 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 [userMessageMarkdown, setUserMessageMarkdown] = kv.signal("user_message_markdown", true) + const [sidebarOverlayEnabled, setSidebarOverlayEnabled] = kv.signal("sidebar_overlay", true) const [diffWrapMode, setDiffWrapMode] = createSignal<"word" | "none">("word") const [animationsEnabled, setAnimationsEnabled] = kv.signal("animations_enabled", true) @@ -155,7 +158,11 @@ export function Session() { return false }) const showTimestamps = createMemo(() => timestamps() === "show") - const contentWidth = createMemo(() => dimensions().width - (sidebarVisible() ? 42 : 0) - 4) + const sidebarOverlay = createMemo(() => { + if (!sidebarOverlayEnabled()) return false + return sidebarVisible() && !wide() + }) + const contentWidth = createMemo(() => dimensions().width - (sidebarVisible() && !sidebarOverlay() ? 42 : 0) - 4) const scrollAcceleration = createMemo(() => { const tui = sync.data.config.tui @@ -463,6 +470,34 @@ export function Session() { dialog.clear() }, }, + { + title: sidebarOverlayEnabled() ? "Disable sidebar overlay" : "Enable sidebar overlay", + value: "sidebar_overlay", + keybind: "sidebar_overlay_toggle", + category: "System", + onSelect: (dialog) => { + setSidebarOverlayEnabled((prev) => { + const next = !prev + kv.set("sidebar_overlay", next) + return next + }) + dialog.clear() + }, + }, + { + title: usernameVisible() ? "Hide username" : "Show username", + value: "session.username_visible.toggle", + keybind: "username_toggle", + category: "Session", + onSelect: (dialog) => { + setUsernameVisible((prev) => { + const next = !prev + kv.set("username_visible", next) + return next + }) + dialog.clear() + }, + }, { title: "Toggle code concealment", value: "session.toggle.conceal", diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index ead3a0149b4..6b03f805dd1 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -653,6 +653,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"),