summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax <[email protected]>2026-01-07 23:51:49 -0500
committerGitHub <[email protected]>2026-01-07 23:51:49 -0500
commitca7a70b628ebd5ae8a00c4cc632a5281c77a479f (patch)
treeb8ba493e23c7725f818d76e1e42daf80456a0cc4
parentb3a2f9fb4ee00b5ad4ce24e2dad2abe1da3024ee (diff)
downloadopencode-ca7a70b628ebd5ae8a00c4cc632a5281c77a479f.tar.gz
opencode-ca7a70b628ebd5ae8a00c4cc632a5281c77a479f.zip
tui: add overlay sidebar for narrow screens to improve mobile experience (#7288)
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/header.tsx18
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/index.tsx19
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx3
3 files changed, 20 insertions, 20 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
index 098ee83cc..ce07dae79 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx
@@ -99,24 +99,6 @@ export function Header() {
<Title session={session} />
<ContextInfo context={context} cost={cost} />
</box>
- <Show when={shareEnabled()}>
- <box flexDirection="row" justifyContent="space-between" gap={1}>
- <box flexGrow={1} flexShrink={1}>
- <Switch>
- <Match when={session().share?.url}>
- <text fg={theme.textMuted} wrapMode="word">
- {session().share!.url}
- </text>
- </Match>
- <Match when={true}>
- <text fg={theme.text} wrapMode="word">
- /share <span style={{ fg: theme.textMuted }}>copy link</span>
- </text>
- </Match>
- </Switch>
- </box>
- </box>
- </Show>
</Match>
</Switch>
</box>
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 dbd6743c8..659892b17 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
@@ -1053,7 +1053,24 @@ export function Session() {
<Toast />
</box>
<Show when={sidebarVisible()}>
- <Sidebar sessionID={route.sessionID} />
+ <Switch>
+ <Match when={wide()}>
+ <Sidebar sessionID={route.sessionID} />
+ </Match>
+ <Match when={!wide()}>
+ <box
+ position="absolute"
+ top={0}
+ left={0}
+ right={0}
+ bottom={0}
+ alignItems="flex-end"
+ backgroundColor={RGBA.fromInts(0, 0, 0, 70)}
+ >
+ <Sidebar sessionID={route.sessionID} />
+ </box>
+ </Match>
+ </Switch>
</Show>
</box>
</context.Provider>
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 98b8cd6d3..c0f4bd74a 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx
@@ -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 }) {
+export function Sidebar(props: { sessionID: string; overlay?: boolean }) {
const sync = useSync()
const { theme } = useTheme()
const session = createMemo(() => sync.session.get(props.sessionID)!)
@@ -77,6 +77,7 @@ export function Sidebar(props: { sessionID: string }) {
paddingBottom={1}
paddingLeft={2}
paddingRight={2}
+ position={props.overlay ? "absolute" : "relative"}
>
<scrollbox flexGrow={1}>
<box flexShrink={0} gap={1} paddingRight={1}>