@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,75 @@
|
|
|
1
|
+
# RMT App Platform Migration Guide
|
|
2
|
+
|
|
3
|
+
This guide describes the path from external host helpers such as `root.innerHTML`, product-bound surface lists or local registry repaints to native RMT App Platform primitives.
|
|
4
|
+
|
|
5
|
+
## Target State
|
|
6
|
+
|
|
7
|
+
- New UI is described in RMT vNext; DOM Descriptor, App Platform JSON and component records are generated output or compatibility mirrors.
|
|
8
|
+
- State, selectors and derived values live in the RMT State Selector Runtime.
|
|
9
|
+
- Interactions run through declarative events and actions.
|
|
10
|
+
- Datasources remain interchangeable: `fixture`, `rest`, `ssr` and `host`.
|
|
11
|
+
- Surfaces, overlays, portals and resources are materialized and cleaned up through the Surface Resource Graph.
|
|
12
|
+
|
|
13
|
+
```rmt
|
|
14
|
+
template migration.catalog {
|
|
15
|
+
state records type collection initial []
|
|
16
|
+
|
|
17
|
+
selector visibleRecords from state records {
|
|
18
|
+
output CatalogRecord[]
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
datasource catalog from fixture records.generic-items {
|
|
22
|
+
contract CatalogRecord[]
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
action load-records {
|
|
26
|
+
effect fetch datasource catalog
|
|
27
|
+
on success -> reduce state.records = result.records
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
portal surface.root root "#app-root" layer surface
|
|
31
|
+
|
|
32
|
+
surface catalog.board kind workspace component x-cards {
|
|
33
|
+
repeat from selector visibleRecords
|
|
34
|
+
key record.id
|
|
35
|
+
portal surface.root
|
|
36
|
+
|
|
37
|
+
lane visible weight 80 {
|
|
38
|
+
hydrate catalog-cards from selector visibleRecords
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
on card-click target item -> action load-records {
|
|
42
|
+
payload source from target.dataset.source
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Migration
|
|
49
|
+
|
|
50
|
+
1. Identify external HTML host renderers.
|
|
51
|
+
Search for `innerHTML`, `outerHTML`, `insertAdjacentHTML` and `document.write`.
|
|
52
|
+
2. Move shell structure to RMT vNext.
|
|
53
|
+
Normal app UI uses `template`, `surface`, `portal`, `lane`, `hydrate` and events; `mode: "dom_descriptor"` appears only in output.
|
|
54
|
+
3. Decouple product lists.
|
|
55
|
+
Instead of a fixed record class, use configurable record contracts with stable IDs and keys.
|
|
56
|
+
4. Declare interactions.
|
|
57
|
+
DOM or custom events receive `payloadContract` and route to actions.
|
|
58
|
+
5. Keep datasources interchangeable.
|
|
59
|
+
Local fixture data, SSR bootstrap, REST search and host mutation share the same action path.
|
|
60
|
+
6. Check surface lifecycle.
|
|
61
|
+
Every surface with `resource` entries needs an owner, overlays run through portals, and destroy/close must release resources.
|
|
62
|
+
7. Create scaffold evidence.
|
|
63
|
+
The RMT App Platform Builder writes diagnostics, source map and build report.
|
|
64
|
+
|
|
65
|
+
## Reference
|
|
66
|
+
|
|
67
|
+
The reference fixture is located at `tests/fixtures/rmt-app-platform-fixture.rmt` and proves `generic-catalog`, `admin-queue` and `content-board` with the same primitives.
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
node scripts/run_xtend_tests.js rmt-app-platform-fixture --json
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Boundary
|
|
74
|
+
|
|
75
|
+
Trusted HTML remains an explicit special case with Trusted DOM boundary. Normal app UI must not use HTML strings as the render path.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# RMT App Platform Tooling
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-app-platform-tooling.v1`
|
|
4
|
+
- Gate: `node scripts/run_xtend_tests.js rmt-app-platform-tooling --json`
|
|
5
|
+
- Workpackage: `WP-E18-11`
|
|
6
|
+
- Handoff: `WP-E18-12`
|
|
7
|
+
|
|
8
|
+
## Goal
|
|
9
|
+
|
|
10
|
+
RMT app sources are now checkable and buildable before runtime. The tooling creates diagnostics, source maps and scaffold reports for generic App Platform primitives such as surfaces, overlays, portals, resources, actions, events, datasources and state.
|
|
11
|
+
|
|
12
|
+
The slice is intentionally not a Media Manager shell. It provides tools that let developers create their own app structures natively in XTend/RMT without product-side `innerHTML` renderers or custom mini-frameworks.
|
|
13
|
+
|
|
14
|
+
## Diagnostics
|
|
15
|
+
|
|
16
|
+
The App Platform linter blocks typical late runtime errors already during authoring:
|
|
17
|
+
|
|
18
|
+
- `rmt.app.no-manual-shell.html-sink` for `innerHTML`, `outerHTML`, `insertAdjacentHTML` or `document.write` in normal app UI.
|
|
19
|
+
- `rmt.app.unsafe-html.boundary-missing` for HTML fragments without explicit Trusted DOM boundary.
|
|
20
|
+
- `rmt.app.repeat.key.missing` for repeated surfaces without stable key.
|
|
21
|
+
- `rmt.app.event.payload-contract.missing` for events with action target but without payload contract.
|
|
22
|
+
- `rmt.app.resource.ownership.missing` for resources without clear owner.
|
|
23
|
+
- `rmt.app.resource.unresolved`, `rmt.app.portal.unresolved` and `rmt.app.surface.source.unresolved` for faulty app graph references.
|
|
24
|
+
|
|
25
|
+
The rules run as a dedicated App Platform policy rule in the existing RMT linter and as a direct analyzer in `./rmt-language/app-platform-tooling`.
|
|
26
|
+
|
|
27
|
+
## LSP
|
|
28
|
+
|
|
29
|
+
Completion and hover understand the new primitives:
|
|
30
|
+
|
|
31
|
+
- portal IDs and portal policies such as `stacked`, `toast-region` and `clipping-escape`
|
|
32
|
+
- overlay kinds such as `tooltip`, `toast`, `popover`, `lightbox`, `menu` and `dialog`
|
|
33
|
+
- resource kinds such as `object-url`, `stream`, `observer`, `timer` and `lazy-import`
|
|
34
|
+
- event kinds and surface initial states
|
|
35
|
+
|
|
36
|
+
App authors can therefore edit RMT documents without a product surface taxonomy and without external helper lists.
|
|
37
|
+
|
|
38
|
+
## Scaffold Build
|
|
39
|
+
|
|
40
|
+
The builder registers the command `rmt-app-platform`. It reads a `.rmt` app source and creates under `.xtend-build`:
|
|
41
|
+
|
|
42
|
+
- `*.app-platform-diagnostics.json`
|
|
43
|
+
- `*.app-platform-source-map.json`
|
|
44
|
+
- `*.app-platform-build.json`
|
|
45
|
+
|
|
46
|
+
The artifacts run through the Epic 17 WritePlan and carry scaffold ownership. `--check` can therefore verify whether local build artifacts are current.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
node scripts/run_xtend_tests.js rmt-app-platform-tooling --json
|
|
50
|
+
node xtend-builder/lib/cli.js rmt-app-platform --source tests/fixtures/rmt-app-platform-tooling.rmt
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Boundaries
|
|
54
|
+
|
|
55
|
+
- No product surface list and no Media Manager-specific registry repaint.
|
|
56
|
+
- No normal UI HTML sinks outside a Trusted DOM boundary.
|
|
57
|
+
- No imports from XTend components into the RMT kernel.
|
|
58
|
+
- The tooling builds reports, diagnostics and source maps; the production-close generic app fixture follows in `WP-E18-12`.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# RMT Component Template Primitives
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-component-template-primitives.v1`
|
|
4
|
+
- Fixture: `tests/fixtures/rmt-component-template-primitives.rmt`
|
|
5
|
+
- Runtime base: `xtendrmt/rmt-dom-descriptor-renderer.js`
|
|
6
|
+
- Local gate: `node scripts/run_xtend_tests.js rmt-component-template-primitives --json`
|
|
7
|
+
- Workpackage: `WP-E18-06`
|
|
8
|
+
- Handoff: `WP-E18-07`
|
|
9
|
+
|
|
10
|
+
RMT can now compose XTend components natively without host apps assembling HTML strings. This slice extends the DOM Descriptor Renderer with component-close primitives for app shells, lists, forms, tooltips, icons, empty states and error states.
|
|
11
|
+
|
|
12
|
+
## Primitives
|
|
13
|
+
|
|
14
|
+
| Primitive | Purpose |
|
|
15
|
+
|-----------|---------|
|
|
16
|
+
| `component` | Resolves a component ID to a custom element such as `x-section`, `x-card`, `x-tooltip` or arbitrary developer tags. |
|
|
17
|
+
| `props` | Sets safe DOM properties and mirrors primitive values as attributes. |
|
|
18
|
+
| `attributes` | Sets safe attributes without inline-event or URL sinks. |
|
|
19
|
+
| `parts` | Writes CSS parts for themeable components. |
|
|
20
|
+
| `slots` | Fills slots with text, templates, components or fragments. |
|
|
21
|
+
| `text` | Creates text nodes through `createTextNode`. |
|
|
22
|
+
| `when` | Renders conditional subtrees. |
|
|
23
|
+
| `repeat` | Renders lists and uses `key` for stable nodes. |
|
|
24
|
+
| `empty` | Renders an explicit empty state. |
|
|
25
|
+
| `fallback` | Renders declarative fallback content. |
|
|
26
|
+
| `key` | Marks reusable list elements with `data-rmt-key`. |
|
|
27
|
+
| `ref` | Writes `data-rmt-ref` and stores the element reference in `refs`. |
|
|
28
|
+
| `class` | Maps classes from strings, arrays or conditional objects. |
|
|
29
|
+
| `style-token` | Mirrors design tokens as `data-style-token-*` and `--xtend-*`. |
|
|
30
|
+
|
|
31
|
+
## Component Families
|
|
32
|
+
|
|
33
|
+
The fixture proves generic families instead of product surfaces: icons, tooltips, form controls (`x-input`, `x-select`, `x-checkbox`), navigation, lists, selection, empty state, error state and free custom elements. Components remain developer-defined; RMT only knows descriptors and adapter capabilities.
|
|
34
|
+
|
|
35
|
+
## Component Capability Registry
|
|
36
|
+
|
|
37
|
+
The vNext layer connects these primitives to the full XTend component stack
|
|
38
|
+
through `xtendrmt/rmt-component-capability-registry.js`. The registry
|
|
39
|
+
normalizes all 44 public manifest entries, classifies 40 renderable UI
|
|
40
|
+
components, and connects Component Contracts, `xtendRmtMetadata`,
|
|
41
|
+
`observedAttributes`, events, slots, parts, form state, and lazy import with the
|
|
42
|
+
generic DOM descriptors.
|
|
43
|
+
|
|
44
|
+
That keeps `component`, `props`, `attributes`, `parts`, `slots`, `repeat`, and
|
|
45
|
+
`key` as the same primitives, but gives them a stack-wide compatibility matrix.
|
|
46
|
+
Product code does not need Shadow-DOM patches, private component maps, or
|
|
47
|
+
component-specific renderers.
|
|
48
|
+
|
|
49
|
+
See [RMT vNext Component Primitives and XTend UI](./rmt-vnext-component-primitives.md).
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# RMT DOM Descriptor Renderer
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-dom-descriptor-renderer.v1`
|
|
4
|
+
- Fixture: `tests/fixtures/rmt-dom-descriptor-renderer.rmt`
|
|
5
|
+
- Runtime: `xtendrmt/rmt-dom-descriptor-renderer.js`
|
|
6
|
+
- Local gate: `node scripts/run_xtend_tests.js rmt-dom-descriptor-renderer --json`
|
|
7
|
+
- Workpackage: `WP-E18-05`
|
|
8
|
+
|
|
9
|
+
The renderer implements the `WP-E18-04` authoring model as a generic app platform. Normal app UI is built from structured descriptors: `createElement`, `createTextNode`, `createDocumentFragment`, `replaceChildren`, safe attributes/properties and keyed child reuse.
|
|
10
|
+
|
|
11
|
+
## Descriptor Rules
|
|
12
|
+
|
|
13
|
+
| Area | Rule |
|
|
14
|
+
|------|------|
|
|
15
|
+
| Shell | Root render units use `replaceChildren` and mark the root with `data-rmt-rendered-shell`. |
|
|
16
|
+
| Elements | Tags must be simple custom-element or HTML tag names. |
|
|
17
|
+
| Attributes | Inline handlers, `srcdoc` and unsafe URL values are rejected. |
|
|
18
|
+
| Properties | HTML-sink properties are blocked for normal UI. |
|
|
19
|
+
| Lists | `renderKeyed` preserves nodes via `data-rmt-key` and patches attributes/children. |
|
|
20
|
+
| Events | Events run through `addEventListener`, not through string attributes. |
|
|
21
|
+
| Diagnostics | Runtime errors include RMT source information such as `documentId`, `templateId` and `pointer`. |
|
|
22
|
+
|
|
23
|
+
## Component Registry Option
|
|
24
|
+
|
|
25
|
+
`render(...)` and `renderKeyed(...)` accept `componentRegistry`. When a
|
|
26
|
+
descriptor uses `type: "component"`, the renderer normalizes tag, attributes,
|
|
27
|
+
properties, slots, parts, and event bindings through the RMT vNext Component
|
|
28
|
+
Capability Registry:
|
|
29
|
+
|
|
30
|
+
```js
|
|
31
|
+
renderer.renderKeyed(root, descriptors, {
|
|
32
|
+
componentRegistry: registry,
|
|
33
|
+
dispatchEvent,
|
|
34
|
+
stateBridge
|
|
35
|
+
});
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The registry binds XTend components through public DOM APIs. It reads Component
|
|
39
|
+
Contracts and RMT metadata, performs lazy import through manifest paths, and
|
|
40
|
+
writes safe capability markers such as `data-rmt-component-capability`. The
|
|
41
|
+
renderer stays generic: no Shadow-DOM patches, no private component maps, and no
|
|
42
|
+
HTML sinks for normal RMT app UI.
|
|
43
|
+
|
|
44
|
+
## Trusted Boundary
|
|
45
|
+
|
|
46
|
+
HTML fragments are not a normal template path. They may only be rendered as `trusted_html` with `xtend.rmt.trusted-dom-boundary.explicit` and an external `trustedDomRenderer`. The default renderer creates no HTML fragments from strings.
|
|
47
|
+
|
|
48
|
+
## No Manual HTML
|
|
49
|
+
|
|
50
|
+
The gate `createNoManualHtmlGate()` blocks normal app shells that use manual HTML sinks such as `root.innerHTML`, `element.innerHTML`, `template.innerHTML`, `outerHTML`, `insertAdjacentHTML`, `document.write` and `createContextualFragment`.
|
|
51
|
+
|
|
52
|
+
`WP-E18-06` and the vNext Component Capability Registry build component-native
|
|
53
|
+
template primitives on top of this slice without requiring external HTML helper
|
|
54
|
+
renderers.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# RMT DSL Authoring Polish
|
|
2
|
+
|
|
3
|
+
The contract `xtend.rmt.dsl-authoring-polish.v1` prepares a friendlier RMT DSL
|
|
4
|
+
for XTend component shells. It makes RMT authoring shorter without embedding
|
|
5
|
+
XTend in the RMT kernel.
|
|
6
|
+
|
|
7
|
+
Local gate:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
node scripts/run_xtend_tests.js rmt-dsl-authoring-polish --json
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Why This Package Exists
|
|
14
|
+
|
|
15
|
+
After `WP-E12-12`, XTend has a productive design-token vocabulary.
|
|
16
|
+
`WP-E12-13` uses these tokens so shells, slots, styles, a11y, events, commands,
|
|
17
|
+
hydration, Fabric lanes, and XRouter routes can be described more easily in
|
|
18
|
+
RMT.
|
|
19
|
+
|
|
20
|
+
RMT remains host-neutral:
|
|
21
|
+
|
|
22
|
+
- `xtend.component` renders and hydrates components in the host.
|
|
23
|
+
- `xtend.xrouter` connects route records to XRouter.
|
|
24
|
+
- `xtend.fabric` and telemetry remain adapter/host data.
|
|
25
|
+
- `no-rmt-kernel-import-of-xtend-types` remains mandatory.
|
|
26
|
+
|
|
27
|
+
## Authoring Aliases
|
|
28
|
+
|
|
29
|
+
| Alias | Target |
|
|
30
|
+
|-------|--------|
|
|
31
|
+
| `component` | XTend component record |
|
|
32
|
+
| `shell` | shell state, slots, parts, and focus |
|
|
33
|
+
| `slot` | template, component, or text slots |
|
|
34
|
+
| `style` | variant, theme, density, tokens, and parts |
|
|
35
|
+
| `token` | productive `--xtend-*` tokens |
|
|
36
|
+
| `theme` | theme pack |
|
|
37
|
+
| `density` | density pack |
|
|
38
|
+
| `a11y` | role, label, live region, keyboard, and announcements |
|
|
39
|
+
| `on` | event to command |
|
|
40
|
+
| `command` | command to schedule |
|
|
41
|
+
| `hydrate` | hydration policy |
|
|
42
|
+
| `lane` | Fabric lane and fiber |
|
|
43
|
+
| `route` | XRouter route |
|
|
44
|
+
| `link` | XLink-compatible link |
|
|
45
|
+
| `outlet` | route outlet in the template |
|
|
46
|
+
|
|
47
|
+
## Example
|
|
48
|
+
|
|
49
|
+
```rmt
|
|
50
|
+
template settings.shell {
|
|
51
|
+
state settings.theme type string initial "dark"
|
|
52
|
+
state settings.density type string initial "comfortable"
|
|
53
|
+
|
|
54
|
+
portal surface.root root "#settings-root" layer surface
|
|
55
|
+
|
|
56
|
+
surface settings.shell kind page component x-section {
|
|
57
|
+
portal surface.root
|
|
58
|
+
|
|
59
|
+
lane visible weight 80 {
|
|
60
|
+
hydrate settings-header {
|
|
61
|
+
slot header hydrate settings.header.template
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
hydrate feedback-toast from endpoint xtendrmt.component.hydrate {
|
|
65
|
+
slot feedback hydrate feedback.toast
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
lane idle weight 20 {
|
|
70
|
+
hydrate settings-shell-style from endpoint xtendrmt.component.hydrate {
|
|
71
|
+
trust boundary "xtend.security.sanitizing-boundary.v1"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Token aliases remain part of the contract: productive styles continue to
|
|
79
|
+
reference stable custom properties such as `--xtend-surface` and
|
|
80
|
+
`--xtend-color-primary`, while vNext describes structure, slots, and hydration.
|
|
81
|
+
|
|
82
|
+
The normalized output becomes `components[]`, `templates[]`, and `schedules[]`.
|
|
83
|
+
RMT describes the structure; XTend executes component hydration.
|
|
84
|
+
|
|
85
|
+
## Routing Sugar
|
|
86
|
+
|
|
87
|
+
Routes can be described in an author-friendly surface, link, and outlet
|
|
88
|
+
structure:
|
|
89
|
+
|
|
90
|
+
```rmt
|
|
91
|
+
template settings.routing {
|
|
92
|
+
portal surface.root root "#app-root" layer surface
|
|
93
|
+
|
|
94
|
+
surface settings.route kind page component x-section {
|
|
95
|
+
portal surface.root
|
|
96
|
+
|
|
97
|
+
lane visible weight 80 {
|
|
98
|
+
hydrate settings-shell from endpoint xtendrmt.route.render
|
|
99
|
+
hydrate settings-link from endpoint xtendrmt.component.hydrate
|
|
100
|
+
slot outlet hydrate primary
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
on click target settings-link -> action route.navigate {
|
|
104
|
+
payload href from "/settings"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
This becomes `routes[]`, `components[]`, and `templates[]` with adapter
|
|
111
|
+
`xtend.xrouter`. XRouter remains a host adapter, not an RMT kernel dependency.
|
|
112
|
+
|
|
113
|
+
## Diagnostics
|
|
114
|
+
|
|
115
|
+
The polish plan defines these diagnostic codes:
|
|
116
|
+
|
|
117
|
+
- `rmt.dsl.alias.unknown`
|
|
118
|
+
- `rmt.dsl.alias.required-field-missing`
|
|
119
|
+
- `rmt.dsl.token.unknown`
|
|
120
|
+
- `rmt.dsl.route.target-unresolved`
|
|
121
|
+
- `rmt.dsl.link.route-unresolved`
|
|
122
|
+
- `rmt.dsl.slot.target-unresolved`
|
|
123
|
+
- `rmt.dsl.schedule.unresolved`
|
|
124
|
+
- `rmt.dsl.inline-runtime-code-refused`
|
|
125
|
+
- `rmt.dsl.kernel-boundary.refused`
|
|
126
|
+
|
|
127
|
+
This lets XTendRMT upstream build friendlier parser errors and editor hints
|
|
128
|
+
without importing the XTend runtime.
|
|
129
|
+
|
|
130
|
+
## Artifacts
|
|
131
|
+
|
|
132
|
+
- Contract: `development/XTend-RMT-DSL-Authoring-Polish-fuer-Component-Shells.md`
|
|
133
|
+
- Module: `xtend-builder/typing/rmt-dsl-authoring-polish.js`
|
|
134
|
+
- Fixture: `tests/fixtures/rmt-dsl-authoring-polish.rmt`
|
|
135
|
+
- Suite: `tests/rmt/rmt_dsl_authoring_polish_suite.js`
|
|
136
|
+
|
|
137
|
+
## RC0 Adoption Update
|
|
138
|
+
|
|
139
|
+
Since `WP-E12-15`, the [RC0 Adoption Guide](./rc0-adoption-guide.md) describes
|
|
140
|
+
how app authors use this DSL polish layer for shell-first XTend apps. The most
|
|
141
|
+
important migration rule remains: RMT may construct and schedule XTend
|
|
142
|
+
components, XRouter routes, and content slots without embedding XTend types in
|
|
143
|
+
the RMT kernel.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# RMT Event Routing Runtime
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-event-routing-runtime.v1`
|
|
4
|
+
- Workpackage: `WP-E18-09`
|
|
5
|
+
- Runtime: `xtendrmt/rmt-event-routing-runtime.js`
|
|
6
|
+
- Types: `xtendrmt/rmt-event-routing-runtime.d.ts`
|
|
7
|
+
- Fixture: `tests/fixtures/rmt-event-routing-runtime.rmt`
|
|
8
|
+
- Local gate: `node scripts/run_xtend_tests.js rmt-event-routing-runtime --json`
|
|
9
|
+
- Next: `WP-E18-10`
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
The Event Routing Runtime makes DOM and custom events first-class RMT app
|
|
14
|
+
platform primitives. Apps can bind events to actions declaratively, validate
|
|
15
|
+
payloads before action execution, apply governance policies and clean up
|
|
16
|
+
listeners by owner scope.
|
|
17
|
+
|
|
18
|
+
The runtime delegates execution to the Action Effect Runtime from `WP-E18-08`.
|
|
19
|
+
It does not create a second action framework and does not import XTend UI
|
|
20
|
+
components.
|
|
21
|
+
|
|
22
|
+
## Event Bindings
|
|
23
|
+
|
|
24
|
+
An event binding can declare:
|
|
25
|
+
|
|
26
|
+
- `event`
|
|
27
|
+
- `target`
|
|
28
|
+
- `component`
|
|
29
|
+
- `owner`
|
|
30
|
+
- `action`
|
|
31
|
+
- `actionMode`
|
|
32
|
+
- `payload`
|
|
33
|
+
- `payloadContract`
|
|
34
|
+
- `governance`
|
|
35
|
+
- `condition`
|
|
36
|
+
|
|
37
|
+
Targets are resolved through explicit refs, a passed `targets` map, a custom
|
|
38
|
+
target resolver or a DOM query from a provided root. Product-local
|
|
39
|
+
`event.target.closest(...)` delegation chains are not required for normal app
|
|
40
|
+
flows.
|
|
41
|
+
|
|
42
|
+
## Payload Contracts
|
|
43
|
+
|
|
44
|
+
Payloads are built from event data with expressions such as:
|
|
45
|
+
|
|
46
|
+
- `$event.target.value`
|
|
47
|
+
- `$detail.id`
|
|
48
|
+
- `$target.dataset.id`
|
|
49
|
+
- `$source.dataset.path`
|
|
50
|
+
|
|
51
|
+
Contracts use a small structural shape:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"type": "object",
|
|
56
|
+
"required": ["id"],
|
|
57
|
+
"properties": {
|
|
58
|
+
"id": "string"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Invalid payloads are blocked before the action runtime is called and emit
|
|
64
|
+
`rmt.event.payload_contract.invalid` diagnostics.
|
|
65
|
+
|
|
66
|
+
## Event Governance
|
|
67
|
+
|
|
68
|
+
Supported policies:
|
|
69
|
+
|
|
70
|
+
- `preventDefault`
|
|
71
|
+
- `stopPropagation`
|
|
72
|
+
- `stopImmediatePropagation`
|
|
73
|
+
- `capture`
|
|
74
|
+
- `passive`
|
|
75
|
+
- `once`
|
|
76
|
+
- `retarget`
|
|
77
|
+
|
|
78
|
+
Retargeting can use `target`, `current-target` or `composed-path`. This keeps
|
|
79
|
+
component interaction explicit without product-specific DOM walking.
|
|
80
|
+
|
|
81
|
+
## Ownership
|
|
82
|
+
|
|
83
|
+
`attach()` registers listeners and records their owner. `detachOwner(ownerId)`
|
|
84
|
+
removes only the listeners for that scope, while `detachAll()` removes the
|
|
85
|
+
remaining listeners. This is the bridge to the surface and resource lifecycle
|
|
86
|
+
work in `WP-E18-10`.
|
|
87
|
+
|
|
88
|
+
## Diagnostics
|
|
89
|
+
|
|
90
|
+
Diagnostics use `xtend.epic18.rmt-event-routing-diagnostic.v1` on
|
|
91
|
+
`rmt.app_platform.event_routing`. Route diagnostics include event id, component,
|
|
92
|
+
payload and action target so build and runtime reports can show why a user
|
|
93
|
+
interaction did or did not execute.
|
|
94
|
+
|
|
95
|
+
## Handoff
|
|
96
|
+
|
|
97
|
+
`WP-E18-10` can now harden surface, overlay, portal and resource graphs using
|
|
98
|
+
owner-scoped events plus the resource ownership model from `WP-E18-08`.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# RMT-First Demo App
|
|
2
|
+
|
|
3
|
+
Contract: `xtend.epic10.rmt-first-demo-app.v1`
|
|
4
|
+
|
|
5
|
+
The RMT-first demo app shows the Epic 10 target path: an XTend app is no longer
|
|
6
|
+
built as a manual HTML shell, but rendered from a `.rmt` app document. XTend
|
|
7
|
+
provides local Web Components. RMT provides shell, routes, templates,
|
|
8
|
+
schedules, Fabric/lane metadata, and diagnostics.
|
|
9
|
+
|
|
10
|
+
## Starting Point
|
|
11
|
+
|
|
12
|
+
- Demo / Browser smoke: `tests/browser/fixtures/rmt-first-demo-app-smoke.html`
|
|
13
|
+
- RMT document: `xtendrmt/rmt-first-demo-app.rmt`
|
|
14
|
+
- Runtime: `xtendrmt/rmt-first-demo-app.js`
|
|
15
|
+
- Browser smoke: `tests/browser/fixtures/rmt-first-demo-app-smoke.html`
|
|
16
|
+
|
|
17
|
+
The host page contains only the RMT root:
|
|
18
|
+
|
|
19
|
+
```html
|
|
20
|
+
<div
|
|
21
|
+
id="rmt-first-demo-root"
|
|
22
|
+
data-rmt-host="rmt-first-demo"
|
|
23
|
+
data-rmt-document-src="xtendrmt/rmt-first-demo-app.rmt"></div>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The shell itself comes from `app.shell.template`.
|
|
27
|
+
|
|
28
|
+
## What RMT Owns
|
|
29
|
+
|
|
30
|
+
- App shell
|
|
31
|
+
- Routes
|
|
32
|
+
- `dom_descriptor` templates
|
|
33
|
+
- Component records
|
|
34
|
+
- Props, attributes, slots, and event commands
|
|
35
|
+
- Schedules and lanes
|
|
36
|
+
- Fabric/fiber metadata
|
|
37
|
+
- Diagnostics
|
|
38
|
+
|
|
39
|
+
## What XTend Owns
|
|
40
|
+
|
|
41
|
+
- Custom Elements
|
|
42
|
+
- Manifest lookup
|
|
43
|
+
- Component lifecycle
|
|
44
|
+
- DOM execution
|
|
45
|
+
- XRouter registration
|
|
46
|
+
- Fabric execution and telemetry hooks
|
|
47
|
+
|
|
48
|
+
The RMT kernel imports no XTend components. This boundary remains
|
|
49
|
+
`no-rmt-kernel-import-of-xtend-types`.
|
|
50
|
+
|
|
51
|
+
## Demo Routes
|
|
52
|
+
|
|
53
|
+
| Route | Path | Content |
|
|
54
|
+
|-------|------|---------|
|
|
55
|
+
| `dashboard` | `/` | shell-first status and performance coverage |
|
|
56
|
+
| `settings` | `/settings` | form controls with `x-select`, `x-checkbox`, `x-radio`, `x-textarea` |
|
|
57
|
+
| `overlays` | `/overlays` | `x-tooltip`, `x-popover`, `x-drawer` |
|
|
58
|
+
|
|
59
|
+
## No-Manual-Shell Rule
|
|
60
|
+
|
|
61
|
+
The demo is correct only when:
|
|
62
|
+
|
|
63
|
+
- the host contains no static `x-section` or `x-router` shell tags
|
|
64
|
+
- the runtime does not use `innerHTML`
|
|
65
|
+
- `manifest.metadata.manualShellAllowed` is `false`
|
|
66
|
+
- `manifest.metadata.hostShellMarkup` is `false`
|
|
67
|
+
- the browser smoke renders the shell from RMT
|
|
68
|
+
|
|
69
|
+
## Local Gate
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
node scripts/run_xtend_tests.js rmt-first-demo-app --json
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The gate checks RMT references, runtime registry normalization, host boundary,
|
|
76
|
+
browser smoke, package metadata, and documentation paths.
|
|
77
|
+
|
|
78
|
+
## Continuation
|
|
79
|
+
|
|
80
|
+
`WP-E10-14` migrates existing prioritized components into the same RMT/Fabric
|
|
81
|
+
metadata line. The demo app remains the first productive acceptance host for
|
|
82
|
+
that work.
|
|
83
|
+
|
|
84
|
+
Since `WP-E13-09`, the demo app is part of
|
|
85
|
+
[RMT Production Readiness](./rmt-production-readiness.md). The contract
|
|
86
|
+
`xtend.epic13.rmt-production-readiness.v1` uses it as shell-first evidence for
|
|
87
|
+
routing, components, Fabric/lane, lifecycle telemetry, and diagnostics.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# RMT-First XTend Apps
|
|
2
|
+
|
|
3
|
+
Docs Contract: `xtend.docs.rmt-first-xtend-apps.v1`
|
|
4
|
+
|
|
5
|
+
This guide describes the Epic 10 target path: a complete XTend app is described
|
|
6
|
+
as an RMT vNext document. XTend provides local Web Components; RMT provides the
|
|
7
|
+
shell, routes, templates, components, schedules, hydration policies, Fabric
|
|
8
|
+
lanes, and diagnostics.
|
|
9
|
+
|
|
10
|
+
The underlying authoring contract is:
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
xtend.rmt.first-class-app-authoring.v1
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Core Rules
|
|
17
|
+
|
|
18
|
+
- RMT vNext is the app authoring model.
|
|
19
|
+
- XTend components are described through surfaces with `component x-*` and
|
|
20
|
+
compiled into `xtend.component` records.
|
|
21
|
+
- XRouter is connected through `xtend.xrouter`.
|
|
22
|
+
- Templates preferably use `dom_descriptor` as generated output.
|
|
23
|
+
- Event bindings use `on ... -> action ...`.
|
|
24
|
+
- Fabric, lane, and fiber hints come from `lane` and lifecycle clauses.
|
|
25
|
+
- The RMT kernel imports no XTend classes or XTend types.
|
|
26
|
+
|
|
27
|
+
The boundary remains:
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
no-rmt-kernel-import-of-xtend-types
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Minimal Structure
|
|
34
|
+
|
|
35
|
+
```rmt
|
|
36
|
+
template settings.app {
|
|
37
|
+
state settings.status type string initial "ready"
|
|
38
|
+
|
|
39
|
+
selector settings.feedback from state settings.status {
|
|
40
|
+
output StatusView
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
action settings.refresh {
|
|
44
|
+
reduce state.settings.status = "refreshing"
|
|
45
|
+
emit settings.refresh.requested with action settings.refresh
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
portal surface.root root "#app-root" layer surface
|
|
49
|
+
|
|
50
|
+
surface settings.status kind card component x-status {
|
|
51
|
+
source selector settings.feedback
|
|
52
|
+
portal surface.root
|
|
53
|
+
|
|
54
|
+
lane visible weight 80 {
|
|
55
|
+
mount x-status
|
|
56
|
+
hydrate settings-status from selector settings.feedback
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
on click target refresh-button -> action settings.refresh {
|
|
60
|
+
payload source from target.dataset.action
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The compiler turns this into `xtend.component`, `xtend.xrouter`,
|
|
67
|
+
`rmt.state-scheduler-diagnostics`, `dom_descriptor` templates, and
|
|
68
|
+
schedule/lane records. These JSON records are runtime mirrors, not the primary
|
|
69
|
+
authoring path.
|
|
70
|
+
|
|
71
|
+
## Reference Paths
|
|
72
|
+
|
|
73
|
+
- Contract: `development/XTend-RMT-First-Class-App-Authoring.md`
|
|
74
|
+
- Fixture: `tests/fixtures/rmt-first-class-xtend-app.rmt`
|
|
75
|
+
- Demo app: `xtendrmt/rmt-first-demo-app.rmt`
|
|
76
|
+
- Browser smoke: `tests/browser/fixtures/rmt-first-demo-app-smoke.html`
|
|
77
|
+
- Gate: `node scripts/run_xtend_tests.js rmt-first-class-app --json`
|
|
78
|
+
- Demo gate: `node scripts/run_xtend_tests.js rmt-first-demo-app --json`
|
|
79
|
+
|
|
80
|
+
## Fabric and Telemetry
|
|
81
|
+
|
|
82
|
+
Components receive Fabric context through adapter injection. The canonical
|
|
83
|
+
boundary is:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
adapter-injection-via-xtend-component-resolveFabricContext
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`window.XTendFabric` can be used by hosts, but it is not the contract surface
|
|
90
|
+
of a component.
|
|
91
|
+
|
|
92
|
+
## Release Handoff
|
|
93
|
+
|
|
94
|
+
The completion of Epic 10 is documented in
|
|
95
|
+
[Epic 10 Release Handoff](./epic10-release-handoff.md). That gate chain decides
|
|
96
|
+
whether an RMT-first XTend app path is release-ready enough for a candidate.
|
|
97
|
+
|
|
98
|
+
Since `WP-E13-09`, [RMT Production Readiness](./rmt-production-readiness.md)
|
|
99
|
+
bundles this path under `xtend.epic13.rmt-production-readiness.v1`:
|
|
100
|
+
shell-first app shell, routing, components, Fabric/lanes, lifecycle telemetry,
|
|
101
|
+
diagnostics, and artifact parity are connected as an RC1 gate. `WP-E13-10`
|
|
102
|
+
completed [Docs RMT Production Hardening](./docs-rmt-production-hardening.md);
|
|
103
|
+
`WP-E13-11` completed
|
|
104
|
+
[Trusted DOM Boundary Browser Proof](./trusted-dom-boundary-browser-proof.md)
|
|
105
|
+
and `xtend.epic13.trusted-dom-boundary.v1`. `WP-E13-12` completed
|
|
106
|
+
[RC1 Migration Notes](./rc1-migration-notes.md) and
|
|
107
|
+
`xtend.epic13.rc1-migration-notes-semver.v1`. `WP-E13-13` completed
|
|
108
|
+
[RC1 Gate Matrix and CI Handoff](./rc1-gate-matrix-ci-handoff.md) and
|
|
109
|
+
`xtend.epic13.rc1-gate-matrix-ci-handoff.v1`.
|
|
110
|
+
|
|
111
|
+
## Component UX Authoring
|
|
112
|
+
|
|
113
|
+
Since `WP-E11-16`, [Component UX App Authoring](./component-ux-app-authoring.md)
|
|
114
|
+
extends this guide with visible UX rules for RMT-first apps. This includes
|
|
115
|
+
theme, motion, density, viewports, browser smokes, and the Component Shell
|
|
116
|
+
Theme Matrix `xtend.epic11.component-shell-theme-matrix.v1`.
|
|
117
|
+
|
|
118
|
+
Since `WP-E11-17`, [Component Long-Tail Migration](./component-long-tail-migration.md)
|
|
119
|
+
describes which legacy and infrastructure components are hardened first for
|
|
120
|
+
RMT-first app compatibility.
|
|
121
|
+
|
|
122
|
+
The local docs gate is:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
node scripts/run_xtend_tests.js component-ux-authoring-docs --json
|
|
126
|
+
node scripts/run_xtend_tests.js component-long-tail-migration --json
|
|
127
|
+
```
|