diff --git a/apps/web/src/components/chat/MessagesTimeline.logic.ts b/apps/web/src/components/chat/MessagesTimeline.logic.ts index afdfdaa3d2..2fdb044235 100644 --- a/apps/web/src/components/chat/MessagesTimeline.logic.ts +++ b/apps/web/src/components/chat/MessagesTimeline.logic.ts @@ -2285,12 +2285,11 @@ export function deriveMessagesTimelineRowsWithState( input: MessagesTimelineRowsInput, previous: MessagesTimelineRowsProjection | null = null, ): MessagesTimelineRowsProjection { - return { - input, - rows: - (previous === null ? null : replaceStreamingMessageRows(input, previous)) ?? - deriveMessagesTimelineRows(input), - }; + const reused = previous === null ? null : replaceStreamingMessageRows(input, previous); + const probe = Reflect.get(globalThis, "issue24120Rows") ?? []; + probe.push({ at: Date.now(), reused: reused !== null, entries: input.timelineEntries }); + Reflect.set(globalThis, "issue24120Rows", probe); + return { input, rows: reused ?? deriveMessagesTimelineRows(input) }; } export function computeStableMessagesTimelineRows( diff --git a/apps/web/src/session-logic.ts b/apps/web/src/session-logic.ts index c170ec73e3..b68fbd5a26 100644 --- a/apps/web/src/session-logic.ts +++ b/apps/web/src/session-logic.ts @@ -1086,6 +1086,9 @@ export function deriveTimelineEntriesFromVisibleTurnItemsWithState( previous: TimelineEntriesProjection | null = null, ): TimelineEntriesProjection { const reused = previous === null ? null : reuseTimelineEntries(input, previous); + const probe = Reflect.get(globalThis, "issue24120Entries") ?? []; + probe.push({ at: Date.now(), reused: reused !== null, items: input.visibleTurnItems, plans: input.plans }); + Reflect.set(globalThis, "issue24120Entries", probe); if (reused !== null) return { input, entries: reused }; const entries = deriveTimelineEntriesFromVisibleTurnItems(input); if (previous === null || !shallow(input.attachmentUrlById, previous.input.attachmentUrlById)) {