Repository navigation
NEXUS v0.14.0
NEXUS v0.14 release notes
v0.14.0
Prepared 2026-10-23 (nothing tagged or published: v0.13.0 is the latest release).
v0.14.0 is a minor release. The MESH adapter (Mesh) gains what a host needs to give a component state of its own for one occurrence of it (MESH 0.15's units; direction Bet 8). Nothing else changes.
Changes
Mesh.render(program, snapshot, units?), a plain Effect for rendering a snapshot (the host's scope selector is not needed for it), andunitsonMesh.update(previous, snapshot, units?).unitsis the state the host holds for the unit occurrences, by the occurrence's key; it is passed to the runtime as it is. A render lists the occurrences it met (render.instances).unitsonMesh.host, an optional Effect read each time the host renders. Without it, and with a program that has no units, nothing differs.Mesh.raise(render, instance, event, payload?)resolves an event a unit announces to the intent of the handler its caller bound (undefinedwhen it bound none).- A binding receives the intent as its second argument:
(args, intent) => Effect. A binding that takes one parameter is unchanged. A unit's command arrives withintent.instance(the occurrence it is for) andintent.controlled. - The
@valancex/mesh-runtimepeer range is^0.14.0 || ^0.15.0. Units need 0.15; the rest works on 0.14. The adapter keeps no state of the occurrences (invariant M2): the host holds it and decides when an occurrence's ends.
Compatibility
- API: additive. Behavior: unchanged for a program with no unit. Install: wider (an application on MESH 0.14 or 0.15).
- Tier: Tier 2 (opt-in; a default that is correct without it). The mechanism stays in the host (VALANCE), below the adapter.
Release order
MESH 0.15.0, NEXUS 0.14.0, then the VALANCE packages (which depend on both for units).
Verification
pnpm typecheck, pnpm test and pnpm build, twice. Against MESH 0.14 from the registry (this adapter builds and runs on it): 513 tests pass and the 4 in tests/mesh-units.test.ts are skipped, by name, because that runtime has no raise. Against MESH 0.15's build in its place: 517 tests (33 files), 516 pass; the one that does not is the check that the lockfile names the installed runtime, which it cannot until the lockfile is regenerated after MESH 0.15 is published. The development dependencies are still the registry's MESH 0.14 until 0.15 is published (a DO NOT MERGE commit raises them, reverted on the branch). npm publish --dry-run of the packed tarball passes.