@volter/editor-core 0.5.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BUNDLED_NOTICES +1527 -0
- package/LICENSE +686 -0
- package/LICENSE-APACHE +202 -0
- package/NOTICE +18 -0
- package/README.md +24 -0
- package/dist/build/chunk-JS4D4XZ3.js +175 -0
- package/dist/build/chunk-JS4D4XZ3.js.map +7 -0
- package/dist/build/vite-plugin-product-contributions.js +100 -0
- package/dist/build/vite-plugin-product-contributions.js.map +7 -0
- package/dist/build/vite-plugin-shared-react.js +25 -0
- package/dist/build/vite-plugin-shared-react.js.map +7 -0
- package/dist/build/vite-plugin-shared-three.js +86 -0
- package/dist/build/vite-plugin-shared-three.js.map +7 -0
- package/dist/server/chunk-KMJC7AGO.js +98 -0
- package/dist/server/chunk-KMJC7AGO.js.map +7 -0
- package/dist/server/chunk-PSILUMGS.js +46 -0
- package/dist/server/chunk-PSILUMGS.js.map +7 -0
- package/dist/server/frame-proxy.js +255 -0
- package/dist/server/frame-proxy.js.map +7 -0
- package/dist/server/open-browser.js +53 -0
- package/dist/server/open-browser.js.map +7 -0
- package/dist/server/process-shutdown.js +127 -0
- package/dist/server/process-shutdown.js.map +7 -0
- package/dist/server/session-registry.js +141 -0
- package/dist/server/session-registry.js.map +7 -0
- package/dist/server/spawn-opener.js +11 -0
- package/dist/server/spawn-opener.js.map +7 -0
- package/dist/server/worktree-identity.js +11 -0
- package/dist/server/worktree-identity.js.map +7 -0
- package/dist-server/packaged.mjs +88816 -0
- package/package.json +118 -0
- package/scripts/build-plugins.mjs +14 -0
- package/scripts/build-server.mjs +26 -0
- package/scripts/build-session.mjs +9 -0
- package/server/account-credentials.ts +60 -0
- package/server/account-service.ts +1434 -0
- package/server/adapter-region-includes.ts +47 -0
- package/server/asset-catalog-v2.ts +175 -0
- package/server/asset-history-snapshots.ts +196 -0
- package/server/asset-ledger-store.ts +195 -0
- package/server/asset-library-routes.ts +1595 -0
- package/server/blender-wasm-artifact.ts +430 -0
- package/server/boot-timings.ts +106 -0
- package/server/canonical-path.ts +50 -0
- package/server/checkout-workspace-preflight.ts +349 -0
- package/server/cloud-asset-catalog.ts +158 -0
- package/server/coding-inference-launch.ts +237 -0
- package/server/collaboration-account-client.ts +202 -0
- package/server/collaboration-attribution.ts +122 -0
- package/server/collaboration-session.ts +934 -0
- package/server/comfyui-bridge.ts +248 -0
- package/server/console-ledger.ts +499 -0
- package/server/creation-site-transform.ts +304 -0
- package/server/creation-site-write.ts +648 -0
- package/server/data-file-serialize.ts +158 -0
- package/server/editor-brand-html.ts +72 -0
- package/server/editor-control-socket.ts +366 -0
- package/server/editor-server-options.ts +190 -0
- package/server/editor-server.ts +1483 -0
- package/server/editor-sse.ts +352 -0
- package/server/engine-provenance.ts +169 -0
- package/server/engine-source-restart.ts +117 -0
- package/server/frame-bridge.ts +115 -0
- package/server/frame-proxy.ts +490 -0
- package/server/frame-workbench.ts +259 -0
- package/server/frontend-handoff.ts +229 -0
- package/server/game-globals-shadow.ts +113 -0
- package/server/gameplay-session-retention.ts +149 -0
- package/server/gameplay-sessions.ts +123 -0
- package/server/generation-jobs.ts +201 -0
- package/server/generation-reconciler.ts +137 -0
- package/server/generative-execution-context.ts +59 -0
- package/server/git-workflow.ts +612 -0
- package/server/harness-chat-caller.ts +36 -0
- package/server/harness-chat-service.ts +1681 -0
- package/server/idle-shutdown.ts +170 -0
- package/server/js-profiling-policy.ts +52 -0
- package/server/launcher-settings.ts +84 -0
- package/server/local-asset-catalog.ts +410 -0
- package/server/managed-account-defaults.ts +22 -0
- package/server/mock-control-plane.ts +540 -0
- package/server/model-import-conversion.ts +345 -0
- package/server/native-credential-store.ts +162 -0
- package/server/open-browser.ts +118 -0
- package/server/packaged.ts +1192 -0
- package/server/play-stall.ts +126 -0
- package/server/process-shutdown.ts +218 -0
- package/server/product-presets.ts +55 -0
- package/server/project-build-artifact.ts +95 -0
- package/server/project-components.ts +100 -0
- package/server/project-dependency-invalidation.ts +114 -0
- package/server/project-file-scan.ts +235 -0
- package/server/project-hmr-files.ts +215 -0
- package/server/project-install-roots.ts +210 -0
- package/server/project-kinds.ts +71 -0
- package/server/project-mcp-servers.ts +82 -0
- package/server/project-module-freshness.ts +109 -0
- package/server/project-module-instance.ts +375 -0
- package/server/project-optimize-deps-entries.ts +827 -0
- package/server/project-output-writer.ts +679 -0
- package/server/project-package-origin.ts +63 -0
- package/server/project-root-surface.ts +831 -0
- package/server/project-scratch-path.ts +47 -0
- package/server/project-script-hmr.ts +619 -0
- package/server/project-serving-plugins.ts +236 -0
- package/server/project-tools.ts +653 -0
- package/server/project-validation.ts +250 -0
- package/server/project-verbs.ts +127 -0
- package/server/project-view.ts +52 -0
- package/server/project-watch.ts +1134 -0
- package/server/project-work-coordinator.ts +288 -0
- package/server/provider-credentials.ts +331 -0
- package/server/recent-projects-store.ts +98 -0
- package/server/redact-secrets.ts +71 -0
- package/server/repository-presence.ts +267 -0
- package/server/routes/account.ts +357 -0
- package/server/routes/agents.ts +60 -0
- package/server/routes/assets.ts +154 -0
- package/server/routes/build.ts +13 -0
- package/server/routes/collaboration.ts +595 -0
- package/server/routes/configurations.ts +419 -0
- package/server/routes/context.ts +264 -0
- package/server/routes/control-plane.ts +1811 -0
- package/server/routes/logs.ts +272 -0
- package/server/routes/project-identity.ts +302 -0
- package/server/routes/project-open.ts +429 -0
- package/server/routes/project-source.ts +686 -0
- package/server/routes/project-state.ts +383 -0
- package/server/routes/relay.ts +1029 -0
- package/server/routes/route-helpers.ts +29 -0
- package/server/routes/served-modules.ts +138 -0
- package/server/routes/session-tabs.ts +196 -0
- package/server/routes/settings.ts +121 -0
- package/server/routes/share-control.ts +486 -0
- package/server/routes/themes.ts +116 -0
- package/server/routes/tools.ts +230 -0
- package/server/routes/worktrees.ts +595 -0
- package/server/scoped-game-css.ts +461 -0
- package/server/server-utils.ts +1194 -0
- package/server/session-product.ts +112 -0
- package/server/session-registry.ts +230 -0
- package/server/share-claims.ts +138 -0
- package/server/share-host.ts +526 -0
- package/server/share-session-gateway.ts +1362 -0
- package/server/share-tunnel.ts +123 -0
- package/server/spawn-opener.ts +74 -0
- package/server/support/play/log-format.ts +76 -0
- package/server/support/play/session-record.ts +199 -0
- package/server/support/project/build-discipline.ts +718 -0
- package/server/support/project/inspection-node.ts +119 -0
- package/server/support/project/log-naming.ts +54 -0
- package/server/support/project/provenance.ts +290 -0
- package/server/support/project/run-name.ts +18 -0
- package/server/support/project/session-journal.ts +830 -0
- package/server/support/project/shared.ts +327 -0
- package/server/tab-bootstrap.ts +62 -0
- package/server/tab-heartbeat.ts +477 -0
- package/server/tab-lifecycle.ts +550 -0
- package/server/tab-presence.ts +1508 -0
- package/server/team-agent-mirror.ts +95 -0
- package/server/twin-auth.ts +138 -0
- package/server/vendored-lock-recorder.ts +968 -0
- package/server/worktree-identity.ts +121 -0
- package/server/worktree-management.ts +398 -0
- package/server/worktree-retention.d.mts +13 -0
- package/server/worktree-retention.mjs +205 -0
- package/src/EditorContext.tsx +169 -0
- package/src/account.ts +333 -0
- package/src/action-registry.ts +532 -0
- package/src/active-product.ts +74 -0
- package/src/active-project.ts +155 -0
- package/src/adapter-editor-config.ts +25 -0
- package/src/adapter-observation.ts +49 -0
- package/src/animation/stage-transport.ts +379 -0
- package/src/animation/three-clips-subject.ts +172 -0
- package/src/api/asset-library-wire.ts +45 -0
- package/src/api/assets.ts +365 -0
- package/src/api/base.ts +10 -0
- package/src/api/build.ts +99 -0
- package/src/api/git-wire.ts +56 -0
- package/src/api/logs.ts +92 -0
- package/src/api/project-identity.ts +74 -0
- package/src/api/project-open.ts +355 -0
- package/src/api/project-source.ts +162 -0
- package/src/api/project-state.ts +107 -0
- package/src/api/relay.ts +268 -0
- package/src/api/settings.ts +36 -0
- package/src/api/themes.ts +45 -0
- package/src/api/worktrees.ts +257 -0
- package/src/asset-compare-core.ts +171 -0
- package/src/asset-compare.ts +294 -0
- package/src/asset-editor-context.tsx +100 -0
- package/src/asset-events.ts +97 -0
- package/src/asset-inspector-actions.ts +87 -0
- package/src/asset-preview-framing.ts +357 -0
- package/src/asset-preview.ts +2802 -0
- package/src/asset-selection-viewer-registry.ts +113 -0
- package/src/asset-selection.ts +133 -0
- package/src/asset-workflow/asset-capabilities.ts +344 -0
- package/src/asset-workflow/asset-import-jobs.ts +106 -0
- package/src/asset-workflow/asset-ledger-backend.ts +126 -0
- package/src/asset-workflow/asset-ledger.ts +156 -0
- package/src/asset-workflow/asset-materialization-report.ts +140 -0
- package/src/asset-workflow/asset-pack-manifest.ts +320 -0
- package/src/asset-workflow/asset-types.ts +142 -0
- package/src/asset-workflow/asset-workflow-quality.ts +61 -0
- package/src/asset-workflow/audio-preview-player.ts +193 -0
- package/src/asset-workflow/audio-waveform.ts +22 -0
- package/src/asset-workflow/cloud-asset-client.ts +263 -0
- package/src/asset-workflow/folder-preview.ts +345 -0
- package/src/asset-workflow/hosted-asset-materialization.ts +236 -0
- package/src/asset-workflow/image-view-scale.ts +32 -0
- package/src/asset-workflow/import-contract.ts +124 -0
- package/src/asset-workflow/ledger-write-lock.ts +244 -0
- package/src/asset-workflow/model-inspection.ts +818 -0
- package/src/asset-workflow/pixi-spritesheet.ts +197 -0
- package/src/asset-workflow/preview-resource-lifetime.ts +44 -0
- package/src/asset-workflow/project-asset-commands.ts +23 -0
- package/src/asset-workflow/project-asset-health.ts +139 -0
- package/src/asset-workflow/project-asset-operations.ts +154 -0
- package/src/asset-workflow/project-asset-roots.ts +68 -0
- package/src/asset-workflow/project-content.ts +288 -0
- package/src/asset-workflow/project-source-index.ts +550 -0
- package/src/asset-workflow/thumbnail-system.ts +256 -0
- package/src/authoring/active-adapter.ts +199 -0
- package/src/authoring/active-systems.ts +422 -0
- package/src/authoring/adapter-key.ts +18 -0
- package/src/authoring/authoring-asset-url.ts +27 -0
- package/src/authoring/bootstrap-state.ts +49 -0
- package/src/authoring/boundary-authoring-adapter.ts +184 -0
- package/src/authoring/breakpoint-state.ts +43 -0
- package/src/authoring/canvas-scene-guides.ts +76 -0
- package/src/authoring/component-instance-root.ts +171 -0
- package/src/authoring/composite-authoring-adapter.ts +2110 -0
- package/src/authoring/consumer-actions.ts +520 -0
- package/src/authoring/css-numeric-style.ts +97 -0
- package/src/authoring/design-time-layers.ts +849 -0
- package/src/authoring/design-time-mount-registry.ts +235 -0
- package/src/authoring/design-time-settle.ts +343 -0
- package/src/authoring/edit-mode-authoring.ts +619 -0
- package/src/authoring/eyedropper-session.ts +60 -0
- package/src/authoring/instance-source-menu-register.ts +13 -0
- package/src/authoring/instance-source-menu.ts +135 -0
- package/src/authoring/layered-pick.ts +183 -0
- package/src/authoring/live-gesture-lock.ts +50 -0
- package/src/authoring/live-object-transform.ts +62 -0
- package/src/authoring/mount-failure-report.ts +154 -0
- package/src/authoring/mounted-root-subjects.ts +144 -0
- package/src/authoring/no-authoring-adapter.ts +55 -0
- package/src/authoring/null-inspection-subjects.tsx +75 -0
- package/src/authoring/object3d-document-persistence.ts +106 -0
- package/src/authoring/object3d-document-session-registry.ts +120 -0
- package/src/authoring/object3d-document-session.ts +1326 -0
- package/src/authoring/object3d-gesture-controller.ts +113 -0
- package/src/authoring/panel-authoring.ts +121 -0
- package/src/authoring/prefab-instance-inspector-section.tsx +237 -0
- package/src/authoring/prefab-instance-section-model.ts +55 -0
- package/src/authoring/project-authoring-session.ts +105 -0
- package/src/authoring/provenance.ts +99 -0
- package/src/authoring/quarks-particle-systems.ts +19 -0
- package/src/authoring/react-canvas-navigation.ts +255 -0
- package/src/authoring/react-design-canvas-style.ts +20 -0
- package/src/authoring/react-story-board.ts +937 -0
- package/src/authoring/selection-scope.ts +195 -0
- package/src/authoring/shell-document-ops.ts +169 -0
- package/src/authoring/shell-object3d-document-write-policy.ts +108 -0
- package/src/authoring/shell-viewport-policy.ts +48 -0
- package/src/authoring/source-object3d-authoring-adapter.ts +526 -0
- package/src/authoring/stories-scope.ts +35 -0
- package/src/authoring/story-board-chrome-fit.ts +107 -0
- package/src/authoring/story-board-presentation.ts +111 -0
- package/src/authoring/three-projection-core.ts +226 -0
- package/src/authoring/viewport-pick-context.ts +40 -0
- package/src/authoring/viewport-raycast.ts +240 -0
- package/src/authoring/viewport-tool-context.ts +73 -0
- package/src/authoring/world-canvas-viewport-state.ts +35 -0
- package/src/authoring/world-hidden-viewport.ts +152 -0
- package/src/authoring/world-pan-state.ts +198 -0
- package/src/authoring/world-session-state.ts +101 -0
- package/src/authoring/write-pipe.ts +173 -0
- package/src/availability-tick.ts +66 -0
- package/src/bitmap-label.ts +120 -0
- package/src/blender-tab-metrics.ts +161 -0
- package/src/board-open-actions.ts +20 -0
- package/src/boot-routing.ts +391 -0
- package/src/build-identity.ts +15 -0
- package/src/bytes-codec.ts +62 -0
- package/src/camera-authoring.ts +175 -0
- package/src/cancellation-reason.ts +58 -0
- package/src/canvas-preview-frames.ts +482 -0
- package/src/capture-camera-pose.ts +77 -0
- package/src/chrome-registry.ts +159 -0
- package/src/chrome-slot-registry.ts +91 -0
- package/src/collaboration-client.ts +264 -0
- package/src/collaboration-presence.ts +41 -0
- package/src/command-dispatch.ts +19 -0
- package/src/command-listener.ts +2743 -0
- package/src/command-registry.ts +70 -0
- package/src/component-board-registry.ts +205 -0
- package/src/component-states-registry.ts +200 -0
- package/src/components/AgentPresentationNotice.tsx +75 -0
- package/src/components/AlignToolbar.tsx +204 -0
- package/src/components/AppRoot.tsx +394 -0
- package/src/components/ApplicationMenus.tsx +415 -0
- package/src/components/AssetBrowser.tsx +2843 -0
- package/src/components/AssetEditorShell.tsx +216 -0
- package/src/components/AssetInspectorToolSection.tsx +124 -0
- package/src/components/BoardRulers.tsx +354 -0
- package/src/components/CameraInfo.tsx +81 -0
- package/src/components/CanvasSceneViewport.tsx +556 -0
- package/src/components/CapabilityCoverageSection.tsx +185 -0
- package/src/components/CenterDocuments.tsx +22 -0
- package/src/components/ChromeSlot.tsx +20 -0
- package/src/components/CodeView.tsx +470 -0
- package/src/components/CollaborationHeaderControl.css +74 -0
- package/src/components/CompactInspectorCard.tsx +190 -0
- package/src/components/CompactInspectorShell.tsx +39 -0
- package/src/components/ConsolePanel.css +55 -0
- package/src/components/ConsolePanel.tsx +270 -0
- package/src/components/DefaultEditorLayout.tsx +106 -0
- package/src/components/DocumentHeaderStrip.tsx +96 -0
- package/src/components/DocumentShelfRail.tsx +45 -0
- package/src/components/DocumentThumbnail.tsx +345 -0
- package/src/components/EditorLeaseGuard.tsx +372 -0
- package/src/components/ErrorBanner.tsx +123 -0
- package/src/components/FolderPreviewTile.tsx +159 -0
- package/src/components/GameHierarchy.tsx +3842 -0
- package/src/components/GameplaySessionTimeline.tsx +295 -0
- package/src/components/InspectionProjection.tsx +968 -0
- package/src/components/Inspector.tsx +233 -0
- package/src/components/InspectorCanvasPreview.tsx +35 -0
- package/src/components/InspectorFieldsSection.tsx +290 -0
- package/src/components/InspectorObjectPreview.tsx +57 -0
- package/src/components/InspectorStoriesSection.tsx +92 -0
- package/src/components/InspectorToolSection.tsx +96 -0
- package/src/components/InspectorTransformSection.tsx +245 -0
- package/src/components/LightExplorerPanel.tsx +433 -0
- package/src/components/MediaProperties.tsx +145 -0
- package/src/components/NonThreeAuthoringBootstrap.tsx +19 -0
- package/src/components/Object3DDocumentToolbar.css +100 -0
- package/src/components/Object3DDocumentToolbar.tsx +454 -0
- package/src/components/Object3DDocumentViewport.tsx +58 -0
- package/src/components/ProjectHeader.css +617 -0
- package/src/components/ProjectHeader.tsx +328 -0
- package/src/components/ProjectLayout.tsx +249 -0
- package/src/components/ReactCanvasControls.tsx +284 -0
- package/src/components/RootSelectionOverlay.tsx +3162 -0
- package/src/components/RootTextEditor.tsx +79 -0
- package/src/components/SaveStatus.tsx +70 -0
- package/src/components/StageHost.tsx +1954 -0
- package/src/components/StageOverlays.tsx +21 -0
- package/src/components/StartupErrorScreen.tsx +76 -0
- package/src/components/StartupLoadingScreen.tsx +65 -0
- package/src/components/StatsOverlay.tsx +78 -0
- package/src/components/SurfaceStateOverlay.tsx +24 -0
- package/src/components/ToolContributionSurfaces.tsx +65 -0
- package/src/components/ToolHost.tsx +370 -0
- package/src/components/ToolObject3DPreview.tsx +39 -0
- package/src/components/Toolbar.tsx +595 -0
- package/src/components/TransientHint.tsx +44 -0
- package/src/components/TransportStrip.tsx +174 -0
- package/src/components/VersionControlSection.tsx +470 -0
- package/src/components/VgaiLogo.css +83 -0
- package/src/components/VgaiLogo.tsx +35 -0
- package/src/components/ViewportControlsHint.tsx +60 -0
- package/src/components/ViewportFurniture.tsx +401 -0
- package/src/components/ViewportOverlay.tsx +145 -0
- package/src/components/ViewportOverlaysMenu.tsx +153 -0
- package/src/components/ViewportShadingMenu.tsx +300 -0
- package/src/components/ViewportViewMenu.tsx +101 -0
- package/src/components/WorkspaceDocumentSurface.tsx +204 -0
- package/src/components/WorkspaceUtilitySurface.tsx +22 -0
- package/src/components/WorktreeSwitcher.css +239 -0
- package/src/components/WorktreeSwitcher.tsx +890 -0
- package/src/components/account-documents.tsx +1162 -0
- package/src/components/asset-documents.tsx +812 -0
- package/src/components/asset-editor-persistence.ts +216 -0
- package/src/components/asset-selection-section.tsx +535 -0
- package/src/components/asset-thumbnails.tsx +312 -0
- package/src/components/asset-viewers/AudioViewer.tsx +201 -0
- package/src/components/asset-viewers/EntityModelDocument.tsx +122 -0
- package/src/components/asset-viewers/EnvironmentAssetDocument.tsx +440 -0
- package/src/components/asset-viewers/GenericJsonViewer.tsx +102 -0
- package/src/components/asset-viewers/ImageViewer.tsx +300 -0
- package/src/components/asset-viewers/JsonAssetDocument.tsx +93 -0
- package/src/components/asset-viewers/LiveModuleDocument.tsx +417 -0
- package/src/components/asset-viewers/LutAssetDocument.tsx +444 -0
- package/src/components/asset-viewers/ModelAssetDocument.tsx +105 -0
- package/src/components/asset-viewers/Object3DPreview.tsx +359 -0
- package/src/components/asset-viewers/OnlineAssetDetail.tsx +421 -0
- package/src/components/asset-viewers/PasteboardModuleDocument.tsx +67 -0
- package/src/components/asset-viewers/QuarksAssetDocument.tsx +526 -0
- package/src/components/asset-viewers/ShaderAssetDocument.tsx +743 -0
- package/src/components/asset-viewers/SourceAssetViewer.tsx +281 -0
- package/src/components/asset-viewers/SpritesheetSpriteView.tsx +102 -0
- package/src/components/asset-viewers/VideoViewer.tsx +101 -0
- package/src/components/asset-viewers/shader-source.ts +144 -0
- package/src/components/asset-workflow.css +731 -0
- package/src/components/board-guides.ts +150 -0
- package/src/components/compact-inspector.css +539 -0
- package/src/components/core-utilities.tsx +90 -0
- package/src/components/editor-notifications.css +40 -0
- package/src/components/engine-workspace.css +274 -0
- package/src/components/inspector-preview-section.tsx +238 -0
- package/src/components/inspector-property-grouping.ts +64 -0
- package/src/components/inspector-revert-label.ts +20 -0
- package/src/components/inspector-selection.ts +42 -0
- package/src/components/inspector-stories-gating.ts +171 -0
- package/src/components/inspector-transform-subject.ts +11 -0
- package/src/components/inspector-transform.ts +75 -0
- package/src/components/kind-documents.tsx +500 -0
- package/src/components/palette-action-publisher.tsx +140 -0
- package/src/components/primitives/DraftColorInput.tsx +74 -0
- package/src/components/product-shell.css +1829 -0
- package/src/components/project-tool-documents.tsx +410 -0
- package/src/components/scene-documents.tsx +223 -0
- package/src/components/stage-keyboard.tsx +37 -0
- package/src/components/stage-overlay-set.tsx +107 -0
- package/src/components/stage-presence-markers.ts +478 -0
- package/src/components/standard-viewport-dressing.ts +417 -0
- package/src/components/status-contributions.tsx +403 -0
- package/src/components/tool-documents.tsx +309 -0
- package/src/components/tool-schema-form.tsx +262 -0
- package/src/components/use-after-paint.ts +41 -0
- package/src/components/use-project-image-assets.ts +86 -0
- package/src/components/viewport-header-controls.css +90 -0
- package/src/components/viewport-surface-status.tsx +55 -0
- package/src/components/workspace-history.ts +32 -0
- package/src/components/workspace-static-panel-registry.tsx +152 -0
- package/src/components/workspace-surfaces.css +621 -0
- package/src/components/world-documents.tsx +586 -0
- package/src/components/world-overlay-gestures.ts +1694 -0
- package/src/composite-screenshot.ts +1641 -0
- package/src/console-sync.ts +131 -0
- package/src/constraint-helper.ts +338 -0
- package/src/content-entry-source-registry.ts +184 -0
- package/src/coverage/authoring-seam-evidence.ts +300 -0
- package/src/coverage/canvas-reveal.ts +192 -0
- package/src/coverage/design-time-surfaces.ts +101 -0
- package/src/coverage/live-seam-evidence.ts +11 -0
- package/src/coverage/ontology-invariants.ts +466 -0
- package/src/coverage/session-vitals.ts +501 -0
- package/src/coverage/system-seam-evidence.ts +72 -0
- package/src/crash-null-boundary.ts +36 -0
- package/src/creation-site-edit.ts +1479 -0
- package/src/creation-site-registry.ts +160 -0
- package/src/delegate-harness-registry.ts +143 -0
- package/src/document-context-registry.ts +177 -0
- package/src/document-open-registry.ts +200 -0
- package/src/document-preview-source.ts +20 -0
- package/src/document-renderer-session.ts +138 -0
- package/src/editor-api.ts +46 -0
- package/src/editor-chrome-capture.ts +139 -0
- package/src/editor-commands.ts +164 -0
- package/src/editor-console.ts +563 -0
- package/src/editor-current-view.ts +82 -0
- package/src/editor-document-probe.ts +881 -0
- package/src/editor-git-client.ts +115 -0
- package/src/editor-host-door.ts +462 -0
- package/src/editor-hotkeys.ts +842 -0
- package/src/editor-lease-view.ts +39 -0
- package/src/editor-lease.ts +415 -0
- package/src/editor-mode.ts +19 -0
- package/src/editor-notifications.ts +140 -0
- package/src/editor-presence.ts +563 -0
- package/src/editor-presentation-activity.ts +50 -0
- package/src/editor-presentation-notice.ts +42 -0
- package/src/editor-runtime.tsx +145 -0
- package/src/editor-server-response.ts +86 -0
- package/src/editor-session-attribution.ts +75 -0
- package/src/editor-session-mode.ts +54 -0
- package/src/editor-shell-store.ts +1304 -0
- package/src/editor-state-facets.ts +74 -0
- package/src/editor-styles.css +33 -0
- package/src/editor-view-presentation.ts +810 -0
- package/src/editor-viewport.ts +5302 -0
- package/src/entity-lod.ts +31 -0
- package/src/entity-object.ts +91 -0
- package/src/files/file-provider.ts +62 -0
- package/src/files/project-files.ts +264 -0
- package/src/finders/index.ts +136 -0
- package/src/finders/scenes-from-entrypoint-selection.ts +387 -0
- package/src/frame/bridge.tsx +1408 -0
- package/src/frame/product.ts +77 -0
- package/src/gameplay-dom-recording.ts +319 -0
- package/src/gameplay-export-state.ts +14 -0
- package/src/gameplay-replay.ts +417 -0
- package/src/gameplay-session-time.ts +9 -0
- package/src/gameplay-sessions.ts +204 -0
- package/src/harness-chat-types.ts +253 -0
- package/src/hierarchy-component-marks.ts +298 -0
- package/src/hierarchy-drop.ts +91 -0
- package/src/hierarchy-expansion-state.ts +80 -0
- package/src/hierarchy-header-slot.ts +52 -0
- package/src/hierarchy-internals.ts +197 -0
- package/src/hierarchy-kind-icon.ts +217 -0
- package/src/hierarchy-mark-reader.ts +73 -0
- package/src/hierarchy-menu-registry.ts +67 -0
- package/src/hierarchy-node-rows.ts +307 -0
- package/src/hierarchy-panel-view.ts +280 -0
- package/src/hierarchy-projection.ts +76 -0
- package/src/hierarchy-row-cache.ts +243 -0
- package/src/hierarchy-row-model.ts +308 -0
- package/src/hierarchy-rows.ts +11 -0
- package/src/hierarchy-walk.ts +86 -0
- package/src/history/editor-session.ts +25 -0
- package/src/history/history-commands.ts +147 -0
- package/src/history/history-delegate.ts +163 -0
- package/src/history/history-limit-notices.ts +43 -0
- package/src/history/history-service.ts +1173 -0
- package/src/history/persistence-coordinator.ts +35 -0
- package/src/history/project-file-history.ts +386 -0
- package/src/history/project-root-history-backends.ts +139 -0
- package/src/history/resource-registry.ts +209 -0
- package/src/history/snapshot-store.ts +103 -0
- package/src/history/source-history-backend.ts +546 -0
- package/src/history/types.ts +124 -0
- package/src/hmr-registration-group.ts +67 -0
- package/src/hmr-stable-react-context.ts +23 -0
- package/src/hotkeys.ts +188 -0
- package/src/inference-diagnostics.ts +69 -0
- package/src/initial-project.ts +80 -0
- package/src/inspection/active-subject.ts +578 -0
- package/src/inspection/active-surface.ts +142 -0
- package/src/inspection/compose.ts +1064 -0
- package/src/inspection/display.ts +170 -0
- package/src/inspection/document-subject.ts +109 -0
- package/src/inspection/game-subject.ts +85 -0
- package/src/inspection/model.ts +542 -0
- package/src/inspection/null-subject.ts +115 -0
- package/src/inspection/serialize.ts +357 -0
- package/src/inspection/use-active-inspection.ts +180 -0
- package/src/inspector-presentation.ts +201 -0
- package/src/inspector-section-registry.ts +221 -0
- package/src/instance-source-actions.ts +163 -0
- package/src/instanced-presentation.ts +164 -0
- package/src/js-heap.ts +71 -0
- package/src/key-actions.ts +91 -0
- package/src/keymap-presets.ts +401 -0
- package/src/layout-policy.ts +31 -0
- package/src/learn-links.ts +73 -0
- package/src/light-explorer-model.ts +134 -0
- package/src/live-canvas-frame.ts +55 -0
- package/src/live-document.ts +279 -0
- package/src/live-module-source.ts +230 -0
- package/src/live-session-registry.ts +220 -0
- package/src/live-transition.ts +633 -0
- package/src/manifest-project.ts +107 -0
- package/src/model-thumbnail.ts +523 -0
- package/src/native-selection-style.ts +202 -0
- package/src/object3d-document-write-policy.ts +137 -0
- package/src/packaged-runtime.ts +108 -0
- package/src/palettes/maya.palette.json +57 -0
- package/src/palettes/substance.palette.json +57 -0
- package/src/pasteboard-module.ts +81 -0
- package/src/performance-profiler.ts +367 -0
- package/src/performance-sources.ts +69 -0
- package/src/play-boot-phase.ts +145 -0
- package/src/presentation-surface.ts +248 -0
- package/src/project-adapter.ts +1143 -0
- package/src/project-asset-refresh.ts +26 -0
- package/src/project-declaration-refresh.ts +31 -0
- package/src/project-local-state.ts +118 -0
- package/src/project-manager.ts +243 -0
- package/src/project-module-changes.ts +163 -0
- package/src/project-module-split.ts +266 -0
- package/src/project-provenance.ts +115 -0
- package/src/project-ready.ts +42 -0
- package/src/project-session-reset.ts +67 -0
- package/src/project-shape.ts +68 -0
- package/src/project-tool-discovery.ts +66 -0
- package/src/project-tools.ts +107 -0
- package/src/project-work-types.ts +149 -0
- package/src/projection/three.ts +898 -0
- package/src/projection/types.ts +44 -0
- package/src/readiness.ts +113 -0
- package/src/reflection-probe-helper.ts +142 -0
- package/src/reported-play-state.ts +90 -0
- package/src/resolve-relative-specifier.ts +33 -0
- package/src/scene-document-plan.ts +315 -0
- package/src/scene-framing.ts +315 -0
- package/src/scene-live-open.ts +210 -0
- package/src/scene-view-fog.ts +89 -0
- package/src/scoped-game-css.ts +152 -0
- package/src/session-orphan-record.ts +193 -0
- package/src/session-tombstone.ts +126 -0
- package/src/settings/settings-provider.ts +82 -0
- package/src/settings-store.ts +345 -0
- package/src/shared-view-restore.ts +42 -0
- package/src/shell-store-door.ts +45 -0
- package/src/source-conflict.ts +122 -0
- package/src/spatial-handle-visuals.ts +332 -0
- package/src/stage-context.ts +341 -0
- package/src/stage-store-registry.ts +63 -0
- package/src/stale-chunk-recovery.ts +34 -0
- package/src/state-report-deferral.ts +73 -0
- package/src/storage/host-files-storage.ts +97 -0
- package/src/storage/http-storage.ts +174 -0
- package/src/storage/index.ts +75 -0
- package/src/storage/mem-storage.ts +149 -0
- package/src/storage/path-lock.ts +44 -0
- package/src/storage/paths.ts +26 -0
- package/src/storage/types.ts +116 -0
- package/src/stories/StoryComponentThumbnail.tsx +184 -0
- package/src/stories/StoryPreviewMount.tsx +306 -0
- package/src/stories/component-content-source.tsx +106 -0
- package/src/stories/component-states-source.ts +78 -0
- package/src/stories/compose-project-stories.ts +255 -0
- package/src/stories/pixi-story-model.ts +30 -0
- package/src/stories/prefabs-finder.ts +54 -0
- package/src/stories/prefabs-from-stories.ts +182 -0
- package/src/stories/project-story-discovery.ts +78 -0
- package/src/stories/project-story-regions.ts +24 -0
- package/src/stories/story-actions.ts +54 -0
- package/src/stories/story-capture-command.ts +124 -0
- package/src/stories/story-capture.ts +584 -0
- package/src/stories/story-declared-medium.ts +126 -0
- package/src/stories/story-discovery.ts +176 -0
- package/src/stories/story-document-openers.ts +36 -0
- package/src/stories/story-dom-runtime.ts +78 -0
- package/src/stories/story-grouping.ts +111 -0
- package/src/stories/story-lane.ts +88 -0
- package/src/stories/story-mount-turn.ts +27 -0
- package/src/stories/story-opener.ts +260 -0
- package/src/stories/story-pixi-preview.ts +408 -0
- package/src/stories/story-presentation.ts +215 -0
- package/src/stories/story-registry.ts +517 -0
- package/src/stories/story-three-preview.ts +807 -0
- package/src/stories/three-story-model.ts +96 -0
- package/src/story-three-preview-runtime.ts +56 -0
- package/src/surface-keyboard.ts +112 -0
- package/src/surface-state.ts +124 -0
- package/src/tab-bootstrap.js +628 -0
- package/src/tab-census.ts +198 -0
- package/src/tab-lifecycle-client.ts +196 -0
- package/src/theme-library.ts +844 -0
- package/src/theme-preference.ts +378 -0
- package/src/theme.css +3437 -0
- package/src/three-viewport/bone-selection-highlight.ts +119 -0
- package/src/three-viewport/camera-fit.ts +41 -0
- package/src/three-viewport/interactive-renderer.ts +132 -0
- package/src/three-viewport/selection-brackets.ts +310 -0
- package/src/three-viewport/selection-outline.ts +183 -0
- package/src/three-viewport/skeleton-helper.ts +61 -0
- package/src/three-viewport/source-color.ts +167 -0
- package/src/three-viewport/studio-environment.ts +96 -0
- package/src/three-viewport-presentation.ts +23 -0
- package/src/tool-contribution-play.ts +74 -0
- package/src/tool-loader.ts +1798 -0
- package/src/transform-mode-request.ts +57 -0
- package/src/transient-hint.ts +78 -0
- package/src/trigger-volume-helper.ts +116 -0
- package/src/ui-source/adapter-region-includes.ts +241 -0
- package/src/ui-source/ensure-import.ts +132 -0
- package/src/ui-source/file-region-resolver.ts +302 -0
- package/src/ui-source/inspect.ts +775 -0
- package/src/ui-source/oid-transform.ts +1845 -0
- package/src/ui-source/plan-csf-story.ts +196 -0
- package/src/ui-source/plan-extract-component.ts +421 -0
- package/src/ui-source/plan-fork-component.ts +621 -0
- package/src/ui-source/plan-named-style.ts +95 -0
- package/src/ui-source/plan-source-edit.ts +353 -0
- package/src/ui-source/r3f-contract-resolver.ts +327 -0
- package/src/ui-source/r3f-diagnostic-index.ts +165 -0
- package/src/ui-source/r3f-environment-binding.ts +133 -0
- package/src/ui-source/r3f-joint-binding.ts +251 -0
- package/src/ui-source/r3f-lod-binding.ts +91 -0
- package/src/ui-source/r3f-particle-binding.ts +235 -0
- package/src/ui-source/r3f-physics-binding.ts +483 -0
- package/src/ui-source/r3f-project-contracts.ts +444 -0
- package/src/ui-source/relative-import-specifier.ts +34 -0
- package/src/ui-source/reparent-guard.ts +544 -0
- package/src/ui-source/source-edit-request.ts +97 -0
- package/src/ui-source/source-write-backend.ts +618 -0
- package/src/ui-source/syntactic-prop-specs.ts +296 -0
- package/src/ui-source/tier-source-write-backend.ts +279 -0
- package/src/ui-source/ts-ast.ts +171 -0
- package/src/ui-source/utility-class-support.ts +169 -0
- package/src/ui-source/write-component-default.ts +133 -0
- package/src/ui-source/writer.ts +1989 -0
- package/src/viewport-activation-timings.ts +840 -0
- package/src/viewport-authoring-policy.ts +186 -0
- package/src/viewport-controls-hint.ts +57 -0
- package/src/viewport-door.ts +237 -0
- package/src/viewport-shading-boundary.ts +12 -0
- package/src/vite-error-surface.ts +141 -0
- package/src/wait-until.ts +37 -0
- package/src/workspace-areas.ts +156 -0
- package/src/workspace-aux-commands.ts +11 -0
- package/src/workspace-available-documents.ts +127 -0
- package/src/workspace-core-utilities.ts +31 -0
- package/src/workspace-document-ids.ts +59 -0
- package/src/workspace-document-registry.ts +612 -0
- package/src/workspace-document-restore.ts +145 -0
- package/src/workspace-host-commands.ts +141 -0
- package/src/workspace-persistence-gate.ts +40 -0
- package/src/workspace-play-utilities.ts +44 -0
- package/src/workspace-presets.ts +425 -0
- package/src/workspace-regions.ts +294 -0
- package/src/workspace-state-persistence.ts +536 -0
- package/src/workspace-static-panels.ts +73 -0
- package/src/workspace-status-registry.ts +121 -0
- package/src/workspace-style.ts +239 -0
- package/src/workspace-utility-commands.ts +74 -0
- package/src/workspace-utility-registry.ts +263 -0
- package/src/workspace-viewport-rect.ts +97 -0
- package/src/world-adoption.ts +115 -0
- package/src/world-document-routing.ts +104 -0
- package/vite-plugin-creation-site-write.ts +184 -0
- package/vite-plugin-creation-site.ts +80 -0
- package/vite-plugin-game-static.ts +303 -0
- package/vite-plugin-module-doorways.ts +336 -0
- package/vite-plugin-product-contributions.ts +197 -0
- package/vite-plugin-project-game-static.ts +125 -0
- package/vite-plugin-project-jsx-js.ts +65 -0
- package/vite-plugin-project-root-absolute-assets.ts +359 -0
- package/vite-plugin-shared-react.ts +420 -0
- package/vite-plugin-shared-three.ts +203 -0
- package/vite-plugin-ui-oid.ts +2106 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import {
|
|
2
|
+
adapterEditorConfiguration,
|
|
3
|
+
subscribeAdapterEditorConfiguration,
|
|
4
|
+
} from './adapter-editor-config';
|
|
5
|
+
import { effectiveSettings, subscribeSettings, updatePreferenceSettings } from './settings-store';
|
|
6
|
+
/**
|
|
7
|
+
* WHICH CHROME REGIONS ARE SHOWN right now — the one store the two document
|
|
8
|
+
* regions (`DocumentHeaderStrip`, `DocumentShelfRail`), the title bar's own
|
|
9
|
+
* strips and the inspector's presentation resolver read.
|
|
10
|
+
*
|
|
11
|
+
* WHAT IS NOT A KEY HERE: how the workbench names an open document. Editor
|
|
12
|
+
* tabs, their strip and its presentation are the frame's, and a workspace that
|
|
13
|
+
* declared them would be declaring something it cannot draw.
|
|
14
|
+
*
|
|
15
|
+
* Workspace and user style choices, with project adapter defaults:
|
|
16
|
+
* resolved[key] = workspace.regions[key] ?? adapter default ?? preset.regions[key] ?? default
|
|
17
|
+
* - the WORKSPACE layer is what the active workspace declares
|
|
18
|
+
* (`workspace-presets.ts`, `EditorWorkspaceRegions`) — Look hides every
|
|
19
|
+
* region and stays minimal under any preset;
|
|
20
|
+
* - the PRESET layer is what a style bundle asked for (`workspace-style.ts`,
|
|
21
|
+
* the fourth axis beside palette, material and composition), persisted
|
|
22
|
+
* like the other three so the bundle survives a reload.
|
|
23
|
+
* A host with no workspaces and no bundles (a bounded host) never
|
|
24
|
+
* writes either, so every region stays shown and the page pays for this
|
|
25
|
+
* file alone. Same shape as every module-scope store here: value + version
|
|
26
|
+
* + subscribe.
|
|
27
|
+
*/
|
|
28
|
+
export interface ChromeRegions {
|
|
29
|
+
/** The workspace tab strip in the top bar (`ProjectHeader`); absent = hidden. */
|
|
30
|
+
readonly workspaceTabs?: 'shown' | 'hidden';
|
|
31
|
+
readonly header?: 'shown' | 'hidden';
|
|
32
|
+
readonly shelf?: 'shown' | 'hidden';
|
|
33
|
+
/** How the docked inspector lays its sections out — stacked (`column`) or
|
|
34
|
+
* tabbed behind a vertical rail (`properties`). Read by the presentation
|
|
35
|
+
* resolver (`inspector-presentation.ts`) beneath the user's own override. */
|
|
36
|
+
readonly inspector?: 'column' | 'properties' | 'card';
|
|
37
|
+
/** The bottom utility DRAWER (analytics, console, history…). Hidden means
|
|
38
|
+
* a workspace never shows it — not on a switch, not when play settles;
|
|
39
|
+
* Blender's modeling workspace has no timeline strip. */
|
|
40
|
+
readonly drawer?: 'shown' | 'hidden';
|
|
41
|
+
/** The top bar's runtime TELEMETRY cluster (`HeaderTelemetry`: the frame
|
|
42
|
+
* readout, its sparkline, the audio meter). A LOOK knob, not a product
|
|
43
|
+
* one — Invite and Account stay whatever this says, being identity rather
|
|
44
|
+
* than appearance, and the Profiler utility remains the door to the same
|
|
45
|
+
* numbers (the readout's own tooltip says so). Absent means shown, so
|
|
46
|
+
* every skin that predates this key is pixel-identical. */
|
|
47
|
+
readonly telemetry?: 'shown' | 'hidden';
|
|
48
|
+
/** The `·TypeName` a component-instance row prints after its name
|
|
49
|
+
* (`GameHierarchy.tsx`'s `hierarchy-instance-type`). A LOOK knob: measured
|
|
50
|
+
* on `outliner.png`, every Blender row carries its NAME ALONE — the type is
|
|
51
|
+
* the glyph, which is the whole reason the glyph is coloured by category.
|
|
52
|
+
*
|
|
53
|
+
* Hiding it costs one VISIBLE fact, and only on rows where the name and the
|
|
54
|
+
* type differ (`EnemyBravo ·Enemy`). Where they agree it costs nothing, and
|
|
55
|
+
* that is every row of the starter template — the label IS the instance's
|
|
56
|
+
* `name` prop, which authors write as the component's own name (`Hero Box
|
|
57
|
+
* ·HeroBox`, `Ground ·Ground`). The row keeps the fact reachable when
|
|
58
|
+
* hidden: the label's own `title` carries the sentence, the inspector shows
|
|
59
|
+
* the component's sections, and the override `*` moves onto the NAME rather
|
|
60
|
+
* than leaving with the suffix it used to ride. Absent means shown, so
|
|
61
|
+
* every skin that predates this key is pixel-identical. */
|
|
62
|
+
readonly hierarchyTypeSuffix?: 'shown' | 'hidden';
|
|
63
|
+
/** The dotted RULE a component-instance row draws under its name
|
|
64
|
+
* (`semantic.instance`; the owner's 2026-07-31 ruling that instance identity
|
|
65
|
+
* is carried by a rule rather than by recolored text). A LOOK knob, the same
|
|
66
|
+
* kind as {@link ChromeRegions.hierarchyTypeSuffix} and measured the same
|
|
67
|
+
* way: `modeling-object-none.png` and `modeling-object-selected.png` carry
|
|
68
|
+
* NO rule, dotted or solid, under any Outliner name in any selection state —
|
|
69
|
+
* Blender marks an instance nowhere in that panel.
|
|
70
|
+
*
|
|
71
|
+
* Hiding it costs the row's instance HINT, not the fact: the label's own
|
|
72
|
+
* `title`, the row's Go to Callsite / Open Component Source actions and the
|
|
73
|
+
* inspector's component sections all still say it. Absent means shown, so
|
|
74
|
+
* every skin that predates this key is pixel-identical.
|
|
75
|
+
*
|
|
76
|
+
* Note the SEPARATE, older mechanism it sits above:
|
|
77
|
+
* `--vgai-tree-active-name-underline` (`theme.ts`) drops the rule on the
|
|
78
|
+
* SELECTED row alone, and only for a palette that declares an active ink,
|
|
79
|
+
* so two marks never argue on one row. That one is the palette's; this one
|
|
80
|
+
* is the look's, and where a look hides the rule outright the palette rule
|
|
81
|
+
* never gets a say. */
|
|
82
|
+
readonly hierarchyInstanceRule?: 'shown' | 'hidden';
|
|
83
|
+
/**
|
|
84
|
+
* WHICH RESTRICTION COLUMNS an Outliner row carries at its right edge —
|
|
85
|
+
* Blender's own filter, whose default decides the same thing there.
|
|
86
|
+
*
|
|
87
|
+
* - `select+viewport` — this editor's own pair: a selection LOCK and the
|
|
88
|
+
* eye, packed against the row's right margin.
|
|
89
|
+
* - `viewport+render` — Blender's default filter. Measured on
|
|
90
|
+
* `outliner.png`: every object row carries exactly two marks, an eye at
|
|
91
|
+
* x 515-541 device (CSS ink 257.5-270.5, 32 px in from the area's own
|
|
92
|
+
* right edge) and a render camera at 555-581 (277.5-290.5, 12 px in);
|
|
93
|
+
* a 20 px column pitch, and NO lock glyph anywhere in the frame,
|
|
94
|
+
* Blender's Disable Selection column being off by default.
|
|
95
|
+
*
|
|
96
|
+
* The RENDER column is declared and left BLANK, deliberately. three.js has
|
|
97
|
+
* one `Object3D.visible` governing viewport and render alike, so a second
|
|
98
|
+
* toggle would write nothing and fail "a control is accepted through its own
|
|
99
|
+
* click" — but Blender's columns are positions, and drawing our one eye in
|
|
100
|
+
* the outer slot would put it in the render column and align it with
|
|
101
|
+
* neither. Reserving the slot puts the eye exactly where Blender's eye is.
|
|
102
|
+
* A skew whose adapter really does separate the two fills the column in;
|
|
103
|
+
* nothing else changes.
|
|
104
|
+
*
|
|
105
|
+
* Absent means `select+viewport`, so every skin that predates this key is
|
|
106
|
+
* pixel-identical.
|
|
107
|
+
*/
|
|
108
|
+
readonly hierarchyRestrictions?: 'select+viewport' | 'viewport+render';
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* EVERY REGION AND ITS DEFAULT, stated once.
|
|
113
|
+
*
|
|
114
|
+
* Three things read this — the merge, the snapshot key, and the absolute write
|
|
115
|
+
* a bundle makes — and before 2026-09-18 each spelled the key list and its
|
|
116
|
+
* default out by hand, so a seventh region meant editing the same table three
|
|
117
|
+
* times and the merge tripped the complexity lint on the way.
|
|
118
|
+
*
|
|
119
|
+
* A NEW REGION IS FIVE EDITS, not the one this comment used to claim, and the
|
|
120
|
+
* last two are the ones that bite: this table, its member on {@link
|
|
121
|
+
* ChromeRegions}, the same member on `@volter/editor-sdk`'s
|
|
122
|
+
* `WorkspaceArrangement['regions']` (which a contributed bundle is typed
|
|
123
|
+
* against), `@volter/editor-project`'s `ChromeRegionsSettingsSchema`, which is
|
|
124
|
+
* `.strict()`, and the FRAME's own configuration contribution
|
|
125
|
+
* (`node scripts/workbench/generate-settings.mjs --write`, which rewrites
|
|
126
|
+
* `packages/editor/workbench/src/vgaiGeneratedSettings.ts` from the JSON
|
|
127
|
+
* Schema).
|
|
128
|
+
*
|
|
129
|
+
* Miss the fourth and NOTHING fails to compile: `setPresetRegions` writes the
|
|
130
|
+
* absolute table below into `~/.vgai/settings.json`, the server rejects the
|
|
131
|
+
* unknown key with a 400, and the only report is a `[settings] Could not save
|
|
132
|
+
* user settings` line in the editor console — every appearance preference
|
|
133
|
+
* silently stops persisting. Measured 2026-09-18, found by `vgai console`
|
|
134
|
+
* after nine failed writes.
|
|
135
|
+
*
|
|
136
|
+
* Miss the FIFTH and the frame drops the key on the way through instead: the
|
|
137
|
+
* workbench's configuration service knows only the generated list, so
|
|
138
|
+
* `vgaiSettings.ts` reports "…is not a vgai setting, so it was not applied" and
|
|
139
|
+
* the region reverts to its default on the next read of persisted settings.
|
|
140
|
+
* Measured 2026-09-21 by `vgai console` on the first boot after a new key
|
|
141
|
+
* landed, which is the reason this list says five now.
|
|
142
|
+
*
|
|
143
|
+
* AND THE FIFTH HAS A RELEASE IN IT, which is the part that decides where a
|
|
144
|
+
* look's value belongs. The generated artifact is built INTO a Code-OSS
|
|
145
|
+
* release, so a running release cut before the key reports it and ignores it
|
|
146
|
+
* until the next cut — a region is not a value a look can add and use in the
|
|
147
|
+
* same session. A look value that the STAGE reads (the transform gizmo's
|
|
148
|
+
* screen size, which tool its shelf opens on) therefore rides the THEME
|
|
149
|
+
* instead, as `density.viewport` emitted onto the theme root by the page
|
|
150
|
+
* itself: it crosses nothing (`@volter/editor-sdk/looks`'
|
|
151
|
+
* `DensityContribution.viewport`, `native-selection-style.ts`'s readers).
|
|
152
|
+
* A region stays a region — what CHROME is shown is genuinely a persisted
|
|
153
|
+
* preference a person can also set.
|
|
154
|
+
*
|
|
155
|
+
* Run `npm run generate-schema` with the schema edit, then the settings
|
|
156
|
+
* generator.
|
|
157
|
+
*/
|
|
158
|
+
const REGION_DEFAULTS = {
|
|
159
|
+
workspaceTabs: 'hidden',
|
|
160
|
+
header: 'shown',
|
|
161
|
+
shelf: 'shown',
|
|
162
|
+
inspector: 'column',
|
|
163
|
+
drawer: 'shown',
|
|
164
|
+
telemetry: 'shown',
|
|
165
|
+
hierarchyTypeSuffix: 'shown',
|
|
166
|
+
hierarchyInstanceRule: 'shown',
|
|
167
|
+
hierarchyRestrictions: 'select+viewport',
|
|
168
|
+
} as const satisfies Required<ChromeRegions>;
|
|
169
|
+
|
|
170
|
+
const REGION_KEYS = Object.keys(REGION_DEFAULTS) as ReadonlyArray<keyof ChromeRegions>;
|
|
171
|
+
|
|
172
|
+
/** The regions whose values are not the `shown`/`hidden` pair, for
|
|
173
|
+
* {@link isRegions}. A key absent here takes that pair. */
|
|
174
|
+
const REGION_VALUES: Partial<Record<keyof ChromeRegions, readonly string[]>> = {
|
|
175
|
+
inspector: ['column', 'properties', 'card'],
|
|
176
|
+
hierarchyRestrictions: ['select+viewport', 'viewport+render'],
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
function isRegions(value: unknown): value is ChromeRegions {
|
|
180
|
+
if (!value || typeof value !== 'object') return false;
|
|
181
|
+
const record = value as Record<string, unknown>;
|
|
182
|
+
for (const key of Object.keys(record)) {
|
|
183
|
+
if (!(REGION_KEYS as readonly string[]).includes(key)) return false;
|
|
184
|
+
const allowed = REGION_VALUES[key as keyof ChromeRegions] ?? ['shown', 'hidden'];
|
|
185
|
+
if (!allowed.includes(record[key] as string)) return false;
|
|
186
|
+
}
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/** The style bundle's choice lives in the settings layers as
|
|
191
|
+
* `appearance.regions` (`settings-store.ts`). */
|
|
192
|
+
function readPersistedPreset(): ChromeRegions {
|
|
193
|
+
const stored: unknown = effectiveSettings().appearance?.regions;
|
|
194
|
+
return isRegions(stored) ? stored : {};
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
let _workspace: ChromeRegions = {};
|
|
198
|
+
let _preset: ChromeRegions = readPersistedPreset();
|
|
199
|
+
let _version = 0;
|
|
200
|
+
const _listeners = new Set<() => void>();
|
|
201
|
+
|
|
202
|
+
function resolved(key: keyof ChromeRegions): string | undefined {
|
|
203
|
+
// `inspector` alone has a THIRD layer between the workspace and the preset:
|
|
204
|
+
// the project adapter's own declaration (`adapter-editor-config.ts`).
|
|
205
|
+
if (key === 'inspector')
|
|
206
|
+
return _workspace.inspector ?? adapterEditorConfiguration().inspector ?? _preset.inspector;
|
|
207
|
+
return _workspace[key] ?? _preset[key];
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
function merged(): ChromeRegions {
|
|
211
|
+
const next: Record<string, string> = {};
|
|
212
|
+
for (const key of REGION_KEYS) {
|
|
213
|
+
const value = resolved(key);
|
|
214
|
+
if (value) next[key] = value;
|
|
215
|
+
}
|
|
216
|
+
return next as ChromeRegions;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
let _merged: ChromeRegions = merged();
|
|
220
|
+
|
|
221
|
+
export function activeChromeRegions(): ChromeRegions {
|
|
222
|
+
return _merged;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/** The preset layer alone — what `workspace-style.ts` derives the active
|
|
226
|
+
* bundle from. */
|
|
227
|
+
export function presetChromeRegions(): ChromeRegions {
|
|
228
|
+
return _preset;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/** A stable string, because `useSyncExternalStore` compares snapshots by
|
|
232
|
+
* identity and a fresh object would loop. */
|
|
233
|
+
export function chromeRegionsKey(): string {
|
|
234
|
+
return regionsKey(_merged);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
export function regionsKey(regions: ChromeRegions): string {
|
|
238
|
+
return REGION_KEYS.map((key) => `${key}:${regions[key] ?? REGION_DEFAULTS[key]}`).join(' ');
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
function publish(): void {
|
|
242
|
+
const before = chromeRegionsKey();
|
|
243
|
+
_merged = merged();
|
|
244
|
+
if (chromeRegionsKey() === before) return;
|
|
245
|
+
_version += 1;
|
|
246
|
+
for (const listener of _listeners) listener();
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/** The active workspace's declaration (`workspace-presets.ts`). */
|
|
250
|
+
export function setWorkspaceRegions(regions: ChromeRegions): void {
|
|
251
|
+
_workspace = regions;
|
|
252
|
+
publish();
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/** A style bundle's choice (`workspace-style.ts`), persisted. */
|
|
256
|
+
export function setPresetRegions(regions: ChromeRegions): void {
|
|
257
|
+
_preset = regions;
|
|
258
|
+
// Stated ABSOLUTELY on disk: the settings layers deep-merge, so a bundle's
|
|
259
|
+
// `{}` ("whatever the workspace says") could never clear a stored region.
|
|
260
|
+
// Explicit defaults still yield to the workspace's own (`merged`).
|
|
261
|
+
const absolute: Required<ChromeRegions> = { ...REGION_DEFAULTS };
|
|
262
|
+
for (const key of REGION_KEYS) {
|
|
263
|
+
const value = regions[key];
|
|
264
|
+
if (value !== undefined) (absolute as Record<string, string>)[key] = value;
|
|
265
|
+
}
|
|
266
|
+
updatePreferenceSettings({ appearance: { regions: absolute } });
|
|
267
|
+
publish();
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// A settings load or a project's own override changes the preset underneath.
|
|
271
|
+
subscribeSettings(() => {
|
|
272
|
+
const next = readPersistedPreset();
|
|
273
|
+
if (regionsKey(next) === regionsKey(_preset)) return;
|
|
274
|
+
_preset = next;
|
|
275
|
+
publish();
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
subscribeAdapterEditorConfiguration(publish);
|
|
279
|
+
|
|
280
|
+
export function subscribeChromeRegions(listener: () => void): () => void {
|
|
281
|
+
_listeners.add(listener);
|
|
282
|
+
return () => _listeners.delete(listener);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export function chromeRegionsVersion(): number {
|
|
286
|
+
return _version;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export function __resetChromeRegionsForTest(): void {
|
|
290
|
+
_workspace = {};
|
|
291
|
+
_preset = {};
|
|
292
|
+
_merged = {};
|
|
293
|
+
_version = 0;
|
|
294
|
+
}
|