Skip to content

Versioning ​

What is published ​

VersionDate
0.2.32026-10-20The current release. npm install @rayfold/server gives you this, and dev.rayfold:*:0.2.3 on Maven Central. The explorer as a working tool (stop, status, result views, completion, a shape builder, tabs and history), and a reserved path that a server does not serve answering 404.
0.2.22026-10-09Unit testing without a network in every supported language (rayfold-test, @rayfold/client/testing), a clock for the JVM server, REST wire names, and many fixes found by a test-depth audit of both runtimes.
0.2.12026-09-23A live query's re-runs load their fields again.
0.2.02026-09-19Tooling: @rayfold/angular, server identity and /stats, counters, published conformance vectors.
0.1.02026-09-15The first release.

Before 1.0 only the latest minor version gets fixes, so a new project starts on 0.2.3. The table below says which feature arrived in which version, for anyone still on 0.1.0.

What each version added ​

Everything the protocol itself does arrived in 0.1.0: batches, shapes, loaders, commands with declared errors, patches, live queries, streams, policies, caching, idempotency, uploads, capability tokens, RB, MCP, @http routes and OpenAPI, relays, health and readiness, the CLI and the editor server. Later versions add tooling and fix defects. Core 0.1 is frozen, so none of them changes what a request means.

FeatureSinceWhere
The protocol, both runtimes, and every client package0.1.0Get started
@rayfold/react0.1.0React
@rayfold/postgres, @rayfold/otel, the JDBC and Spring Boot modules0.1.0Postgres, Tracing
@rayfold/angular0.2.0Angular
Server identity and GET {base}/stats0.2.0Deployment
Counters and MemoryCounters0.2.0Deployment
maxStreamItems on the TypeScript server (the JVM always had one)0.2.0Streams
closeTimeoutMs, so a server still connecting to its relay can shut down0.2.0CHANGELOG
Published conformance vectors0.2.0Conformance
rayfold-test on the JVM and @rayfold/client/testing0.2.2Testing
A clock for the JVM server (now, .clock(...), a Spring Clock bean)0.2.2Testing
@http(name:) wire names, and rayfold import openapi keeping them0.2.2REST routes
rayfold lock keeping ordinals by name, with highestOrdinals, and check --against a lock comparing them by name0.2.2Command line
rayfold import openapi binding request bodies, reading path and $ref parameters, and reading an optional schema as X?0.2.2Coming from REST
The builder's .implements(...) and a field's .args(...)0.2.2@rayfold/builder
typedClient and Select typing a call or field with no shape as the default view0.2.2TypeScript types
Angular holding the application unstable until the first answer0.2.2Angular
The WebSocket schema check, closing a socket on another schema with 44090.2.2The binary format
maxBuffered on the TypeScript server, and the Kotlin client reopening a dropped live query (onError)0.2.2Live updates
maxBody on the Node MCP handler0.2.2MCP
The offline queue draining at startup (TypeScript) and behind a new command (both clients)0.2.2Offline
The explorer's Stop, status line, Result and Tree views, completion, shape builder, tabs, history and headers0.2.3Explorer

CHANGELOG.md has the rest, including the defects each version fixed.

Three things carry a version, and they move independently.

Packages ​

The npm packages (@rayfold/*) and the Maven artifacts (dev.rayfold:*) share one version number, set everywhere at once by node scripts/set-version.mjs <version>. They follow Semantic Versioning:

  • Before 1.0, a minor version (0.1 to 0.2) may change public APIs; the changelog says what changed and how to move. A patch version (0.1.0 to 0.1.1) only fixes bugs and security problems.
  • From 1.0, breaking changes wait for a major version, and anything removed is deprecated for at least one minor version first.
  • Only the latest minor version gets fixes (SECURITY.md).

A published version is never replaced: a mistake is fixed by the next patch version.

The protocol ​

The rayfold field of an envelope and of the manifest names the protocol version ("0.1"). Core 0.1 is frozen with the first release; extensions are drafts until they are declared stable. spec/process.md says what may change in each and how changes are proposed. A package release may add or change draft extensions; it never changes what a Core 0.1 request means.

Your schema ​

APIs built on Rayfold do not carry version numbers. A schema evolves additively: add fields, operations and enum values; mark what is going away with @deprecated(reason: "...", sunset: "2027-06-30", replacement: "..."); and let rayfold check refuse removals before their sunset date and changes that would break existing clients (spec 11).

Released under the Apache-2.0 license.