unstale

npm / @earendil-works/chord

@earendil-works/chord

What changed in @earendil-works/chord 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-01.

41 breaking40 new APIs and options1 performance3 behavior and defaults3 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.9 on npm

@earendil-works/chord 188 changes

Breaking changes 41

  • Custom Context implementations must provide a non-optional telemetry parent; use NOOP_TELEMETRY_CONTEXT when telemetry is disabled.

    1.4.0release notes

  • Accepts spans instead of adapters and derives a context without changing values or cancellation.

    1.4.0release notes

  • Epoch fields are renamed codeVersion across contexts, root options, hosts, frames, and reload reports.

    1.3.0release notes

  • Host creation is generic over the application's principal type and now requires self as the host's own principal.

    1.3.0release notes

  • ctx.get is asynchronous and resolves when the reference is live and its variant state has its first snapshot.

    1.3.0release notes

  • Roots running on a retired code version are aborted with reason superseded and given up to one second to stop before resources used only by that version close.

    1.3.0release notes

  • Callers no longer select a remote host with GetOptions.at; placement is declared by the remote contract.

    1.3.0release notes

  • Setting state to false creates a method-only reference that does not subscribe to state unless another reference wants it.

    1.3.0release notes

  • host.get is asynchronous and resolves when the reference is live and its variant state has its first snapshot.

    1.3.0release notes

  • upstream is now an object containing link and principal plus LinkOptions, replacing a bare link and upstreamOptions.

    1.3.0release notes

  • Factory return values are now named ImplementationOf<C> instead of BehaviorOf<C>.

    1.3.0release notes

  • Calls through remote references now reject contexts from another host or objects not created by Chord.

    1.3.0release notes

  • Replaces awaitEager for waiting on host-lifetime objects.

    1.3.0release notes

  • MembersOf is removed; remote reference variants are discriminated by variant.

    1.3.0release notes

  • Cells can migrate their state from an older version; a raised version migrates only that cell.

    1.3.0release notes

  • The new @earendil-works/chord/output entry point exports OutputBuffer for retaining a head or tail window of a stream.

    1.3.0release notes

  • Chord no longer provides a Principal type or invents principals; applications supply their principal type and values.

    1.3.0release notes

  • The output entry point exports Progress to pace commits of a changing value by size.

    1.3.0release notes

  • The wire protocol changes incompatibly across this release; peers with different or absent protocol versions cannot communicate.

    1.3.0release notes

  • References returned by get are now typed Ref<C> instead of Handle<C>.

    1.3.0release notes

  • Reference status is now named RefStatus instead of HandleStatus.

    1.3.0release notes

  • Remote contracts must declare object placement with hostNamed or hostFamily; callers no longer specify a host with GetOptions.at.

    1.3.0release notes

  • Resource options are now named ResourceDeclaration instead of ResourceSpec.

    1.3.0release notes

  • Routes must now supply a principal instead of receiving a default host principal.

    1.3.0release notes

  • Derivations no longer take a name.

    1.3.0release notes

  • Listeners are declared by name using self.on.

    1.3.0release notes

  • Resources are declared by name with self.resource; the resource revision field is now version.

    1.3.0release notes

  • State declarations are now named calls and return the cell; cell options include version and migrate.

    1.3.0release notes

  • Tasks no longer take a name.

    1.3.0release notes

  • serve now uses lifetime instead of eager, with referenced as the default and host lifetime for one object per host.

    1.3.0release notes

  • State version configuration is removed from ServeOptions; versions and migrations now belong to individual cells.

    1.3.0release notes

  • serve now takes ServeOptionsFor<C>, with options typed according to the contract.

    1.3.0release notes

  • Remote object variants use variant in factory results, references, shapes, and shape frames; kind is no longer reserved.

    1.3.0release notes

  • Removes the ./bundler export.

    1.2.0release notes

  • The old defineFacet is replaced by the typed host runtime's defineFacet.

    1.2.0release notes

  • Removes defineService and the listed old runtime APIs, helpers, and types.

    1.2.0release notes

  • Removes this package, which served only the old runtime; it is no longer released.

    1.2.0release notes

  • Removes this package, which served only the old runtime; it is no longer released.

    1.2.0release notes

  • Removes this package, which served only the old runtime; it is no longer released.

    1.2.0release notes

  • Removes facet bundle loaders and changes ./node to export the child host manager and nodeLoader.

    1.2.0release notes

  • Replaces the facet and service runtime with typed hosts, runtime contracts described with TypeBox schemas, handles, JSON frames, and hot reload of plugins.

    1.2.0release notes

New APIs and options 40

  • Adds portable SQLite interfaces, an atomic migration runner, and schema-prefix validation.

    1.4.0release notes

  • Adds a Cloudflare Durable Object driver for the portable SQLite interfaces.

    1.4.0release notes

  • Adds a Node driver for the portable SQLite interfaces.

    1.4.0release notes

  • Adds portable SQLite telemetry recording with bounded settled-span queues, ten-second metric aggregates, periodic flushes, and retention cleanup.

    1.4.0release notes

  • Provides a no-op telemetry span for contexts when telemetry is disabled.

    1.4.0release notes

  • Accepts an optional ProgressClock to pace commits, defaulting to Date.now and setTimeout.

    1.4.0release notes

  • Starts a child span and passes its derived context to the callback.

    1.4.0release notes

  • Limits concurrent calls from a peer; additional calls receive unavailable with reason too_many_calls while the link remains open.

    1.3.0release notes

  • boundOutput is newly exported from the output entry point.

    1.3.0release notes

  • characterEnd is newly exported from the output entry point.

    1.3.0release notes

  • ConnectOptions is newly exported for principal-aware connections.

    1.3.0release notes

  • EventOf is newly exported.

    1.3.0release notes

  • FacetApi exposes a signal that aborts when that facet run is no longer installed; manually constructed FacetApi values must pass it through.

    1.3.0release notes

  • host.hold is the synchronous reference-acquisition form for UI runtimes and may return a loading reference.

    1.3.0release notes

  • HostFamily is newly exported for host-family placement typing.

    1.3.0release notes

  • HostNamed is newly exported for named-host placement typing.

    1.3.0release notes

  • linger keeps remote bindings held and hydrated after their last reference is released, allowing quick reacquisition.

    1.3.0release notes

  • Bounds how long a reload waits for aborted tasks before starting replacements; the default is 5000 ms.

    1.3.0release notes

  • inflateMessage converts a packed WebSocket message back into a text frame.

    1.3.0release notes

  • Lifetime is newly exported.

    1.3.0release notes

  • Reports protocol-version mismatches between peers.

    1.3.0release notes

  • Caps waiting flow-control operations per link; excess oldest streams become resets.

    1.3.0release notes

  • Sets the unacknowledged frame window for end-to-end flow control; state frames wait and coalesce while calls, results, and control frames are not held back.

    1.3.0release notes

  • Placement is exported as a type for remote contracts.

    1.3.0release notes

  • PlacementFor is newly exported for remote contract placement typing.

    1.3.0release notes

  • PrincipalPattern is newly exported.

    1.3.0release notes

  • sanitizeOutput is newly exported from the output entry point.

    1.3.0release notes

  • A cell may initialize its first value from an async source after resources open and references are live; failures prevent activation or reload.

    1.3.0release notes

  • StateInit is newly exported for cells initialized from a source.

    1.3.0release notes

  • StateOptions is newly exported.

    1.3.0release notes

  • utf8ByteLength is newly exported from the output entry point.

    1.3.0release notes

  • ValueOf is newly exported.

    1.3.0release notes

  • Large JSON payloads can be packed; WebSocketLinkOptions controls sending and accepting packed frames.

    1.3.0release notes

  • Introduces WebSocket acceptance for the typed host runtime.

    1.2.0release notes

  • Remains unchanged and also exports the Context and ContextKey types.

    1.2.0release notes

  • Introduces host creation for the typed host runtime.

    1.2.0release notes

  • Introduces registry definition for the typed host runtime.

    1.2.0release notes

  • Introduces a Node IPC link for exchanging JSON frames between hosts.

    1.2.0release notes

  • Introduces a memory link for exchanging JSON frames between hosts.

    1.2.0release notes

  • Introduces a WebSocket link for exchanging JSON frames between hosts.

    1.2.0release notes

Performance 1

  • Appending no longer requires walking the whole array; applyImmutable builds an appended array in one copy instead of two.

    1.2.0release notes

Behavior and default changes 3

  • Link.send returns the encoded frame size when the transport knows it; flow control counts this size, while links returning nothing are not windowed.

    1.3.0release notes

  • Methods without arguments are called as ref.name(ctx?) and implemented with a context-only function; omitted result means the method is void.

    1.3.0release notes

  • A reload starts replacement tasks only after aborted tasks finish or the stop deadline is reached.

    1.3.0release notes

Fixes and other changes 3

  • Registers every facet directory before importing any facet, preventing duplicate module copies when facets import one another's files.

    1.3.0release notes

  • Avoids socket-path length failures on macOS and BSD by placing the lock socket in a private per-user directory.

    1.3.0release notes

  • Keeps its name on the root export, alongside the listed JSON, context, and replicated-state names.

    1.2.0release notes