@ccslabs/xtend 0.1.0-rc.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +4 -0
- package/catalog/component-catalog-coverage.js +2 -0
- package/catalog/epic13-package-export-lock.js +11 -1
- package/catalog/epic13-rmt-production-readiness.js +0 -1
- package/catalog/epic18-rmt-action-effect-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-action-effect-runtime.js +249 -0
- package/catalog/epic18-rmt-app-platform-authoring.d.ts +39 -0
- package/catalog/epic18-rmt-app-platform-authoring.js +319 -0
- package/catalog/epic18-rmt-app-platform-fixture.d.ts +33 -0
- package/catalog/epic18-rmt-app-platform-fixture.js +221 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.d.ts +30 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.js +231 -0
- package/catalog/epic18-rmt-app-platform-tooling.d.ts +38 -0
- package/catalog/epic18-rmt-app-platform-tooling.js +242 -0
- package/catalog/epic18-rmt-component-template-primitives.d.ts +33 -0
- package/catalog/epic18-rmt-component-template-primitives.js +240 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.d.ts +35 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.js +232 -0
- package/catalog/epic18-rmt-event-routing-runtime.d.ts +35 -0
- package/catalog/epic18-rmt-event-routing-runtime.js +234 -0
- package/catalog/epic18-rmt-state-selector-runtime.d.ts +34 -0
- package/catalog/epic18-rmt-state-selector-runtime.js +216 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.js +256 -0
- package/catalog/surface-manager-controller.js +5 -1
- package/catalog/surface-manager-materialization.js +7 -1
- package/catalog/surface-manager-overlay-bridge.js +41 -6
- package/catalog/surface-manager-workbench-fixture.js +1 -1
- package/catalog/surface-type-capability-matrix.d.ts +61 -0
- package/catalog/surface-type-capability-matrix.js +183 -0
- package/catalog/type-exports-rmt.js +37 -1
- package/catalog/type-exports.js +3 -3
- package/components/icon-packs/lucide.js +4 -0
- package/components/manifest.json +2 -0
- package/components/prism-rmt.d.ts +34 -0
- package/components/prism-rmt.js +130 -0
- package/components/xcards.js +15 -0
- package/components/xcode.d.ts +36 -1
- package/components/xcode.js +215 -20
- package/components/xfooter.js +17 -0
- package/components/xheader.js +14 -0
- package/components/xhero.js +16 -1
- package/components/xlink.js +97 -14
- package/components/xmasonry.js +15 -0
- package/components/xplayer.d.ts +44 -2
- package/components/xplayer.js +242 -15
- package/components/xrouter.js +27 -2
- package/components/xsection.js +15 -0
- package/components/xsidepanel.js +10 -2
- package/components/xsurfacemanager-controller.d.ts +2 -1
- package/components/xsurfacemanager-controller.js +27 -3
- package/components/xsurfacemanager.d.ts +2 -0
- package/components/xsurfacemanager.js +20 -8
- package/components/xsurfaceoverlay-bridge.d.ts +20 -5
- package/components/xsurfaceoverlay-bridge.js +114 -18
- package/components/xsurfaceportal.d.ts +29 -0
- package/components/xsurfaceportal.js +122 -0
- package/components/xsurfaceregion.d.ts +50 -0
- package/components/xsurfaceregion.js +285 -0
- package/components/xsurfacewindow.js +2 -1
- package/components/xtooltip.js +89 -23
- package/docs/README.md +222 -298
- package/docs/changelog.md +107 -0
- package/docs/component-catalog-coverage.md +9 -9
- package/docs/component-platform.md +19 -1
- package/docs/component-ux-app-authoring.md +56 -63
- package/docs/components/xcode.md +83 -53
- package/docs/components/xsurfaceportal.md +32 -0
- package/docs/components/xsurfaceregion.md +37 -0
- package/docs/components.md +105 -69
- package/docs/de/README.md +264 -0
- package/docs/de/XTend-ADR.md +221 -0
- package/docs/de/a11y-keyboard-smokes.md +62 -0
- package/docs/de/about.md +18 -0
- package/docs/de/api.md +157 -0
- package/docs/de/best-practices.md +76 -0
- package/docs/de/changelog.md +107 -0
- package/docs/de/component-catalog-coverage.md +58 -0
- package/docs/de/component-lab.md +103 -0
- package/docs/de/component-long-tail-migration.md +41 -0
- package/docs/de/component-platform.md +177 -0
- package/docs/de/component-ux-app-authoring.md +123 -0
- package/docs/de/component-ux-authoring.md +96 -0
- package/docs/de/component-ux-gates.md +45 -0
- package/docs/de/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/de/components/xalert.md +81 -0
- package/docs/de/components/xbutton.md +103 -0
- package/docs/de/components/xcalendar.md +82 -0
- package/docs/de/components/xcards.md +128 -0
- package/docs/de/components/xcheckbox.md +102 -0
- package/docs/de/components/xcode.md +156 -0
- package/docs/de/components/xdialog.md +92 -0
- package/docs/de/components/xdrawer.md +84 -0
- package/docs/de/components/xfooter.md +126 -0
- package/docs/de/components/xform.md +128 -0
- package/docs/de/components/xheader.md +308 -0
- package/docs/de/components/xhero.md +142 -0
- package/docs/de/components/xicon.md +125 -0
- package/docs/de/components/xinput.md +129 -0
- package/docs/de/components/xlightbox.md +98 -0
- package/docs/de/components/xlink.md +109 -0
- package/docs/de/components/xmasonry.md +124 -0
- package/docs/de/components/xmenu.md +158 -0
- package/docs/de/components/xmodal.md +82 -0
- package/docs/de/components/xplayer.md +104 -0
- package/docs/de/components/xpopover.md +67 -0
- package/docs/de/components/xprogress.md +56 -0
- package/docs/de/components/xradio.md +103 -0
- package/docs/de/components/xrouter.md +260 -0
- package/docs/de/components/xsection.md +125 -0
- package/docs/de/components/xselect.md +105 -0
- package/docs/de/components/xsidepanel.md +30 -0
- package/docs/de/components/xspinner.md +102 -0
- package/docs/de/components/xstate.md +148 -0
- package/docs/de/components/xstatus.md +55 -0
- package/docs/de/components/xsummary.md +78 -0
- package/docs/de/components/xsurfacemanager.md +27 -0
- package/docs/de/components/xsurfacewindow.md +21 -0
- package/docs/de/components/xtabs.md +160 -0
- package/docs/de/components/xtextarea.md +98 -0
- package/docs/de/components/xtheme.md +167 -0
- package/docs/de/components/xtoast.md +62 -0
- package/docs/de/components/xtooltip.md +66 -0
- package/docs/de/components/xtype.md +82 -0
- package/docs/de/components/xutils.md +144 -0
- package/docs/de/components/xwriter.md +94 -0
- package/docs/de/components.md +153 -0
- package/docs/de/conditional-network-evidence-ci.md +38 -0
- package/docs/de/conditional-network-evidence.md +50 -0
- package/docs/de/core-migration-guide.md +110 -0
- package/docs/de/design-tokens.md +116 -0
- package/docs/de/docs-rmt-production-hardening.md +31 -0
- package/docs/de/enterprise-adoption.md +413 -0
- package/docs/de/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/de/epic10-platform-gates.md +62 -0
- package/docs/de/epic10-release-handoff.md +81 -0
- package/docs/de/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/de/epic12-rc0-handoff.md +61 -0
- package/docs/de/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/de/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/de/epic18-vendor-bugfixes.md +34 -0
- package/docs/de/existing-component-metadata.md +67 -0
- package/docs/de/hydration-performance-closure.md +34 -0
- package/docs/de/hydration-policies.md +71 -0
- package/docs/de/known-residual-triage.md +22 -0
- package/docs/de/manifest-import-policy.md +79 -0
- package/docs/de/manifest.md +112 -0
- package/docs/de/motion-contrast.md +67 -0
- package/docs/de/package-export-lock.md +44 -0
- package/docs/de/performance-measurements.md +106 -0
- package/docs/de/performance-regression.md +89 -0
- package/docs/de/performance.md +94 -0
- package/docs/de/previews/README.md +17 -0
- package/docs/de/prod-browser-csp-smokes.md +40 -0
- package/docs/de/public-component-types.md +79 -0
- package/docs/de/quick-start-guide.md +220 -0
- package/docs/de/rc0-adoption-guide.md +102 -0
- package/docs/de/rc0-gate-matrix.md +58 -0
- package/docs/de/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/de/rc1-migration-notes.md +69 -0
- package/docs/de/rc1-readiness.md +46 -0
- package/docs/de/release-owner-acceptance.md +56 -0
- package/docs/de/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/de/rmt-action-effect-runtime.md +81 -0
- package/docs/de/rmt-app-platform-authoring.md +54 -0
- package/docs/de/rmt-app-platform-fixture.md +46 -0
- package/docs/de/rmt-app-platform-migration-guide.md +88 -0
- package/docs/de/rmt-app-platform-tooling.md +79 -0
- package/docs/de/rmt-component-template-primitives.md +57 -0
- package/docs/de/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/de/rmt-dsl-authoring-polish.md +145 -0
- package/docs/de/rmt-event-routing-runtime.md +81 -0
- package/docs/de/rmt-first-demo-app.md +77 -0
- package/docs/de/rmt-first-xtend-apps.md +129 -0
- package/docs/de/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/de/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/de/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/de/rmt-language-server.md +234 -0
- package/docs/de/rmt-lifecycle-demo.md +24 -0
- package/docs/de/rmt-linter.md +140 -0
- package/docs/de/rmt-node-ssr-adapter.md +100 -0
- package/docs/de/rmt-php-ssr-adapter.md +120 -0
- package/docs/de/rmt-production-readiness.md +63 -0
- package/docs/de/rmt-state-selector-runtime.md +47 -0
- package/docs/de/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/de/rmt-tooling-release-gates.md +77 -0
- package/docs/de/rmt-vnext-authoring.md +170 -0
- package/docs/de/rmt-vnext-component-primitives.md +188 -0
- package/docs/de/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/de/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/de/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/de/rmt-vnext-migration-notes.md +62 -0
- package/docs/de/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/de/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/de/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/de/rmt-vnext-primitive-migration.md +119 -0
- package/docs/de/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/de/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/de/rmt-vnext-primitives-compiler-backlog.md +739 -0
- package/docs/de/rmt-vnext-release-handoff.md +83 -0
- package/docs/de/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/de/rmt-vnext-source-to-sea-gate.md +612 -0
- package/docs/de/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/de/screenreader-signals.md +56 -0
- package/docs/de/supply-chain-gates.md +100 -0
- package/docs/de/surface-manager-authoring-guide.md +94 -0
- package/docs/de/surface-manager-browser-lab.md +45 -0
- package/docs/de/surface-manager-component-lab.md +43 -0
- package/docs/de/surface-manager-controller.md +66 -0
- package/docs/de/surface-manager-layout-engines.md +32 -0
- package/docs/de/surface-manager-lazy-hydration.md +63 -0
- package/docs/de/surface-manager-migration-guide.md +122 -0
- package/docs/de/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/de/surface-manager-overlay-bridge.md +53 -0
- package/docs/de/surface-manager-persistence.md +30 -0
- package/docs/de/surface-manager-quality-gates.md +51 -0
- package/docs/de/surface-manager-release-handoff.md +68 -0
- package/docs/de/surface-manager-remote-policy.md +54 -0
- package/docs/de/surface-manager-rmt-authoring.md +102 -0
- package/docs/de/surface-manager-route-lifecycle.md +59 -0
- package/docs/de/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/de/surface-manager-side-panel-runtime.md +36 -0
- package/docs/de/surface-manager-stack-policy.md +39 -0
- package/docs/de/surface-manager-window-runtime.md +47 -0
- package/docs/de/surface-manager-workbench-fixture.md +43 -0
- package/docs/de/third-party-design-authoring.md +406 -0
- package/docs/de/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/de/trusted-dom-sanitizing.md +110 -0
- package/docs/de/type-exports.md +61 -0
- package/docs/de/typescript-components.md +63 -0
- package/docs/de/visual-browser-regression.md +83 -0
- package/docs/de/visual-owner-artifacts.md +46 -0
- package/docs/de/visual-snapshot-automation.md +87 -0
- package/docs/de/xtend-api-types.md +55 -0
- package/docs/de/xtend-builder-types.md +55 -0
- package/docs/de/xtend-catalog-types.md +44 -0
- package/docs/de/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/de/xtend-fabric.md +474 -0
- package/docs/de/xtend-loader-types.md +58 -0
- package/docs/de/xtend-loader.md +265 -0
- package/docs/de/xtend-policy-types.md +38 -0
- package/docs/de/xtend-rmt-types.md +40 -0
- package/docs/de/xtend-vendor-types.md +36 -0
- package/docs/de/xtendrmt-app-dsl.md +334 -0
- package/docs/de/xtendrmt-migration-guide.md +266 -0
- package/docs/de/xtendrmt-native-authoring.md +333 -0
- package/docs/de/xtendrmt-overview.md +109 -0
- package/docs/de/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/de/xtendrmt-runtime-bridge.md +155 -0
- package/docs/en/README.md +163 -0
- package/docs/en/XTend-ADR.md +221 -0
- package/docs/en/a11y-keyboard-smokes.md +68 -0
- package/docs/en/about.md +25 -0
- package/docs/en/api.md +171 -0
- package/docs/en/best-practices.md +125 -0
- package/docs/en/changelog.md +104 -0
- package/docs/en/component-catalog-coverage.md +104 -0
- package/docs/en/component-lab.md +103 -0
- package/docs/en/component-long-tail-migration.md +41 -0
- package/docs/en/component-platform.md +243 -0
- package/docs/en/component-ux-app-authoring.md +118 -0
- package/docs/en/component-ux-authoring.md +96 -0
- package/docs/en/component-ux-gates.md +45 -0
- package/docs/en/components/x-rmt-lifecycle-demo-build.md +75 -0
- package/docs/en/components/xalert.md +94 -0
- package/docs/en/components/xbutton.md +118 -0
- package/docs/en/components/xcalendar.md +95 -0
- package/docs/en/components/xcards.md +139 -0
- package/docs/en/components/xcheckbox.md +118 -0
- package/docs/en/components/xcode.md +153 -0
- package/docs/en/components/xdialog.md +108 -0
- package/docs/en/components/xdrawer.md +110 -0
- package/docs/en/components/xfooter.md +138 -0
- package/docs/en/components/xform.md +147 -0
- package/docs/en/components/xheader.md +308 -0
- package/docs/en/components/xhero.md +157 -0
- package/docs/en/components/xicon.md +149 -0
- package/docs/en/components/xinput.md +147 -0
- package/docs/en/components/xlightbox.md +113 -0
- package/docs/en/components/xlink.md +130 -0
- package/docs/en/components/xmasonry.md +136 -0
- package/docs/en/components/xmenu.md +185 -0
- package/docs/en/components/xmodal.md +102 -0
- package/docs/en/components/xplayer.md +114 -0
- package/docs/en/components/xpopover.md +87 -0
- package/docs/en/components/xprogress.md +73 -0
- package/docs/en/components/xradio.md +119 -0
- package/docs/en/components/xrouter.md +260 -0
- package/docs/en/components/xsection.md +136 -0
- package/docs/en/components/xselect.md +122 -0
- package/docs/en/components/xsidepanel.md +48 -0
- package/docs/en/components/xspinner.md +118 -0
- package/docs/en/components/xstate.md +163 -0
- package/docs/en/components/xstatus.md +71 -0
- package/docs/en/components/xsummary.md +90 -0
- package/docs/en/components/xsurfacemanager.md +42 -0
- package/docs/en/components/xsurfacewindow.md +31 -0
- package/docs/en/components/xtabs.md +187 -0
- package/docs/en/components/xtextarea.md +115 -0
- package/docs/en/components/xtheme.md +203 -0
- package/docs/en/components/xtoast.md +78 -0
- package/docs/en/components/xtooltip.md +85 -0
- package/docs/en/components/xtype.md +91 -0
- package/docs/en/components/xutils.md +161 -0
- package/docs/en/components/xwriter.md +106 -0
- package/docs/en/components.md +151 -0
- package/docs/en/conditional-network-evidence-ci.md +38 -0
- package/docs/en/conditional-network-evidence.md +50 -0
- package/docs/en/core-migration-guide.md +110 -0
- package/docs/en/design-tokens.md +137 -0
- package/docs/en/docs-rmt-production-hardening.md +31 -0
- package/docs/en/enterprise-adoption.md +413 -0
- package/docs/en/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/en/epic10-platform-gates.md +62 -0
- package/docs/en/epic10-release-handoff.md +81 -0
- package/docs/en/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/en/epic12-rc0-handoff.md +61 -0
- package/docs/en/epic18-media-manager-vendor-upstream.md +232 -0
- package/docs/en/epic18-rmt-app-platform-release-handoff.md +60 -0
- package/docs/en/epic18-vendor-bugfixes.md +29 -0
- package/docs/en/existing-component-metadata.md +67 -0
- package/docs/en/hydration-performance-closure.md +34 -0
- package/docs/en/hydration-policies.md +75 -0
- package/docs/en/known-residual-triage.md +22 -0
- package/docs/en/manifest-import-policy.md +81 -0
- package/docs/en/manifest.md +135 -0
- package/docs/en/motion-contrast.md +67 -0
- package/docs/en/package-export-lock.md +44 -0
- package/docs/en/performance-measurements.md +106 -0
- package/docs/en/performance-regression.md +89 -0
- package/docs/en/performance.md +132 -0
- package/docs/en/previews/README.md +17 -0
- package/docs/en/prod-browser-csp-smokes.md +40 -0
- package/docs/en/public-component-types.md +79 -0
- package/docs/en/quick-start-guide.md +189 -0
- package/docs/en/rc0-adoption-guide.md +102 -0
- package/docs/en/rc0-gate-matrix.md +58 -0
- package/docs/en/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/en/rc1-migration-notes.md +69 -0
- package/docs/en/rc1-readiness.md +46 -0
- package/docs/en/release-owner-acceptance.md +56 -0
- package/docs/en/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/en/rmt-action-effect-runtime.md +101 -0
- package/docs/en/rmt-app-platform-authoring.md +47 -0
- package/docs/en/rmt-app-platform-fixture.md +35 -0
- package/docs/en/rmt-app-platform-migration-guide.md +75 -0
- package/docs/en/rmt-app-platform-tooling.md +58 -0
- package/docs/en/rmt-component-template-primitives.md +49 -0
- package/docs/en/rmt-dom-descriptor-renderer.md +54 -0
- package/docs/en/rmt-dsl-authoring-polish.md +143 -0
- package/docs/en/rmt-event-routing-runtime.md +98 -0
- package/docs/en/rmt-first-demo-app.md +87 -0
- package/docs/en/rmt-first-xtend-apps.md +127 -0
- package/docs/en/rmt-kernel-panic-recovery-incident-handoff.md +60 -0
- package/docs/en/rmt-kernel-security-hardening-migration.md +49 -0
- package/docs/en/rmt-kernel-trusted-output-authoring.md +68 -0
- package/docs/en/rmt-language-server.md +243 -0
- package/docs/en/rmt-lifecycle-demo.md +23 -0
- package/docs/en/rmt-linter.md +146 -0
- package/docs/en/rmt-node-ssr-adapter.md +99 -0
- package/docs/en/rmt-php-ssr-adapter.md +118 -0
- package/docs/en/rmt-production-readiness.md +63 -0
- package/docs/en/rmt-state-selector-runtime.md +34 -0
- package/docs/en/rmt-surface-resource-graph-runtime.md +68 -0
- package/docs/en/rmt-tooling-release-gates.md +77 -0
- package/docs/en/rmt-vnext-authoring.md +102 -0
- package/docs/en/rmt-vnext-component-primitives.md +185 -0
- package/docs/en/rmt-vnext-cross-surface-events.md +59 -0
- package/docs/en/rmt-vnext-enterprise-mfe-handoff.md +62 -0
- package/docs/en/rmt-vnext-fabric-bridge-evidence.md +64 -0
- package/docs/en/rmt-vnext-migration-notes.md +62 -0
- package/docs/en/rmt-vnext-primitive-authoring-tooling.md +174 -0
- package/docs/en/rmt-vnext-primitive-grammar-design.md +268 -0
- package/docs/en/rmt-vnext-primitive-lowering.md +91 -0
- package/docs/en/rmt-vnext-primitive-migration.md +93 -0
- package/docs/en/rmt-vnext-primitive-parser-ast.md +59 -0
- package/docs/en/rmt-vnext-primitive-semantic-graph.md +103 -0
- package/docs/en/rmt-vnext-primitives-compiler-backlog.md +327 -0
- package/docs/en/rmt-vnext-release-handoff.md +83 -0
- package/docs/en/rmt-vnext-remote-surfaces.md +81 -0
- package/docs/en/rmt-vnext-source-to-sea-gate.md +482 -0
- package/docs/en/rmt-vnext-surface-registry-enterprise.md +68 -0
- package/docs/en/screenreader-signals.md +56 -0
- package/docs/en/supply-chain-gates.md +106 -0
- package/docs/en/surface-manager-authoring-guide.md +94 -0
- package/docs/en/surface-manager-browser-lab.md +45 -0
- package/docs/en/surface-manager-component-lab.md +43 -0
- package/docs/en/surface-manager-controller.md +66 -0
- package/docs/en/surface-manager-layout-engines.md +32 -0
- package/docs/en/surface-manager-lazy-hydration.md +63 -0
- package/docs/en/surface-manager-migration-guide.md +113 -0
- package/docs/en/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/en/surface-manager-overlay-bridge.md +53 -0
- package/docs/en/surface-manager-persistence.md +30 -0
- package/docs/en/surface-manager-quality-gates.md +51 -0
- package/docs/en/surface-manager-release-handoff.md +68 -0
- package/docs/en/surface-manager-remote-policy.md +54 -0
- package/docs/en/surface-manager-rmt-authoring.md +89 -0
- package/docs/en/surface-manager-route-lifecycle.md +59 -0
- package/docs/en/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/en/surface-manager-side-panel-runtime.md +36 -0
- package/docs/en/surface-manager-stack-policy.md +39 -0
- package/docs/en/surface-manager-window-runtime.md +47 -0
- package/docs/en/surface-manager-workbench-fixture.md +43 -0
- package/docs/en/third-party-design-authoring.md +406 -0
- package/docs/en/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/en/trusted-dom-sanitizing.md +124 -0
- package/docs/en/type-exports.md +61 -0
- package/docs/en/typescript-components.md +63 -0
- package/docs/en/visual-browser-regression.md +83 -0
- package/docs/en/visual-owner-artifacts.md +46 -0
- package/docs/en/visual-snapshot-automation.md +87 -0
- package/docs/en/xtend-api-types.md +55 -0
- package/docs/en/xtend-builder-types.md +55 -0
- package/docs/en/xtend-catalog-types.md +44 -0
- package/docs/en/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/en/xtend-fabric.md +474 -0
- package/docs/en/xtend-loader-types.md +58 -0
- package/docs/en/xtend-loader.md +265 -0
- package/docs/en/xtend-policy-types.md +38 -0
- package/docs/en/xtend-rmt-types.md +40 -0
- package/docs/en/xtend-vendor-types.md +36 -0
- package/docs/en/xtendrmt-app-dsl.md +331 -0
- package/docs/en/xtendrmt-migration-guide.md +256 -0
- package/docs/en/xtendrmt-native-authoring.md +336 -0
- package/docs/en/xtendrmt-overview.md +63 -0
- package/docs/en/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/en/xtendrmt-runtime-bridge.md +155 -0
- package/docs/enterprise-adoption.md +4 -2
- package/docs/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/epic18-vendor-bugfixes.md +34 -0
- package/docs/index.php +1056 -109
- package/docs/manifest.md +8 -2
- package/docs/menu.json +986 -133
- package/docs/package-export-lock.md +2 -2
- package/docs/public-component-types.md +2 -2
- package/docs/quick-start-guide.md +126 -58
- package/docs/rmt-action-effect-runtime.md +101 -0
- package/docs/rmt-app-platform-authoring.md +54 -0
- package/docs/rmt-app-platform-fixture.md +46 -0
- package/docs/rmt-app-platform-migration-guide.md +88 -0
- package/docs/rmt-app-platform-tooling.md +79 -0
- package/docs/rmt-component-template-primitives.md +57 -0
- package/docs/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/rmt-dsl-authoring-polish.md +67 -44
- package/docs/rmt-event-routing-runtime.md +98 -0
- package/docs/rmt-first-demo-app.md +2 -2
- package/docs/rmt-first-xtend-apps.md +70 -46
- package/docs/rmt-language-server.md +61 -4
- package/docs/rmt-lifecycle-demo.md +1 -2
- package/docs/rmt-node-ssr-adapter.md +144 -0
- package/docs/rmt-php-ssr-adapter.md +158 -0
- package/docs/rmt-state-selector-runtime.md +47 -0
- package/docs/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/rmt-vnext-authoring.md +128 -18
- package/docs/rmt-vnext-component-primitives.md +188 -0
- package/docs/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/rmt-vnext-primitive-migration.md +119 -0
- package/docs/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/rmt-vnext-primitives-compiler-backlog.md +742 -0
- package/docs/rmt-vnext-release-handoff.md +14 -0
- package/docs/rmt-vnext-source-to-sea-gate.md +629 -0
- package/docs/surface-manager-migration-guide.md +34 -6
- package/docs/surface-manager-overlay-bridge.md +9 -4
- package/docs/surface-manager-rmt-authoring.md +50 -34
- package/docs/surface-manager-workbench-fixture.md +1 -2
- package/docs/third-party-design-authoring.md +1 -1
- package/docs/type-exports.md +3 -3
- package/docs/utils/pageloader.js +811 -62
- package/docs/visual-browser-regression.md +1 -1
- package/docs/xtend-rmt-types.md +3 -2
- package/docs/xtendrmt-app-dsl.md +187 -122
- package/docs/xtendrmt-docs-shell-vnext.rmt +165 -0
- package/docs/xtendrmt-migration-guide.md +48 -17
- package/docs/xtendrmt-native-authoring.md +213 -217
- package/docs/xtendrmt-overview.md +81 -61
- package/docs/xtendrmt-parsedown-scheduling.md +23 -8
- package/fabric/package.json +1 -1
- package/package.json +684 -21
- package/tools/package.json +5 -1
- package/tools/rmt-editor/vscode/README.md +72 -5
- package/tools/rmt-editor/vscode/XTend-Logo.png +0 -0
- package/tools/rmt-editor/vscode/extension.d.ts +33 -0
- package/tools/rmt-editor/vscode/extension.js +1816 -7
- package/tools/rmt-editor/vscode/language-configuration.json +2 -1
- package/tools/rmt-editor/vscode/package.json +193 -2
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +103 -1
- package/tools/rmt-editor/vscode/templates/launch.json +70 -0
- package/tools/rmt-editor/vscode/templates/tasks.json +172 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/app-platform-tooling.d.ts +128 -0
- package/tools/rmt-language/app-platform-tooling.js +677 -0
- package/tools/rmt-language/completions.d.ts +5 -0
- package/tools/rmt-language/completions.js +185 -3
- package/tools/rmt-language/diagnostics.js +54 -0
- package/tools/rmt-language/hover.js +36 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +7 -0
- package/tools/rmt-language/rules/app-platform-policy.js +39 -0
- package/tools/rmt-language/rules/index.js +5 -1
- package/tools/rmt-language/semantic-graph.d.ts +6 -0
- package/tools/rmt-language/semantic-graph.js +928 -0
- package/tools/rmt-language/snippets/index.js +44 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +10 -0
- package/tools/rmt-language/vnext-compatibility.js +642 -0
- package/tools/rmt-language/vnext-compiler.d.ts +5 -0
- package/tools/rmt-language/vnext-compiler.js +863 -17
- package/tools/rmt-language/vnext-parser.js +725 -9
- package/tools/rmt-language/vnext-release.d.ts +1 -0
- package/tools/rmt-language/vnext-release.js +20 -0
- package/tools/rmt-language/vnext-source-to-sea.d.ts +33 -0
- package/tools/rmt-language/vnext-source-to-sea.js +2227 -0
- package/tools/rmt-language/vnext-surfaces.js +111 -52
- package/tools/rmt-language/vnext-tooling.d.ts +19 -1
- package/tools/rmt-language/vnext-tooling.js +1247 -5
- package/tools/rmt-language-server/protocol.js +3 -0
- package/tools/rmt-language-server/server.d.ts +2 -0
- package/tools/rmt-language-server/server.js +176 -22
- package/tools/rmt-linter/cli.d.ts +2 -0
- package/tools/rmt-linter/cli.js +62 -0
- package/xtend-builder/generators/registry.js +11 -0
- package/xtend-builder/generators/rmt-app-platform.js +239 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +3 -11
- package/xtend-builder/lib/cli.js +38 -0
- package/xtend-builder/package.json +3 -3
- package/xtend-builder/scaffold.config.js +29 -2
- package/xtend.css +49 -2
- package/xtendrmt/package.json +49 -1
- package/xtendrmt/rmt-action-effect-runtime.d.ts +126 -0
- package/xtendrmt/rmt-action-effect-runtime.js +494 -0
- package/xtendrmt/rmt-component-capability-registry.d.ts +180 -0
- package/xtendrmt/rmt-component-capability-registry.js +636 -0
- package/xtendrmt/rmt-core.d.ts +6 -0
- package/xtendrmt/rmt-core.esm.js +32 -6
- package/xtendrmt/rmt-dom-descriptor-renderer.d.ts +107 -0
- package/xtendrmt/rmt-dom-descriptor-renderer.js +1066 -0
- package/xtendrmt/rmt-event-routing-runtime.d.ts +144 -0
- package/xtendrmt/rmt-event-routing-runtime.js +666 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +2 -2
- package/xtendrmt/rmt-lifecycle-demo.core.json +4 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +1 -1
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +2 -2
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +4 -4
- package/xtendrmt/rmt-native-shell-runtime.d.ts +77 -0
- package/xtendrmt/rmt-native-shell-runtime.js +309 -0
- package/xtendrmt/rmt-node-ssr-adapter.d.ts +197 -0
- package/xtendrmt/rmt-node-ssr-adapter.js +1006 -0
- package/xtendrmt/rmt-php-ssr-adapter.php +976 -0
- package/xtendrmt/rmt-runtime.browser.js +32 -6
- package/xtendrmt/rmt-runtime.esm.js +32 -6
- package/xtendrmt/rmt-state-selector-runtime.d.ts +166 -0
- package/xtendrmt/rmt-state-selector-runtime.js +866 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.d.ts +224 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.js +932 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +3 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +3 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +3420 -372
- package/xtendrmt/xtendrmt-bestcase-demo.js +424 -8
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +214 -6
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Performance Measurements
|
|
2
|
+
|
|
3
|
+
Starting with `ER-WP-18`, XTend measures loader, hydration, render and route core paths locally.
|
|
4
|
+
|
|
5
|
+
The stable measurement contract is:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
xtend.performance.measurement.v1
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Measurement Points
|
|
12
|
+
|
|
13
|
+
| Measure | Phase | Source |
|
|
14
|
+
|---------|-------|--------|
|
|
15
|
+
| `xtend.loader.manifest` | `load` | `xtend-loader.js` |
|
|
16
|
+
| `xtend.loader.module` | `load` | `xtend-loader.js`, Fabric Fibers |
|
|
17
|
+
| `xtend.component.define` | `define` | `xtend-loader.js` |
|
|
18
|
+
| `xtend.component.mount` | `mount` | Fabric Fibers |
|
|
19
|
+
| `xtend.component.hydrate` | `hydrate` | Fabric Fibers |
|
|
20
|
+
| `xtend.component.render` | `render` | Fabric Fibers |
|
|
21
|
+
| `xtend.component.update` | `update` | Fabric Fibers |
|
|
22
|
+
| `xtend.event.handler` | `event` | Fabric Fibers |
|
|
23
|
+
| `xtend.route.navigate` | `route` | Fabric Fibers |
|
|
24
|
+
| `xtend.route.render` | `route` | Fabric Fibers |
|
|
25
|
+
| `xtend.diagnostics.snapshot` | `diagnostics` | Fabric Fibers |
|
|
26
|
+
|
|
27
|
+
## Loader
|
|
28
|
+
|
|
29
|
+
The loader sets `performance.mark` and `performance.measure` for:
|
|
30
|
+
|
|
31
|
+
- loading and resolving the manifest
|
|
32
|
+
- loading the ESM module
|
|
33
|
+
- waiting for the Custom Element definition
|
|
34
|
+
|
|
35
|
+
It also emits a local browser event:
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
window.addEventListener('xtend-loader-performance', (event) => {
|
|
39
|
+
console.log(event.detail.name, event.detail.durationMs);
|
|
40
|
+
});
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The automatic boot promise contains the loader measurements:
|
|
44
|
+
|
|
45
|
+
```js
|
|
46
|
+
const boot = await window.__XTendLoaderBootPromise;
|
|
47
|
+
console.log(boot.performanceMeasurements);
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Fabric
|
|
51
|
+
|
|
52
|
+
Fabric automatically measures known fibers:
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
const fabric = window.XTendFabric.createXtendFabric({
|
|
56
|
+
performance: window.performance
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const component = fabric.createComponentFiberInstrumentation('x-alert');
|
|
60
|
+
await component.hydrate(() => hydrateAlert());
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Measurement can be disabled for special tests:
|
|
64
|
+
|
|
65
|
+
```js
|
|
66
|
+
const fabric = window.XTendFabric.createXtendFabric({
|
|
67
|
+
markPerformance: false
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Telemetry Snapshot
|
|
72
|
+
|
|
73
|
+
`createTelemetrySnapshot()` reads `mark` and `measure` entries with the `xtend.` prefix and normalizes them:
|
|
74
|
+
|
|
75
|
+
```js
|
|
76
|
+
const snapshot = fabric.createTelemetrySnapshot({
|
|
77
|
+
performance: window.performance
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
console.log(snapshot.performance.measurements);
|
|
81
|
+
console.log(snapshot.performance.phaseSummary.hydrate);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The snapshot section contains:
|
|
85
|
+
|
|
86
|
+
- `measurementSchema`
|
|
87
|
+
- `measurementCount`
|
|
88
|
+
- `measurements`
|
|
89
|
+
- `phaseSummary`
|
|
90
|
+
- `entries`
|
|
91
|
+
- `totalDurationMs`
|
|
92
|
+
- `maxDurationMs`
|
|
93
|
+
|
|
94
|
+
## Gates
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
node scripts/run_xtend_tests.js fabric-performance-measurements --json
|
|
98
|
+
npm run test:fabric-performance
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Since `ER-WP-19`, [Performance Regression](./performance-regression.md) uses the same measurements for local deterministic baselines:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
node scripts/run_xtend_tests.js performance-regression --json
|
|
105
|
+
npm run test:performance
|
|
106
|
+
```
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Performance Regression
|
|
2
|
+
|
|
3
|
+
- Docs contract: `xtend.docs.performance-regression.v1`
|
|
4
|
+
- Gate contract: `xtend.performance.regression-gate.v1`
|
|
5
|
+
- Baseline contract: `xtend.performance.regression-baseline.v1`
|
|
6
|
+
- Report schema: `xtend.performance.regression-report.v1`
|
|
7
|
+
- Since: `ER-WP-19`
|
|
8
|
+
|
|
9
|
+
XTend already measures loader, hydration, render and route work as `xtend.performance.measurement.v1`. The Performance Regression Gate evaluates these measurements against local baselines.
|
|
10
|
+
|
|
11
|
+
## Local Gate
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
node scripts/run_xtend_tests.js performance-regression
|
|
15
|
+
npm run test:performance
|
|
16
|
+
node scripts/run_xtend_tests.js performance-regression --json
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The suite uses:
|
|
20
|
+
|
|
21
|
+
- `tests/performance/performance_regression_suite.js`
|
|
22
|
+
- `tests/performance/baselines/local-performance-baseline.json`
|
|
23
|
+
- Fabric `createTelemetrySnapshot`
|
|
24
|
+
- budget values from `fabric/xtend-fabric.js` and `development/XTend-Performance-Budget-Matrix.md`
|
|
25
|
+
|
|
26
|
+
## Status Model
|
|
27
|
+
|
|
28
|
+
| Status | Condition | Effect |
|
|
29
|
+
|--------|-----------|--------|
|
|
30
|
+
| `pass` | `durationMs <= budgetMs` | no action |
|
|
31
|
+
| `warn` | `durationMs <= budgetMs * 1.5` | visible in report |
|
|
32
|
+
| `fail` | `durationMs > budgetMs * 1.5` | suite fails |
|
|
33
|
+
|
|
34
|
+
Warnings are calibration signals. Hard `fail` entries are regressions and appear in the runner report under `failures`. Since `WP-E13-06`, the local RC1 baseline must report `warnCount === 0`; the earlier hydration warning is closed without owner dependency through [Hydration Performance Closure](./hydration-performance-closure.md).
|
|
35
|
+
|
|
36
|
+
## Baseline
|
|
37
|
+
|
|
38
|
+
The first baseline is intentionally deterministic and local:
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
tests/performance/baselines/local-performance-baseline.json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
It covers at least these measurement points:
|
|
45
|
+
|
|
46
|
+
- `xtend.loader.manifest`
|
|
47
|
+
- `xtend.loader.module`
|
|
48
|
+
- `xtend.component.define`
|
|
49
|
+
- `xtend.component.mount`
|
|
50
|
+
- `xtend.component.hydrate`
|
|
51
|
+
- `xtend.component.render`
|
|
52
|
+
- `xtend.component.update`
|
|
53
|
+
- `xtend.event.handler`
|
|
54
|
+
- `xtend.route.navigate`
|
|
55
|
+
- `xtend.route.render`
|
|
56
|
+
- `xtend.diagnostics.snapshot`
|
|
57
|
+
|
|
58
|
+
## JSON Report
|
|
59
|
+
|
|
60
|
+
The embedded regression report uses:
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
xtend.performance.regression-report.v1
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Important fields:
|
|
67
|
+
|
|
68
|
+
- `measurementSchema`
|
|
69
|
+
- `measurementCount`
|
|
70
|
+
- `passCount`
|
|
71
|
+
- `warnCount`
|
|
72
|
+
- `failCount`
|
|
73
|
+
- `warnings`
|
|
74
|
+
- `failures`
|
|
75
|
+
- `phaseSummary`
|
|
76
|
+
|
|
77
|
+
`phaseSummary` makes visible which phase creates budget pressure without requiring every component to have its own browser test.
|
|
78
|
+
|
|
79
|
+
## Relationship to Measurements
|
|
80
|
+
|
|
81
|
+
The regression gate builds on [Performance Measurements](./performance-measurements.md). It does not introduce a second measurement logic, but uses Fabric telemetry snapshots as the source.
|
|
82
|
+
|
|
83
|
+
## RC1 Closure
|
|
84
|
+
|
|
85
|
+
`WP-E13-06` calibrated `xtend.component.hydrate` from `36ms / 32ms` to `31ms / 32ms` without raising the budget. The failure fixture remains active and continues to prove that real budget violations fail hard.
|
|
86
|
+
|
|
87
|
+
## Handoff
|
|
88
|
+
|
|
89
|
+
`ER-WP-20` uses these reports for lazy/idle/visible hydration policies. `ER-WP-21` derived the practical rules for component authors in [Performance for component authors](./performance.md).
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Performance for Component Authors
|
|
2
|
+
|
|
3
|
+
- Docs Contract: `xtend.docs.performance-authoring.v1`
|
|
4
|
+
- Scaffold Policy: `xtend.scaffold.performance-policy.v1`
|
|
5
|
+
- Component Profile Contract: `xtend.performance.component-profile.v1`
|
|
6
|
+
- Budget Matrix: `xtend.performance.budget-matrix.v1`
|
|
7
|
+
- Measurement Contract: `xtend.performance.measurement.v1`
|
|
8
|
+
- Regression Gate: `xtend.performance.regression-gate.v1`
|
|
9
|
+
- Hydration Policy: `xtend.fabric.hydration-policy.v1`
|
|
10
|
+
- Since: `ER-WP-21`
|
|
11
|
+
|
|
12
|
+
This document turns the performance budget matrix into concrete authoring
|
|
13
|
+
rules. New components should not be optimized only after the fact; their
|
|
14
|
+
performance profile should already be visible in the scaffold, component docs,
|
|
15
|
+
Fabric measurements, and the local regression gate.
|
|
16
|
+
|
|
17
|
+
## Performance Profile
|
|
18
|
+
|
|
19
|
+
Every new scaffolded component receives `xtendScaffoldPerformanceProfile` in
|
|
20
|
+
source, `performanceProfile` in the manifest patch plan, and the docs sections
|
|
21
|
+
`Performance Profile` and `Performance Rules`. These artifacts all reference
|
|
22
|
+
the same policy: `xtend.scaffold.performance-policy.v1`.
|
|
23
|
+
|
|
24
|
+
| Profile | Lane | Budget Class | Hydration | Critical Phases |
|
|
25
|
+
|--------|------|--------------|-----------|------------------|
|
|
26
|
+
| `display` | `visible` | `interactive` | `visible` | load, mount, hydrate, render, update |
|
|
27
|
+
| `interactive` | `user-blocking` | `critical` | `visible` | hydrate, render, update, event |
|
|
28
|
+
| `overlay` | `user-blocking` | `critical` | `visible` | mount, hydrate, render, event |
|
|
29
|
+
| `routing` | `transition` | `interactive` | `visible` | route navigate, route render, hydrate, event |
|
|
30
|
+
| `form` | `user-blocking` | `critical` | `visible` | hydrate, update, event |
|
|
31
|
+
| `media` | `visible` | `interactive` | `visible-or-idle` | mount, hydrate, render, event |
|
|
32
|
+
| `stateful` | `user-blocking` | `critical` | `visible` | update, event, state sync |
|
|
33
|
+
| `feedback` | `a11y` | `critical` | `visible` | render, update, event, announcement |
|
|
34
|
+
| `theme` | `visible` | `interactive` | `visible` | render, update, theme apply |
|
|
35
|
+
|
|
36
|
+
Components with multiple profiles use the strictest budget class and the
|
|
37
|
+
highest-priority lane. `feedback` may use a dedicated `a11y` fiber; `media` may
|
|
38
|
+
move non-visible work to `idle`.
|
|
39
|
+
|
|
40
|
+
## DOM Rules
|
|
41
|
+
|
|
42
|
+
- DOM queries must be limited to `this.shadowRoot`, the host, or a known
|
|
43
|
+
container.
|
|
44
|
+
- `document.querySelectorAll` and global DOM loops need a justified exception
|
|
45
|
+
and a budget.
|
|
46
|
+
- Static references may be cached; dynamic node lists must not grow without
|
|
47
|
+
control.
|
|
48
|
+
- Repeated full renders are acceptable only for small, static components.
|
|
49
|
+
Larger components must update targeted subtrees.
|
|
50
|
+
- `MutationObserver`, `ResizeObserver`, timers, and subscriptions must be
|
|
51
|
+
cleaned up in `disconnectedCallback`.
|
|
52
|
+
|
|
53
|
+
## Event Rules
|
|
54
|
+
|
|
55
|
+
- `interactive`, `overlay`, and `form` treat user events as `critical`; the
|
|
56
|
+
synchronous handler target is 16 ms.
|
|
57
|
+
- Handlers must not perform synchronous network, storage, or large DOM-scan
|
|
58
|
+
work.
|
|
59
|
+
- High-frequency events such as `input`, `scroll`, `pointermove`, and `resize`
|
|
60
|
+
must be throttled, batched, or moved onto `requestAnimationFrame`.
|
|
61
|
+
- Event data should be moved into canonical state or local render caches;
|
|
62
|
+
derived DOM work is then batched afterwards.
|
|
63
|
+
|
|
64
|
+
## Shadow DOM
|
|
65
|
+
|
|
66
|
+
- Styles should stay static. Re-inserting identical `<style>` blocks on the
|
|
67
|
+
update path is a review signal.
|
|
68
|
+
- Use CSS custom properties and parts where possible so theme work does not
|
|
69
|
+
require JavaScript layout loops.
|
|
70
|
+
- `slotchange` must be budgeted and must not trigger unbounded DOM scans.
|
|
71
|
+
- Shadow DOM updates should replace small subtrees instead of rewriting the
|
|
72
|
+
entire UI for every state change.
|
|
73
|
+
|
|
74
|
+
## Layout and Animation
|
|
75
|
+
|
|
76
|
+
- Layout reads happen before layout writes. Mixed read/write loops in the same
|
|
77
|
+
synchronous phase are forbidden.
|
|
78
|
+
- Animations should prefer `transform` and `opacity` and respect
|
|
79
|
+
`prefers-reduced-motion`.
|
|
80
|
+
- Measurable visible work must be correlatable through `componentRef`,
|
|
81
|
+
`fiberId`, `lane`, `phase`, and `durationMs`.
|
|
82
|
+
- Non-visible work uses `idle`, `background`, or `diagnostics`; it must not
|
|
83
|
+
claim a `user-blocking` lane.
|
|
84
|
+
|
|
85
|
+
## Hydration
|
|
86
|
+
|
|
87
|
+
`visible` is the default for visible UI. `idle` is suitable for work that is
|
|
88
|
+
not needed immediately but is expected soon. `lazy` is reserved for work that
|
|
89
|
+
activates only on demand or when it becomes visible. Non-visible hydration must
|
|
90
|
+
not be scheduled as `user-blocking`.
|
|
91
|
+
|
|
92
|
+
The operational policy is described in
|
|
93
|
+
[Hydration Policies](./hydration-policies.md). Measurement points and gate
|
|
94
|
+
evaluation are described in [Performance Measurements](./performance-measurements.md)
|
|
95
|
+
and [Performance Regression](./performance-regression.md).
|
|
96
|
+
|
|
97
|
+
## Scaffold Requirements
|
|
98
|
+
|
|
99
|
+
New scaffold outputs must expose this data:
|
|
100
|
+
|
|
101
|
+
- `performanceProfile`
|
|
102
|
+
- `budgetClass`
|
|
103
|
+
- `lane`
|
|
104
|
+
- `hydrationPolicy`
|
|
105
|
+
- `criticalMeasurements`
|
|
106
|
+
- `idleOrBackgroundAllowed`
|
|
107
|
+
- `requiresA11yFiber`
|
|
108
|
+
|
|
109
|
+
The policy is stored in `xtend-builder/scaffold.config.js` under
|
|
110
|
+
`performance`. The generator mirrors it into
|
|
111
|
+
`xtend-builder/performance/component-performance-profile.js`, the component
|
|
112
|
+
templates, and the manifest patch plan.
|
|
113
|
+
|
|
114
|
+
## Gates
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
node scripts/run_xtend_tests.js fabric-performance-measurements --json
|
|
118
|
+
node scripts/run_xtend_tests.js performance-regression --json
|
|
119
|
+
node scripts/run_xtend_tests.js hydration-policy --json
|
|
120
|
+
node scripts/run_xtend_tests.js references --json
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
`performance-regression` may produce local warnings when a deterministic
|
|
124
|
+
fixture path exceeds its budget. Hard failures remain reserved for prioritized
|
|
125
|
+
core paths and documented budget violations.
|
|
126
|
+
|
|
127
|
+
## Handoff
|
|
128
|
+
|
|
129
|
+
`ER-WP-25` is complete and connects screen reader signals with performance
|
|
130
|
+
fibers and the `a11y` lane. `ER-WP-26` is complete as well: reduced-motion and
|
|
131
|
+
high-contrast rules use the same profile, lane, and gate language through
|
|
132
|
+
`xtend.a11y.motion-contrast-policy.v1`.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# XTend Scaffold Previews
|
|
2
|
+
|
|
3
|
+
- Status: scaffold preview convention
|
|
4
|
+
- Reference gate: `node scripts/run_xtend_tests.js references`
|
|
5
|
+
- Generator: `node xtend-builder/scaffold.js preview --tag x-example --profile display --feature state --json`
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
This directory is reserved for scaffolded component preview plans. A preview plan is a local Markdown reference that connects generated component source, docs, fixture, types and manifest patch output to the documentation and demo reference registry.
|
|
10
|
+
|
|
11
|
+
## Minimum Contract
|
|
12
|
+
|
|
13
|
+
- Preview paths follow `docs/previews/<name>.preview.md`.
|
|
14
|
+
- Preview plans must be listed in `development/XTend-Dokumentations-und-Demo-Referenzpfade.md` before they become automated references.
|
|
15
|
+
- Preview plans must use repo-local component, fixture and manifest paths.
|
|
16
|
+
- External network dependencies are not allowed for automated scaffold previews.
|
|
17
|
+
- Productive preview writes remain review-first until a later package introduces a write mode.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# PROD Browser CSP Smokes
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic13.prod-browser-csp-smoke.v1`
|
|
4
|
+
- Fixture contract: `xtend.epic13.prod-browser-csp-smoke-fixture.v1`
|
|
5
|
+
- Report: `xtend.epic13.prod-browser-csp-smoke-report.v1`
|
|
6
|
+
- Workpackage: `WP-E13-07`
|
|
7
|
+
- Local gate: `node scripts/run_xtend_tests.js epic13-prod-browser-csp-smoke --json`
|
|
8
|
+
- Dev server: `npm run dev:local:csp`
|
|
9
|
+
- Fixture: `tests/browser/fixtures/epic13-prod-csp-smoke.html`
|
|
10
|
+
- Publish boundary: `private-until-release-owner-acceptance`
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
The PROD browser CSP smoke checks the XTend loader under a production-like Content Security Policy without using external networks or CDN fallbacks.
|
|
15
|
+
|
|
16
|
+
The fixture uses:
|
|
17
|
+
|
|
18
|
+
- a `nonce` for all inline and loader scripts
|
|
19
|
+
- a same-origin manifest at `/tests/browser/fixtures/components/manifest.json`
|
|
20
|
+
- the root-local loader `/xtend-loader.js`
|
|
21
|
+
- no `importmap`
|
|
22
|
+
- no `https://cdn.ccs-networks.de/xtend` reference
|
|
23
|
+
- XState and XRouter as the minimal hydration line
|
|
24
|
+
|
|
25
|
+
## Local Usage
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm run test:epic13-prod-browser-csp-smoke
|
|
29
|
+
npm run dev:local:csp
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The local server adds a `content-security-policy` header in addition to the fixture CSP meta tag. This allows the HTML file to be checked both statically and close to a server environment.
|
|
33
|
+
|
|
34
|
+
## Boundaries
|
|
35
|
+
|
|
36
|
+
This smoke is a production-close boot and policy preparation. The Trusted DOM check for Parsedown, RMT HTML fragments and untrusted content has lived under [Trusted DOM Boundary Browser Proof](./trusted-dom-boundary-browser-proof.md) and `xtend.epic13.trusted-dom-boundary.v1` since `WP-E13-11`.
|
|
37
|
+
|
|
38
|
+
## Handoff
|
|
39
|
+
|
|
40
|
+
`WP-E13-07` is complete. `WP-E13-08` normalized [Visual Owner Artifacts](./visual-owner-artifacts.md). `WP-E13-09` is ready and next bundles the RMT-first app production readiness.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Public Component Types
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.docs.public-component-types.v1`
|
|
4
|
+
- Type contract: `xtend.enterprise.er-wp-34.public-component-types.v1`
|
|
5
|
+
- Workpackage: `ER-WP-34`
|
|
6
|
+
|
|
7
|
+
XTend ships local TypeScript declaration artifacts next to the respective runtime source for prioritized public components. The files live directly in `components/*.d.ts` and become reachable through the package export `xtend/components/*`.
|
|
8
|
+
|
|
9
|
+
## Local Contract
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
components/xtend-public-types.d.ts
|
|
13
|
+
components/xalert.d.ts
|
|
14
|
+
components/xtoast.d.ts
|
|
15
|
+
components/xmodal.d.ts
|
|
16
|
+
components/xrouter.d.ts
|
|
17
|
+
components/xlink.d.ts
|
|
18
|
+
components/xinput.d.ts
|
|
19
|
+
components/xselect.d.ts
|
|
20
|
+
components/xcheckbox.d.ts
|
|
21
|
+
components/xradio.d.ts
|
|
22
|
+
components/xtextarea.d.ts
|
|
23
|
+
components/xstatus.d.ts
|
|
24
|
+
components/xprogress.d.ts
|
|
25
|
+
components/xtooltip.d.ts
|
|
26
|
+
components/xpopover.d.ts
|
|
27
|
+
components/xdrawer.d.ts
|
|
28
|
+
components/xform.d.ts
|
|
29
|
+
components/xtabs.d.ts
|
|
30
|
+
components/xdialog.d.ts
|
|
31
|
+
components/xlightbox.d.ts
|
|
32
|
+
components/xcalendar.d.ts
|
|
33
|
+
components/xwriter.d.ts
|
|
34
|
+
components/xtheme.d.ts
|
|
35
|
+
components/xbutton.d.ts
|
|
36
|
+
components/xspinner.d.ts
|
|
37
|
+
components/xmenu.d.ts
|
|
38
|
+
components/xsummary.d.ts
|
|
39
|
+
components/xplayer.d.ts
|
|
40
|
+
components/xsection.d.ts
|
|
41
|
+
components/xcards.d.ts
|
|
42
|
+
components/xheader.d.ts
|
|
43
|
+
components/xfooter.d.ts
|
|
44
|
+
components/xhero.d.ts
|
|
45
|
+
components/xtype.d.ts
|
|
46
|
+
components/xcode.d.ts
|
|
47
|
+
components/xmasonry.d.ts
|
|
48
|
+
components/xstate.d.ts
|
|
49
|
+
components/xutils.d.ts
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Each component file describes:
|
|
53
|
+
|
|
54
|
+
- public attribute names
|
|
55
|
+
- public property and method surfaces
|
|
56
|
+
- event names
|
|
57
|
+
- `CustomEvent` detail payloads
|
|
58
|
+
- `HTMLElementTagNameMap` for custom elements
|
|
59
|
+
- typed `addEventListener` overloads for component-specific events
|
|
60
|
+
|
|
61
|
+
`x-theme` is not a custom element, but a core module. Its types therefore describe `window.XTend.theme`, `window.XTheme`, a11y preference snapshots, motion/contrast policy, density, theme context, performance snapshot, RMT metadata and the document events `theme-initialized`, `theme-changed`, `theme-variable-changed`, `theme-preference-changed`, `theme-a11y-announcement`, `theme-density-changed`, `theme-context-changed` and `theme-performance-measured`.
|
|
62
|
+
|
|
63
|
+
## Gate
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
node scripts/run_xtend_tests.js components
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
As of `ER-WP-34`, the component suite contains the subgate `component-public-types`. After `RC1TB-WP-03`, it checks the shared type helpers, all 44 prioritized `.d.ts` files, event names, detail types, API methods and element/window mappings.
|
|
70
|
+
|
|
71
|
+
As of `WP-TypeExports-09`, the component wildcard export is also covered in the productive TypeExports handoff. `./components/*` remains an adjacent-declaration boundary: consumers receive `components/*.d.ts` through neighboring files, while `node scripts/run_xtend_tests.js type-exports --json` prevents new public component exports from entering the package surface without a type decision.
|
|
72
|
+
|
|
73
|
+
## Coverage Status
|
|
74
|
+
|
|
75
|
+
After `RC1TB-WP-03`, `types` in the Component Catalog Coverage Matrix are at `44/44`. `x-input`, `x-select`, `x-checkbox`, `x-radio`, `x-rmt-lifecycle-demo-build`, `x-textarea`, `x-form`, `x-calendar`, `x-writer`, `x-status`, `x-progress`, `x-tooltip`, `x-popover`, `x-drawer`, `x-surface-manager`, `x-surface-portal`, `x-surface-region`, `x-surface-window`, `x-side-panel`, `x-modal`, `x-dialog`, `x-alert`, `x-toast`, `x-spinner`, `x-router`, `x-link`, `x-tabs`, `x-theme`, `x-button`, `x-icon`, `x-menu`, `x-footer`, `x-lightbox`, `x-masonry`, `x-code`, `x-header`, `x-hero`, `x-type`, `x-summary`, `x-section`, `x-cards` and `x-player` are the current `enterprise-ready` reference line with public types, component suite, fixture, a11y and performance profile. `xstate` has public types for boundary contract, RMT state adapter, lifecycle events and diagnostics. `x-utils` has public types for utility contract, import policy, boundary snapshot, UI effects, template API and the events `xutils:import-policy-check` and `xutils:ui-effects-change`.
|
|
76
|
+
|
|
77
|
+
After `WP-E12-09`, no type gap remains. Since `WP-E13-05`, the earlier boundary residuals are also closed: `xstate` is `closed-as-runtime-boundary`, `x-utils` is `closed-as-utility-boundary`. Both remain public type boundaries, but no open type or performance tasks.
|
|
78
|
+
|
|
79
|
+
The previous vendor boundaries `components/prism.js` and `components/turndown.js` have narrow facade declarations as of `WP-TypeExports-08`. They are not public XTend UI components, but are checked by the TypeExports release gate against unintended declaration drift.
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# Quick Start Guide
|
|
2
|
+
|
|
3
|
+
This guide takes you from a local XTend page to a small RMT vNext app shell. The fastest first step is still HTML with Web Components; the recommended growth path for apps is RMT-first.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- Node.js 18 or newer
|
|
8
|
+
- a local checkout of the XTend repository
|
|
9
|
+
- a browser with Custom Elements and ES Module support
|
|
10
|
+
|
|
11
|
+
Start the local dev server:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm run dev:local
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The server usually serves the app at `http://127.0.0.1:4173/`.
|
|
18
|
+
|
|
19
|
+
## 1. Start a Minimal Host
|
|
20
|
+
|
|
21
|
+
Create an HTML file in the project, for example `quick-start.html`:
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<!doctype html>
|
|
25
|
+
<html lang="en">
|
|
26
|
+
<head>
|
|
27
|
+
<meta charset="utf-8">
|
|
28
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
29
|
+
<meta name="xtend-preload" content="x-theme,x-section,x-button">
|
|
30
|
+
<title>XTend Quick Start</title>
|
|
31
|
+
<script
|
|
32
|
+
type="module"
|
|
33
|
+
src="/xtend-loader.js"
|
|
34
|
+
data-manifest="/components/manifest.json">
|
|
35
|
+
</script>
|
|
36
|
+
</head>
|
|
37
|
+
<body>
|
|
38
|
+
<main>
|
|
39
|
+
<x-section layout="column" label="Quick Start">
|
|
40
|
+
<h1>Hello XTend</h1>
|
|
41
|
+
<p>This app runs with local Web Components.</p>
|
|
42
|
+
<x-button variant="primary">Get started</x-button>
|
|
43
|
+
</x-section>
|
|
44
|
+
</main>
|
|
45
|
+
</body>
|
|
46
|
+
</html>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Then open `http://127.0.0.1:4173/quick-start.html`.
|
|
50
|
+
|
|
51
|
+
What happens here?
|
|
52
|
+
|
|
53
|
+
- `xtend-loader.js` is the local loader.
|
|
54
|
+
- `components/manifest.json` is the component registry.
|
|
55
|
+
- `meta name="xtend-preload"` loads critical modules early.
|
|
56
|
+
- `x-theme` is an infrastructure module; `x-section` and `x-button` are
|
|
57
|
+
normal XTend Web Components.
|
|
58
|
+
- `/xtend.css` is optional host theming.
|
|
59
|
+
|
|
60
|
+
## 2. Describe the App Shell in RMT vNext
|
|
61
|
+
|
|
62
|
+
When the page becomes an app, the shell should live in RMT. RMT vNext describes UI structure, state, actions, events, surfaces, and scheduling in a readable `.rmt` source.
|
|
63
|
+
|
|
64
|
+
```rmt
|
|
65
|
+
template quickstart.app {
|
|
66
|
+
state counter type number initial 0
|
|
67
|
+
|
|
68
|
+
selector counterLabel from state counter {
|
|
69
|
+
output text
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
action increment {
|
|
73
|
+
input amount number
|
|
74
|
+
reduce state.counter = input.amount
|
|
75
|
+
emit counter.changed with action increment
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
portal app root "#app-root" layer surface
|
|
79
|
+
|
|
80
|
+
surface home kind page component x-section {
|
|
81
|
+
source state counter
|
|
82
|
+
portal app
|
|
83
|
+
key route.path
|
|
84
|
+
|
|
85
|
+
lane visible weight 80 {
|
|
86
|
+
hydrate x-section from state counter
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
on click target button.primary -> action increment {
|
|
90
|
+
payload amount from 1
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
This document is the app description. The compiler turns it into Core and kernel records that host adapters can connect to XTend Components, XRouter, and Fabric.
|
|
97
|
+
|
|
98
|
+
## 3. Materialize XTend UI from RMT
|
|
99
|
+
|
|
100
|
+
Runtime hosts connect RMT descriptors with the existing XTend components from
|
|
101
|
+
the manifest through the Component Capability Registry. Component Contracts,
|
|
102
|
+
events, slots, parts, and state bindings stay the shared source of truth:
|
|
103
|
+
|
|
104
|
+
```js
|
|
105
|
+
import {
|
|
106
|
+
createRmtComponentCapabilityRegistry
|
|
107
|
+
} from '@ccslabs/xtend/rmt/component-capability-registry';
|
|
108
|
+
import {
|
|
109
|
+
createRmtDomDescriptorRenderer
|
|
110
|
+
} from '@ccslabs/xtend/rmt/dom-descriptor-renderer';
|
|
111
|
+
|
|
112
|
+
const registry = createRmtComponentCapabilityRegistry({ manifest, sourceTexts });
|
|
113
|
+
const renderer = createRmtDomDescriptorRenderer({ documentTarget: document });
|
|
114
|
+
|
|
115
|
+
renderer.renderKeyed(root, [
|
|
116
|
+
registry.buildComponentDescriptor({
|
|
117
|
+
tag: 'x-button',
|
|
118
|
+
key: 'primary-action',
|
|
119
|
+
attributes: { variant: 'primary' },
|
|
120
|
+
slots: { default: { text: 'Get started' } },
|
|
121
|
+
events: { click: 'quickstart.increment' }
|
|
122
|
+
})
|
|
123
|
+
], {
|
|
124
|
+
componentRegistry: registry,
|
|
125
|
+
dispatchEvent: actions.dispatch,
|
|
126
|
+
stateBridge
|
|
127
|
+
});
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
That lets RMT primitives use XTend UI without Shadow-DOM patches,
|
|
131
|
+
component-specific renderers, or manual HTML sinks.
|
|
132
|
+
|
|
133
|
+
## 4. Server-Prerender with Node
|
|
134
|
+
|
|
135
|
+
Node hosts can use the same RMT description for SSR and incremental JSONL. The
|
|
136
|
+
adapter stays framework-neutral and does not start its own HTTP server:
|
|
137
|
+
|
|
138
|
+
```js
|
|
139
|
+
import {
|
|
140
|
+
createRmtNodeSsrAdapter
|
|
141
|
+
} from '@ccslabs/xtend/rmt/node-ssr-adapter';
|
|
142
|
+
|
|
143
|
+
const adapter = createRmtNodeSsrAdapter({ manifest, sourceTexts });
|
|
144
|
+
const result = await adapter.render({ source, filePath: 'app.rmt' });
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
PHP/Laravel hosts use the same client-facing wire shape through the single-file
|
|
148
|
+
module:
|
|
149
|
+
|
|
150
|
+
```php
|
|
151
|
+
require __DIR__ . '/xtendrmt/rmt-php-ssr-adapter.php';
|
|
152
|
+
|
|
153
|
+
$adapter = createRmtPhpSsrAdapter(['manifest' => $manifest]);
|
|
154
|
+
$result = $adapter->render(['coreDocument' => $coreDocument]);
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
See [RMT Node SSR Adapter](./rmt-node-ssr-adapter.md) and
|
|
158
|
+
[RMT PHP/Laravel SSR Adapter](./rmt-php-ssr-adapter.md).
|
|
159
|
+
|
|
160
|
+
## 5. Check RMT Locally
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
xt rmt lint app.rmt
|
|
164
|
+
xt rmt lint app.rmt --json
|
|
165
|
+
xt rmt lint app.rmt --agent
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
The agent report contains `repairPlan`, `fixOrder`, `confidence`, `impact`, `relatedDiagnostics`, and explained no-ops for repairs that intentionally stay manual.
|
|
169
|
+
|
|
170
|
+
## 6. Enable Editor Support
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
node tools/rmt-language-server/server.js
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
The server provides diagnostics, completion, hover, document symbols, definition, and code actions. For a minimal native app shell, use the `rmt-app` snippet prefix; for vNext primitives, `rmt-vnext-primitive-shell` is the fastest start.
|
|
177
|
+
|
|
178
|
+
## Next Steps
|
|
179
|
+
|
|
180
|
+
- [RMT vNext Authoring Guide](./rmt-vnext-authoring.md)
|
|
181
|
+
- [RMT vNext Component Primitives and XTend UI](./rmt-vnext-component-primitives.md)
|
|
182
|
+
- [RMT Node SSR Adapter](./rmt-node-ssr-adapter.md)
|
|
183
|
+
- [RMT PHP/Laravel SSR Adapter](./rmt-php-ssr-adapter.md)
|
|
184
|
+
- [XTendRMT Developer Overview](./xtendrmt-overview.md)
|
|
185
|
+
- [RMT Linter and AI-Agent Repair Report](./rmt-linter.md)
|
|
186
|
+
- [RMT Language Server and Editor Setup](./rmt-language-server.md)
|
|
187
|
+
- [XTend Loader](./xtend-loader.md)
|
|
188
|
+
- [Manifest Format](./manifest.md)
|
|
189
|
+
- [Component Development](./components.md)
|