diff options
| author | Aiden Cline <[email protected]> | 2026-01-11 22:41:10 -0600 |
|---|---|---|
| committer | Aiden Cline <[email protected]> | 2026-01-11 22:43:09 -0600 |
| commit | a5b6c57a76a00f367b4d683cce0681c88596b90e (patch) | |
| tree | fdcc7b1f068ce2735ec9134dcebb4613a56d6f9a /packages | |
| parent | 65724b693b246ae799147d164610de9f9d5ffd1a (diff) | |
| download | opencode-a5b6c57a76a00f367b4d683cce0681c88596b90e.tar.gz opencode-a5b6c57a76a00f367b4d683cce0681c88596b90e.zip | |
tweak: make the subagent header have clickable nav
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/opencode/src/cli/cmd/tui/routes/session/header.tsx | 44 |
1 files changed, 34 insertions, 10 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 74cc9af4e..0b690cfac 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/header.tsx @@ -1,10 +1,11 @@ -import { type Accessor, createMemo, Match, Show, Switch } from "solid-js" +import { type Accessor, createMemo, createSignal, Match, Show, Switch } from "solid-js" import { useRouteData } from "@tui/context/route" import { useSync } from "@tui/context/sync" import { pipe, sumBy } from "remeda" import { useTheme } from "@tui/context/theme" import { SplitBorder } from "@tui/component/border" import type { AssistantMessage, Session } from "@opencode-ai/sdk/v2" +import { useCommandDialog } from "@tui/component/dialog-command" import { useKeybind } from "../../context/keybind" const Title = (props: { session: Accessor<Session> }) => { @@ -59,6 +60,8 @@ export function Header() { const { theme } = useTheme() const keybind = useKeybind() + const command = useCommandDialog() + const [hover, setHover] = createSignal<"parent" | "prev" | "next" | null>(null) return ( <box flexShrink={0}> @@ -79,15 +82,36 @@ export function Header() { <text fg={theme.text}> <b>Subagent session</b> </text> - <text fg={theme.text}> - Parent <span style={{ fg: theme.textMuted }}>{keybind.print("session_parent")}</span> - </text> - <text fg={theme.text}> - Prev <span style={{ fg: theme.textMuted }}>{keybind.print("session_child_cycle_reverse")}</span> - </text> - <text fg={theme.text}> - Next <span style={{ fg: theme.textMuted }}>{keybind.print("session_child_cycle")}</span> - </text> + <box + onMouseOver={() => setHover("parent")} + onMouseOut={() => setHover(null)} + onMouseUp={() => command.trigger("session.parent")} + backgroundColor={hover() === "parent" ? theme.backgroundElement : theme.backgroundPanel} + > + <text fg={theme.text}> + Parent <span style={{ fg: theme.textMuted }}>{keybind.print("session_parent")}</span> + </text> + </box> + <box + onMouseOver={() => setHover("prev")} + onMouseOut={() => setHover(null)} + onMouseUp={() => command.trigger("session.child.previous")} + backgroundColor={hover() === "prev" ? theme.backgroundElement : theme.backgroundPanel} + > + <text fg={theme.text}> + Prev <span style={{ fg: theme.textMuted }}>{keybind.print("session_child_cycle_reverse")}</span> + </text> + </box> + <box + onMouseOver={() => setHover("next")} + onMouseOut={() => setHover(null)} + onMouseUp={() => command.trigger("session.child.next")} + backgroundColor={hover() === "next" ? theme.backgroundElement : theme.backgroundPanel} + > + <text fg={theme.text}> + Next <span style={{ fg: theme.textMuted }}>{keybind.print("session_child_cycle")}</span> + </text> + </box> <box flexGrow={1} flexShrink={1} /> <ContextInfo context={context} cost={cost} /> </box> |
