@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,79 @@
|
|
|
1
|
+
# Manifest Import Policy
|
|
2
|
+
|
|
3
|
+
- Docs Contract: `xtend.docs.manifest-import-policy.v1`
|
|
4
|
+
- Loader Policy: `xtend.security.loader-policy.v1`
|
|
5
|
+
- Manifest Policy: `xtend.security.manifest-policy.v1`
|
|
6
|
+
- Import Policy: `xtend.security.import-policy.v1`
|
|
7
|
+
- Gate: `xtend.security.manifest-import-gate.v1`
|
|
8
|
+
|
|
9
|
+
XTend laedt Komponenten ueber das Manifest. Seit `ER-WP-28` wird dieser Pfad explizit abgesichert: Manifest-URLs, Manifest Records und dynamische Modul-Imports werden lokal validiert, bevor der Loader sie nutzt.
|
|
10
|
+
|
|
11
|
+
## Erlaubt
|
|
12
|
+
|
|
13
|
+
- relative URLs wie `./xalert.js`
|
|
14
|
+
- root-relative URLs wie `/components/xrouter.js`
|
|
15
|
+
- same-origin URLs
|
|
16
|
+
- lokale Loopback-Dev-Server wie `http://localhost:4173/components/xmodal.js`
|
|
17
|
+
- `.json` fuer Manifeste
|
|
18
|
+
- `.js` und `.mjs` fuer Module
|
|
19
|
+
|
|
20
|
+
## Verweigert
|
|
21
|
+
|
|
22
|
+
- externe CDN-/Remote-Module
|
|
23
|
+
- externe Manifest-URLs
|
|
24
|
+
- `javascript:`
|
|
25
|
+
- `data:` fuer Skripte
|
|
26
|
+
- `blob:` Module
|
|
27
|
+
- encoded Path Traversal wie `%2e%2e`
|
|
28
|
+
- Modulpfade ohne `.js` oder `.mjs`
|
|
29
|
+
- Manifestpfade ohne `.json`
|
|
30
|
+
- ungueltige Manifest-Keys
|
|
31
|
+
- URL-artige Dependency-Werte in Manifest-Records
|
|
32
|
+
|
|
33
|
+
## Diagnostics
|
|
34
|
+
|
|
35
|
+
Der Loader emittiert Refusals als `xtend-loader-diagnostic`:
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
window.addEventListener('xtend-loader-diagnostic', (event) => {
|
|
39
|
+
console.log(event.detail.code, event.detail.metadata.diagnostics);
|
|
40
|
+
});
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Stabile Codes:
|
|
44
|
+
|
|
45
|
+
- `xtend.security.loader.refused`
|
|
46
|
+
- `xtend.security.manifest.invalid`
|
|
47
|
+
- `xtend.security.import.refused`
|
|
48
|
+
|
|
49
|
+
## Maschinenlesbare Policy
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
const {
|
|
53
|
+
classifyPolicyUrl,
|
|
54
|
+
normalizeManifest
|
|
55
|
+
} = require('./security/manifest-import-policy');
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Die Policy liegt unter:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
security/manifest-import-policy.js
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Lokale Gates
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
node scripts/verify_manifest_import_policy.js --json
|
|
68
|
+
node scripts/run_xtend_tests.js manifest-import-policy --json
|
|
69
|
+
npm run test:manifest-policy
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Diese Checks sind offline und fragen keine externen Hosts ab.
|
|
73
|
+
|
|
74
|
+
## Zusammenhang
|
|
75
|
+
|
|
76
|
+
- [XTend Loader](./xtend-loader.md)
|
|
77
|
+
- [Manifest-Format](./manifest.md)
|
|
78
|
+
- [Trusted DOM und Sanitizing](./trusted-dom-sanitizing.md)
|
|
79
|
+
- [Supply-Chain Gates](./supply-chain-gates.md)
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# XTend Manifest
|
|
2
|
+
|
|
3
|
+
## Übersicht
|
|
4
|
+
|
|
5
|
+
Das XTend Manifest ist eine zentrale JSON-Datei, die alle verfügbaren XTend-Komponenten und deren Pfade definiert. Es dient als "Single Source of Truth" für den Loader und die API, um Komponenten dynamisch und modular zu laden.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Speicherort & Name
|
|
10
|
+
|
|
11
|
+
- Standardpfad: `components/manifest.json`
|
|
12
|
+
- Der Pfad kann beim Initialisieren des Loaders angepasst werden.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Struktur des Manifests
|
|
17
|
+
|
|
18
|
+
Das Manifest ist ein einfaches JSON-Objekt. Die meisten Schlüssel entsprechen dem kanonischen Tag-Namen einer XTend-Komponente; zusätzlich gibt es reservierte Bootstrap-Keys wie `xstate`. Der Wert ist jeweils eine konkrete ES-Modul-Adresse.
|
|
19
|
+
|
|
20
|
+
### Beispiel
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"xstate": "./xstate.js",
|
|
25
|
+
"x-theme": "./xtheme.js",
|
|
26
|
+
"x-button": "./xbutton.js",
|
|
27
|
+
"x-input": "./xinput.js",
|
|
28
|
+
"x-router": "./xrouter.js",
|
|
29
|
+
"x-link": "./xlink.js"
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Konventionen
|
|
34
|
+
- Custom-Element-Tags sind kanonisch **kleingeschrieben, hyphenated und beginnen mit `x`** (z.B. `x-button`, `x-input`, `x-router`).
|
|
35
|
+
- Reservierte Bootstrap-Keys wie `xstate` sind zulässige Ausnahmen und werden nicht als DOM-Tag interpretiert.
|
|
36
|
+
- Werte dürfen **relativ**, **root-relativ** oder **same-origin/loopback-lokal absolut** sein.
|
|
37
|
+
- Der Loader löst relative Einträge relativ zur Manifest-URL auf.
|
|
38
|
+
- Der Default-Manifestpfad bleibt repo-lokal; CDN-URLs sind kein Standard- oder Testpfad.
|
|
39
|
+
- Seit `ER-WP-28` werden externe Manifest-/Modul-URLs, `javascript:`, `data:`, `blob:`, Path-Traversal und nicht-JavaScript-Module durch `xtend.security.manifest-policy.v1` und `xtend.security.import-policy.v1` verweigert.
|
|
40
|
+
- Kommentare sind im JSON-Standard nicht erlaubt und im echten Manifest unzulässig.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Pflicht- und optionale Einträge
|
|
45
|
+
|
|
46
|
+
- **Pflicht:**
|
|
47
|
+
- `xstate` als Bootstrap-Basismodul
|
|
48
|
+
- **Optional:**
|
|
49
|
+
- `x-theme` (Theme-Engine)
|
|
50
|
+
- Weitere eigene Komponenten
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Erweiterbarkeit
|
|
55
|
+
|
|
56
|
+
- Das Manifest kann beliebig viele Komponenten enthalten.
|
|
57
|
+
- Eigene Komponenten können einfach durch Hinzufügen weiterer Schlüssel/Werte ergänzt werden.
|
|
58
|
+
- Für experimentelle oder Beta-Komponenten empfiehlt sich eine eigene Namenskonvention (z.B. `x-section-beta`).
|
|
59
|
+
|
|
60
|
+
## Abgrenzung zu XTendRMT
|
|
61
|
+
|
|
62
|
+
Das XTend Manifest beschreibt aufloesbare ES-Modul-Pfade fuer XTend-Komponenten. Es ist nicht dasselbe wie ein `.rmt` Dokument.
|
|
63
|
+
|
|
64
|
+
| Datei/Format | Aufgabe |
|
|
65
|
+
|--------------|---------|
|
|
66
|
+
| `components/manifest.json` | XTend Loader und Component URL-Aufloesung |
|
|
67
|
+
| `xtendrmt/rmt.schema.json` | Schema-Referenz fuer RMT-Dokumente |
|
|
68
|
+
| `.rmt` | Native App-DSL mit `adapters`, `components`, `routes`, `schedules`, `templates` |
|
|
69
|
+
| `xtendrmt/rmt-manifest.json` | XTendRMT Produktmanifest, Entry Points und Artefakt-Paritaet |
|
|
70
|
+
|
|
71
|
+
RMT-Component-Records duerfen ein XTend Manifest fuer Manifest Lookup
|
|
72
|
+
referenzieren, aber der RMT Kernel liest daraus keine XTend Runtime. Die
|
|
73
|
+
Aufloesung gehoert in Host-Adapter und die RMT vNext Component Capability
|
|
74
|
+
Registry. Sie nutzt das Manifest als Import-Quelle, verbindet es mit
|
|
75
|
+
Component Contracts und RMT-Metadaten und erzeugt daraus Descriptor-
|
|
76
|
+
Faehigkeiten fuer den DOM Descriptor Renderer.
|
|
77
|
+
|
|
78
|
+
Native RMT-Dateien sollten mit `application/vnd.xtendrmt.rmt+json` ausgeliefert werden. Der JSON-Fallback bleibt fuer Sonderhosts moeglich, ist aber kein empfohlener Authoring-Pfad.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Best Practices
|
|
83
|
+
|
|
84
|
+
- Das Manifest ist die **Single Source of Truth** für auflösbare Komponenten-URLs.
|
|
85
|
+
- Das Manifest sollte stets aktuell gehalten werden, um Dead Links und Ladefehler zu vermeiden.
|
|
86
|
+
- Für die Produktion empfiehlt sich ein minimiertes Manifest ohne ungenutzte Komponenten.
|
|
87
|
+
- `xstate` sollte immer explizit vorhanden sein; `x-theme` folgt direkt danach, wenn Theme-Funktionen genutzt werden.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Validierung
|
|
92
|
+
|
|
93
|
+
- Vor dem Laden prüft der Loader, ob das Manifest und alle Modul-URLs gültig sind.
|
|
94
|
+
- Nicht-string Werte werden ignoriert.
|
|
95
|
+
- Fehler beim Parsen oder Laden werden im Konsolen-Log ausgegeben.
|
|
96
|
+
- Security Refusals erzeugen `xtend-loader-diagnostic` Events mit `xtend.security.loader.refused`, `xtend.security.manifest.invalid` oder `xtend.security.import.refused`.
|
|
97
|
+
- Der lokale Gate lautet `node scripts/run_xtend_tests.js manifest-import-policy --json`.
|
|
98
|
+
- Nach Core-Aenderungen kann `node scripts/verify_xtend_core_contracts.js` den Bootstrap-Contract gegen Manifest, API und Doku querpruefen.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Weiterführende Themen
|
|
103
|
+
- [XTend Loader](./xtend-loader.md)
|
|
104
|
+
- [Manifest Import Policy](./manifest-import-policy.md)
|
|
105
|
+
- [Komponenten-Entwicklung](./components.md)
|
|
106
|
+
- [RMT vNext Component Primitives und XTend UI](./rmt-vnext-component-primitives.md)
|
|
107
|
+
- [API-Integration](./api.md)
|
|
108
|
+
- [XTendRMT App-DSL Reference](./xtendrmt-app-dsl.md)
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
*Letzte Aktualisierung: 22. Mai 2026*
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Motion und Contrast
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.docs.motion-contrast.v1`
|
|
4
|
+
- Runtime-/Gate-Contract: `xtend.a11y.motion-contrast-policy.v1`
|
|
5
|
+
- Motion Contract: `xtend.a11y.motion-policy.v1`
|
|
6
|
+
- Contrast Contract: `xtend.a11y.contrast-policy.v1`
|
|
7
|
+
- Gate: `node scripts/run_xtend_tests.js motion-contrast --json`
|
|
8
|
+
|
|
9
|
+
## Zweck
|
|
10
|
+
|
|
11
|
+
Motion und Contrast sind in XTend Bestandteil von A11y-by-design. Komponenten muessen reduzierte Bewegung, erzwungene Kontrastmodi, sichtbaren Fokus und Nicht-Farbstatus respektieren, ohne dass XTendRMT oder ein Host-Framework konkrete CSS-Details kennen muss.
|
|
12
|
+
|
|
13
|
+
## Pflichtregeln
|
|
14
|
+
|
|
15
|
+
| Bereich | Umsetzung |
|
|
16
|
+
|---------|-----------|
|
|
17
|
+
| Reduced Motion | `@media (prefers-reduced-motion: reduce)` deaktiviert nicht essentielle Animationen und Transitions |
|
|
18
|
+
| High Contrast | `@media (forced-colors: active)` nutzt Systemfarben wie `CanvasText`, `ButtonText`, `Highlight`, `Mark` |
|
|
19
|
+
| Fokus | `:focus-visible` bleibt sichtbar und verwendet im Forced-Colors-Pfad `Highlight` |
|
|
20
|
+
| Status | Error, Warning, Busy und Active haben eine nicht nur farbliche Semantik |
|
|
21
|
+
| Tokens | Theme Tokens duerfen Forced-Colors nicht ueberschreiben, wenn Systemfarben gebraucht werden |
|
|
22
|
+
|
|
23
|
+
## Component Contract
|
|
24
|
+
|
|
25
|
+
Relevante Komponenten deklarieren statisch:
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
static get xtendMotionContrastPolicy() {
|
|
29
|
+
return {
|
|
30
|
+
schema: 'xtend.a11y.motion-contrast-policy.v1',
|
|
31
|
+
componentRef: 'x-component',
|
|
32
|
+
motion: {
|
|
33
|
+
schema: 'xtend.a11y.motion-policy.v1',
|
|
34
|
+
mediaQuery: '(prefers-reduced-motion: reduce)',
|
|
35
|
+
noMotionOnlyState: true
|
|
36
|
+
},
|
|
37
|
+
contrast: {
|
|
38
|
+
schema: 'xtend.a11y.contrast-policy.v1',
|
|
39
|
+
mediaQuery: '(forced-colors: active)',
|
|
40
|
+
focusVisible: 'required',
|
|
41
|
+
nonColorStatus: 'required'
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Scaffold
|
|
48
|
+
|
|
49
|
+
Neue Scaffold-Komponenten erhalten:
|
|
50
|
+
|
|
51
|
+
- `motionContrast.policy` im A11y-Profil
|
|
52
|
+
- Manifest-Key `motionContrastPolicy`
|
|
53
|
+
- Docs-Abschnitt `Motion-und-Contrast-Policy`
|
|
54
|
+
- Fixture-Felder `motionContrastPolicy`, `motionMediaQuery`, `contrastMediaQuery`
|
|
55
|
+
- TypeScript-Type `X<Component>MotionContrastPolicy`
|
|
56
|
+
|
|
57
|
+
## Fabric und RMT
|
|
58
|
+
|
|
59
|
+
Preference-Signale nutzen die Fabric-Lane `a11y`, Fiber `a11y.preference` und Schedule `a11y.user-blocking.preference`. RMT bleibt framework-agnostisch und bekommt nur host-neutrale Schedule-/Diagnostic-Signale, keine CSS-Ausfuehrung.
|
|
60
|
+
|
|
61
|
+
## Lokale Verifikation
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npm run test:motion-contrast
|
|
65
|
+
node scripts/run_xtend_tests.js motion-contrast --json
|
|
66
|
+
node scripts/run_xtend_tests.js references --json
|
|
67
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Package Export Lock
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic13.package-export-lock.v1`
|
|
4
|
+
- Report: `xtend.epic13.package-export-lock-report.v1`
|
|
5
|
+
- Surface: `xtend.epic13.package-export-surface.v1`
|
|
6
|
+
- Dry-Run Artifact: `xtend.epic13.package-dry-run-artifact.v1`
|
|
7
|
+
- Lokaler Gate: `node scripts/run_xtend_tests.js epic13-package-export-lock --json`
|
|
8
|
+
|
|
9
|
+
Der Package Export Lock macht den RC1-Paketinhalt pruefbar. Der lokale Gate validiert `package.json#exports`, `files`, die erwarteten Package Roots und die Surface Groups ohne `npm pack` auszufuehren.
|
|
10
|
+
|
|
11
|
+
## Surface Groups
|
|
12
|
+
|
|
13
|
+
| Gruppe | Zweck |
|
|
14
|
+
|--------|-------|
|
|
15
|
+
| Loader | `xtend-loader.js`, Legacy Stub, API, CSS und Manifest |
|
|
16
|
+
| Components | Manifest und Component-Dateien |
|
|
17
|
+
| Fabric | Fabric Runtime, RMT Lane Mapping und Hydration Policy |
|
|
18
|
+
| XTendRMT | ESM- und Browser-Runtime |
|
|
19
|
+
| Builder | Scaffold CLI, Preview, Typing und Performance Contracts |
|
|
20
|
+
| Docs | Docs-App, Markdown, Parsedown/RMT Shell und Referenzen |
|
|
21
|
+
| Security | Manifest, Trusted DOM und Supply-Chain Policies |
|
|
22
|
+
| Catalog | Gate-, Handoff- und Epic-Contracts |
|
|
23
|
+
|
|
24
|
+
## Release Owner Artifact
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm run pack:dry-run:report
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Das Script schreibt:
|
|
31
|
+
|
|
32
|
+
- `.xtend-test-results/xtend-pack-dry-run.json`
|
|
33
|
+
- `.xtend-test-results/xtend-package-export-surface-lock.json`
|
|
34
|
+
- `.xtend-test-results/xtend-package-export-lock-report.json`
|
|
35
|
+
|
|
36
|
+
`private-until-release-owner-acceptance` bleibt aktiv. Der Lock beweist nur, dass Paketinhalt und Export Surface kontrolliert sind; er oeffnet kein Publishing.
|
|
37
|
+
|
|
38
|
+
## TypeExports Anschluss
|
|
39
|
+
|
|
40
|
+
Ab `WP-TypeExports-01` nutzt [TypeExports](./type-exports.md) den Package Export Lock als Quelle fuer die Public Export Surface. Der Gate `node scripts/run_xtend_tests.js type-exports --json` koppelt die 121 erwarteten Exports ueber Count und Fingerprint an `xtend.epic13.package-export-lock.v1` und erzwingt fuer neue Public Exports eine Type-Entscheidung. Ab `WP-TypeExports-02` besitzen `.`, `./loader` und `./legacy-loader` die Type-Ziele `./xtend-loader.d.ts` und `./xtend-dev.d.ts`; `node scripts/run_xtend_tests.js type-exports-loader --json` prueft diesen Anschluss gegen die Loader-Runtime. Ab `WP-TypeExports-03` besitzt `./api` das Type-Ziel `./api.d.ts`; `node scripts/run_xtend_tests.js type-exports-api --json` prueft den Core-API-Namespace gegen `api.js`. Ab `WP-TypeExports-04` besitzen `./rmt`, `./rmt/browser`, `./rmt/dom-descriptor-renderer`, `./rmt/component-capability-registry`, `./rmt/state-selector-runtime`, `./rmt/action-effect-runtime`, `./rmt/event-routing-runtime`, `./rmt/surface-resource-graph-runtime`, `./rmt/native-shell-runtime`, `./rmt-language/app-platform-tooling` und die RMT-Language-/Tooling-Exports Type-Ziele wie `./xtendrmt/rmt-core.d.ts`, `./xtendrmt/rmt-dom-descriptor-renderer.d.ts`, `./xtendrmt/rmt-state-selector-runtime.d.ts`, `./xtendrmt/rmt-action-effect-runtime.d.ts`, `./xtendrmt/rmt-event-routing-runtime.d.ts`, `./xtendrmt/rmt-surface-resource-graph-runtime.d.ts`, `./tools/rmt-language/app-platform-tooling.d.ts` und `./tools/rmt-language/rmt-tooling-public-types.d.ts`; `node scripts/run_xtend_tests.js type-exports-rmt --json` prueft diesen Anschluss gegen die RMT Runtime- und Tooling-Surface. Ab `WP-TypeExports-05` besitzen Fabric/A11y/Security Exports Type-Ziele wie `./fabric/xtend-fabric.d.ts` und `./fabric/xtend-policy-public-types.d.ts`; `node scripts/run_xtend_tests.js type-exports-policy --json` prueft diesen Anschluss gegen die Policy-Surface. Ab `WP-TypeExports-06` besitzen Builder-Exports Type-Ziele wie `./xtend-builder/scaffold.d.ts`, `./xtend-builder/builder-public-types.d.ts` und `./xtend-builder/*.d.ts`; `node scripts/run_xtend_tests.js type-exports-builder --json` prueft diesen Anschluss gegen Scaffold, Generatoren, Component Lab und Typing Contracts. Ab `WP-TypeExports-07` besitzen Catalog-Exports Type-Ziele wie `./catalog/epic13-package-export-lock.d.ts` und das gemeinsame `./catalog/catalog-public-types.d.ts`; `node scripts/run_xtend_tests.js type-exports-catalog --json` prueft diesen Anschluss gegen Plan-/Report-/Validation-Catalogs. Ab `WP-TypeExports-08` besitzen Design Tokens und Vendor-Facades Type-Ziele wie `./design-tokens/xtend-design-tokens.d.ts`, `./design-tokens/xtheme-token-alias-layer.d.ts`, `./components/prism.d.ts` und `./components/turndown.d.ts`; `node scripts/run_xtend_tests.js type-exports-vendor --json` prueft diesen Anschluss gegen die Utility-Grenzen. Ab `WP-TypeExports-09` buendelt `npm run test:type-exports:release` die TypeExports-Gates als Release-Handoff und schreibt `.xtend-test-results/xtend-type-exports-report.json`.
|
|
41
|
+
|
|
42
|
+
## Handoff
|
|
43
|
+
|
|
44
|
+
Nach `WP-E13-04` hat `WP-E13-05` die Known Residual Triage unter [Known Residual Triage](./known-residual-triage.md) mit `xtend.epic13.known-residual-triage.v1` abgeschlossen. `WP-E13-06` hat die [Hydration Performance Closure](./hydration-performance-closure.md) mit `xtend.epic13.hydration-performance-closure.v1` abgeschlossen. `WP-E13-07` hat die [PROD Browser CSP Smokes](./prod-browser-csp-smokes.md) vorbereitet, `WP-E13-08` hat [Visual Owner Artifacts](./visual-owner-artifacts.md) normalisiert, `WP-E13-09` hat [RMT Production Readiness](./rmt-production-readiness.md) gebuendelt, `WP-E13-10` hat [Docs RMT Production Hardening](./docs-rmt-production-hardening.md) abgeschlossen, `WP-E13-11` hat [Trusted DOM Boundary Browser Proof](./trusted-dom-boundary-browser-proof.md) abgeschlossen, `WP-E13-12` hat [RC1 Migration Notes](./rc1-migration-notes.md) abgeschlossen, `WP-E13-13` hat [RC1 Gate Matrix und CI-Handoff](./rc1-gate-matrix-ci-handoff.md) registriert, `DPF-WP-02` hat [Release Report und Pack Dry Run Evidence](./release-report-pack-dry-run-evidence.md) nachgezogen und `DPF-WP-03` hat [Conditional Network Evidence CI](./conditional-network-evidence-ci.md) nachgezogen. Der aktuelle Export Lock erwartet 124 Package-Exports inklusive `./design-tokens/xtheme-token-alias-layer`, `./catalog/epic13-rc1-migration-notes`, `./catalog/epic13-rc1-gate-matrix-ci-handoff`, `./catalog/epic13-release-report-pack-dry-run-evidence`, `./catalog/epic13-conditional-network-evidence-ci`, `./rmt/dom-descriptor-renderer`, `./rmt/component-capability-registry`, `./rmt/state-selector-runtime`, `./rmt/action-effect-runtime`, `./rmt/event-routing-runtime`, `./rmt/surface-resource-graph-runtime`, `./rmt/native-shell-runtime`, `./rmt/node-ssr-adapter`, `./rmt-language/app-platform-tooling`, `./rmt-language/kernel-trust-authority`, `./rmt-language/kernel-security-regression`, `./catalog/epic14-rmt-tooling`, `./catalog/epic14-lsp-handoff` sowie der klassischen und vNext RMT-Tooling-Surface.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Performance Measurements
|
|
2
|
+
|
|
3
|
+
XTend misst ab `ER-WP-18` Loader-, Hydration-, Render- und Route-Kernpfade lokal.
|
|
4
|
+
|
|
5
|
+
Der stabile Measurement Contract lautet:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
xtend.performance.measurement.v1
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Messpunkte
|
|
12
|
+
|
|
13
|
+
| Measure | Phase | Quelle |
|
|
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
|
+
Der Loader setzt `performance.mark` und `performance.measure` fuer:
|
|
30
|
+
|
|
31
|
+
- Manifest laden und aufloesen
|
|
32
|
+
- ESM-Modul laden
|
|
33
|
+
- Custom Element Definition abwarten
|
|
34
|
+
|
|
35
|
+
Zusätzlich emittiert er ein lokales 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
|
+
Die automatische Boot-Promise enthaelt die Loader-Messwerte:
|
|
44
|
+
|
|
45
|
+
```js
|
|
46
|
+
const boot = await window.__XTendLoaderBootPromise;
|
|
47
|
+
console.log(boot.performanceMeasurements);
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Fabric
|
|
51
|
+
|
|
52
|
+
Fabric misst bekannte Fibers automatisch:
|
|
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
|
+
Die Messung kann fuer Spezialtests deaktiviert werden:
|
|
64
|
+
|
|
65
|
+
```js
|
|
66
|
+
const fabric = window.XTendFabric.createXtendFabric({
|
|
67
|
+
markPerformance: false
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Telemetry Snapshot
|
|
72
|
+
|
|
73
|
+
`createTelemetrySnapshot()` liest `mark` und `measure` Eintraege mit Prefix `xtend.` und normalisiert sie:
|
|
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
|
+
Die Snapshot-Sektion enthaelt:
|
|
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
|
+
Seit `ER-WP-19` nutzt [Performance Regression](./performance-regression.md) dieselben Measurements fuer lokale deterministische 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
|
+
- Seit: `ER-WP-19`
|
|
8
|
+
|
|
9
|
+
XTend misst Loader-, Hydration-, Render- und Route-Arbeit bereits als `xtend.performance.measurement.v1`. Das Performance Regression Gate wertet diese Measurements gegen lokale Baselines aus.
|
|
10
|
+
|
|
11
|
+
## Lokaler 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
|
+
Die Suite nutzt:
|
|
20
|
+
|
|
21
|
+
- `tests/performance/performance_regression_suite.js`
|
|
22
|
+
- `tests/performance/baselines/local-performance-baseline.json`
|
|
23
|
+
- Fabric `createTelemetrySnapshot`
|
|
24
|
+
- Budgetwerte aus `fabric/xtend-fabric.js` und `development/XTend-Performance-Budget-Matrix.md`
|
|
25
|
+
|
|
26
|
+
## Statusmodell
|
|
27
|
+
|
|
28
|
+
| Status | Bedingung | Wirkung |
|
|
29
|
+
|--------|-----------|---------|
|
|
30
|
+
| `pass` | `durationMs <= budgetMs` | keine Aktion |
|
|
31
|
+
| `warn` | `durationMs <= budgetMs * 1.5` | sichtbar im Report |
|
|
32
|
+
| `fail` | `durationMs > budgetMs * 1.5` | Suite schlaegt fehl |
|
|
33
|
+
|
|
34
|
+
Warnungen sind Kalibrierungssignale. Harte `fail`-Eintraege sind Regressionen und erscheinen im Runner-Report unter `failures`. Seit `WP-E13-06` muss die lokale RC1-Baseline `warnCount === 0` melden; die fruehere Hydration-Warnung ist ueber [Hydration Performance Closure](./hydration-performance-closure.md) owner-frei geschlossen.
|
|
35
|
+
|
|
36
|
+
## Baseline
|
|
37
|
+
|
|
38
|
+
Die erste Baseline ist bewusst deterministisch und lokal:
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
tests/performance/baselines/local-performance-baseline.json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Sie deckt mindestens diese Messpunkte ab:
|
|
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
|
+
Der eingebettete Regression-Report nutzt:
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
xtend.performance.regression-report.v1
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Wichtige Felder:
|
|
67
|
+
|
|
68
|
+
- `measurementSchema`
|
|
69
|
+
- `measurementCount`
|
|
70
|
+
- `passCount`
|
|
71
|
+
- `warnCount`
|
|
72
|
+
- `failCount`
|
|
73
|
+
- `warnings`
|
|
74
|
+
- `failures`
|
|
75
|
+
- `phaseSummary`
|
|
76
|
+
|
|
77
|
+
`phaseSummary` macht sichtbar, welche Phase Budgetdruck erzeugt, ohne dass jede Komponente einen eigenen Browser-Test braucht.
|
|
78
|
+
|
|
79
|
+
## Beziehung zu Measurements
|
|
80
|
+
|
|
81
|
+
Das Regression Gate baut auf [Performance Measurements](./performance-measurements.md) auf. Es fuehrt keine zweite Messlogik ein, sondern nimmt Fabric Telemetry Snapshots als Quelle.
|
|
82
|
+
|
|
83
|
+
## RC1 Closure
|
|
84
|
+
|
|
85
|
+
`WP-E13-06` hat `xtend.component.hydrate` von `36ms / 32ms` auf `31ms / 32ms` kalibriert, ohne das Budget anzuheben. Die Failure-Fixture bleibt aktiv und belegt weiterhin, dass echte Budgetverletzungen hart fehlschlagen.
|
|
86
|
+
|
|
87
|
+
## Handoff
|
|
88
|
+
|
|
89
|
+
`ER-WP-20` nutzt diese Reports fuer Lazy/Idle/Visible Hydration Policies. `ER-WP-21` hat daraus die praktischen Regeln fuer Komponentenautoren in [Performance fuer Komponentenautoren](./performance.md) abgeleitet.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Performance fuer Komponentenautoren
|
|
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
|
+
- Seit: `ER-WP-21`
|
|
11
|
+
|
|
12
|
+
Dieses Dokument uebersetzt die Performance-Budget-Matrix in konkrete Autorenregeln. Neue Komponenten sollen nicht erst nachtraeglich optimiert werden, sondern ihr Performance-Profil bereits im Scaffold, in der Component-Doku, in Fabric Measurements und im lokalen Regression Gate sichtbar machen.
|
|
13
|
+
|
|
14
|
+
## Performance-Profil
|
|
15
|
+
|
|
16
|
+
Jede neue Scaffold-Komponente erhaelt `xtendScaffoldPerformanceProfile` im Source, `performanceProfile` im Manifest-Patch-Plan und die Docs-Abschnitte `Performance-Profil` sowie `Performance-Regeln`. Diese Artefakte referenzieren dieselbe Policy `xtend.scaffold.performance-policy.v1`.
|
|
17
|
+
|
|
18
|
+
| Profil | Lane | Budgetklasse | Hydration | Kritische Phasen |
|
|
19
|
+
|--------|------|--------------|-----------|------------------|
|
|
20
|
+
| `display` | `visible` | `interactive` | `visible` | load, mount, hydrate, render, update |
|
|
21
|
+
| `interactive` | `user-blocking` | `critical` | `visible` | hydrate, render, update, event |
|
|
22
|
+
| `overlay` | `user-blocking` | `critical` | `visible` | mount, hydrate, render, event |
|
|
23
|
+
| `routing` | `transition` | `interactive` | `visible` | route navigate, route render, hydrate, event |
|
|
24
|
+
| `form` | `user-blocking` | `critical` | `visible` | hydrate, update, event |
|
|
25
|
+
| `media` | `visible` | `interactive` | `visible-or-idle` | mount, hydrate, render, event |
|
|
26
|
+
| `stateful` | `user-blocking` | `critical` | `visible` | update, event, state sync |
|
|
27
|
+
| `feedback` | `a11y` | `critical` | `visible` | render, update, event, announcement |
|
|
28
|
+
| `theme` | `visible` | `interactive` | `visible` | render, update, theme apply |
|
|
29
|
+
|
|
30
|
+
Komponenten mit mehreren Profilen verwenden die strengste Budgetklasse und die hoechstpriorisierte Lane. `feedback` darf eine eigene `a11y` Fiber nutzen; `media` darf nicht sichtbare Arbeit auf `idle` verschieben.
|
|
31
|
+
|
|
32
|
+
## DOM-Regeln
|
|
33
|
+
|
|
34
|
+
- DOM-Suchen muessen auf `this.shadowRoot`, den Host oder einen bekannten Container begrenzt sein.
|
|
35
|
+
- `document.querySelectorAll` und globale DOM-Loops brauchen eine begruendete Ausnahme und ein Budget.
|
|
36
|
+
- Statische Referenzen duerfen gecacht werden; dynamische Node-Listen duerfen nicht unkontrolliert wachsen.
|
|
37
|
+
- Wiederholte Voll-Renderings sind nur fuer kleine, statische Komponenten akzeptabel. Groessere Komponenten muessen gezielt updaten.
|
|
38
|
+
- `MutationObserver`, `ResizeObserver`, Timer und Subscriptions muessen in `disconnectedCallback` bereinigt werden.
|
|
39
|
+
|
|
40
|
+
## Event-Regeln
|
|
41
|
+
|
|
42
|
+
- `interactive`, `overlay` und `form` behandeln User Events als `critical`; der synchrone Handler-Zielwert ist 16 ms.
|
|
43
|
+
- Handler duerfen keine synchronen Netzwerk-, Storage- oder grossen DOM-Scan-Arbeiten ausfuehren.
|
|
44
|
+
- High-frequency Events wie `input`, `scroll`, `pointermove` und `resize` muessen gedrosselt, zusammengefasst oder auf `requestAnimationFrame` gelegt werden.
|
|
45
|
+
- Event-Daten sollen in kanonischen State oder lokale Render-Caches ueberfuehrt werden; abgeleitete DOM-Arbeit erfolgt danach gebuendelt.
|
|
46
|
+
|
|
47
|
+
## Shadow DOM
|
|
48
|
+
|
|
49
|
+
- Styles sollten statisch bleiben. Wiederholtes Einfuegen identischer `<style>` Bloecke im Update-Pfad ist ein Review-Signal.
|
|
50
|
+
- Wo moeglich werden CSS Custom Properties und Parts genutzt, damit Theme-Arbeit nicht ueber JS-Layout-Loops laeuft.
|
|
51
|
+
- `slotchange` muss budgetiert sein und darf keine unbeschraenkten DOM-Scans ausloesen.
|
|
52
|
+
- Shadow-DOM-Updates sollen kleine Teilbaeume austauschen, statt bei jeder State-Aenderung die gesamte Oberflaeche neu zu schreiben.
|
|
53
|
+
|
|
54
|
+
## Layout und Animation
|
|
55
|
+
|
|
56
|
+
- Layout-Reads passieren vor Layout-Writes. Gemischte Read/Write-Schleifen in derselben Sync-Phase sind verboten.
|
|
57
|
+
- Animationen sollen `transform` und `opacity` bevorzugen und `prefers-reduced-motion` respektieren.
|
|
58
|
+
- Messbare sichtbare Arbeit muss mit `componentRef`, `fiberId`, `lane`, `phase` und `durationMs` korrelierbar sein.
|
|
59
|
+
- Nicht sichtbare Arbeit nutzt `idle`, `background` oder `diagnostics`; sie darf keine `user-blocking` Lane beanspruchen.
|
|
60
|
+
|
|
61
|
+
## Hydration
|
|
62
|
+
|
|
63
|
+
`visible` ist der Default fuer sichtbare UI. `idle` ist fuer nicht sofort benoetigte, aber bald erwartete Arbeit geeignet. `lazy` ist fuer Arbeit reserviert, die erst bei Bedarf oder Sichtbarkeit aktiviert wird. Nicht sichtbare Hydration darf nicht als `user-blocking` geplant werden.
|
|
64
|
+
|
|
65
|
+
Die operative Policy steht in [Hydration Policies](./hydration-policies.md). Die Messpunkte und Gate-Auswertung stehen in [Performance Measurements](./performance-measurements.md) und [Performance Regression](./performance-regression.md).
|
|
66
|
+
|
|
67
|
+
## Scaffold-Pflicht
|
|
68
|
+
|
|
69
|
+
Neue Scaffold-Ausgaben muessen diese Daten sichtbar machen:
|
|
70
|
+
|
|
71
|
+
- `performanceProfile`
|
|
72
|
+
- `budgetClass`
|
|
73
|
+
- `lane`
|
|
74
|
+
- `hydrationPolicy`
|
|
75
|
+
- `criticalMeasurements`
|
|
76
|
+
- `idleOrBackgroundAllowed`
|
|
77
|
+
- `requiresA11yFiber`
|
|
78
|
+
|
|
79
|
+
Die Policy ist in `xtend-builder/scaffold.config.js` unter `performance` hinterlegt. Der Generator spiegelt sie in `xtend-builder/performance/component-performance-profile.js`, den Component-Templates und dem Manifest-Patch-Plan.
|
|
80
|
+
|
|
81
|
+
## Gates
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
node scripts/run_xtend_tests.js fabric-performance-measurements --json
|
|
85
|
+
node scripts/run_xtend_tests.js performance-regression --json
|
|
86
|
+
node scripts/run_xtend_tests.js hydration-policy --json
|
|
87
|
+
node scripts/run_xtend_tests.js references --json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
`performance-regression` darf lokale Warnungen erzeugen, wenn ein deterministischer Fixture-Pfad sein Budget ueberschreitet. Harte Failures bleiben fuer priorisierte Kernpfade und dokumentierte Budgetverletzungen reserviert.
|
|
91
|
+
|
|
92
|
+
## Handoff
|
|
93
|
+
|
|
94
|
+
`ER-WP-25` ist abgeschlossen und verbindet Screenreader-Signale mit Performance-Fibers und der `a11y` Lane. `ER-WP-26` ist ebenfalls abgeschlossen: Reduced-Motion- und High-Contrast-Regeln nutzen dieselbe Profil-, Lane- und Gate-Sprache ueber `xtend.a11y.motion-contrast-policy.v1`.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# XTend Scaffold Previews
|
|
2
|
+
|
|
3
|
+
- Status: Scaffold-Preview-Konvention
|
|
4
|
+
- Referenz-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
|
+
## Zweck
|
|
8
|
+
|
|
9
|
+
Dieses Verzeichnis ist fuer gescaffoldete Component-Preview-Plaene reserviert. Ein Preview-Plan ist eine lokale Markdown-Referenz, die generierte Component-Quellen, Docs, Fixture, Typen und Manifest-Patch-Ausgabe mit der Dokumentations- und Demo-Referenzregistrierung verbindet.
|
|
10
|
+
|
|
11
|
+
## Mindestvertrag
|
|
12
|
+
|
|
13
|
+
- Preview-Pfade folgen `docs/previews/<name>.preview.md`.
|
|
14
|
+
- Preview-Plaene muessen in `development/XTend-Dokumentations-und-Demo-Referenzpfade.md` gelistet sein, bevor sie automatisierte Referenzen werden.
|
|
15
|
+
- Preview-Plaene muessen repo-lokale Component-, Fixture- und Manifest-Pfade verwenden.
|
|
16
|
+
- Externe Netzwerkabhaengigkeiten sind fuer automatisierte Scaffold-Previews nicht erlaubt.
|
|
17
|
+
- Produktive Preview-Schreibvorgaenge bleiben review-first, bis ein spaeteres Paket einen Schreibmodus einfuehrt.
|
|
@@ -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
|
+
- Lokaler 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
|
+
## Zweck
|
|
13
|
+
|
|
14
|
+
Der PROD Browser CSP Smoke prueft den XTend-Loader unter einer PROD-aehnlichen Content Security Policy, ohne externe Netzwerke oder CDN-Fallbacks zu nutzen.
|
|
15
|
+
|
|
16
|
+
Die Fixture nutzt:
|
|
17
|
+
|
|
18
|
+
- eine `nonce` fuer alle Inline- und Loader-Skripte
|
|
19
|
+
- ein same-origin Manifest unter `/tests/browser/fixtures/components/manifest.json`
|
|
20
|
+
- den root-lokalen Loader `/xtend-loader.js`
|
|
21
|
+
- keine `importmap`
|
|
22
|
+
- keine `https://cdn.ccs-networks.de/xtend` Referenz
|
|
23
|
+
- XState und XRouter als minimale Hydration-Linie
|
|
24
|
+
|
|
25
|
+
## Lokale Nutzung
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm run test:epic13-prod-browser-csp-smoke
|
|
29
|
+
npm run dev:local:csp
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Der lokale Server setzt zusaetzlich zum CSP Meta der Fixture einen `content-security-policy` Header. Damit kann die HTML-Datei sowohl statisch als auch servernah geprueft werden.
|
|
33
|
+
|
|
34
|
+
## Grenzen
|
|
35
|
+
|
|
36
|
+
Dieser Smoke ist eine PROD-nahe Boot- und Policy-Vorbereitung. Die Trusted-DOM-Pruefung fuer Parsedown, RMT HTML-Fragmente und untrusted Content liegt seit `WP-E13-11` unter [Trusted DOM Boundary Browser Proof](./trusted-dom-boundary-browser-proof.md) und `xtend.epic13.trusted-dom-boundary.v1`.
|
|
37
|
+
|
|
38
|
+
## Handoff
|
|
39
|
+
|
|
40
|
+
`WP-E13-07` ist abgeschlossen. `WP-E13-08` hat [Visual Owner Artifacts](./visual-owner-artifacts.md) normalisiert. `WP-E13-09` ist ready und buendelt als naechstes die RMT-first App Production Readiness.
|