@@ -14,6 +14,7 @@ import {
1414 untrack ,
1515 useContext ,
1616} from "solid-js"
17+ import { createStore , reconcile } from "solid-js/store"
1718import path from "node:path"
1819import { mkdir , writeFile } from "node:fs/promises"
1920import { useRoute , useRouteData } from "../../context/route"
@@ -76,7 +77,7 @@ import { DialogExportOptions } from "../../ui/dialog-export-options"
7677import * as Model from "../../util/model"
7778import { formatTranscript } from "../../util/transcript"
7879import { sessionEpilogue } from "../../util/presentation"
79- import { projectContinuationMessages } from "../../util/session-continuation"
80+ import { projectContinuationMessages , type MessageWithParts } from "../../util/session-continuation"
8081import { setPreLayoutSiblingMargin } from "../../util/layout"
8182import { useTuiConfig } from "../../config"
8283import { useClipboard } from "../../context/clipboard"
@@ -269,11 +270,16 @@ export function Session() {
269270 . toSorted ( ( a , b ) => ( a . id < b . id ? - 1 : a . id > b . id ? 1 : 0 ) )
270271 } )
271272 const messages = createMemo ( ( ) => sync . data . message [ route . sessionID ] ?? [ ] )
272- const displayMessages = createMemo ( ( ) =>
273- projectContinuationMessages (
274- messages ( ) . map ( ( message ) => ( { info : message , parts : sync . data . part [ message . id ] ?? [ ] } ) ) ,
275- ) ,
276- )
273+ const [ displayMessages , setDisplayMessages ] = createStore < Array < MessageWithParts & { id : string } > > ( [ ] )
274+ createEffect ( ( ) => {
275+ setDisplayMessages (
276+ reconcile (
277+ projectContinuationMessages (
278+ messages ( ) . map ( ( message ) => ( { info : message , parts : sync . data . part [ message . id ] ?? [ ] } ) ) ,
279+ ) . map ( ( message ) => ( { id : message . info . id , ...message } ) ) ,
280+ ) ,
281+ )
282+ } )
277283 const hasUserMessage = createMemo ( ( ) => messages ( ) . some ( ( message ) => message . role === "user" ) )
278284 const canContinue = createMemo ( ( ) => {
279285 const status = sync . data . session_status [ route . sessionID ]
@@ -1446,7 +1452,7 @@ export function Session() {
14461452 scrollAcceleration = { scrollAcceleration ( ) }
14471453 >
14481454 < box height = { 1 } />
1449- < For each = { displayMessages ( ) } >
1455+ < For each = { displayMessages } >
14501456 { ( entry , index ) => {
14511457 const message = entry . info
14521458 return (
0 commit comments