summaryrefslogtreecommitdiffhomepage
path: root/packages/app
diff options
context:
space:
mode:
authoradamelmore <[email protected]>2026-01-23 23:18:54 -0600
committerAdam <[email protected]>2026-01-24 07:00:41 -0600
commitda8f3e92a7bbc3b288f89f6b535b72b94c1d1c19 (patch)
treeaca02084c140751929532c2bb86caa847997f63c /packages/app
parent04b511e1fe135b70256c6aa4f41b81ce2571276c (diff)
downloadopencode-da8f3e92a7bbc3b288f89f6b535b72b94c1d1c19.tar.gz
opencode-da8f3e92a7bbc3b288f89f6b535b72b94c1d1c19.zip
perf(app): better session stream rendering
Diffstat (limited to 'packages/app')
-rw-r--r--packages/app/src/pages/session.tsx42
1 files changed, 29 insertions, 13 deletions
diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index c5997193f..2fc4ab62c 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -316,12 +316,22 @@ export default function Page() {
return sync.session.history.loading(id)
})
const emptyUserMessages: UserMessage[] = []
- const userMessages = createMemo(() => messages().filter((m) => m.role === "user") as UserMessage[], emptyUserMessages)
- const visibleUserMessages = createMemo(() => {
- const revert = revertMessageID()
- if (!revert) return userMessages()
- return userMessages().filter((m) => m.id < revert)
- }, emptyUserMessages)
+ const userMessages = createMemo(
+ () => messages().filter((m) => m.role === "user") as UserMessage[],
+ emptyUserMessages,
+ { equals: same },
+ )
+ const visibleUserMessages = createMemo(
+ () => {
+ const revert = revertMessageID()
+ if (!revert) return userMessages()
+ return userMessages().filter((m) => m.id < revert)
+ },
+ emptyUserMessages,
+ {
+ equals: same,
+ },
+ )
const lastUserMessage = createMemo(() => visibleUserMessages().at(-1))
createEffect(
@@ -347,13 +357,19 @@ export default function Page() {
promptHeight: 0,
})
- const renderedUserMessages = createMemo(() => {
- const msgs = visibleUserMessages()
- const start = store.turnStart
- if (start <= 0) return msgs
- if (start >= msgs.length) return emptyUserMessages
- return msgs.slice(start)
- }, emptyUserMessages)
+ const renderedUserMessages = createMemo(
+ () => {
+ const msgs = visibleUserMessages()
+ const start = store.turnStart
+ if (start <= 0) return msgs
+ if (start >= msgs.length) return emptyUserMessages
+ return msgs.slice(start)
+ },
+ emptyUserMessages,
+ {
+ equals: same,
+ },
+ )
const newSessionWorktree = createMemo(() => {
if (store.newSessionWorktree === "create") return "create"