From 1625b59e43e4a71966cce30d1bdb8ed570db3a2e Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 1 Mar 2026 01:23:04 +0800 Subject: [PATCH] fix(canvas): backfill chat history media into canvas --- components/canvas/CanvasChatPanel.tsx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/components/canvas/CanvasChatPanel.tsx b/components/canvas/CanvasChatPanel.tsx index b3b264db0..7e0851567 100644 --- a/components/canvas/CanvasChatPanel.tsx +++ b/components/canvas/CanvasChatPanel.tsx @@ -2934,11 +2934,7 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF if (loadedHistorySignatureRef.current === signature) return; loadedHistorySignatureRef.current = signature; - processedMessageIds.current = new Set( - historyMessages - .filter((message) => message.role === "assistant") - .map((message) => message.id) - ); + processedMessageIds.current = new Set(); hasHydratedHistoryRef.current = true; setMessages(historyMessages); setMessageViewportKey((prev) => prev + 1); @@ -3127,6 +3123,17 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF imageUrlSet.add(rawUrl); }); + const legacyContent = + typeof (message as any).content === "string" + ? (message as any).content + : ""; + if (legacyContent) { + extractAssistantImageUrls(legacyContent, nearestUserImageKeys).forEach((url) => + imageUrlSet.add(url) + ); + extractVideoUrls(legacyContent).forEach((url) => videoUrlSet.add(url)); + } + const imageUrls = Array.from(imageUrlSet); const videoUrls = Array.from(videoUrlSet); if (imageUrls.length === 0 && videoUrls.length === 0) continue;