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.
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.
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.
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.
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.
I fixed the conversion of nested ExistsRel policies so nested relation checks are handled correctly. I also added coverage for the nested policy case.
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.
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.
I added coverage for correlated ExistsRel INSERT policies. The tests check both denied and allowed writes, including policy evaluation for optimistic writes.
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.
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.
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.
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.
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.
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.
I updated Jazz so equivalent Vue config replacements retain the pending or ready client, avoiding unnecessary shutdown and fallback flicker.
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.
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.
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.
I updated Jazz so concurrent authentication requests share one server JWKS refresh rather than independently fetching the same public keys.
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.