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 9089d525da..3334111cd1 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
@@ -1112,7 +1112,7 @@ export function Session() {
0}>
-
+
{
prompt = r
@@ -1537,8 +1537,10 @@ function InlineTool(props: { icon: string; complete: any; pending: string; child
)
}
-function BlockTool(props: { title: string; children: JSX.Element }) {
+function BlockTool(props: { title: string; children: JSX.Element; onClick?: () => void }) {
const { theme } = useTheme()
+ const renderer = useRenderer()
+ const [hover, setHover] = createSignal(false)
return (
props.onClick && setHover(true)}
+ onMouseOut={() => setHover(false)}
+ onMouseUp={() => {
+ if (renderer.getSelection()?.getSelectedText()) return
+ props.onClick?.()
+ }}
>
{props.title}
@@ -1697,13 +1705,21 @@ function WebSearch(props: ToolProps) {
function Task(props: ToolProps) {
const { theme } = useTheme()
const keybind = useKeybind()
+ const { navigate } = useRoute()
const current = createMemo(() => props.metadata.summary?.findLast((x) => x.state.status !== "pending"))
return (
-
+ navigate({ type: "session", sessionID: props.metadata.sessionId! })
+ : undefined
+ }
+ >
{props.input.description} ({props.metadata.summary?.length} toolcalls)
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/permission.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/permission.tsx
index 06620ab66c..9e944c330f 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/permission.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/permission.tsx
@@ -49,7 +49,7 @@ function EditBody(props: { request: PermissionRequest }) {
Edit {normalizePath(filepath())}
-
+
>(props: {