diff options
| author | Dax Raad <[email protected]> | 2025-11-22 13:00:09 -0500 |
|---|---|---|
| committer | opencode <[email protected]> | 2025-11-22 18:00:54 +0000 |
| commit | e03a41144a5b726438c0fd67cd27ae151acfb7b8 (patch) | |
| tree | 7380b211eac71160a4f31d0db2193ee11aa8bfb5 | |
| parent | 37bb07e7a313d7150038061dbba670410eb0469d (diff) | |
| download | opencode-e03a41144a5b726438c0fd67cd27ae151acfb7b8.tar.gz opencode-e03a41144a5b726438c0fd67cd27ae151acfb7b8.zip | |
tui: keep assistant footer from crashing after compaction
| -rw-r--r-- | packages/opencode/src/cli/cmd/tui/routes/session/index.tsx | 23 |
1 files changed, 12 insertions, 11 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 71c171b0d..c333406e4 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -860,11 +860,6 @@ export function Session() { </Match> <Match when={message.role === "assistant"}> <AssistantMessage - user={ - messages().findLast( - (item) => item.id === (message as AssistantMessage).parentID, - ) as UserMessage - } last={lastAssistant()?.id === message.id} message={message as AssistantMessage} parts={sync.data.part[message.id] ?? []} @@ -998,10 +993,19 @@ function UserMessage(props: { ) } -function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; last: boolean; user: UserMessage }) { +function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; last: boolean }) { const local = useLocal() const { theme } = useTheme() - const ctx = use() + const sync = useSync() + const messages = createMemo(() => sync.data.message[props.message.sessionID] ?? []) + + const duration = createMemo(() => { + if (!props.message.time.completed) return 0 + const user = messages().find((x) => x.role === "user" && x.id === props.message.parentID) + if (!user) return 0 + return props.message.time.completed - user.time.created + }) + return ( <> <For each={props.parts}> @@ -1047,10 +1051,7 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las <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}> - <span style={{ fg: theme.textMuted }}> - {" "} - ⬝{Locale.duration(props.message.time.completed! - props.user.time.created)} - </span> + <span style={{ fg: theme.textMuted }}> ⬝{Locale.duration(duration())}</span> </Show> </text> </box> |
