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 e2747ad3b7a0..661ac4d238b9 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -128,6 +128,11 @@ export function Session() { .filter((x) => x.parentID === parentID || x.id === parentID) .toSorted((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0)) }) + const subagents = createMemo(() => { + return sync.data.session + .filter((x) => x.parentID === route.sessionID) + .toSorted((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0)) + }) const messages = createMemo(() => sync.data.message[route.sessionID] ?? []) const permissions = createMemo(() => { if (session()?.parentID) return [] @@ -316,20 +321,14 @@ export function Session() { const local = useLocal() function moveFirstChild() { - if (children().length === 1) return - const next = children().find((x) => !!x.parentID) - if (next) { - navigate({ - type: "session", - sessionID: next.id, - }) - } + const next = subagents()[0] + if (!next) return + navigate({ type: "session", sessionID: next.id }) } function moveChild(direction: number) { - if (children().length === 1) return - const sessions = children().filter((x) => !!x.parentID) + if (sessions.length === 0) return let next = sessions.findIndex((x) => x.id === session()?.id) + direction if (next >= sessions.length) next = 0 @@ -1990,16 +1989,35 @@ function Task(props: ToolProps) { return content.join("\n") }) + const lines = createMemo(() => content().split("\n")) + const body = createMemo(() => lines().slice(1).join("\n")) + return ( - - {content()} - + + + navigate({ type: "session", sessionID: props.metadata.sessionId! })} + > + + {body()} + + + + + + {content()} + + + ) }