Skip to content
9 changes: 9 additions & 0 deletions packages/opencode/src/cli/cmd/tui/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,15 @@ function App() {
dialog.clear()
},
},
{
title: kv.get("sidebar_scrollbar_visible", true) ? "Hide sidebar scrollbar" : "Show sidebar scrollbar",
value: "app.toggle.sidebar_scrollbar",
category: "System",
onSelect: (dialog) => {
kv.set("sidebar_scrollbar_visible", !kv.get("sidebar_scrollbar_visible", true))
dialog.clear()
},
},
])

sdk.event.on(TuiEvent.CommandExecute.type, (evt) => {
Expand Down
5 changes: 3 additions & 2 deletions packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,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", true)
const [showSidebarScrollbar, setShowSidebarScrollbar] = kv.signal("sidebar_scrollbar_visible", true)
const [showHeader, setShowHeader] = kv.signal("header_visible", true)
const [diffWrapMode] = kv.signal<"word" | "none">("diff_wrap_mode", "word")
const [animationsEnabled, setAnimationsEnabled] = kv.signal("animations_enabled", true)
Expand Down Expand Up @@ -1195,7 +1196,7 @@ export function Session() {
<Show when={sidebarVisible()}>
<Switch>
<Match when={wide()}>
<Sidebar sessionID={route.sessionID} />
<Sidebar sessionID={route.sessionID} showScrollbar={showSidebarScrollbar()} />
</Match>
<Match when={!wide()}>
<box
Expand All @@ -1207,7 +1208,7 @@ export function Session() {
alignItems="flex-end"
backgroundColor={RGBA.fromInts(0, 0, 0, 70)}
>
<Sidebar sessionID={route.sessionID} />
<Sidebar sessionID={route.sessionID} showScrollbar={showSidebarScrollbar()} />
</box>
</Match>
</Switch>
Expand Down
3 changes: 2 additions & 1 deletion packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { useDirectory } from "../../context/directory"
import { useKV } from "../../context/kv"
import { TodoItem } from "../../component/todo-item"

export function Sidebar(props: { sessionID: string; overlay?: boolean }) {
export function Sidebar(props: { sessionID: string; overlay?: boolean; showScrollbar?: boolean }) {
const sync = useSync()
const { theme } = useTheme()
const session = createMemo(() => sync.session.get(props.sessionID)!)
Expand Down Expand Up @@ -83,6 +83,7 @@ export function Sidebar(props: { sessionID: string; overlay?: boolean }) {
<scrollbox
flexGrow={1}
verticalScrollbarOptions={{
visible: props.showScrollbar,
trackOptions: {
backgroundColor: theme.background,
foregroundColor: theme.borderActive,
Expand Down