@ccslabs/xtend 0.1.0-rc.1 → 0.1.2
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/CHANGELOG.md +2 -0
- package/README.md +4 -0
- package/catalog/component-catalog-coverage.js +2 -0
- package/catalog/epic13-package-export-lock.js +11 -1
- package/catalog/epic13-rmt-production-readiness.js +0 -1
- package/catalog/epic18-rmt-action-effect-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-action-effect-runtime.js +249 -0
- package/catalog/epic18-rmt-app-platform-authoring.d.ts +39 -0
- package/catalog/epic18-rmt-app-platform-authoring.js +319 -0
- package/catalog/epic18-rmt-app-platform-fixture.d.ts +33 -0
- package/catalog/epic18-rmt-app-platform-fixture.js +221 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.d.ts +30 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.js +231 -0
- package/catalog/epic18-rmt-app-platform-tooling.d.ts +38 -0
- package/catalog/epic18-rmt-app-platform-tooling.js +242 -0
- package/catalog/epic18-rmt-component-template-primitives.d.ts +33 -0
- package/catalog/epic18-rmt-component-template-primitives.js +240 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.d.ts +35 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.js +232 -0
- package/catalog/epic18-rmt-event-routing-runtime.d.ts +35 -0
- package/catalog/epic18-rmt-event-routing-runtime.js +234 -0
- package/catalog/epic18-rmt-state-selector-runtime.d.ts +34 -0
- package/catalog/epic18-rmt-state-selector-runtime.js +216 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.js +256 -0
- package/catalog/surface-manager-controller.js +5 -1
- package/catalog/surface-manager-materialization.js +7 -1
- package/catalog/surface-manager-overlay-bridge.js +41 -6
- package/catalog/surface-manager-workbench-fixture.js +1 -1
- package/catalog/surface-type-capability-matrix.d.ts +61 -0
- package/catalog/surface-type-capability-matrix.js +183 -0
- package/catalog/type-exports-rmt.js +37 -1
- package/catalog/type-exports.js +3 -3
- package/components/icon-packs/lucide.js +4 -0
- package/components/manifest.json +2 -0
- package/components/prism-rmt.d.ts +34 -0
- package/components/prism-rmt.js +130 -0
- package/components/xcards.js +15 -0
- package/components/xcode.d.ts +36 -1
- package/components/xcode.js +215 -20
- package/components/xfooter.js +17 -0
- package/components/xheader.js +14 -0
- package/components/xhero.js +16 -1
- package/components/xlink.js +97 -14
- package/components/xmasonry.js +15 -0
- package/components/xplayer.d.ts +44 -2
- package/components/xplayer.js +242 -15
- package/components/xrouter.js +27 -2
- package/components/xsection.js +15 -0
- package/components/xsidepanel.js +10 -2
- package/components/xsurfacemanager-controller.d.ts +2 -1
- package/components/xsurfacemanager-controller.js +27 -3
- package/components/xsurfacemanager.d.ts +2 -0
- package/components/xsurfacemanager.js +20 -8
- package/components/xsurfaceoverlay-bridge.d.ts +20 -5
- package/components/xsurfaceoverlay-bridge.js +114 -18
- package/components/xsurfaceportal.d.ts +29 -0
- package/components/xsurfaceportal.js +122 -0
- package/components/xsurfaceregion.d.ts +50 -0
- package/components/xsurfaceregion.js +285 -0
- package/components/xsurfacewindow.js +2 -1
- package/components/xtooltip.js +89 -23
- package/docs/README.md +222 -298
- package/docs/changelog.md +107 -0
- package/docs/component-catalog-coverage.md +9 -9
- package/docs/component-platform.md +19 -1
- package/docs/component-ux-app-authoring.md +56 -63
- package/docs/components/xcode.md +83 -53
- package/docs/components/xsurfaceportal.md +32 -0
- package/docs/components/xsurfaceregion.md +37 -0
- package/docs/components.md +105 -69
- package/docs/de/README.md +264 -0
- package/docs/de/XTend-ADR.md +221 -0
- package/docs/de/a11y-keyboard-smokes.md +62 -0
- package/docs/de/about.md +18 -0
- package/docs/de/api.md +157 -0
- package/docs/de/best-practices.md +76 -0
- package/docs/de/changelog.md +107 -0
- package/docs/de/component-catalog-coverage.md +58 -0
- package/docs/de/component-lab.md +103 -0
- package/docs/de/component-long-tail-migration.md +41 -0
- package/docs/de/component-platform.md +177 -0
- package/docs/de/component-ux-app-authoring.md +123 -0
- package/docs/de/component-ux-authoring.md +96 -0
- package/docs/de/component-ux-gates.md +45 -0
- package/docs/de/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/de/components/xalert.md +81 -0
- package/docs/de/components/xbutton.md +103 -0
- package/docs/de/components/xcalendar.md +82 -0
- package/docs/de/components/xcards.md +128 -0
- package/docs/de/components/xcheckbox.md +102 -0
- package/docs/de/components/xcode.md +156 -0
- package/docs/de/components/xdialog.md +92 -0
- package/docs/de/components/xdrawer.md +84 -0
- package/docs/de/components/xfooter.md +126 -0
- package/docs/de/components/xform.md +128 -0
- package/docs/de/components/xheader.md +308 -0
- package/docs/de/components/xhero.md +142 -0
- package/docs/de/components/xicon.md +125 -0
- package/docs/de/components/xinput.md +129 -0
- package/docs/de/components/xlightbox.md +98 -0
- package/docs/de/components/xlink.md +109 -0
- package/docs/de/components/xmasonry.md +124 -0
- package/docs/de/components/xmenu.md +158 -0
- package/docs/de/components/xmodal.md +82 -0
- package/docs/de/components/xplayer.md +104 -0
- package/docs/de/components/xpopover.md +67 -0
- package/docs/de/components/xprogress.md +56 -0
- package/docs/de/components/xradio.md +103 -0
- package/docs/de/components/xrouter.md +260 -0
- package/docs/de/components/xsection.md +125 -0
- package/docs/de/components/xselect.md +105 -0
- package/docs/de/components/xsidepanel.md +30 -0
- package/docs/de/components/xspinner.md +102 -0
- package/docs/de/components/xstate.md +148 -0
- package/docs/de/components/xstatus.md +55 -0
- package/docs/de/components/xsummary.md +78 -0
- package/docs/de/components/xsurfacemanager.md +27 -0
- package/docs/de/components/xsurfacewindow.md +21 -0
- package/docs/de/components/xtabs.md +160 -0
- package/docs/de/components/xtextarea.md +98 -0
- package/docs/de/components/xtheme.md +167 -0
- package/docs/de/components/xtoast.md +62 -0
- package/docs/de/components/xtooltip.md +66 -0
- package/docs/de/components/xtype.md +82 -0
- package/docs/de/components/xutils.md +144 -0
- package/docs/de/components/xwriter.md +94 -0
- package/docs/de/components.md +153 -0
- package/docs/de/conditional-network-evidence-ci.md +38 -0
- package/docs/de/conditional-network-evidence.md +50 -0
- package/docs/de/core-migration-guide.md +110 -0
- package/docs/de/design-tokens.md +116 -0
- package/docs/de/docs-rmt-production-hardening.md +31 -0
- package/docs/de/enterprise-adoption.md +413 -0
- package/docs/de/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/de/epic10-platform-gates.md +62 -0
- package/docs/de/epic10-release-handoff.md +81 -0
- package/docs/de/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/de/epic12-rc0-handoff.md +61 -0
- package/docs/de/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/de/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/de/epic18-vendor-bugfixes.md +34 -0
- package/docs/de/existing-component-metadata.md +67 -0
- package/docs/de/hydration-performance-closure.md +34 -0
- package/docs/de/hydration-policies.md +71 -0
- package/docs/de/known-residual-triage.md +22 -0
- package/docs/de/manifest-import-policy.md +79 -0
- package/docs/de/manifest.md +112 -0
- package/docs/de/motion-contrast.md +67 -0
- package/docs/de/package-export-lock.md +44 -0
- package/docs/de/performance-measurements.md +106 -0
- package/docs/de/performance-regression.md +89 -0
- package/docs/de/performance.md +94 -0
- package/docs/de/previews/README.md +17 -0
- package/docs/de/prod-browser-csp-smokes.md +40 -0
- package/docs/de/public-component-types.md +79 -0
- package/docs/de/quick-start-guide.md +220 -0
- package/docs/de/rc0-adoption-guide.md +102 -0
- package/docs/de/rc0-gate-matrix.md +58 -0
- package/docs/de/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/de/rc1-migration-notes.md +69 -0
- package/docs/de/rc1-readiness.md +46 -0
- package/docs/de/release-owner-acceptance.md +56 -0
- package/docs/de/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/de/rmt-action-effect-runtime.md +81 -0
- package/docs/de/rmt-app-platform-authoring.md +54 -0
- package/docs/de/rmt-app-platform-fixture.md +46 -0
- package/docs/de/rmt-app-platform-migration-guide.md +88 -0
- package/docs/de/rmt-app-platform-tooling.md +79 -0
- package/docs/de/rmt-component-template-primitives.md +57 -0
- package/docs/de/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/de/rmt-dsl-authoring-polish.md +145 -0
- package/docs/de/rmt-event-routing-runtime.md +81 -0
- package/docs/de/rmt-first-demo-app.md +77 -0
- package/docs/de/rmt-first-xtend-apps.md +129 -0
- package/docs/de/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/de/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/de/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/de/rmt-language-server.md +234 -0
- package/docs/de/rmt-lifecycle-demo.md +24 -0
- package/docs/de/rmt-linter.md +140 -0
- package/docs/de/rmt-node-ssr-adapter.md +100 -0
- package/docs/de/rmt-php-ssr-adapter.md +120 -0
- package/docs/de/rmt-production-readiness.md +63 -0
- package/docs/de/rmt-state-selector-runtime.md +47 -0
- package/docs/de/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/de/rmt-tooling-release-gates.md +77 -0
- package/docs/de/rmt-vnext-authoring.md +170 -0
- package/docs/de/rmt-vnext-component-primitives.md +188 -0
- package/docs/de/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/de/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/de/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/de/rmt-vnext-migration-notes.md +62 -0
- package/docs/de/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/de/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/de/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/de/rmt-vnext-primitive-migration.md +119 -0
- package/docs/de/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/de/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/de/rmt-vnext-primitives-compiler-backlog.md +739 -0
- package/docs/de/rmt-vnext-release-handoff.md +83 -0
- package/docs/de/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/de/rmt-vnext-source-to-sea-gate.md +612 -0
- package/docs/de/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/de/screenreader-signals.md +56 -0
- package/docs/de/supply-chain-gates.md +100 -0
- package/docs/de/surface-manager-authoring-guide.md +94 -0
- package/docs/de/surface-manager-browser-lab.md +45 -0
- package/docs/de/surface-manager-component-lab.md +43 -0
- package/docs/de/surface-manager-controller.md +66 -0
- package/docs/de/surface-manager-layout-engines.md +32 -0
- package/docs/de/surface-manager-lazy-hydration.md +63 -0
- package/docs/de/surface-manager-migration-guide.md +122 -0
- package/docs/de/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/de/surface-manager-overlay-bridge.md +53 -0
- package/docs/de/surface-manager-persistence.md +30 -0
- package/docs/de/surface-manager-quality-gates.md +51 -0
- package/docs/de/surface-manager-release-handoff.md +68 -0
- package/docs/de/surface-manager-remote-policy.md +54 -0
- package/docs/de/surface-manager-rmt-authoring.md +102 -0
- package/docs/de/surface-manager-route-lifecycle.md +59 -0
- package/docs/de/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/de/surface-manager-side-panel-runtime.md +36 -0
- package/docs/de/surface-manager-stack-policy.md +39 -0
- package/docs/de/surface-manager-window-runtime.md +47 -0
- package/docs/de/surface-manager-workbench-fixture.md +43 -0
- package/docs/de/third-party-design-authoring.md +406 -0
- package/docs/de/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/de/trusted-dom-sanitizing.md +110 -0
- package/docs/de/type-exports.md +61 -0
- package/docs/de/typescript-components.md +63 -0
- package/docs/de/visual-browser-regression.md +83 -0
- package/docs/de/visual-owner-artifacts.md +46 -0
- package/docs/de/visual-snapshot-automation.md +87 -0
- package/docs/de/xtend-api-types.md +55 -0
- package/docs/de/xtend-builder-types.md +55 -0
- package/docs/de/xtend-catalog-types.md +44 -0
- package/docs/de/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/de/xtend-fabric.md +474 -0
- package/docs/de/xtend-loader-types.md +58 -0
- package/docs/de/xtend-loader.md +265 -0
- package/docs/de/xtend-policy-types.md +38 -0
- package/docs/de/xtend-rmt-types.md +40 -0
- package/docs/de/xtend-vendor-types.md +36 -0
- package/docs/de/xtendrmt-app-dsl.md +334 -0
- package/docs/de/xtendrmt-migration-guide.md +266 -0
- package/docs/de/xtendrmt-native-authoring.md +333 -0
- package/docs/de/xtendrmt-overview.md +109 -0
- package/docs/de/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/de/xtendrmt-runtime-bridge.md +155 -0
- package/docs/en/README.md +163 -0
- package/docs/en/XTend-ADR.md +221 -0
- package/docs/en/a11y-keyboard-smokes.md +68 -0
- package/docs/en/about.md +25 -0
- package/docs/en/api.md +171 -0
- package/docs/en/best-practices.md +125 -0
- package/docs/en/changelog.md +104 -0
- package/docs/en/component-catalog-coverage.md +104 -0
- package/docs/en/component-lab.md +103 -0
- package/docs/en/component-long-tail-migration.md +41 -0
- package/docs/en/component-platform.md +243 -0
- package/docs/en/component-ux-app-authoring.md +118 -0
- package/docs/en/component-ux-authoring.md +96 -0
- package/docs/en/component-ux-gates.md +45 -0
- package/docs/en/components/x-rmt-lifecycle-demo-build.md +75 -0
- package/docs/en/components/xalert.md +94 -0
- package/docs/en/components/xbutton.md +118 -0
- package/docs/en/components/xcalendar.md +95 -0
- package/docs/en/components/xcards.md +139 -0
- package/docs/en/components/xcheckbox.md +118 -0
- package/docs/en/components/xcode.md +153 -0
- package/docs/en/components/xdialog.md +108 -0
- package/docs/en/components/xdrawer.md +110 -0
- package/docs/en/components/xfooter.md +138 -0
- package/docs/en/components/xform.md +147 -0
- package/docs/en/components/xheader.md +308 -0
- package/docs/en/components/xhero.md +157 -0
- package/docs/en/components/xicon.md +149 -0
- package/docs/en/components/xinput.md +147 -0
- package/docs/en/components/xlightbox.md +113 -0
- package/docs/en/components/xlink.md +130 -0
- package/docs/en/components/xmasonry.md +136 -0
- package/docs/en/components/xmenu.md +185 -0
- package/docs/en/components/xmodal.md +102 -0
- package/docs/en/components/xplayer.md +114 -0
- package/docs/en/components/xpopover.md +87 -0
- package/docs/en/components/xprogress.md +73 -0
- package/docs/en/components/xradio.md +119 -0
- package/docs/en/components/xrouter.md +260 -0
- package/docs/en/components/xsection.md +136 -0
- package/docs/en/components/xselect.md +122 -0
- package/docs/en/components/xsidepanel.md +48 -0
- package/docs/en/components/xspinner.md +118 -0
- package/docs/en/components/xstate.md +163 -0
- package/docs/en/components/xstatus.md +71 -0
- package/docs/en/components/xsummary.md +90 -0
- package/docs/en/components/xsurfacemanager.md +42 -0
- package/docs/en/components/xsurfacewindow.md +31 -0
- package/docs/en/components/xtabs.md +187 -0
- package/docs/en/components/xtextarea.md +115 -0
- package/docs/en/components/xtheme.md +203 -0
- package/docs/en/components/xtoast.md +78 -0
- package/docs/en/components/xtooltip.md +85 -0
- package/docs/en/components/xtype.md +91 -0
- package/docs/en/components/xutils.md +161 -0
- package/docs/en/components/xwriter.md +106 -0
- package/docs/en/components.md +151 -0
- package/docs/en/conditional-network-evidence-ci.md +38 -0
- package/docs/en/conditional-network-evidence.md +50 -0
- package/docs/en/core-migration-guide.md +110 -0
- package/docs/en/design-tokens.md +137 -0
- package/docs/en/docs-rmt-production-hardening.md +31 -0
- package/docs/en/enterprise-adoption.md +413 -0
- package/docs/en/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/en/epic10-platform-gates.md +62 -0
- package/docs/en/epic10-release-handoff.md +81 -0
- package/docs/en/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/en/epic12-rc0-handoff.md +61 -0
- package/docs/en/epic18-media-manager-vendor-upstream.md +232 -0
- package/docs/en/epic18-rmt-app-platform-release-handoff.md +60 -0
- package/docs/en/epic18-vendor-bugfixes.md +29 -0
- package/docs/en/existing-component-metadata.md +67 -0
- package/docs/en/hydration-performance-closure.md +34 -0
- package/docs/en/hydration-policies.md +75 -0
- package/docs/en/known-residual-triage.md +22 -0
- package/docs/en/manifest-import-policy.md +81 -0
- package/docs/en/manifest.md +135 -0
- package/docs/en/motion-contrast.md +67 -0
- package/docs/en/package-export-lock.md +44 -0
- package/docs/en/performance-measurements.md +106 -0
- package/docs/en/performance-regression.md +89 -0
- package/docs/en/performance.md +132 -0
- package/docs/en/previews/README.md +17 -0
- package/docs/en/prod-browser-csp-smokes.md +40 -0
- package/docs/en/public-component-types.md +79 -0
- package/docs/en/quick-start-guide.md +189 -0
- package/docs/en/rc0-adoption-guide.md +102 -0
- package/docs/en/rc0-gate-matrix.md +58 -0
- package/docs/en/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/en/rc1-migration-notes.md +69 -0
- package/docs/en/rc1-readiness.md +46 -0
- package/docs/en/release-owner-acceptance.md +56 -0
- package/docs/en/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/en/rmt-action-effect-runtime.md +101 -0
- package/docs/en/rmt-app-platform-authoring.md +47 -0
- package/docs/en/rmt-app-platform-fixture.md +35 -0
- package/docs/en/rmt-app-platform-migration-guide.md +75 -0
- package/docs/en/rmt-app-platform-tooling.md +58 -0
- package/docs/en/rmt-component-template-primitives.md +49 -0
- package/docs/en/rmt-dom-descriptor-renderer.md +54 -0
- package/docs/en/rmt-dsl-authoring-polish.md +143 -0
- package/docs/en/rmt-event-routing-runtime.md +98 -0
- package/docs/en/rmt-first-demo-app.md +87 -0
- package/docs/en/rmt-first-xtend-apps.md +127 -0
- package/docs/en/rmt-kernel-panic-recovery-incident-handoff.md +60 -0
- package/docs/en/rmt-kernel-security-hardening-migration.md +49 -0
- package/docs/en/rmt-kernel-trusted-output-authoring.md +68 -0
- package/docs/en/rmt-language-server.md +243 -0
- package/docs/en/rmt-lifecycle-demo.md +23 -0
- package/docs/en/rmt-linter.md +146 -0
- package/docs/en/rmt-node-ssr-adapter.md +99 -0
- package/docs/en/rmt-php-ssr-adapter.md +118 -0
- package/docs/en/rmt-production-readiness.md +63 -0
- package/docs/en/rmt-state-selector-runtime.md +34 -0
- package/docs/en/rmt-surface-resource-graph-runtime.md +68 -0
- package/docs/en/rmt-tooling-release-gates.md +77 -0
- package/docs/en/rmt-vnext-authoring.md +102 -0
- package/docs/en/rmt-vnext-component-primitives.md +185 -0
- package/docs/en/rmt-vnext-cross-surface-events.md +59 -0
- package/docs/en/rmt-vnext-enterprise-mfe-handoff.md +62 -0
- package/docs/en/rmt-vnext-fabric-bridge-evidence.md +64 -0
- package/docs/en/rmt-vnext-migration-notes.md +62 -0
- package/docs/en/rmt-vnext-primitive-authoring-tooling.md +174 -0
- package/docs/en/rmt-vnext-primitive-grammar-design.md +268 -0
- package/docs/en/rmt-vnext-primitive-lowering.md +91 -0
- package/docs/en/rmt-vnext-primitive-migration.md +93 -0
- package/docs/en/rmt-vnext-primitive-parser-ast.md +59 -0
- package/docs/en/rmt-vnext-primitive-semantic-graph.md +103 -0
- package/docs/en/rmt-vnext-primitives-compiler-backlog.md +327 -0
- package/docs/en/rmt-vnext-release-handoff.md +83 -0
- package/docs/en/rmt-vnext-remote-surfaces.md +81 -0
- package/docs/en/rmt-vnext-source-to-sea-gate.md +482 -0
- package/docs/en/rmt-vnext-surface-registry-enterprise.md +68 -0
- package/docs/en/screenreader-signals.md +56 -0
- package/docs/en/supply-chain-gates.md +106 -0
- package/docs/en/surface-manager-authoring-guide.md +94 -0
- package/docs/en/surface-manager-browser-lab.md +45 -0
- package/docs/en/surface-manager-component-lab.md +43 -0
- package/docs/en/surface-manager-controller.md +66 -0
- package/docs/en/surface-manager-layout-engines.md +32 -0
- package/docs/en/surface-manager-lazy-hydration.md +63 -0
- package/docs/en/surface-manager-migration-guide.md +113 -0
- package/docs/en/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/en/surface-manager-overlay-bridge.md +53 -0
- package/docs/en/surface-manager-persistence.md +30 -0
- package/docs/en/surface-manager-quality-gates.md +51 -0
- package/docs/en/surface-manager-release-handoff.md +68 -0
- package/docs/en/surface-manager-remote-policy.md +54 -0
- package/docs/en/surface-manager-rmt-authoring.md +89 -0
- package/docs/en/surface-manager-route-lifecycle.md +59 -0
- package/docs/en/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/en/surface-manager-side-panel-runtime.md +36 -0
- package/docs/en/surface-manager-stack-policy.md +39 -0
- package/docs/en/surface-manager-window-runtime.md +47 -0
- package/docs/en/surface-manager-workbench-fixture.md +43 -0
- package/docs/en/third-party-design-authoring.md +406 -0
- package/docs/en/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/en/trusted-dom-sanitizing.md +124 -0
- package/docs/en/type-exports.md +61 -0
- package/docs/en/typescript-components.md +63 -0
- package/docs/en/visual-browser-regression.md +83 -0
- package/docs/en/visual-owner-artifacts.md +46 -0
- package/docs/en/visual-snapshot-automation.md +87 -0
- package/docs/en/xtend-api-types.md +55 -0
- package/docs/en/xtend-builder-types.md +55 -0
- package/docs/en/xtend-catalog-types.md +44 -0
- package/docs/en/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/en/xtend-fabric.md +474 -0
- package/docs/en/xtend-loader-types.md +58 -0
- package/docs/en/xtend-loader.md +265 -0
- package/docs/en/xtend-policy-types.md +38 -0
- package/docs/en/xtend-rmt-types.md +40 -0
- package/docs/en/xtend-vendor-types.md +36 -0
- package/docs/en/xtendrmt-app-dsl.md +331 -0
- package/docs/en/xtendrmt-migration-guide.md +256 -0
- package/docs/en/xtendrmt-native-authoring.md +336 -0
- package/docs/en/xtendrmt-overview.md +63 -0
- package/docs/en/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/en/xtendrmt-runtime-bridge.md +155 -0
- package/docs/enterprise-adoption.md +4 -2
- package/docs/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/epic18-vendor-bugfixes.md +34 -0
- package/docs/index.php +1056 -109
- package/docs/manifest.md +8 -2
- package/docs/menu.json +986 -133
- package/docs/package-export-lock.md +2 -2
- package/docs/public-component-types.md +2 -2
- package/docs/quick-start-guide.md +126 -58
- package/docs/rmt-action-effect-runtime.md +101 -0
- package/docs/rmt-app-platform-authoring.md +54 -0
- package/docs/rmt-app-platform-fixture.md +46 -0
- package/docs/rmt-app-platform-migration-guide.md +88 -0
- package/docs/rmt-app-platform-tooling.md +79 -0
- package/docs/rmt-component-template-primitives.md +57 -0
- package/docs/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/rmt-dsl-authoring-polish.md +67 -44
- package/docs/rmt-event-routing-runtime.md +98 -0
- package/docs/rmt-first-demo-app.md +2 -2
- package/docs/rmt-first-xtend-apps.md +70 -46
- package/docs/rmt-language-server.md +61 -4
- package/docs/rmt-lifecycle-demo.md +1 -2
- package/docs/rmt-node-ssr-adapter.md +144 -0
- package/docs/rmt-php-ssr-adapter.md +158 -0
- package/docs/rmt-state-selector-runtime.md +47 -0
- package/docs/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/rmt-vnext-authoring.md +128 -18
- package/docs/rmt-vnext-component-primitives.md +188 -0
- package/docs/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/rmt-vnext-primitive-migration.md +119 -0
- package/docs/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/rmt-vnext-primitives-compiler-backlog.md +742 -0
- package/docs/rmt-vnext-release-handoff.md +14 -0
- package/docs/rmt-vnext-source-to-sea-gate.md +629 -0
- package/docs/surface-manager-migration-guide.md +34 -6
- package/docs/surface-manager-overlay-bridge.md +9 -4
- package/docs/surface-manager-rmt-authoring.md +50 -34
- package/docs/surface-manager-workbench-fixture.md +1 -2
- package/docs/third-party-design-authoring.md +1 -1
- package/docs/type-exports.md +3 -3
- package/docs/utils/pageloader.js +811 -62
- package/docs/visual-browser-regression.md +1 -1
- package/docs/xtend-rmt-types.md +3 -2
- package/docs/xtendrmt-app-dsl.md +187 -122
- package/docs/xtendrmt-docs-shell-vnext.rmt +165 -0
- package/docs/xtendrmt-migration-guide.md +48 -17
- package/docs/xtendrmt-native-authoring.md +213 -217
- package/docs/xtendrmt-overview.md +81 -61
- package/docs/xtendrmt-parsedown-scheduling.md +23 -8
- package/fabric/package.json +1 -1
- package/package.json +684 -21
- package/tools/package.json +5 -1
- package/tools/rmt-editor/vscode/README.md +72 -5
- package/tools/rmt-editor/vscode/XTend-Logo.png +0 -0
- package/tools/rmt-editor/vscode/extension.d.ts +33 -0
- package/tools/rmt-editor/vscode/extension.js +1816 -7
- package/tools/rmt-editor/vscode/language-configuration.json +2 -1
- package/tools/rmt-editor/vscode/package.json +193 -2
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +103 -1
- package/tools/rmt-editor/vscode/templates/launch.json +70 -0
- package/tools/rmt-editor/vscode/templates/tasks.json +172 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/app-platform-tooling.d.ts +128 -0
- package/tools/rmt-language/app-platform-tooling.js +677 -0
- package/tools/rmt-language/completions.d.ts +5 -0
- package/tools/rmt-language/completions.js +185 -3
- package/tools/rmt-language/diagnostics.js +54 -0
- package/tools/rmt-language/hover.js +36 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +7 -0
- package/tools/rmt-language/rules/app-platform-policy.js +39 -0
- package/tools/rmt-language/rules/index.js +5 -1
- package/tools/rmt-language/semantic-graph.d.ts +6 -0
- package/tools/rmt-language/semantic-graph.js +928 -0
- package/tools/rmt-language/snippets/index.js +44 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +10 -0
- package/tools/rmt-language/vnext-compatibility.js +642 -0
- package/tools/rmt-language/vnext-compiler.d.ts +5 -0
- package/tools/rmt-language/vnext-compiler.js +863 -17
- package/tools/rmt-language/vnext-parser.js +725 -9
- package/tools/rmt-language/vnext-release.d.ts +1 -0
- package/tools/rmt-language/vnext-release.js +20 -0
- package/tools/rmt-language/vnext-source-to-sea.d.ts +33 -0
- package/tools/rmt-language/vnext-source-to-sea.js +2227 -0
- package/tools/rmt-language/vnext-surfaces.js +111 -52
- package/tools/rmt-language/vnext-tooling.d.ts +19 -1
- package/tools/rmt-language/vnext-tooling.js +1247 -5
- package/tools/rmt-language-server/protocol.js +3 -0
- package/tools/rmt-language-server/server.d.ts +2 -0
- package/tools/rmt-language-server/server.js +176 -22
- package/tools/rmt-linter/cli.d.ts +2 -0
- package/tools/rmt-linter/cli.js +62 -0
- package/xtend-builder/generators/registry.js +11 -0
- package/xtend-builder/generators/rmt-app-platform.js +239 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +3 -11
- package/xtend-builder/lib/cli.js +38 -0
- package/xtend-builder/package.json +3 -3
- package/xtend-builder/scaffold.config.js +29 -2
- package/xtend.css +49 -2
- package/xtendrmt/package.json +49 -1
- package/xtendrmt/rmt-action-effect-runtime.d.ts +126 -0
- package/xtendrmt/rmt-action-effect-runtime.js +494 -0
- package/xtendrmt/rmt-component-capability-registry.d.ts +180 -0
- package/xtendrmt/rmt-component-capability-registry.js +636 -0
- package/xtendrmt/rmt-core.d.ts +6 -0
- package/xtendrmt/rmt-core.esm.js +32 -6
- package/xtendrmt/rmt-dom-descriptor-renderer.d.ts +107 -0
- package/xtendrmt/rmt-dom-descriptor-renderer.js +1066 -0
- package/xtendrmt/rmt-event-routing-runtime.d.ts +144 -0
- package/xtendrmt/rmt-event-routing-runtime.js +666 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +2 -2
- package/xtendrmt/rmt-lifecycle-demo.core.json +4 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +1 -1
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +2 -2
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +4 -4
- package/xtendrmt/rmt-native-shell-runtime.d.ts +77 -0
- package/xtendrmt/rmt-native-shell-runtime.js +309 -0
- package/xtendrmt/rmt-node-ssr-adapter.d.ts +197 -0
- package/xtendrmt/rmt-node-ssr-adapter.js +1006 -0
- package/xtendrmt/rmt-php-ssr-adapter.php +976 -0
- package/xtendrmt/rmt-runtime.browser.js +32 -6
- package/xtendrmt/rmt-runtime.esm.js +32 -6
- package/xtendrmt/rmt-state-selector-runtime.d.ts +166 -0
- package/xtendrmt/rmt-state-selector-runtime.js +866 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.d.ts +224 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.js +932 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +3 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +3 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +3420 -372
- package/xtendrmt/xtendrmt-bestcase-demo.js +424 -8
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +214 -6
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# XTend Supply-Chain Gates
|
|
2
|
+
|
|
3
|
+
- Status: active since `ER-WP-30`
|
|
4
|
+
- Docs Contract: `xtend.docs.supply-chain-gates.v1`
|
|
5
|
+
- Supply-Chain Contract: `xtend.security.supply-chain-gate-plan.v1`
|
|
6
|
+
- Dependency Audit Gate: `xtend.security.dependency-audit-gate.v1`
|
|
7
|
+
- License Policy: `xtend.security.license-policy.v1`
|
|
8
|
+
- Vulnerability Policy: `xtend.security.vulnerability-policy.v1`
|
|
9
|
+
- Release Gate: `xtend.security.release-supply-chain-gate.v1`
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
XTend is prepared for RC1 publish prep as a scoped public package surface.
|
|
14
|
+
Supply-chain gates control dependencies, licenses, vulnerabilities, SBOM,
|
|
15
|
+
provenance, and the installable package surface.
|
|
16
|
+
|
|
17
|
+
The local default path is offline and reproducible. It does not query the npm
|
|
18
|
+
registry.
|
|
19
|
+
|
|
20
|
+
## Local Checks
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
node scripts/verify_supply_chain_policy.js --json
|
|
24
|
+
node scripts/run_xtend_tests.js supply-chain --json
|
|
25
|
+
npm run test:supply-chain
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The verifier checks:
|
|
29
|
+
|
|
30
|
+
- `private: false` for RC1 publish prep
|
|
31
|
+
- `license: "Apache-2.0"` for the full XTend stack
|
|
32
|
+
- `publishConfig.provenance = true`
|
|
33
|
+
- export of `security/supply-chain-gate-policy.js`
|
|
34
|
+
- release gate metadata in `package.json`
|
|
35
|
+
- dependency inventory and lockfile requirement
|
|
36
|
+
|
|
37
|
+
## CI and Release Stages
|
|
38
|
+
|
|
39
|
+
These commands are planned for CI and release automation:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm audit --audit-level=moderate
|
|
43
|
+
npm sbom --sbom-format=cyclonedx --json
|
|
44
|
+
npm run release:report
|
|
45
|
+
npm run pack:dry-run
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`npm audit` and `npm sbom` may need network access. They therefore do not
|
|
49
|
+
belong to the local default test, but to controlled CI/release stages.
|
|
50
|
+
|
|
51
|
+
## License Policy
|
|
52
|
+
|
|
53
|
+
The full XTend stack is set to `Apache-2.0`. For RC1 publish prep,
|
|
54
|
+
`private: false` is set; the actual `npm publish` remains a separate owner
|
|
55
|
+
step.
|
|
56
|
+
|
|
57
|
+
The scoped release manifests are part of the supply-chain gate:
|
|
58
|
+
|
|
59
|
+
| Package | Manifest |
|
|
60
|
+
|---------|----------|
|
|
61
|
+
| `@ccslabs/xtend` | `package.json` |
|
|
62
|
+
| `@ccslabs/xtend-rmt` | `xtendrmt/package.json` |
|
|
63
|
+
| `@ccslabs/xtend-fabric` | `fabric/package.json` |
|
|
64
|
+
| `@ccslabs/xtend-cli` | `xtend-builder/package.json` |
|
|
65
|
+
| `@ccslabs/xtend-compiler` | `tools/package.json` |
|
|
66
|
+
|
|
67
|
+
A public release first needs:
|
|
68
|
+
|
|
69
|
+
- confirmed Apache-2.0 license decision
|
|
70
|
+
- dependency license inventory
|
|
71
|
+
- review of all non-permissive dependency licenses
|
|
72
|
+
- exclusion of AGPL/GPL/UNLICENSED as default third-party dependencies
|
|
73
|
+
|
|
74
|
+
## Vulnerability Policy
|
|
75
|
+
|
|
76
|
+
- `critical` blocks every release.
|
|
77
|
+
- `high` blocks release candidates.
|
|
78
|
+
- Production findings from `moderate` upward must be triaged.
|
|
79
|
+
- Known exploits must not remain in release candidates.
|
|
80
|
+
|
|
81
|
+
## Machine-Readable Policy
|
|
82
|
+
|
|
83
|
+
```js
|
|
84
|
+
const {
|
|
85
|
+
createSupplyChainGatePlan,
|
|
86
|
+
classifyPackageSupplyChain
|
|
87
|
+
} = require('./security/supply-chain-gate-policy');
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The policy itself lives in:
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
security/supply-chain-gate-policy.js
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The local report uses:
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
xtend.security.supply-chain-report.v1
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Related Documents
|
|
103
|
+
|
|
104
|
+
- [XTend Loader](./xtend-loader.md)
|
|
105
|
+
- [Trusted DOM and Sanitizing](./trusted-dom-sanitizing.md)
|
|
106
|
+
- [XTend Fabric Runtime](./xtend-fabric.md)
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# SurfaceManager Authoring Guide
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.surface.release-handoff.v1`
|
|
4
|
+
- Workpackage: `WP-SM-09`
|
|
5
|
+
- Fixture: `tests/fixtures/rmt-surface-manager-component-lab.rmt`
|
|
6
|
+
- Local gate: `node scripts/run_xtend_tests.js surface-release-handoff --json`
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
|
|
10
|
+
This guide describes the recommended authoring path for XTend app shells with SurfaceManager. It connects the early component-metadata path from `WP-SM-01` with the native RMT `surfaces` domain from `WP-SM-08`.
|
|
11
|
+
|
|
12
|
+
## Authoring Modes
|
|
13
|
+
|
|
14
|
+
| Mode | When to use | Source |
|
|
15
|
+
|------|-------------|--------|
|
|
16
|
+
| `component-metadata-mvp` | small shells, existing component records, fast migration | `components[*].metadata.surface` |
|
|
17
|
+
| `dual-record-handoff` | transition, tooling comparison, regression against existing runtime | `components[*].metadata.surface` plus `surfaces[*]` |
|
|
18
|
+
| `native-surfaces-preferred` | complex app shells, multi-window, panels, overlay stack | `surfaces[*]` as domain surface source |
|
|
19
|
+
|
|
20
|
+
## Component Metadata Remains Valid
|
|
21
|
+
|
|
22
|
+
Existing RMT component records remain compatible:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"id": "workbench.inspector",
|
|
27
|
+
"kind": "custom_element",
|
|
28
|
+
"adapter": "xtend.component",
|
|
29
|
+
"tag": "x-surface-window",
|
|
30
|
+
"schedule": "surface.user-blocking.open",
|
|
31
|
+
"metadata": {
|
|
32
|
+
"surface": {
|
|
33
|
+
"schema": "xtend.surface.record.v1",
|
|
34
|
+
"id": "surface.inspector",
|
|
35
|
+
"type": "window",
|
|
36
|
+
"manager": "workbench.manager",
|
|
37
|
+
"stateKey": "xtend.surface.inspector.state"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
This mode is enough when an app shell already runs correctly through `x-surface-manager` and does not need the native RMT surface domain for tooling, migration or cross-record validation.
|
|
44
|
+
|
|
45
|
+
## Prefer Native Surfaces
|
|
46
|
+
|
|
47
|
+
For new complex shells, `surfaces[*]` is the target state:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"id": "surface.inspector",
|
|
52
|
+
"schema": "xtend.surface.record.v1",
|
|
53
|
+
"type": "window",
|
|
54
|
+
"adapter": "xtend.surface",
|
|
55
|
+
"manager": "workbench.manager",
|
|
56
|
+
"component": "workbench.inspector",
|
|
57
|
+
"route": "workbench",
|
|
58
|
+
"schedule": "surface.user-blocking.open",
|
|
59
|
+
"stateKey": "xtend.surface.inspector.state"
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Authoring rules:
|
|
64
|
+
|
|
65
|
+
- `manager` references the `x-surface-manager` component record.
|
|
66
|
+
- `component` references the visible surface component.
|
|
67
|
+
- `route` binds the surface to the app-shell context.
|
|
68
|
+
- `schedule` binds open, layout, persistence or diagnostics to RMT scheduling.
|
|
69
|
+
- `stateKey` remains stable between component metadata and native domain.
|
|
70
|
+
- Historically, `xtend.surface` stayed an adapter handoff until `WP-SM-19`; since the runtime handoff, the productive adapter claim is gateable while the visible UI continues to materialize through the SurfaceManager component family.
|
|
71
|
+
|
|
72
|
+
## Release Handoff
|
|
73
|
+
|
|
74
|
+
After `WP-SM-09`, the historical authoring handoff stated:
|
|
75
|
+
|
|
76
|
+
- component metadata is the stable compatibility path.
|
|
77
|
+
- native `surfaces[*]` is the preferred authoring path for new app shells.
|
|
78
|
+
- dual records are the safe migration mode.
|
|
79
|
+
- the RMT kernel remains host-neutral.
|
|
80
|
+
- the productive `xtend.surface` adapter runtime was follow-up work and has been implemented since `WP-SM-19`.
|
|
81
|
+
|
|
82
|
+
## WP-SM-19 Runtime Authoring
|
|
83
|
+
|
|
84
|
+
As of `WP-SM-19`, the productive `xtend.surface` adapter runtime is implemented and gateable through `xtend.surface.runtime-release-handoff.v1`. For new complex app shells, `native-surfaces-preferred` remains the default: `surfaces[*]` describes domain surfaces, while component records provide the visible XTend UI bindings.
|
|
85
|
+
|
|
86
|
+
Productive authoring rules:
|
|
87
|
+
|
|
88
|
+
- `surfaces[*]` is the source for new multi-surface app shells.
|
|
89
|
+
- `components[*].metadata.surface` remains compatible for existing shells and dual-record migrations.
|
|
90
|
+
- `x-surface-manager` and the SurfaceController remain the runtime registry.
|
|
91
|
+
- Fabric, XRouter, `xstate` and the RMT kernel remain independent layers.
|
|
92
|
+
- `node scripts/run_xtend_tests.js surface-runtime-release-handoff --json` checks the final runtime handoff.
|
|
93
|
+
|
|
94
|
+
Details are in [SurfaceManager Runtime Release Handoff](./surface-manager-runtime-release-handoff.md).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# SurfaceManager Browser Lab
|
|
2
|
+
|
|
3
|
+
`WP-SM-18` adds a browser-close lab to the SurfaceManager layer for real app-shell stability. The contract `xtend.surface.browser-lab.v1` intentionally stays framework-native: the fixture uses `x-surface-manager`, `x-surface-window`, `x-side-panel`, `x-modal`, the `SkeletonLoader` from the loader and the existing surface hydration. It is not a Docs-app special case and not a monkeypatch.
|
|
4
|
+
|
|
5
|
+
## Artifacts
|
|
6
|
+
|
|
7
|
+
| Artifact | Path |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| Catalog | `catalog/surface-manager-browser-lab.js` |
|
|
10
|
+
| Browser-lab fixture | `tests/browser/fixtures/surface-manager-browser-lab.html` |
|
|
11
|
+
| Visual baseline | `tests/browser/visual-baselines/surface-manager-browser-lab.dom-baseline.json` |
|
|
12
|
+
| Gate | `node scripts/run_xtend_tests.js surface-browser-lab --json` |
|
|
13
|
+
|
|
14
|
+
The visual baseline uses `xtend.surface.browser-lab.visual-baseline.v1`. It is JSON-based and pixel-ready: later browser-lab runs can attach real snapshot files, while the local fast gate already checks DOM signatures, states and budgets.
|
|
15
|
+
|
|
16
|
+
## Gate States
|
|
17
|
+
|
|
18
|
+
The fixture covers five reproducible states:
|
|
19
|
+
|
|
20
|
+
| Snapshot | State |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| `surface-lab-cold-start` | app shell visible before content hydration |
|
|
23
|
+
| `surface-lab-skeleton` | Parsedown content hidden behind SkeletonLoader |
|
|
24
|
+
| `surface-lab-hydrated` | content released, skeleton removed |
|
|
25
|
+
| `surface-lab-route-change` | route-bound surface without shell resize |
|
|
26
|
+
| `surface-lab-modal-stack` | modal stack above SurfaceManager policy |
|
|
27
|
+
|
|
28
|
+
## Regressions
|
|
29
|
+
|
|
30
|
+
The report connects `xtend.surface.browser-lab.performance-report.v1` and `xtend.surface.browser-lab.cls-report.v1`. Locally, these risks must fail:
|
|
31
|
+
|
|
32
|
+
| Risk | Budget |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| CLS | `<= 0.01` |
|
|
35
|
+
| Layout shift | `<= 1px` |
|
|
36
|
+
| Pop-in of unstyled content | `0` |
|
|
37
|
+
| Open/Focus | `<= 16ms` |
|
|
38
|
+
| Route | `<= 32ms` |
|
|
39
|
+
| Hydrate | `<= 120ms` |
|
|
40
|
+
|
|
41
|
+
## App-Shell Probes
|
|
42
|
+
|
|
43
|
+
The lab references the Docs app through `docs/index.php` and the Parsedown/RMT pilot `docs/xtendrmt-parsedown-docs.rmt`. `tests/browser/fixtures/rmt-surface-workbench-smoke.html` also remains a reference workbench in the gate. This lets WP-SM-18 check the production-close app-shell path without moving Parsedown, PHP or workbench-specific behavior into the SurfaceManager.
|
|
44
|
+
|
|
45
|
+
The SurfaceManager remains a supporting XTend UI layer. It does not create a second registry, replace Fabric or the RMT kernel, or load a remote runtime in the kernel.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# SurfaceManager Component Lab
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.surface.component-lab-fixture.v1`
|
|
4
|
+
- Release contract: `xtend.surface.release-handoff.v1`
|
|
5
|
+
- Fixture: `tests/fixtures/rmt-surface-manager-component-lab.rmt`
|
|
6
|
+
- Gate: `node scripts/run_xtend_tests.js surface-release-handoff --json`
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
The SurfaceManager Component Lab is the static lab fixture for the SurfaceManager line. It shows how an app shell is described with `x-surface-manager`, `x-surface-window`, `x-side-panel`, a compatible dialog and native `surfaces[*]` records.
|
|
11
|
+
|
|
12
|
+
The fixture is not a new lab server. It extends the existing Component Lab idea with a surface-specific authoring and migration view.
|
|
13
|
+
|
|
14
|
+
## Panels
|
|
15
|
+
|
|
16
|
+
| Panel | Task |
|
|
17
|
+
|-------|------|
|
|
18
|
+
| `surface-preview` | check the visible surface shell with WindowManager and SidePanel components |
|
|
19
|
+
| `native-rmt-inspector` | inspect `surfaces[*]`, `adapters`, `components`, `routes` and `schedules` |
|
|
20
|
+
| `migration-diff` | compare `components[*].metadata.surface` with native surface records |
|
|
21
|
+
| `quality-gates` | make the gate chain from `surface-manager-quality` to `surface-native-rmt` visible |
|
|
22
|
+
| `source-links` | link docs, catalog, fixture, runtime and suite paths |
|
|
23
|
+
|
|
24
|
+
## Fixture Model
|
|
25
|
+
|
|
26
|
+
`tests/fixtures/rmt-surface-manager-component-lab.rmt` contains:
|
|
27
|
+
|
|
28
|
+
- four adapters: `xtend.component`, `xtend.xrouter`, `rmt.state-scheduler-diagnostics`, `xtend.surface`
|
|
29
|
+
- one SurfaceManager component `surface.lab.manager`
|
|
30
|
+
- two windows: `surface.lab.preview` and `surface.lab.rmtInspector`
|
|
31
|
+
- two side panels: `surface.lab.migrationPanel` and `surface.lab.qualityPanel`
|
|
32
|
+
- one dialog: `surface.lab.commandDialog`
|
|
33
|
+
- native `surfaces[*]` records plus matching `components[*].metadata.surface` dual records
|
|
34
|
+
|
|
35
|
+
The fixture checks the authoring boundary. It does not claim a productive `xtend.surface` runtime.
|
|
36
|
+
|
|
37
|
+
## Local Flow
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
node scripts/run_xtend_tests.js surface-release-handoff --json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The gate validates the fixture through RMT normalization and semantic graph. Surface IDs, component refs, manager refs, routes and schedules therefore remain visible and machine-checkable.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# SurfaceManager Controller
|
|
2
|
+
|
|
3
|
+
`WP-SM-02` introduces the internal Surface Controller for XTend. It is the runnable foundation for multi-window UIs, but not yet a visible custom element.
|
|
4
|
+
|
|
5
|
+
- Contract: `xtend.surface.controller.v1`
|
|
6
|
+
- Runtime: `components/xsurfacemanager-controller.js`
|
|
7
|
+
- Types: `components/xsurfacemanager-controller.d.ts`
|
|
8
|
+
- Snapshot: `xtend.surface.snapshot.v1`
|
|
9
|
+
- Gate: `node scripts/run_xtend_tests.js surface-controller --json`
|
|
10
|
+
|
|
11
|
+
## Role
|
|
12
|
+
|
|
13
|
+
The controller manages surface records from the `WP-SM-01` authoring model. RMT can therefore continue to describe normal component records with `metadata.surface`; the controller normalizes these records into a runtime registry.
|
|
14
|
+
|
|
15
|
+
It is intentionally `controller-only-no-custom-element`. `WP-SM-03` builds `x-surface-manager` and `x-surface-window` on top of it.
|
|
16
|
+
|
|
17
|
+
## API
|
|
18
|
+
|
|
19
|
+
Important methods:
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
const {
|
|
23
|
+
createSurfaceController
|
|
24
|
+
} = require('./components/xsurfacemanager-controller.js');
|
|
25
|
+
|
|
26
|
+
const controller = createSurfaceController({
|
|
27
|
+
managerId: 'workbench.manager',
|
|
28
|
+
xstate,
|
|
29
|
+
fabric
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
controller.registerSurface(surfaceRecord);
|
|
33
|
+
controller.openSurface('workbench.inspector');
|
|
34
|
+
controller.focusSurface('workbench.inspector');
|
|
35
|
+
controller.moveSurface('workbench.inspector', { x: 128, y: 96 });
|
|
36
|
+
controller.resizeSurface('workbench.inspector', { width: 700, height: 460 });
|
|
37
|
+
controller.closeSurface('workbench.inspector');
|
|
38
|
+
|
|
39
|
+
const snapshot = controller.snapshot();
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Supported methods are `registerSurface`, `openSurface`, `closeSurface`, `focusSurface`, `updateSurface`, `moveSurface`, `resizeSurface`, `minimizeSurface`, `maximizeSurface`, `restoreSurface`, `snapshot` and `dispose`.
|
|
43
|
+
|
|
44
|
+
## State
|
|
45
|
+
|
|
46
|
+
After every commit, the controller mirrors:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
xtend.surface.registry
|
|
50
|
+
xtend.surface.active
|
|
51
|
+
xtend.surface.<surfaceId>.state
|
|
52
|
+
xtend.surface.<surfaceId>.bounds
|
|
53
|
+
xtend.surface.<surfaceId>.lifecycle
|
|
54
|
+
xtend.surface.diagnostics
|
|
55
|
+
xtend.surface.snapshot
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The snapshot contains only layout, lifecycle and UI state. Raw metadata, DOM nodes and content payloads are not serialized.
|
|
59
|
+
|
|
60
|
+
## Diagnostics
|
|
61
|
+
|
|
62
|
+
If Fabric is passed in, the controller sends `xtend.surface.diagnostic.v1` events through `emitDiagnostic`. Without Fabric, the controller remains runnable and mirrors diagnostics to xstate.
|
|
63
|
+
|
|
64
|
+
## Next Step
|
|
65
|
+
|
|
66
|
+
`WP-SM-03` should build the visible component family on this controller: `x-surface-manager`, `x-surface-window`, first layer containers, events and real window chrome.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# SurfaceManager Layout Engines
|
|
2
|
+
|
|
3
|
+
As of `WP-SM-16`, `x-surface-manager` owns the `xtend.surface.layout-engine.v1` contract for visible, snapshot-compatible surface layouts.
|
|
4
|
+
|
|
5
|
+
## Engines
|
|
6
|
+
|
|
7
|
+
| Engine | Purpose |
|
|
8
|
+
|--------|---------|
|
|
9
|
+
| `freeform` | free windows with viewport clamp, snap and simple collision correction |
|
|
10
|
+
| `docked` | side panels and docked surfaces occupy edges; workspace surfaces fill the rest |
|
|
11
|
+
| `split` | open layout surfaces are distributed as split panes |
|
|
12
|
+
| `tile` | open layout surfaces are distributed in a grid |
|
|
13
|
+
| `stacked` | open layout surfaces are shown as an offset stack and used as compact fallback |
|
|
14
|
+
|
|
15
|
+
## Runtime
|
|
16
|
+
|
|
17
|
+
- `snapshotSurfaceLayout()` returns `xtend.surface.layout-engine-report.v1`.
|
|
18
|
+
- `applyLayoutEngine(engine)` writes calculated bounds through the existing SurfaceController into the snapshot.
|
|
19
|
+
- `dockSurface()` sets placement/mode and visibly applies a docked or currently active layout engine.
|
|
20
|
+
- `undockSurface()` sets a surface to `floating` and lets it run in freeform mode again.
|
|
21
|
+
- `surface-layout-gap` and `surface-layout-snap` control spacing and the snap grid.
|
|
22
|
+
- compact viewports fall back to `stacked`.
|
|
23
|
+
|
|
24
|
+
## Boundary
|
|
25
|
+
|
|
26
|
+
The layout engine remains an XTend UI support layer. The SurfaceController remains the registry and snapshot source, Fabric remains responsible for diagnostics/backpressure, and the RMT kernel imports no XTend types. No second registry is created.
|
|
27
|
+
|
|
28
|
+
Local gate:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
node scripts/run_xtend_tests.js surface-layout-engines --json
|
|
32
|
+
```
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# SurfaceManager Lazy Hydration
|
|
2
|
+
|
|
3
|
+
Docs contract: `xtend.docs.surface-manager-lazy-hydration.v1`
|
|
4
|
+
|
|
5
|
+
`WP-SM-13` hardens `x-surface-manager` for shell-first apps: surface chrome and app shell can become visible immediately while surface content is skeletonized, loaded and hydrated through the framework-native XTendLoader.
|
|
6
|
+
|
|
7
|
+
## Contract
|
|
8
|
+
|
|
9
|
+
- Loading policy: `xtend.surface.loading-policy.v1`
|
|
10
|
+
- Loading report: `xtend.surface.loading-report.v1`
|
|
11
|
+
- Gate: `node scripts/run_xtend_tests.js surface-lazy-hydration --json`
|
|
12
|
+
- Package script: `npm run test:surface-lazy-hydration`
|
|
13
|
+
|
|
14
|
+
## Policies
|
|
15
|
+
|
|
16
|
+
`surface-loading-policy` on the manager sets the default policy. Individual surfaces can override it with `data-surface-hydration-policy`.
|
|
17
|
+
|
|
18
|
+
| Policy | Behavior |
|
|
19
|
+
|--------|----------|
|
|
20
|
+
| `eager` | content is hydrated directly after surface registration |
|
|
21
|
+
| `visible` | content is hydrated as soon as the surface is visible |
|
|
22
|
+
| `open` | content is hydrated when the surface is open |
|
|
23
|
+
| `idle` | content is loaded through `requestIdleCallback` or timeout fallback |
|
|
24
|
+
| `route` | content waits for route signals such as `xtend-route-changed` |
|
|
25
|
+
|
|
26
|
+
## Runtime
|
|
27
|
+
|
|
28
|
+
`x-surface-manager` uses no Docs-app special case. The runtime uses the existing loader APIs:
|
|
29
|
+
|
|
30
|
+
- `XTendLoader.ensureComponent`
|
|
31
|
+
- `XTendLoader.hydrateTree`
|
|
32
|
+
- `XTendLoader.showSkeleton`
|
|
33
|
+
- `XTendLoader.hideSkeleton`
|
|
34
|
+
- `XTendStyleRegistry.ensureRuntimeStyles`
|
|
35
|
+
|
|
36
|
+
Before hydration, the manager sets `data-xtend-surface-content-ready="false"` and lets the SkeletonLoader cover direct content children. Only after a successful component-ready and `hydrateTree` gate is the skeleton removed. On errors or timeouts, the skeleton remains active so unstyled content does not pop in.
|
|
37
|
+
|
|
38
|
+
## Parsedown and Remote Slots
|
|
39
|
+
|
|
40
|
+
Parsedown containers and remote-capable slots are normal surface content. There is no monkeypatch in the Docs app:
|
|
41
|
+
|
|
42
|
+
```html
|
|
43
|
+
<x-surface-window
|
|
44
|
+
surface-id="docs.surface"
|
|
45
|
+
data-surface-hydration-policy="open"
|
|
46
|
+
open>
|
|
47
|
+
<section data-xtend-parsedown-container="true">
|
|
48
|
+
<x-code language="markdown"># Docs</x-code>
|
|
49
|
+
</section>
|
|
50
|
+
</x-surface-window>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Remote-capable slots can be marked with `data-remote-capable-content-slot="true"`. Lazy hydration loads only the DOM/component scope; remote trust, ownership and capabilities remain reserved for later remote-surface policies.
|
|
54
|
+
|
|
55
|
+
## Diagnostics
|
|
56
|
+
|
|
57
|
+
The manager provides:
|
|
58
|
+
|
|
59
|
+
- `snapshotSurfaceLoading()`
|
|
60
|
+
- `hydrateSurfaceContent(surfaceRef, options)`
|
|
61
|
+
- events `surface-content-loading`, `surface-content-hydrated`, `surface-content-hydration-skipped` and `surface-content-hydration-error`
|
|
62
|
+
|
|
63
|
+
`snapshotSurfaceLoading()` reports policy, skeleton status, hydration status, tags, unresolved tags, duration and the boundaries `shellFirst`, `protectsUnstyledContent` and `createsSecondRegistry: false`.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# SurfaceManager Migration Guide
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.surface.release-handoff.v1`
|
|
4
|
+
- Native Domain: `xtend.rmt.surfaces-domain.v1`
|
|
5
|
+
- Adapter Handoff: `xtend.surface.adapter.v1`
|
|
6
|
+
- Gate: `node scripts/run_xtend_tests.js surface-release-handoff --json`
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
|
|
10
|
+
This guide describes the additive migration from surface metadata in component records to native RMT surface records. The migration intentionally avoids a big bang: existing `components[*].metadata.surface` records remain valid while new app shells are authored in RMT vNext. `surfaces[*]` is the runtime and compatibility output, not the new manual authoring surface.
|
|
11
|
+
|
|
12
|
+
## Migration Steps
|
|
13
|
+
|
|
14
|
+
| Step | Result |
|
|
15
|
+
|------|--------|
|
|
16
|
+
| `inventory-component-metadata-surfaces` | capture all existing `metadata.surface` records and state keys |
|
|
17
|
+
| `stabilize-surface-ids-and-state-keys` | freeze IDs, `type`, `manager` and `stateKey` |
|
|
18
|
+
| `add-native-surfaces-records` | add parallel `surfaces[*]` records with the same identity |
|
|
19
|
+
| `keep-dual-records-during-handoff` | compare component metadata and native records in the gate |
|
|
20
|
+
| `switch-authoring-default-to-vnext-surfaces` | write new complex shells as `surface ... component ...` in RMT vNext |
|
|
21
|
+
| `close-xtend-surface-runtime-after-adapter-implementation` | close the historical adapter handoff from `WP-SM-09` through `WP-SM-19` runtime gates |
|
|
22
|
+
|
|
23
|
+
## vNext Target Shape
|
|
24
|
+
|
|
25
|
+
```rmt
|
|
26
|
+
template workbench.surfaceMigration {
|
|
27
|
+
state workbench.properties type object initial null
|
|
28
|
+
|
|
29
|
+
portal surface.root root "#workbench-root" layer surface
|
|
30
|
+
|
|
31
|
+
surface surface.properties kind side-panel component x-side-panel {
|
|
32
|
+
source state workbench.properties
|
|
33
|
+
portal surface.root
|
|
34
|
+
|
|
35
|
+
lane visible weight 70 {
|
|
36
|
+
hydrate properties-panel from state workbench.properties
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Before: Legacy Component Metadata
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"id": "workbench.properties",
|
|
47
|
+
"tag": "x-side-panel",
|
|
48
|
+
"metadata": {
|
|
49
|
+
"surface": {
|
|
50
|
+
"schema": "xtend.surface.record.v1",
|
|
51
|
+
"id": "surface.properties",
|
|
52
|
+
"type": "side-panel",
|
|
53
|
+
"manager": "workbench.manager",
|
|
54
|
+
"stateKey": "xtend.surface.properties.state"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## After: Dual Record as Runtime Output
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"surfaces": [
|
|
65
|
+
{
|
|
66
|
+
"id": "surface.properties",
|
|
67
|
+
"schema": "xtend.surface.record.v1",
|
|
68
|
+
"type": "side-panel",
|
|
69
|
+
"adapter": "xtend.surface",
|
|
70
|
+
"manager": "workbench.manager",
|
|
71
|
+
"component": "workbench.properties",
|
|
72
|
+
"route": "workbench",
|
|
73
|
+
"schedule": "surface.visible.render",
|
|
74
|
+
"stateKey": "xtend.surface.properties.state"
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
During the handoff, the component metadata remains in the component record and can optionally point to the native record with `nativeRecord`. New examples should show the vNext target shape; dual records serve as migration evidence.
|
|
81
|
+
|
|
82
|
+
## Review Checklist
|
|
83
|
+
|
|
84
|
+
- Every native surface has a stable `id`.
|
|
85
|
+
- `component` points to exactly one component record.
|
|
86
|
+
- `manager` points to the `x-surface-manager` record.
|
|
87
|
+
- `route` and `schedule` resolve to native RMT records.
|
|
88
|
+
- `stateKey` is identical between `components[*].metadata.surface` and `surfaces[*]`.
|
|
89
|
+
- `xtend.surface` is declared as `surface_adapter` and has been promoted for production through the runtime gates since `WP-SM-19`.
|
|
90
|
+
- The gates `surface-native-rmt`, `surface-release-handoff` and `surface-runtime-release-handoff` are green.
|
|
91
|
+
|
|
92
|
+
Details for the generic RMT migration are in [XTendRMT Native Migration Guide](./xtendrmt-migration-guide.md). Surface authoring details are in [SurfaceManager Authoring Guide](./surface-manager-authoring-guide.md).
|
|
93
|
+
|
|
94
|
+
## WP-SM-19 Runtime Migration Notes
|
|
95
|
+
|
|
96
|
+
`WP-SM-19` accepts `xtend.surface.runtime-migration-notes.v1` as the final migration line for the production Surface Runtime.
|
|
97
|
+
|
|
98
|
+
Extended gate order for migrations:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
node scripts/run_xtend_tests.js surface-adapter-runtime --json
|
|
102
|
+
node scripts/run_xtend_tests.js surface-native-materialization --json
|
|
103
|
+
node scripts/run_xtend_tests.js surface-persistence --json
|
|
104
|
+
node scripts/run_xtend_tests.js surface-lazy-hydration --json
|
|
105
|
+
node scripts/run_xtend_tests.js surface-route-lifecycle --json
|
|
106
|
+
node scripts/run_xtend_tests.js surface-stack-policy --json
|
|
107
|
+
node scripts/run_xtend_tests.js surface-layout-engines --json
|
|
108
|
+
node scripts/run_xtend_tests.js surface-remote-policy --json
|
|
109
|
+
node scripts/run_xtend_tests.js surface-browser-lab --json
|
|
110
|
+
node scripts/run_xtend_tests.js surface-runtime-release-handoff --json
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Existing `components[*].metadata.surface` records remain allowed. The target state for new shells is still RMT vNext; `surfaces[*]` remains the verifiable output because tooling, materialization, persistence, routing, remote policy and browser-lab stability can be verified together there.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# SurfaceManager Native RMT Surfaces
|
|
2
|
+
|
|
3
|
+
`WP-SM-08` introduces `xtend.rmt.surfaces-domain.v1` and the adapter handoff `xtend.surface.adapter.v1`.
|
|
4
|
+
|
|
5
|
+
## Local Gate
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node scripts/run_xtend_tests.js surface-native-rmt --json
|
|
9
|
+
npm run test:surface-native-rmt
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Domain
|
|
13
|
+
|
|
14
|
+
`surfaces` is an optional top-level domain in `.rmt` documents. A surface record continues to reference normal RMT domains:
|
|
15
|
+
|
|
16
|
+
- `adapter`: `xtend.surface`
|
|
17
|
+
- `manager`: `x-surface-manager` component record
|
|
18
|
+
- `component`: visible surface component, for example `x-surface-window`, `x-side-panel`, `x-modal`, `x-dialog` or `x-drawer`
|
|
19
|
+
- `route`: route record
|
|
20
|
+
- `schedule`: schedule record
|
|
21
|
+
|
|
22
|
+
The fixture `tests/fixtures/rmt-surface-native-domain.rmt` shows six surface records: two windows, one side panel, modal, dialog and drawer.
|
|
23
|
+
|
|
24
|
+
## Adapter
|
|
25
|
+
|
|
26
|
+
`xtend.surface` can be registered as a `surface_adapter`. In `WP-SM-08`, `runtimeImplemented: false` was intentional and the adapter remained a handoff contract. Since `WP-SM-19`, the productive runtime line is gateable in the [SurfaceManager Runtime Release Handoff](./surface-manager-runtime-release-handoff.md): the runtime consumes `surfaces[*]`, calls the SurfaceController and keeps DOM, xstate and Fabric outside the RMT kernel.
|
|
27
|
+
|
|
28
|
+
## Migration
|
|
29
|
+
|
|
30
|
+
Existing component records with `metadata.surface` remain valid. New native records can be maintained in parallel as long as `id`, `type`, `manager`, `component`, `route`, `schedule` and `stateKey` stay aligned.
|
|
31
|
+
|
|
32
|
+
## Tooling
|
|
33
|
+
|
|
34
|
+
Schema, type artifact, normalizer, semantic graph, completion provider and linter understand `surfaces`. This allows the Language Server to reference surface records and offer completion for `surfaces[*].component`, `surfaces[*].adapter`, `surfaces[*].route`, `surfaces[*].schedule` and `surfaces[*].type`.
|
|
35
|
+
|
|
36
|
+
## Handoff
|
|
37
|
+
|
|
38
|
+
`WP-SM-09` finalizes docs, Component Lab and migration guide on this contract base. The closure is in [SurfaceManager Release Handoff](./surface-manager-release-handoff.md) (`docs/surface-manager-release-handoff.md`) and is checked through `node scripts/run_xtend_tests.js surface-release-handoff --json`.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# SurfaceManager Overlay Bridge
|
|
2
|
+
|
|
3
|
+
`WP-SM-06` introduces `xtend.surface.overlay-stack-bridge.v1`. The bridge makes `x-modal`, `x-dialog` and `x-drawer` optionally compatible with the `x-surface-manager` surface stack.
|
|
4
|
+
|
|
5
|
+
## What Changes
|
|
6
|
+
|
|
7
|
+
`x-surface-manager` now also registers these elements in the `overlays` slot:
|
|
8
|
+
|
|
9
|
+
- `x-modal` as surface type `modal`
|
|
10
|
+
- `x-dialog` as surface type `dialog`
|
|
11
|
+
- `x-drawer` as surface type `drawer`
|
|
12
|
+
|
|
13
|
+
Existing overlay APIs remain available. A modal can still be controlled through `open()` and `close()`, and a drawer through `openDrawer()` and `closeDrawer()`. The legacy events `modal-opened`, `dialog-opened` and `drawer-opened` remain visible.
|
|
14
|
+
|
|
15
|
+
## Command Bridge
|
|
16
|
+
|
|
17
|
+
Overlays can use a `surface-overlay-command` event inside the manager:
|
|
18
|
+
|
|
19
|
+
```js
|
|
20
|
+
manager.dispatchEvent(new CustomEvent('surface-overlay-command', {
|
|
21
|
+
bubbles: true,
|
|
22
|
+
composed: true,
|
|
23
|
+
detail: {
|
|
24
|
+
surfaceId: 'settings.dialog',
|
|
25
|
+
command: 'open'
|
|
26
|
+
}
|
|
27
|
+
}));
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Supported commands are the existing surface operations such as `open`, `close`, `focus` and `update`. The manager uses the same controller stack as windows and side panels.
|
|
31
|
+
|
|
32
|
+
## Stack Behavior
|
|
33
|
+
|
|
34
|
+
The bridge mirrors the surface snapshot into overlay CSS custom properties:
|
|
35
|
+
|
|
36
|
+
- `--surface-overlay-z`
|
|
37
|
+
- `--surface-overlay-backdrop-z`
|
|
38
|
+
|
|
39
|
+
Outside a SurfaceManager, `x-modal`, `x-dialog` and `x-drawer` keep their previous default z-indices.
|
|
40
|
+
|
|
41
|
+
## RMT and Lifecycle
|
|
42
|
+
|
|
43
|
+
At this stage, RMT remains on `xtend.component`. The bridge internally creates `xtend.surface.record.v1`, but it does not yet activate a native `xtend.surface` domain.
|
|
44
|
+
|
|
45
|
+
The local gate:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
node scripts/run_xtend_tests.js surface-overlay-bridge --json
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Boundary
|
|
52
|
+
|
|
53
|
+
`WP-SM-06` prepares stack compatibility. Browser, a11y, performance and visual smokes follow in `WP-SM-07`; the native RMT `surfaces` domain follows later in `WP-SM-08`.
|