diff options
| author | adamelmore <[email protected]> | 2026-01-23 23:18:54 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-24 07:00:41 -0600 |
| commit | da8f3e92a7bbc3b288f89f6b535b72b94c1d1c19 (patch) | |
| tree | aca02084c140751929532c2bb86caa847997f63c /packages/app | |
| parent | 04b511e1fe135b70256c6aa4f41b81ce2571276c (diff) | |
| download | opencode-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.tsx | 42 |
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" |
