e5fd74d63da4ee0459b193922db3441641b595ce
useWhpApi's load() called actions.deserialize() directly on the first page's stored craftState, bypassing repairOrphanNodes -- unlike PageContext.loadState, which runs it on every subsequent page switch. An orphaned node (unreachable from ROOT, invisible to Layers/selection) in a saved project would get silently repaired on the next page switch but not on the load that actually renders it first. Route the initial deserialize through the same repair call, with the same console.warn, so both paths behave identically. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Description
Visual drag-and-drop website builder using GrapesJS
3.5 MiB
Languages
TypeScript
64.8%
HTML
16.1%
JavaScript
14.9%
CSS
3.2%
PHP
0.7%
Other
0.3%