@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,56 @@
|
|
|
1
|
+
# Screenreader Signals
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.docs.screenreader-signals.v1`
|
|
4
|
+
- Runtime-/Gate-Contract: `xtend.a11y.screenreader-signals.v1`
|
|
5
|
+
- Signal Record: `xtend.a11y.screenreader-signal.v1`
|
|
6
|
+
- Gate: `node scripts/run_xtend_tests.js screenreader-signals --json`
|
|
7
|
+
|
|
8
|
+
## Zweck
|
|
9
|
+
|
|
10
|
+
Screenreader-Signale machen sichtbar, welche UI-Zustandswechsel nicht still bleiben duerfen. Der Contract beschreibt `aria-live`, Statusregionen, Errorregionen und Announcements, ohne eine bestimmte UI-Runtime in XTendRMT einzubetten.
|
|
11
|
+
|
|
12
|
+
XTend nutzt den Contract fuer Komponenten und Scaffold-Artefakte. XTendRMT kann die resultierende A11y-Arbeit ueber Fabric-Lane `a11y`, Fiber `a11y.announce` und Schedule `a11y.user-blocking.announce` schedulen.
|
|
13
|
+
|
|
14
|
+
## Signalarten
|
|
15
|
+
|
|
16
|
+
| Signal | Live Region | Region | Typischer Einsatz |
|
|
17
|
+
|--------|-------------|--------|-------------------|
|
|
18
|
+
| `status-announcement` | `polite` | `status` | Toasts, Alerts, Submit-Erfolg |
|
|
19
|
+
| `dismissal-announcement` | `polite` | `status` | Toast/Alert wurde geschlossen |
|
|
20
|
+
| `validation-error-summary` | `assertive` | `error` | Formular- oder Input-Fehler |
|
|
21
|
+
| `submit-status` | `polite` | `status` | Formular erfolgreich verarbeitet |
|
|
22
|
+
| `dialog-context` | `none` | `dialog` | Dialog-/Modal-Kontext via Rolle und Label |
|
|
23
|
+
| `focus-return` | `none` | `focus` | Fokus geht nach Overlay-Schluss zur Quelle zurueck |
|
|
24
|
+
| `route-change-announcement` | `polite` | `status` | Route wurde gewechselt |
|
|
25
|
+
|
|
26
|
+
## Komponentenpflichten
|
|
27
|
+
|
|
28
|
+
Feedback-Komponenten deklarieren Statussignale und setzen eine Live-Region. Fehlerzustaende duerfen assertiv sein, muessen aber reviewbar bleiben.
|
|
29
|
+
|
|
30
|
+
Form-Komponenten deklarieren mindestens `validation-error-summary` und `submit-status`. Errorregionen brauchen eine klare Quelle und duerfen leere Announcements nicht als Erfolg werten.
|
|
31
|
+
|
|
32
|
+
Overlay-Komponenten deklarieren `dialog-context` und `focus-return`. Sie brauchen nicht zwingend `aria-live`, weil der Screenreader-Kontext ueber `role="dialog"`, `aria-modal`, `aria-labelledby` und Fokusmanagement entsteht.
|
|
33
|
+
|
|
34
|
+
## Scaffold
|
|
35
|
+
|
|
36
|
+
Neue Scaffold-Komponenten enthalten den Screenreader-Contract in:
|
|
37
|
+
|
|
38
|
+
- `xtendScaffoldA11yProfile.screenreader.signalContract`
|
|
39
|
+
- Manifest-Key `screenreaderSignals`
|
|
40
|
+
- Component-Doku Abschnitt `Screenreader-Signale`
|
|
41
|
+
- Fixture-Ergebnis `screenreaderSignals`
|
|
42
|
+
- Type Contract `ScreenreaderSignalContract`
|
|
43
|
+
|
|
44
|
+
## Verifikation
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm run test:screenreader-signals
|
|
48
|
+
node scripts/run_xtend_tests.js screenreader-signals --json
|
|
49
|
+
node scripts/run_xtend_tests.js a11y-hydration --json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Der Gate prueft die Contract-Fabrik, reale Feedback-/Form-/Overlay-Komponenten, Scaffold-Ausgaben und Package-Metadaten.
|
|
53
|
+
|
|
54
|
+
## Grenzen
|
|
55
|
+
|
|
56
|
+
Der Contract ist kein Ersatz fuer manuelle Screenreader-Abnahme. Er verhindert aber, dass relevante Status-, Fehler- oder Overlay-Signale unbenannt bleiben.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# XTend Supply-Chain Gates
|
|
2
|
+
|
|
3
|
+
- Status: Active ab `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
|
+
## Uebersicht
|
|
12
|
+
|
|
13
|
+
XTend ist fuer RC1-Publish-Prep als scoped Public-Package-Flaeche vorbereitet. Supply-Chain-Gates kontrollieren dafuer Dependencies, Lizenzen, Vulnerabilities, SBOM, Provenance und die installierbare Package-Oberflaeche.
|
|
14
|
+
|
|
15
|
+
Der lokale Default-Pfad ist offline und reproduzierbar. Er fragt keine npm Registry ab.
|
|
16
|
+
|
|
17
|
+
## Lokale Checks
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
node scripts/verify_supply_chain_policy.js --json
|
|
21
|
+
node scripts/run_xtend_tests.js supply-chain --json
|
|
22
|
+
npm run test:supply-chain
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Der Verify prueft:
|
|
26
|
+
|
|
27
|
+
- `private: false` fuer RC1-Publish-Prep
|
|
28
|
+
- `license: "Apache-2.0"` fuer den kompletten XTend-Stack
|
|
29
|
+
- `publishConfig.provenance = true`
|
|
30
|
+
- Export von `security/supply-chain-gate-policy.js`
|
|
31
|
+
- Release-Gate-Metadaten in `package.json`
|
|
32
|
+
- Dependency-Inventar und Lockfile-Pflicht
|
|
33
|
+
|
|
34
|
+
## CI-/Release-Stufen
|
|
35
|
+
|
|
36
|
+
Diese Kommandos sind fuer CI und Release Automation geplant:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm audit --audit-level=moderate
|
|
40
|
+
npm sbom --sbom-format=cyclonedx --json
|
|
41
|
+
npm run release:report
|
|
42
|
+
npm run pack:dry-run
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`npm audit` und `npm sbom` koennen Netzwerkzugriff benoetigen. Sie gehoeren deshalb nicht in den lokalen Default-Test, sondern in kontrollierte CI-/Release-Stufen.
|
|
46
|
+
|
|
47
|
+
## License Policy
|
|
48
|
+
|
|
49
|
+
Der komplette XTend-Stack ist auf `Apache-2.0` gesetzt. Fuer RC1-Publish-Prep ist `private: false` gesetzt; der eigentliche `npm publish` bleibt ein separater Owner-Schritt.
|
|
50
|
+
|
|
51
|
+
Die scoped Release-Manifests sind Teil des Supply-Chain-Gates:
|
|
52
|
+
|
|
53
|
+
| Package | Manifest |
|
|
54
|
+
|---------|----------|
|
|
55
|
+
| `@ccslabs/xtend` | `package.json` |
|
|
56
|
+
| `@ccslabs/xtend-rmt` | `xtendrmt/package.json` |
|
|
57
|
+
| `@ccslabs/xtend-fabric` | `fabric/package.json` |
|
|
58
|
+
| `@ccslabs/xtend-cli` | `xtend-builder/package.json` |
|
|
59
|
+
| `@ccslabs/xtend-compiler` | `tools/package.json` |
|
|
60
|
+
|
|
61
|
+
Ein oeffentlicher Release braucht vorher:
|
|
62
|
+
|
|
63
|
+
- bestaetigte Apache-2.0 License-Entscheidung
|
|
64
|
+
- Dependency-License-Inventar
|
|
65
|
+
- Review aller nicht-permissiven Dependency-Lizenzen
|
|
66
|
+
- Ausschluss von AGPL/GPL/UNLICENSED als Default-Third-Party-Abhaengigkeiten
|
|
67
|
+
|
|
68
|
+
## Vulnerability Policy
|
|
69
|
+
|
|
70
|
+
- `critical` blockiert jeden Release.
|
|
71
|
+
- `high` blockiert Release Candidates.
|
|
72
|
+
- Production-Findings ab `moderate` muessen triagiert werden.
|
|
73
|
+
- bekannte Exploits duerfen nicht in Release Candidates verbleiben.
|
|
74
|
+
|
|
75
|
+
## Maschinenlesbare Policy
|
|
76
|
+
|
|
77
|
+
```js
|
|
78
|
+
const {
|
|
79
|
+
createSupplyChainGatePlan,
|
|
80
|
+
classifyPackageSupplyChain
|
|
81
|
+
} = require('./security/supply-chain-gate-policy');
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Die Policy selbst liegt in:
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
security/supply-chain-gate-policy.js
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Der lokale Report nutzt:
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
xtend.security.supply-chain-report.v1
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Weiterfuehrende Dokumente
|
|
97
|
+
|
|
98
|
+
- [XTend Loader](./xtend-loader.md)
|
|
99
|
+
- [Trusted DOM und Sanitizing](./trusted-dom-sanitizing.md)
|
|
100
|
+
- [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
|
+
## Ziel
|
|
9
|
+
|
|
10
|
+
Dieser Guide beschreibt den empfohlenen Authoring-Pfad fuer XTend App Shells mit SurfaceManager. Er verbindet den fruehen Component-Metadata-Pfad aus `WP-SM-01` mit der nativen RMT `surfaces` Domain aus `WP-SM-08`.
|
|
11
|
+
|
|
12
|
+
## Authoring-Modi
|
|
13
|
+
|
|
14
|
+
| Modus | Wann nutzen | Quelle |
|
|
15
|
+
|-------|-------------|--------|
|
|
16
|
+
| `component-metadata-mvp` | Kleine Shells, bestehende Component Records, schnelle Migration | `components[*].metadata.surface` |
|
|
17
|
+
| `dual-record-handoff` | Uebergang, Tooling-Vergleich, Regression gegen bestehende Runtime | `components[*].metadata.surface` plus `surfaces[*]` |
|
|
18
|
+
| `native-surfaces-preferred` | Komplexe App Shells, Multi Window, Panels, Overlay Stack | `surfaces[*]` als fachliche Surface-Quelle |
|
|
19
|
+
|
|
20
|
+
## Component-Metadata bleibt gueltig
|
|
21
|
+
|
|
22
|
+
Bestehende RMT Component Records bleiben kompatibel:
|
|
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
|
+
Dieser Modus reicht, wenn eine App Shell ueber `x-surface-manager` bereits korrekt laeuft und keine native RMT Surface-Domain fuer Tooling, Migration oder Cross-Record-Validierung gebraucht wird.
|
|
44
|
+
|
|
45
|
+
## Native Surfaces bevorzugen
|
|
46
|
+
|
|
47
|
+
Fuer neue komplexe Shells ist `surfaces[*]` der Zielzustand:
|
|
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-Regeln:
|
|
64
|
+
|
|
65
|
+
- `manager` referenziert den `x-surface-manager` Component Record.
|
|
66
|
+
- `component` referenziert die sichtbare Surface-Komponente.
|
|
67
|
+
- `route` bindet die Surface an den App-Shell-Kontext.
|
|
68
|
+
- `schedule` bindet Open, Layout, Persistenz oder Diagnostics an RMT Scheduling.
|
|
69
|
+
- `stateKey` bleibt stabil zwischen Component-Metadata und nativer Domain.
|
|
70
|
+
- Historisch blieb `xtend.surface` bis `WP-SM-19` ein Adapter-Handoff; seit dem Runtime-Handoff ist der produktive Adapter-Claim gatebar, waehrend die sichtbare UI weiterhin ueber die SurfaceManager-Komponentenfamilie materialisiert wird.
|
|
71
|
+
|
|
72
|
+
## Release-Handoff
|
|
73
|
+
|
|
74
|
+
Nach `WP-SM-09` galt fuer den historischen Authoring-Handoff:
|
|
75
|
+
|
|
76
|
+
- Component-Metadata ist stabiler Compatibility-Pfad.
|
|
77
|
+
- Native `surfaces[*]` ist der bevorzugte Authoring-Pfad fuer neue App Shells.
|
|
78
|
+
- Dual Records sind der sichere Migrationsmodus.
|
|
79
|
+
- Der RMT Kernel bleibt host-neutral.
|
|
80
|
+
- Die produktive `xtend.surface` Adapter Runtime war Folgearbeit und ist seit `WP-SM-19` umgesetzt.
|
|
81
|
+
|
|
82
|
+
## WP-SM-19 Runtime Authoring
|
|
83
|
+
|
|
84
|
+
Ab `WP-SM-19` ist die produktive `xtend.surface` Adapter Runtime umgesetzt und ueber `xtend.surface.runtime-release-handoff.v1` gatebar. Fuer neue komplexe App Shells bleibt `native-surfaces-preferred` der Default: `surfaces[*]` beschreibt die fachlichen Surfaces, waehrend Component Records die sichtbaren XTend-UI-Bindings liefern.
|
|
85
|
+
|
|
86
|
+
Produktive Authoring-Regeln:
|
|
87
|
+
|
|
88
|
+
- `surfaces[*]` ist die Quelle fuer neue Multi-Surface-App-Shells.
|
|
89
|
+
- `components[*].metadata.surface` bleibt fuer bestehende Shells und Dual-Record-Migrationen kompatibel.
|
|
90
|
+
- `x-surface-manager` und der SurfaceController bleiben die Runtime-Registry.
|
|
91
|
+
- Fabric, XRouter, `xstate` und RMT-Kernel bleiben eigenstaendige Schichten.
|
|
92
|
+
- `node scripts/run_xtend_tests.js surface-runtime-release-handoff --json` prueft den finalen Runtime-Handoff.
|
|
93
|
+
|
|
94
|
+
Details stehen im [SurfaceManager Runtime Release Handoff](./surface-manager-runtime-release-handoff.md).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# SurfaceManager Browser Lab
|
|
2
|
+
|
|
3
|
+
`WP-SM-18` ergaenzt die SurfaceManager-Schicht um ein browsernahes Lab fuer echte App-Shell-Stabilitaet. Der Contract `xtend.surface.browser-lab.v1` bleibt bewusst framework-nativ: Das Fixture nutzt `x-surface-manager`, `x-surface-window`, `x-side-panel`, `x-modal`, den `SkeletonLoader` aus dem Loader und die bestehende Surface-Hydration. Es ist keine Doku-App-Sonderloesung und kein Monkeypatch.
|
|
4
|
+
|
|
5
|
+
## Artefakte
|
|
6
|
+
|
|
7
|
+
| Artefakt | Pfad |
|
|
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
|
+
Die Visual Baseline verwendet `xtend.surface.browser-lab.visual-baseline.v1`. Sie ist JSON-basiert und pixel-ready: spaetere Browser-Lab-Laeufe koennen echte Snapshot-Dateien anhaengen, waehrend der lokale Fast-Gate bereits DOM-Signaturen, States und Budgets prueft.
|
|
15
|
+
|
|
16
|
+
## Gate-Zustaende
|
|
17
|
+
|
|
18
|
+
Das Fixture deckt fuenf reproduzierbare Zustaende ab:
|
|
19
|
+
|
|
20
|
+
| Snapshot | Zustand |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| `surface-lab-cold-start` | App Shell sichtbar vor Content-Hydration |
|
|
23
|
+
| `surface-lab-skeleton` | Parsedown-Content hinter SkeletonLoader verborgen |
|
|
24
|
+
| `surface-lab-hydrated` | Content freigegeben, Skeleton entfernt |
|
|
25
|
+
| `surface-lab-route-change` | Route-bound Surface ohne Shell-Resize |
|
|
26
|
+
| `surface-lab-modal-stack` | Modal Stack ueber SurfaceManager-Policy |
|
|
27
|
+
|
|
28
|
+
## Regressionen
|
|
29
|
+
|
|
30
|
+
Der Report verbindet `xtend.surface.browser-lab.performance-report.v1` und `xtend.surface.browser-lab.cls-report.v1`. Lokal muessen folgende Risiken fehlschlagen:
|
|
31
|
+
|
|
32
|
+
| Risiko | Budget |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| CLS | `<= 0.01` |
|
|
35
|
+
| Layout Shift | `<= 1px` |
|
|
36
|
+
| Pop-In von ungestyltem Content | `0` |
|
|
37
|
+
| Open/Focus | `<= 16ms` |
|
|
38
|
+
| Route | `<= 32ms` |
|
|
39
|
+
| Hydrate | `<= 120ms` |
|
|
40
|
+
|
|
41
|
+
## App-Shell-Proben
|
|
42
|
+
|
|
43
|
+
Das Lab referenziert die Docs-App ueber `docs/index.php` und den Parsedown/RMT-Pilot `docs/xtendrmt-parsedown-docs.rmt`. Zusaetzlich bleibt `tests/browser/fixtures/rmt-surface-workbench-smoke.html` als Referenz-Workbench im Gate. Dadurch prueft WP-SM-18 den produktnahen App-Shell-Pfad, ohne Parsedown, PHP oder Workbench-spezifisches Verhalten in den SurfaceManager zu verschieben.
|
|
44
|
+
|
|
45
|
+
Der SurfaceManager bleibt eine unterstuetzende XTend-UI-Schicht. Er erzeugt keine zweite Registry, ersetzt nicht Fabric oder den RMT-Kernel und laedt keine Remote Runtime im 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
|
+
## Zweck
|
|
9
|
+
|
|
10
|
+
Das SurfaceManager Component Lab ist die statische Lab-Fixture fuer die SurfaceManager-Linie. Es zeigt, wie eine App Shell mit `x-surface-manager`, `x-surface-window`, `x-side-panel`, einem kompatiblen Dialog und nativen `surfaces[*]` Records beschrieben wird.
|
|
11
|
+
|
|
12
|
+
Die Fixture ist kein neuer Lab-Server. Sie erweitert den bestehenden Component-Lab-Gedanken um Surface-spezifische Authoring- und Migrationssicht.
|
|
13
|
+
|
|
14
|
+
## Panels
|
|
15
|
+
|
|
16
|
+
| Panel | Aufgabe |
|
|
17
|
+
|-------|---------|
|
|
18
|
+
| `surface-preview` | sichtbare Surface Shell mit WindowManager- und SidePanel-Komponenten pruefen |
|
|
19
|
+
| `native-rmt-inspector` | `surfaces[*]`, `adapters`, `components`, `routes` und `schedules` inspizieren |
|
|
20
|
+
| `migration-diff` | `components[*].metadata.surface` mit nativen Surface Records vergleichen |
|
|
21
|
+
| `quality-gates` | Gate-Kette von `surface-manager-quality` bis `surface-native-rmt` sichtbar machen |
|
|
22
|
+
| `source-links` | Doku-, Katalog-, Fixture-, Runtime- und Suite-Pfade verlinken |
|
|
23
|
+
|
|
24
|
+
## Fixture-Modell
|
|
25
|
+
|
|
26
|
+
`tests/fixtures/rmt-surface-manager-component-lab.rmt` enthaelt:
|
|
27
|
+
|
|
28
|
+
- vier Adapter: `xtend.component`, `xtend.xrouter`, `rmt.state-scheduler-diagnostics`, `xtend.surface`
|
|
29
|
+
- eine SurfaceManager-Komponente `surface.lab.manager`
|
|
30
|
+
- zwei Windows: `surface.lab.preview` und `surface.lab.rmtInspector`
|
|
31
|
+
- zwei SidePanels: `surface.lab.migrationPanel` und `surface.lab.qualityPanel`
|
|
32
|
+
- einen Dialog: `surface.lab.commandDialog`
|
|
33
|
+
- native `surfaces[*]` Records plus passende `components[*].metadata.surface` Dual Records
|
|
34
|
+
|
|
35
|
+
Die Fixture prueft die Authoring-Boundary. Sie behauptet keine produktive `xtend.surface` Runtime.
|
|
36
|
+
|
|
37
|
+
## Lokaler Ablauf
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
node scripts/run_xtend_tests.js surface-release-handoff --json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Der Gate validiert die Fixture ueber RMT-Normalisierung und Semantic Graph. Damit bleiben Surface-IDs, Component-Refs, Manager-Refs, Routes und Schedules sichtbar und maschinenpruefbar.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# SurfaceManager Controller
|
|
2
|
+
|
|
3
|
+
`WP-SM-02` fuehrt den internen Surface Controller fuer XTend ein. Er ist der lauffaehige Unterbau fuer Multi Window Oberflaechen, aber noch kein sichtbares 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
|
+
## Rolle
|
|
12
|
+
|
|
13
|
+
Der Controller verwaltet Surface Records aus dem `WP-SM-01` Authoring-Modell. RMT kann also weiterhin normale Component Records mit `metadata.surface` beschreiben; der Controller normalisiert diese Records zu einer Laufzeit-Registry.
|
|
14
|
+
|
|
15
|
+
Er ist bewusst `controller-only-no-custom-element`. `WP-SM-03` baut darauf `x-surface-manager` und `x-surface-window`.
|
|
16
|
+
|
|
17
|
+
## API
|
|
18
|
+
|
|
19
|
+
Wichtige Methoden:
|
|
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
|
+
Unterstuetzt werden `registerSurface`, `openSurface`, `closeSurface`, `focusSurface`, `updateSurface`, `moveSurface`, `resizeSurface`, `minimizeSurface`, `maximizeSurface`, `restoreSurface`, `snapshot` und `dispose`.
|
|
43
|
+
|
|
44
|
+
## State
|
|
45
|
+
|
|
46
|
+
Nach jedem Commit spiegelt der Controller:
|
|
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
|
+
Der Snapshot enthaelt nur Layout-, Lifecycle- und UI-State. Raw Metadata, DOM Nodes und Content-Payloads werden nicht serialisiert.
|
|
59
|
+
|
|
60
|
+
## Diagnostics
|
|
61
|
+
|
|
62
|
+
Wenn Fabric uebergeben wird, sendet der Controller `xtend.surface.diagnostic.v1` Events ueber `emitDiagnostic`. Ohne Fabric bleibt der Controller trotzdem lauffaehig und spiegelt Diagnostics nach xstate.
|
|
63
|
+
|
|
64
|
+
## Naechster Schritt
|
|
65
|
+
|
|
66
|
+
`WP-SM-03` sollte die sichtbare Komponentenfamilie auf diesem Controller aufbauen: `x-surface-manager`, `x-surface-window`, erste Layer-Container, Events und echte Window-Chrome.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# SurfaceManager Layout Engines
|
|
2
|
+
|
|
3
|
+
Ab `WP-SM-16` besitzt `x-surface-manager` den Contract `xtend.surface.layout-engine.v1` fuer sichtbare, snapshot-kompatible Surface Layouts.
|
|
4
|
+
|
|
5
|
+
## Engines
|
|
6
|
+
|
|
7
|
+
| Engine | Zweck |
|
|
8
|
+
|--------|-------|
|
|
9
|
+
| `freeform` | freie Fenster mit Viewport-Clamp, Snap und einfacher Kollisionskorrektur |
|
|
10
|
+
| `docked` | SidePanels und docked Surfaces belegen Ränder, Workspace-Surfaces fuellen den Rest |
|
|
11
|
+
| `split` | offene Layout-Surfaces werden als Split Panes verteilt |
|
|
12
|
+
| `tile` | offene Layout-Surfaces werden in einem Raster verteilt |
|
|
13
|
+
| `stacked` | offene Layout-Surfaces werden als versetzter Stack dargestellt und als kompakter Fallback genutzt |
|
|
14
|
+
|
|
15
|
+
## Runtime
|
|
16
|
+
|
|
17
|
+
- `snapshotSurfaceLayout()` liefert `xtend.surface.layout-engine-report.v1`.
|
|
18
|
+
- `applyLayoutEngine(engine)` schreibt berechnete Bounds ueber den bestehenden SurfaceController in den Snapshot.
|
|
19
|
+
- `dockSurface()` setzt Placement/Mode und wendet eine docked oder aktuell aktive Layout Engine sichtbar an.
|
|
20
|
+
- `undockSurface()` setzt eine Surface auf `floating` und laesst sie wieder im Freeform-Modus laufen.
|
|
21
|
+
- `surface-layout-gap` und `surface-layout-snap` steuern Abstaende und Snap-Raster.
|
|
22
|
+
- kompakte Viewports fallen auf `stacked` zurueck.
|
|
23
|
+
|
|
24
|
+
## Boundary
|
|
25
|
+
|
|
26
|
+
Die Layout Engine bleibt eine XTend-UI-Unterstuetzungsschicht. Der SurfaceController bleibt Registry- und Snapshot-Quelle, Fabric bleibt fuer Diagnostics/Backpressure zustaendig, und der RMT Kernel importiert keine XTend-Typen. Es entsteht keine zweite Registry.
|
|
27
|
+
|
|
28
|
+
Lokaler 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` haertet `x-surface-manager` fuer shell-first Apps: Surface Chrome und App Shell koennen sofort sichtbar werden, waehrend Surface Content ueber den framework-nativen XTendLoader skeletonisiert, geladen und hydriert wird.
|
|
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` am Manager setzt die Default-Policy. Einzelne Surfaces koennen sie mit `data-surface-hydration-policy` ueberschreiben.
|
|
17
|
+
|
|
18
|
+
| Policy | Verhalten |
|
|
19
|
+
|--------|-----------|
|
|
20
|
+
| `eager` | Content wird direkt nach der Surface-Registrierung hydriert. |
|
|
21
|
+
| `visible` | Content wird hydriert, sobald die Surface sichtbar ist. |
|
|
22
|
+
| `open` | Content wird hydriert, wenn die Surface geoeffnet ist. |
|
|
23
|
+
| `idle` | Content wird ueber `requestIdleCallback` oder Timeout-Fallback geladen. |
|
|
24
|
+
| `route` | Content wartet auf Route-Signale wie `xtend-route-changed`. |
|
|
25
|
+
|
|
26
|
+
## Runtime
|
|
27
|
+
|
|
28
|
+
`x-surface-manager` nutzt keine Doku-App-Sonderloesung. Die Runtime greift auf die vorhandenen Loader-APIs zu:
|
|
29
|
+
|
|
30
|
+
- `XTendLoader.ensureComponent`
|
|
31
|
+
- `XTendLoader.hydrateTree`
|
|
32
|
+
- `XTendLoader.showSkeleton`
|
|
33
|
+
- `XTendLoader.hideSkeleton`
|
|
34
|
+
- `XTendStyleRegistry.ensureRuntimeStyles`
|
|
35
|
+
|
|
36
|
+
Vor der Hydration setzt der Manager `data-xtend-surface-content-ready="false"` und laesst den SkeletonLoader direkte Content-Kinder verdecken. Erst nach erfolgreichem Component-Ready- und `hydrateTree`-Gate wird der Skeleton entfernt. Bei Fehlern oder Timeouts bleibt der Skeleton aktiv, damit kein ungestylter Content aufpoppt.
|
|
37
|
+
|
|
38
|
+
## Parsedown und Remote Slots
|
|
39
|
+
|
|
40
|
+
Parsedown-Container und remote-faehige Slots sind normale Surface-Inhalte. Es gibt kein Monkeypatch in der Doku-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-faehige Slots koennen mit `data-remote-capable-content-slot="true"` markiert werden. Die Lazy-Hydration laedt dabei nur den DOM-/Komponenten-Scope; Remote Trust, Ownership und Capabilities bleiben spaeteren Remote-Surface-Policies vorbehalten.
|
|
54
|
+
|
|
55
|
+
## Diagnostics
|
|
56
|
+
|
|
57
|
+
Der Manager bietet:
|
|
58
|
+
|
|
59
|
+
- `snapshotSurfaceLoading()`
|
|
60
|
+
- `hydrateSurfaceContent(surfaceRef, options)`
|
|
61
|
+
- Events `surface-content-loading`, `surface-content-hydrated`, `surface-content-hydration-skipped` und `surface-content-hydration-error`
|
|
62
|
+
|
|
63
|
+
`snapshotSurfaceLoading()` meldet Policy, Skeleton-Status, Hydration-Status, Tags, unresolved Tags, Dauer und die Boundaries `shellFirst`, `protectsUnstyledContent` und `createsSecondRegistry: false`.
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
## Ziel
|
|
9
|
+
|
|
10
|
+
Dieser Guide beschreibt die additive Migration von Surface-Metadata in Component
|
|
11
|
+
Records zu nativen RMT Surface Records. Die Migration ist bewusst ohne Big
|
|
12
|
+
Bang: bestehende `components[*].metadata.surface` Records bleiben gueltig,
|
|
13
|
+
waehrend neue App Shells in RMT vNext authoriert werden. `surfaces[*]` ist der
|
|
14
|
+
Runtime- und Compatibility-Output, nicht die neue Handarbeit.
|
|
15
|
+
|
|
16
|
+
## Migrationsschritte
|
|
17
|
+
|
|
18
|
+
| Schritt | Ergebnis |
|
|
19
|
+
|---------|----------|
|
|
20
|
+
| `inventory-component-metadata-surfaces` | alle bestehenden `metadata.surface` Records und State Keys erfassen |
|
|
21
|
+
| `stabilize-surface-ids-and-state-keys` | IDs, `type`, `manager` und `stateKey` einfrieren |
|
|
22
|
+
| `add-native-surfaces-records` | parallele `surfaces[*]` Records mit gleicher Identitaet anlegen |
|
|
23
|
+
| `keep-dual-records-during-handoff` | Component-Metadata und native Records im Gate vergleichen |
|
|
24
|
+
| `switch-authoring-default-to-vnext-surfaces` | neue komplexe Shells als `surface ... component ...` in RMT vNext schreiben |
|
|
25
|
+
| `close-xtend-surface-runtime-after-adapter-implementation` | historisches Adapter-Handoff aus `WP-SM-09` durch `WP-SM-19` Runtime-Gates schliessen |
|
|
26
|
+
|
|
27
|
+
## vNext-Zielbild
|
|
28
|
+
|
|
29
|
+
```rmt
|
|
30
|
+
template workbench.surfaceMigration {
|
|
31
|
+
state workbench.properties type object initial null
|
|
32
|
+
|
|
33
|
+
portal surface.root root "#workbench-root" layer surface
|
|
34
|
+
|
|
35
|
+
surface surface.properties kind side-panel component x-side-panel {
|
|
36
|
+
source state workbench.properties
|
|
37
|
+
portal surface.root
|
|
38
|
+
|
|
39
|
+
lane visible weight 70 {
|
|
40
|
+
hydrate properties-panel from state workbench.properties
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Vorher: Legacy Component Metadata
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"id": "workbench.properties",
|
|
51
|
+
"tag": "x-side-panel",
|
|
52
|
+
"metadata": {
|
|
53
|
+
"surface": {
|
|
54
|
+
"schema": "xtend.surface.record.v1",
|
|
55
|
+
"id": "surface.properties",
|
|
56
|
+
"type": "side-panel",
|
|
57
|
+
"manager": "workbench.manager",
|
|
58
|
+
"stateKey": "xtend.surface.properties.state"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Nachher: Dual Record als Runtime-Output
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"surfaces": [
|
|
69
|
+
{
|
|
70
|
+
"id": "surface.properties",
|
|
71
|
+
"schema": "xtend.surface.record.v1",
|
|
72
|
+
"type": "side-panel",
|
|
73
|
+
"adapter": "xtend.surface",
|
|
74
|
+
"manager": "workbench.manager",
|
|
75
|
+
"component": "workbench.properties",
|
|
76
|
+
"route": "workbench",
|
|
77
|
+
"schedule": "surface.visible.render",
|
|
78
|
+
"stateKey": "xtend.surface.properties.state"
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Die Component-Metadata bleibt waehrend des Handoffs im Component Record und
|
|
85
|
+
verweist optional mit `nativeRecord` auf den nativen Record. Neue Beispiele
|
|
86
|
+
sollen das vNext-Zielbild zeigen; Dual Records dienen als Migrationsevidence.
|
|
87
|
+
|
|
88
|
+
## Review-Checkliste
|
|
89
|
+
|
|
90
|
+
- Jede native Surface besitzt einen stabilen `id`.
|
|
91
|
+
- `component` zeigt auf genau einen Component Record.
|
|
92
|
+
- `manager` zeigt auf den `x-surface-manager` Record.
|
|
93
|
+
- `route` und `schedule` loesen auf native RMT Records auf.
|
|
94
|
+
- `stateKey` ist identisch zwischen `components[*].metadata.surface` und `surfaces[*]`.
|
|
95
|
+
- `xtend.surface` ist als `surface_adapter` deklariert und seit `WP-SM-19` ueber die Runtime-Gates produktiv beworben.
|
|
96
|
+
- Die Gates `surface-native-rmt`, `surface-release-handoff` und `surface-runtime-release-handoff` sind gruen.
|
|
97
|
+
|
|
98
|
+
Details zur generischen RMT-Migration stehen in [XTendRMT Native Migration Guide](./xtendrmt-migration-guide.md). Details zum Surface-Authoring stehen in [SurfaceManager Authoring Guide](./surface-manager-authoring-guide.md).
|
|
99
|
+
|
|
100
|
+
## WP-SM-19 Runtime Migration Notes
|
|
101
|
+
|
|
102
|
+
`WP-SM-19` akzeptiert `xtend.surface.runtime-migration-notes.v1` als finale Migrationslinie fuer die produktive Surface Runtime.
|
|
103
|
+
|
|
104
|
+
Erweiterte Gate-Reihenfolge fuer Migrationen:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
node scripts/run_xtend_tests.js surface-adapter-runtime --json
|
|
108
|
+
node scripts/run_xtend_tests.js surface-native-materialization --json
|
|
109
|
+
node scripts/run_xtend_tests.js surface-persistence --json
|
|
110
|
+
node scripts/run_xtend_tests.js surface-lazy-hydration --json
|
|
111
|
+
node scripts/run_xtend_tests.js surface-route-lifecycle --json
|
|
112
|
+
node scripts/run_xtend_tests.js surface-stack-policy --json
|
|
113
|
+
node scripts/run_xtend_tests.js surface-layout-engines --json
|
|
114
|
+
node scripts/run_xtend_tests.js surface-remote-policy --json
|
|
115
|
+
node scripts/run_xtend_tests.js surface-browser-lab --json
|
|
116
|
+
node scripts/run_xtend_tests.js surface-runtime-release-handoff --json
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Bestehende `components[*].metadata.surface` Records bleiben erlaubt. Der
|
|
120
|
+
Zielzustand fuer neue Shells ist dennoch RMT vNext; `surfaces[*]` bleibt der
|
|
121
|
+
pruefbare Output, weil Tooling, Materialisierung, Persistenz, Routing, Remote
|
|
122
|
+
Policy und Browser-Lab-Stabilitaet dort gemeinsam pruefbar sind.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# SurfaceManager Native RMT Surfaces
|
|
2
|
+
|
|
3
|
+
`WP-SM-08` fuehrt `xtend.rmt.surfaces-domain.v1` und den Adapter-Handoff `xtend.surface.adapter.v1` ein.
|
|
4
|
+
|
|
5
|
+
## Lokaler 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` ist eine optionale Top-Level-Domain in `.rmt` Dokumenten. Ein Surface Record referenziert weiter normale RMT-Domains:
|
|
15
|
+
|
|
16
|
+
- `adapter`: `xtend.surface`
|
|
17
|
+
- `manager`: `x-surface-manager` Component Record
|
|
18
|
+
- `component`: sichtbare Surface-Komponente, zum Beispiel `x-surface-window`, `x-side-panel`, `x-modal`, `x-dialog` oder `x-drawer`
|
|
19
|
+
- `route`: Route Record
|
|
20
|
+
- `schedule`: Schedule Record
|
|
21
|
+
|
|
22
|
+
Die Fixture `tests/fixtures/rmt-surface-native-domain.rmt` zeigt sechs Surface Records: zwei Windows, ein SidePanel, Modal, Dialog und Drawer.
|
|
23
|
+
|
|
24
|
+
## Adapter
|
|
25
|
+
|
|
26
|
+
`xtend.surface` ist als `surface_adapter` registrierbar. In `WP-SM-08` war `runtimeImplemented: false` Absicht und der Adapter blieb ein Handoff-Contract. Seit `WP-SM-19` ist die produktive Runtime-Linie im [SurfaceManager Runtime Release Handoff](./surface-manager-runtime-release-handoff.md) gatebar: Die Runtime konsumiert `surfaces[*]`, ruft den SurfaceController und haelt DOM, xstate und Fabric ausserhalb des RMT Kernels.
|
|
27
|
+
|
|
28
|
+
## Migration
|
|
29
|
+
|
|
30
|
+
Bestehende Component Records mit `metadata.surface` bleiben gueltig. Neue native Records koennen parallel gefuehrt werden, solange `id`, `type`, `manager`, `component`, `route`, `schedule` und `stateKey` stabil zusammenpassen.
|
|
31
|
+
|
|
32
|
+
## Tooling
|
|
33
|
+
|
|
34
|
+
Schema, Type Artifact, Normalizer, Semantic Graph, Completion Provider und Linter kennen `surfaces`. Damit kann der Language Server Surface Records referenzieren und Completion fuer `surfaces[*].component`, `surfaces[*].adapter`, `surfaces[*].route`, `surfaces[*].schedule` und `surfaces[*].type` anbieten.
|
|
35
|
+
|
|
36
|
+
## Handoff
|
|
37
|
+
|
|
38
|
+
`WP-SM-09` finalisiert Docs, Component Lab und Migration Guide auf dieser Contract-Basis. Der Abschluss liegt in [SurfaceManager Release Handoff](./surface-manager-release-handoff.md) (`docs/surface-manager-release-handoff.md`) und wird ueber `node scripts/run_xtend_tests.js surface-release-handoff --json` geprueft.
|