From 6b0b637636174e670199e5a8fb6679ab5a536a6b Mon Sep 17 00:00:00 2001 From: Leopoldadmin Date: Mon, 29 Jun 2026 00:34:39 +0200 Subject: [PATCH] fix: collab sync no longer overwrites layers with empty array - Root cause: App.tsx collab sync effect called setLayers(collab.layers) even when collab.layers was empty, wiping out initialLayers - Effect: RenderEngine.render() iterates layers to draw elements; with 0 layers, no elements render (appear to disappear) - Fix: guard against empty collab.layers Fixes: drawing tools work on desktop and mobile, objects persist after release --- frontend/src/App.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 0dd05e5..2b77f01 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -299,9 +299,12 @@ const CADEditor: React.FC = ({ projectId, token, onNavigateBack setElements(merged); } - const sameLayers = collab.layers.length === layers.length && - collab.layers.every((l, i) => l.id === layers[i]?.id); - if (!sameLayers) setLayers(collab.layers); + // Never overwrite local layers with empty remote layers (prevents losing initialLayers) + if (collab.layers.length > 0) { + const sameLayers = collab.layers.length === layers.length && + collab.layers.every((l, i) => l.id === layers[i]?.id); + if (!sameLayers) setLayers(collab.layers); + } const sameBlocks = collab.blocks.length === blocks.length && collab.blocks.every((b, i) => b.id === blocks[i]?.id);