diff options
| author | Adam <[email protected]> | 2025-12-24 10:35:52 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-24 10:35:52 -0600 |
| commit | 126d887e57d47a7b6e18bca9cedcb76458c5acaa (patch) | |
| tree | 360d09b16dc026f9b31e545839f1bc9aa3c9160a | |
| parent | e5cfc24d6ba66c73c3609bb517546b288abedb93 (diff) | |
| download | opencode-126d887e57d47a7b6e18bca9cedcb76458c5acaa.tar.gz opencode-126d887e57d47a7b6e18bca9cedcb76458c5acaa.zip | |
fix(desktop): last text part streaming
| -rw-r--r-- | packages/ui/src/components/message-part.tsx | 3 | ||||
| -rw-r--r-- | packages/ui/src/components/session-turn.tsx | 7 |
2 files changed, 4 insertions, 6 deletions
diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx index 314cbc326..1424041e8 100644 --- a/packages/ui/src/components/message-part.tsx +++ b/packages/ui/src/components/message-part.tsx @@ -415,8 +415,7 @@ PART_MAPPING["tool"] = function ToolPartDisplay(props) { PART_MAPPING["text"] = function TextPartDisplay(props) { const data = useData() const part = props.part as TextPart - const content = createMemo(() => (part.text ?? "").trim()) - const displayText = createMemo(() => relativizeProjectPaths(content(), data.directory)) + const displayText = () => relativizeProjectPaths((part.text ?? "").trim(), data.directory) return ( <Show when={displayText()}> diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx index 15157df62..a160f4ba3 100644 --- a/packages/ui/src/components/session-turn.tsx +++ b/packages/ui/src/components/session-turn.tsx @@ -65,6 +65,7 @@ function AssistantMessageItem(props: { summary: string | undefined response: string | undefined lastTextPartId: string | undefined + working: boolean }) { const data = useData() const msgParts = createMemo(() => data.store.part[props.message.id] ?? []) @@ -74,9 +75,8 @@ function AssistantMessageItem(props: { .at(-1), ) - // Only filter when this message contains the last text part and we're showing response instead of summary const filteredParts = createMemo(() => { - if (!props.summary && props.response && props.lastTextPartId === lastTextPart()?.id) { + if (!props.working && !props.summary && props.response && props.lastTextPartId === lastTextPart()?.id) { return msgParts().filter((p) => p?.id !== lastTextPart()?.id) } return msgParts() @@ -102,9 +102,7 @@ export function SessionTurn( const data = useData() const diffComponent = useDiffComponent() - // Split the derived computation into separate memos to avoid unnecessary recalculations const allMessages = createMemo(() => data.store.message[props.sessionID] ?? []) - const userMessages = createMemo(() => allMessages() .filter((m) => m.role === "user") @@ -441,6 +439,7 @@ export function SessionTurn( summary={summary()} response={response()} lastTextPartId={lastTextPart()?.id} + working={working()} /> )} </For> |
