Skip to content

Commit e03a411

Browse files
thdxropencode
authored andcommitted
tui: keep assistant footer from crashing after compaction
1 parent 37bb07e commit e03a411

File tree

1 file changed

+12
-11
lines changed
  • packages/opencode/src/cli/cmd/tui/routes/session

1 file changed

+12
-11
lines changed

packages/opencode/src/cli/cmd/tui/routes/session/index.tsx

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -860,11 +860,6 @@ export function Session() {
860860
</Match>
861861
<Match when={message.role === "assistant"}>
862862
<AssistantMessage
863-
user={
864-
messages().findLast(
865-
(item) => item.id === (message as AssistantMessage).parentID,
866-
) as UserMessage
867-
}
868863
last={lastAssistant()?.id === message.id}
869864
message={message as AssistantMessage}
870865
parts={sync.data.part[message.id] ?? []}
@@ -998,10 +993,19 @@ function UserMessage(props: {
998993
)
999994
}
1000995

1001-
function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; last: boolean; user: UserMessage }) {
996+
function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; last: boolean }) {
1002997
const local = useLocal()
1003998
const { theme } = useTheme()
1004-
const ctx = use()
999+
const sync = useSync()
1000+
const messages = createMemo(() => sync.data.message[props.message.sessionID] ?? [])
1001+
1002+
const duration = createMemo(() => {
1003+
if (!props.message.time.completed) return 0
1004+
const user = messages().find((x) => x.role === "user" && x.id === props.message.parentID)
1005+
if (!user) return 0
1006+
return props.message.time.completed - user.time.created
1007+
})
1008+
10051009
return (
10061010
<>
10071011
<For each={props.parts}>
@@ -1047,10 +1051,7 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las
10471051
<span style={{ fg: theme.text }}>{Locale.titlecase(props.message.mode)}</span>{" "}
10481052
<span style={{ fg: theme.textMuted }}>{props.message.modelID}</span>
10491053
<Show when={props.message.time.completed}>
1050-
<span style={{ fg: theme.textMuted }}>
1051-
{" "}
1052-
{Locale.duration(props.message.time.completed! - props.user.time.created)}
1053-
</span>
1054+
<span style={{ fg: theme.textMuted }}>{Locale.duration(duration())}</span>
10541055
</Show>
10551056
</text>
10561057
</box>

0 commit comments

Comments
 (0)