I Shipped...

13 September 2026 (10PRs)

reliable browser reconnect readiness failures

I made browser reconnect waiters reject when the worker reaches a terminal failure. The waiters are cleared while the connection is explicitly offline, instead of being left pending indefinitely.

permissions publication after lineage recovery

I fixed permissions publication when the needed schema lineage is missing from the running server. The server now installs the matching published lineage before applying the permissions.

NULL and DELETE ExistsRel policy handling

I added handling for NULL predicates and DELETE operations in ExistsRel policies. This keeps those policy cases in the same enforcement path instead of leaving them unhandled.

non-blocking loopback WebSocket sends

I released the loopback client's shared shell before a WebSocket send can block. That lets independent clients keep making progress while preserving the order of messages.

nested ExistsRel policy conversion

I fixed the conversion of nested ExistsRel policies so nested relation checks are handled correctly. I also added coverage for the nested policy case.

graceful embedded server startup errors

I changed an embedded server with an occupied port to return a useful startup error instead of panicking. The JavaScript callers now handle that failure explicitly and keep the host process alive.

correlated ExistsRel update and select tests

I added tests for correlated ExistsRel policies during UPDATE operations and the reverse SELECT path. The coverage makes sure both directions of the relationship are exercised.

correlated ExistsRel policy coverage

I added coverage for correlated ExistsRel INSERT policies. The tests check both denied and allowed writes, including policy evaluation for optimistic writes.

correct nested EXISTS policy branches

I fixed nested EXISTS policy conversion so a shared condition is applied to every branch of an OR expression. This prevents a branch from accidentally skipping the ownership check.

atomic authentication transport transitions

I made authentication state and its transport credentials change together as one committed transition. Observers now see only a complete authentication mode, rather than a temporary mismatch between the two.

9 September 2026 (10PRs)

unambiguous aggregate output validation

I fixed a problem where aggregate aliases could collide and make output columns ambiguous. Now validation rejects exact, case-sensitive aggregate output collisions before normalization or lowering.

typed scalar object filters

I fixed a problem where every non-array object was treated as operators. Now direct timestamp, byte-array, JSON-object and array values lower to one typed Eq condition.

trusted JWKS transport checks

I fixed a problem where backend JWKS discovery could cross an untrusted transport boundary or accept an insecure redirect. Now jWKS discovery is admitted only through the trusted backend transport contract and redirect policy fails closed.

staged N-API upload cleanup

I fixed a problem where dropped initialised streaming uploads could retain staged large-value claims, and wrapper or database close could discard shared state before cleanup ran. Now binding-private owner and view lifecycle code queues non-blocking drop cleanup.

stable Vue clients for equivalent configuration

I updated Jazz so equivalent Vue config replacements retain the pending or ready client, avoiding unnecessary shutdown and fallback flicker.

stable Svelte config handovers

I fixed a problem where a provider could recreate or dispose a client for an equivalent or in-place configuration change, disrupting the consumer during a handover. Now the provider compares configuration semantics, preserves equivalent clients, and transfers ownership safely when authentication or storage configuration changes.

SPA deep-link support in Hono starters

I fixed a problem where production starter servers could return a missing page for a client-side route that was not the root path. Now the four affected starters return the SPA shell for valid client-side deep links while preserving API and asset responses.

single accounting for shared storage classes

I fixed a problem where jazz enumerated logical per-table history families and metered each independently. Now groove owns logical-to-physical aggregation behind the concrete Database interface.

shared server JWKS refreshes

I updated Jazz so concurrent authentication requests share one server JWKS refresh rather than independently fetching the same public keys.

session-claim range validation

I fixed a problem where session range expressions compiled in TypeScript despite core accepting only equality and inequality, then failed later during schema conversion. Now defined session ranges throw a targeted synchronous DSL error.