Changelog – XTend 0.8.0
This page describes the 0.8.0 codebase and its migrations. A package version alone does not establish publication; manifests, exports and build artifacts identify the delivered revision.
XTend 0.9.0 – renderer and resume contracts
Renderer v2 treats strings in attributes/attrs as literals, even when model keys share their names; existing implicit attribute bindings must become explicit. Independent SSR coverage and a common initial resume envelope for Node/Laravel. Legacy contracts remain supported through at least 0.9/0.10, with removal no earlier than 1.0. Kernel and MCP artifacts are regenerated; the blocking Nightly matrix includes Laravel 12/13. Binding migration and regression tests.
Changes in 0.8.0
| Area | Behavior and entry point |
|---|---|
| RMT microkernel | One scheduler authority, six canonical lanes and cancellable, thenable RmtJobHandles. Paint, idle and postTask waits do not block ready work. Migration |
| Maraca shell | execution fastpass and dispatchFastPass() apply navigation, focus and named close on user-blocking, independently of waiting business commands. FastPass |
| Presentation lifecycle | Automatic surface epochs guard hydration, UI-coprocessor responses and scheduled commits. superseded never starts a synchronous rendering fallback. Business transactions retain their order. Abort Boundaries |
| Diagnostic demand | subscribeEvents() delivers immutable lifecycle events. subscribe() retains full snapshots; snapshot() and DEV API methods synchronously read current data. DEV API |
| Hydrangea JIT | Shared compile/preview/Maraca pipeline and a private cache of verified kernel artifacts. Explicitly enabled for the Docs host; legacy remains the default. Hydrangea |
| Node and Laravel | Independent page hosts with props, forms, navigation, layouts, resume and streaming. Production Laravel renders prebuilt artifacts without Node. Page runtime |
| Page Wire and CSP | Opt-in xtend.page-wire.v1 reduces repeated page data. Conditional views materialize only the active branch; trusted component styles can inherit the document nonce. Transport |
| Reference application | XTend.store combines Maraca, Laravel, a guest cart and a separate DemoPay provider. Integration |
| Focus and diagnostic fixes | Overlay focus traps include slotted and remotely mounted controls. Delegated handlers read queue statistics from the shared scheduler instance. Accessibility |
| Docs shell | After a language switch, search and navigation use the same updated locale service. The shared FastPass validator remains compatible with the older Docs bridge host. DEV Surface |
| Tooling and Nightly | A shared test catalog, verified runner capabilities and run-bound artifacts keep local and CI evidence traceable. Release Verification |
Migration and defaults
0.8.0 is a breaking release under the pre-1.0 policy. New kernel jobs use user-blocking, visible, transition, idle, background or diagnostics. inline and runInline no longer bypass the queue. Product Surface and prewarm are explicit opt-ins; ESM imports do not boot a runtime. Fabric supplies work intents and backpressure without owning a second scheduler queue.
FastPass is also opt-in. Model reducers, services, fetches, streams and arbitrary custom effects remain business commands. A completed FastPass action acknowledges the shell intent, not content loading or animation completion. Long synchronous work still needs cooperative chunking.
The extended plan runtime uses xtend.maraca.plan-runtime.v3; the presentation adapter uses xtend.rmt.presentation-effect-adapter.v2. Existing methods remain available; consumers checking literal schema IDs must accept the new major. xtend-maraca/fastpass.schema.json adds the authoring contract without rewriting the released RMT v2 document schema.
Rebuild Maraca bundles and page manifests with the same framework version after upgrading. Rebuilds update runtime, asset and version fingerprints together. Current packages require Node >=24; host-specific compatibility smokes do not imply general support for older Node versions.
Identify the installed version
Do not read the version from a generated banner or screenshot. Query the package directly:
node -p "require('./package.json').version"
Then compare package.json with the files that are actually installed. api.d.ts, components/manifest.json, and declarations under components/*.d.ts describe the public surface for that version.
Classify a change
- Additive: A new export, optional attribute, or versioned schema expands the surface without breaking existing calls.
- Behavioral: Defaults, scheduling, hydration, or failure status change. Such a change needs an executable example and an updated gate report.
- Migration: A name, contract, or supported path is replaced. The old path remains for the documented transition or returns an explicit diagnostic.
- Security fix: Import, integrity, CSP, or trust rules become stricter. A silent compatibility fallback must not bypass that fix.
Evidence required for a release
A release is more than a version number. The export-lock check must agree with TypeScript declarations, the pack dry run must exclude internal artifacts, and relevant browser and runtime gates must pass. Release Verification explains the sequence and how to read each report.
Upgrade path
Identify affected public symbols before upgrading. Use the RMT vNext Migration Notes, Component Long-Tail Migration, or XTensions Coexistence Guide for the relevant surface. Update source, fixture, and tests together instead of replacing compiled output alone.