diff options
| author | Dax Raad <[email protected]> | 2025-11-22 17:28:41 -0500 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-11-22 17:28:50 -0500 |
| commit | bcea8ed593a253c020c180afcd98aa83334d6384 (patch) | |
| tree | 3ef38021ba1dea461c0c3d12b6ddff64352f3700 | |
| parent | f93bb1dd21fd2d9b8a1e4f10f849b513e8bdeb8f (diff) | |
| download | opencode-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.tsx | 17 |
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> |
