From d9eb2398c28b5d626822f67f7f43fc73dee23ae5 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 31 Jan 2026 22:48:18 -0500 Subject: [PATCH 1/5] feat(tui): add UI for skill tool in session view --- .../src/cli/cmd/tui/routes/session/index.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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 49bb40298af9..d16f29853419 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -43,6 +43,7 @@ import type { ApplyPatchTool } from "@/tool/apply_patch" import type { WebFetchTool } from "@/tool/webfetch" import type { TaskTool } from "@/tool/task" import type { QuestionTool } from "@/tool/question" +import type { SkillTool } from "@/tool/skill" import { useKeyboard, useRenderer, useTerminalDimensions, type JSX } from "@opentui/solid" import { useSDK } from "@tui/context/sdk" import { useCommandDialog } from "@tui/component/dialog-command" @@ -1447,6 +1448,9 @@ function ToolPart(props: { last: boolean; part: ToolPart; message: AssistantMess + + + @@ -2038,6 +2042,14 @@ function Question(props: ToolProps) { ) } +function Skill(props: ToolProps) { + return ( + + Skill "{props.input.name}" + + ) +} + function normalizePath(input?: string) { if (!input) return "" if (path.isAbsolute(input)) { From a337be334a2a39ef61d29dae052d359096fd5048 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 31 Jan 2026 22:52:56 -0500 Subject: [PATCH 2/5] tui: simplify task display to show only description --- .../opencode/src/cli/cmd/tui/routes/session/index.tsx | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) 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 d16f29853419..80f51a08a40b 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -1829,15 +1829,8 @@ function Task(props: ToolProps) { - - {Locale.titlecase(props.input.subagent_type ?? "unknown")} Task " - {props.input.description}" + + {props.input.description} From 9911148b0fd4cd92ac9646cbb12e1542e42e9202 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 31 Jan 2026 22:53:47 -0500 Subject: [PATCH 3/5] tui: show Delegating status and bracketed description when task requires user input --- packages/opencode/src/cli/cmd/tui/routes/session/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 80f51a08a40b..86c1d9475f00 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -1829,8 +1829,8 @@ function Task(props: ToolProps) { - - {props.input.description} + + [{props.input.description}] From 9ceee043b126ad2e25bb615d2611b294618e38a3 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 31 Jan 2026 22:54:32 -0500 Subject: [PATCH 4/5] tui: display subagent type when delegating tasks to show which agent is handling the work --- packages/opencode/src/cli/cmd/tui/routes/session/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 86c1d9475f00..c483326af003 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -1829,8 +1829,8 @@ function Task(props: ToolProps) { - - [{props.input.description}] + + {props.input.subagent_type} Task {props.input.description} From 3fd04d3e28a4f0e9f34d0832a494c94076d45ac9 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 31 Jan 2026 22:55:27 -0500 Subject: [PATCH 5/5] tui: fix task visibility and tool count display Tasks now show when they have a description or subagent type rather than only when metadata.summary exists. Tool calls count always displays (shows 0 instead of undefined), and 'view subagents' hint only appears when sessionId is present. --- .../src/cli/cmd/tui/routes/session/index.tsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) 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 c483326af003..e5b3dc440678 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -1801,7 +1801,7 @@ function Task(props: ToolProps) { return ( - + ) { > - {props.input.description} ({props.metadata.summary?.length} toolcalls) + {props.input.description} ({props.metadata.summary?.length ?? 0} toolcalls) @@ -1822,10 +1822,12 @@ function Task(props: ToolProps) { - - {keybind.print("session_child_cycle")} - view subagents - + + + {keybind.print("session_child_cycle")} + view subagents + +