summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2025-11-14 21:45:48 -0800
committerGitHub <[email protected]>2025-11-14 23:45:48 -0600
commit35c737ac6834fc8178c46ccbef159bc6098ac5f8 (patch)
tree73628faad8877b525f9ff1aef60e0fc6a0d75e6e
parent725a2c2e958895f08d572d26c15571717907bf40 (diff)
downloadopencode-35c737ac6834fc8178c46ccbef159bc6098ac5f8.tar.gz
opencode-35c737ac6834fc8178c46ccbef159bc6098ac5f8.zip
tweak: only show dropdown for 3+ items (#4345)
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx48
1 files changed, 36 insertions, 12 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx
index ee83a3afc..9ba799f09 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx
@@ -60,13 +60,19 @@ export function Sidebar(props: { sessionID: string }) {
</box>
<Show when={Object.keys(sync.data.mcp).length > 0}>
<box>
- <box flexDirection="row" gap={1} onMouseDown={() => setMcpExpanded(!mcpExpanded())}>
- <text fg={theme.text}>{mcpExpanded() ? "▼" : "▶"}</text>
+ <box
+ flexDirection="row"
+ gap={1}
+ onMouseDown={() => Object.keys(sync.data.mcp).length > 2 && setMcpExpanded(!mcpExpanded())}
+ >
+ <Show when={Object.keys(sync.data.mcp).length > 2}>
+ <text fg={theme.text}>{mcpExpanded() ? "▼" : "▶"}</text>
+ </Show>
<text fg={theme.text}>
<b>MCP</b>
</text>
</box>
- <Show when={mcpExpanded()}>
+ <Show when={Object.keys(sync.data.mcp).length <= 2 || mcpExpanded()}>
<For each={Object.entries(sync.data.mcp)}>
{([key, item]) => (
<box flexDirection="row" gap={1}>
@@ -100,13 +106,19 @@ export function Sidebar(props: { sessionID: string }) {
</Show>
<Show when={sync.data.lsp.length > 0}>
<box>
- <box flexDirection="row" gap={1} onMouseDown={() => setLspExpanded(!lspExpanded())}>
- <text fg={theme.text}>{lspExpanded() ? "▼" : "▶"}</text>
+ <box
+ flexDirection="row"
+ gap={1}
+ onMouseDown={() => sync.data.lsp.length > 2 && setLspExpanded(!lspExpanded())}
+ >
+ <Show when={sync.data.lsp.length > 2}>
+ <text fg={theme.text}>{lspExpanded() ? "▼" : "▶"}</text>
+ </Show>
<text fg={theme.text}>
<b>LSP</b>
</text>
</box>
- <Show when={lspExpanded()}>
+ <Show when={sync.data.lsp.length <= 2 || lspExpanded()}>
<For each={sync.data.lsp}>
{(item) => (
<box flexDirection="row" gap={1}>
@@ -132,13 +144,19 @@ export function Sidebar(props: { sessionID: string }) {
</Show>
<Show when={todo().length > 0}>
<box>
- <box flexDirection="row" gap={1} onMouseDown={() => setTodoExpanded(!todoExpanded())}>
- <text fg={theme.text}>{todoExpanded() ? "▼" : "▶"}</text>
+ <box
+ flexDirection="row"
+ gap={1}
+ onMouseDown={() => todo().length > 2 && setTodoExpanded(!todoExpanded())}
+ >
+ <Show when={todo().length > 2}>
+ <text fg={theme.text}>{todoExpanded() ? "▼" : "▶"}</text>
+ </Show>
<text fg={theme.text}>
<b>Todo</b>
</text>
</box>
- <Show when={todoExpanded()}>
+ <Show when={todo().length <= 2 || todoExpanded()}>
<For each={todo()}>
{(todo) => (
<text style={{ fg: todo.status === "in_progress" ? theme.success : theme.textMuted }}>
@@ -151,13 +169,19 @@ export function Sidebar(props: { sessionID: string }) {
</Show>
<Show when={diff().length > 0}>
<box>
- <box flexDirection="row" gap={1} onMouseDown={() => setDiffExpanded(!diffExpanded())}>
- <text fg={theme.text}>{diffExpanded() ? "▼" : "▶"}</text>
+ <box
+ flexDirection="row"
+ gap={1}
+ onMouseDown={() => diff().length > 2 && setDiffExpanded(!diffExpanded())}
+ >
+ <Show when={diff().length > 2}>
+ <text fg={theme.text}>{diffExpanded() ? "▼" : "▶"}</text>
+ </Show>
<text fg={theme.text}>
<b>Modified Files</b>
</text>
</box>
- <Show when={diffExpanded()}>
+ <Show when={diff().length <= 2 || diffExpanded()}>
<For each={diff() || []}>
{(item) => {
const file = createMemo(() => {