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 507b2186e..b28010ac6 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -120,6 +120,7 @@ export function Session() { const [showTimestamps, setShowTimestamps] = createSignal(kv.get("timestamps", "hide") === "show") const [usernameVisible, setUsernameVisible] = createSignal(kv.get("username_visible", true)) const [showDetails, setShowDetails] = createSignal(kv.get("tool_details_visibility", true)) + const [showScrollbar, setShowScrollbar] = createSignal(kv.get("scrollbar_visible", false)) const [diffWrapMode, setDiffWrapMode] = createSignal<"word" | "none">("word") const wide = createMemo(() => dimensions().width > 120) @@ -494,6 +495,20 @@ export function Session() { dialog.clear() }, }, + { + title: "Toggle session scrollbar", + value: "session.toggle.scrollbar", + keybind: "scrollbar_toggle", + category: "Session", + onSelect: (dialog) => { + setShowScrollbar((prev) => { + const next = !prev + kv.set("scrollbar_visible", next) + return next + }) + dialog.clear() + }, + }, { title: "Page up", value: "session.page.up", @@ -840,9 +855,9 @@ export function Session() { (scroll = r)} - scrollbarOptions={{ - paddingLeft: 2, - visible: false, + verticalScrollbarOptions={{ + paddingLeft: 1, + visible: showScrollbar(), trackOptions: { backgroundColor: theme.backgroundElement, foregroundColor: theme.border, diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index d30b20860..d38de8a94 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -404,6 +404,7 @@ export namespace Config { editor_open: z.string().optional().default("e").describe("Open external editor"), theme_list: z.string().optional().default("t").describe("List available themes"), sidebar_toggle: z.string().optional().default("b").describe("Toggle sidebar"), + scrollbar_toggle: z.string().optional().default("none").describe("Toggle session scrollbar"), username_toggle: z.string().optional().default("none").describe("Toggle username visibility"), status_view: z.string().optional().default("s").describe("View status"), session_export: z.string().optional().default("x").describe("Export session to editor"),