summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-11-22 17:28:41 -0500
committerDax Raad <[email protected]>2025-11-22 17:28:50 -0500
commitbcea8ed593a253c020c180afcd98aa83334d6384 (patch)
tree3ef38021ba1dea461c0c3d12b6ddff64352f3700
parentf93bb1dd21fd2d9b8a1e4f10f849b513e8bdeb8f (diff)
downloadopencode-bcea8ed593a253c020c180afcd98aa83334d6384.tar.gz
opencode-bcea8ed593a253c020c180afcd98aa83334d6384.zip
tui: fix message completion timing and duration display in session view
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/index.tsx17
1 files changed, 7 insertions, 10 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 193e2c4ed..820857671 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
@@ -999,7 +999,12 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las
const sync = useSync()
const messages = createMemo(() => sync.data.message[props.message.sessionID] ?? [])
+ const final = createMemo(() => {
+ return props.message.finish && !["tool-calls", "unknown"].includes(props.message.finish)
+ })
+
const duration = createMemo(() => {
+ if (!final()) return 0
if (!props.message.time.completed) return 0
const user = messages().find((x) => x.role === "user" && x.id === props.message.parentID)
if (!user) return 0
@@ -1038,21 +1043,13 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las
</box>
</Show>
<Switch>
- <Match
- when={
- (props.message.time.completed &&
- props.parts.some(
- (item) => item.type === "step-finish" && !["tool-calls", "unknown"].includes(item.reason),
- )) ||
- props.last
- }
- >
+ <Match when={props.last || final()}>
<box paddingLeft={3}>
<text marginTop={1}>
<span style={{ fg: local.agent.color(props.message.mode) }}>▣</span>{" "}
<span style={{ fg: theme.text }}>{Locale.titlecase(props.message.mode)}</span>{" "}
<span style={{ fg: theme.textMuted }}>⬝{props.message.modelID}</span>
- <Show when={props.message.time.completed}>
+ <Show when={duration()}>
<span style={{ fg: theme.textMuted }}> ⬝{Locale.duration(duration())}</span>
</Show>
</text>