summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-24 10:35:52 -0600
committerAdam <[email protected]>2025-12-24 10:35:52 -0600
commit126d887e57d47a7b6e18bca9cedcb76458c5acaa (patch)
tree360d09b16dc026f9b31e545839f1bc9aa3c9160a
parente5cfc24d6ba66c73c3609bb517546b288abedb93 (diff)
downloadopencode-126d887e57d47a7b6e18bca9cedcb76458c5acaa.tar.gz
opencode-126d887e57d47a7b6e18bca9cedcb76458c5acaa.zip
fix(desktop): last text part streaming
-rw-r--r--packages/ui/src/components/message-part.tsx3
-rw-r--r--packages/ui/src/components/session-turn.tsx7
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>