Split out of #729 (review note). Materials had the same gap on the import side; #729 fixes materials — collections have it on both sides:
handleSaveBuild (packages/editor/src/components/ui/sidebar/panels/settings-panel/index.tsx) exports { nodes, rootNodeIds, installedPlugins } — no collections.
validateBuildJson (packages/core/src/validation/validate-build-json.ts) has no collections pass, so even a hand-added table is silently dropped.
handleConfirmImport doesn't pass collections to setScene — although setScene already accepts extra.collections, and the hosted loader round-trips them.
Repro: create a collection, Save Build, Load Build the same file → collection gone.
Fix shape mirrors #729: include collections in the saved sceneData, add a validated pass in validateBuildJson (per-entry skip + warning naming the skipped ids), pass through to setScene.
Split out of #729 (review note). Materials had the same gap on the import side; #729 fixes materials — collections have it on both sides:
handleSaveBuild(packages/editor/src/components/ui/sidebar/panels/settings-panel/index.tsx) exports{ nodes, rootNodeIds, installedPlugins }— nocollections.validateBuildJson(packages/core/src/validation/validate-build-json.ts) has nocollectionspass, so even a hand-added table is silently dropped.handleConfirmImportdoesn't pass collections tosetScene— althoughsetScenealready acceptsextra.collections, and the hosted loader round-trips them.Repro: create a collection, Save Build, Load Build the same file → collection gone.
Fix shape mirrors #729: include
collectionsin the savedsceneData, add a validated pass invalidateBuildJson(per-entry skip + warning naming the skipped ids), pass through tosetScene.