From 0173d5c6047e1ebde53afa42f5966882230d8936 Mon Sep 17 00:00:00 2001 From: Matthias Meister Date: Fri, 3 Apr 2026 19:39:31 +0200 Subject: [PATCH] fix(canvas): avoid server persistence for download-only renders --- components/canvas/nodes/render-node.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/components/canvas/nodes/render-node.tsx b/components/canvas/nodes/render-node.tsx index 0e79767..4e1fcae 100644 --- a/components/canvas/nodes/render-node.tsx +++ b/components/canvas/nodes/render-node.tsx @@ -747,6 +747,11 @@ export default function RenderNode({ id, data, selected, width, height }: NodePr }); }; + const applyLocalDataImmediately = (next: PersistedRenderData) => { + localDataRef.current = next; + setLocalData(next); + }; + const handleRender = async (mode: "download" | "upload") => { if (!sourceUrl || !currentPipelineHash) { logRenderDebug("render-aborted-prerequisites", { @@ -768,7 +773,11 @@ export default function RenderNode({ id, data, selected, width, height }: NodePr lastRenderError: "Custom width and height are required.", lastRenderErrorHash: currentPipelineHash, }; - await persistImmediately(next); + if (mode === "upload") { + await persistImmediately(next); + } else { + applyLocalDataImmediately(next); + } return; } @@ -864,7 +873,7 @@ export default function RenderNode({ id, data, selected, width, height }: NodePr const shouldUploadAfterRender = mode === "upload"; if (!shouldUploadAfterRender) { - await persistImmediately(renderNext); + applyLocalDataImmediately(renderNext); return; } @@ -959,7 +968,11 @@ export default function RenderNode({ id, data, selected, width, height }: NodePr lastRenderError: message, lastRenderErrorHash: currentPipelineHash, }; - await persistImmediately(next); + if (mode === "upload") { + await persistImmediately(next); + } else { + applyLocalDataImmediately(next); + } } finally { if (runId === renderRunIdRef.current) { if (renderAbortControllerRef.current === abortController) {