I Shipped...

9 September 2026 (1PR)

application-scoped server storage

I fixed a problem where implicit server storage and environment defaults could be shared or selected inconsistently across applications. Now implicit storage paths are application-scoped, while explicit CLI options override environment configuration deterministically.

8 September 2026 (1PR)

browser pending-write recovery after offline restart

I updated Jazz so fixes 2633: a persistent browser client could acknowledge a 500-row transaction locally, read it correctly, and then hang after a full offline browser restart.

4 September 2026 (9PRs)

transformed included and hopped relation rows

I fixed a problem where included and hopped rows could expose raw stored values, and a source column sharing a relation or hidden-include name could overwrite or impersonate the materialised relation. Now every materialised row uses its owning table's transforms.

same-path staged binary preservation

I updated Jazz so preserve a staged executable when its source is already the destination or a filesystem alias; replace genuinely distinct binaries without overwriting the old executable inode.

safe JOIN ON name validation

I updated Jazz so rejects ambiguous SQL JOIN ON operands instead of resolving each operand opportunistically against a different input.

relation alias handling during lowering

I fixed a problem where relation column aliases were not consistently represented in the graph, and union arms with compatible types but different field names could not be combined. Now authored aliases apply only to public fields; internal binding fields retain their identity and routing role.

ordered lens rename handling

I fixed a problem where grouping transformations by kind could apply a later rename against the wrong intermediate table or column identity. Now lens translation follows the operation stream, so chained and mixed renames observe the state produced by every preceding operation.

hosted credential redaction during app creation

I updated Jazz to redact hosted credentials from generated environment files. I also changed it to preserve retry placeholders without persisting secrets.

cancellable subscription startup

I updated Jazz so make cancellation work while a subscription is waiting to start.

cancellable streaming WASM writes

I updated Jazz so make abort work while a streaming write is still storing a chunk.

accurate Edge readiness reporting

I fixed a problem where a dynamic Edge could report ready before its catalogue-backed runtime had been installed. Now a dynamic Edge reports unhealthy until runtimeforclient() is available after catalogue adoption.

3 September 2026 (9PRs)

zero-depth team recursion

I fixed a problem where a zero-depth bound could grant one-hop access, and validators disagreed over whether zero was valid. Now zero includes only the seed, one includes exactly one hop, and every public and internal layer applies the same non-negative depth contract.

Vite environment loading for the active mode

I updated Jazz to load Vite’s standard environment files for the active development or production mode. I also changed it to use Vite’s own dotenv parsing, variable expansion and precedence rules.

validation for ambiguous policy expressions

I fixed a problem where an unmarked policy-shaped value could be mistaken for policy code and weaken a declared row predicate. Now these values fail closed unless the schema makes them valid row data.

terminal subscription error propagation

I fixed a problem where values could race after onError, public Db.subscribe did not expose the error channel, legacy callbacks could drop failures, and browser relays reduced errors to messages. Now subscribers observe one terminal error and no later values.

stable persisted batches after refresh failures

I fixed a problem where a refresh failure could make a durable batch look unapplied, omit remote progress, and trigger reconnect or replay. Now the tick records applied progress exactly once, routes the refresh failure, retains the row, and does not redeliver the batch.

safer validation for pending enum lineages

I fixed a problem where out-of-order activation could leave an over-capacity sibling durably pending and poison a later reopen. Now invalid pending lineage is quarantined and durably removed without consuming physical IDs.

safer cloned subscription reconciliation

I fixed a problem where sibling receipts could use a different generation from their view, disappear on backpressure, or miss fate registration. Now sibling messages share one generation, retry exactly once after backpressure, register fates, and avoid the established-set copy when no clone is pending.

safer branch-view upserts

I fixed a problem where inherited large values could fail during branch upserts. Now branch upserts read the complete head-over-base view and preserve verified inherited large-value descriptors.

retry-safe Inspector saves

I fixed a problem where retrying an ambiguously acknowledged insert could issue a second insert with the same UUID. Now a submitted insert keeps one stable UUID and is never submitted as a second insert.