I Shipped...

19 September 2026 (6PRs)

match starter auth settings

I made the auth provider and Jazz server use matching issuer and audience settings in the starters, and wired the development Inspector into the Next setup.

keep WebSocket limits per server

I moved WebSocket connection limits and cleanup into each server, so one server's clients no longer count against or evict another server's clients.

keep successful workspace lookups

I kept a successful package lookup available when the alternate workspace lookup fails, without changing validation or result ordering.

keep BYTEA filters after URL sharing

I made binary equality filters survive saving and reopening a query URL by restoring their bytes as binary values instead of plain objects.

delete restored rows again

I fixed delete checks to look at the row's current state, so a row that was restored can be deleted again while already-deleted rows still stay protected.

cancel stalled transactions safely

I made cancelling a transaction with a stalled read release later queued work, while preserving the order used to prepare and commit transactions.

18 September 2026 (1PR)

Inspector auto attach for session providers

I enabled the development Inspector for both JazzProvider and JazzSessionProvider, while keeping an explicit option to turn it off.

17 September 2026 (13PRs)

wake writes blocked by abandoned publications

I made later queued writes wake up and fail when an earlier publication is abandoned, instead of leaving them waiting forever or sending them out of order.

validate public schema references

I made schema conversion reject references to undeclared tables or malformed source columns, while still allowing a valid reference to a row that has not been added yet.

use the project's Kotlin version

I made the Android plugin use the consuming app's Kotlin version when available, with the package version as a fallback, and kept the standard library version in step.

reserve schema magic column names

I made schema conversion reject user columns beginning with the reserved dollar marker, while leaving ordinary column names valid.

reject duplicate scalar enum options

I made every way of loading scalar enums reject repeated option names, while preserving the order of distinct options.

reject duplicate legacy tables

I made schema conversion stop with a clear error when a legacy schema declares the same table twice, before one definition can silently replace the other.

preserve payload enum field defaults

I kept nullable and defaulted fields accurately represented when inferring the values needed to create payload enums.

keep Inspector usable after storage errors

I made saved-connection storage best-effort, so a browser storage error no longer prevents the Inspector from using the newly selected connection.

keep Inspector bigints exact

I made the Inspector display and edit large integers without rounding them, and kept an explicitly selected empty value distinct from a field that was left untouched.

Inspector clients close after setup fails

I made Inspector setup shut down clients it created when setup fails or is abandoned, while keeping the original setup error visible.

enum defaults match declared values

I made schema conversion reject enum defaults that are not declared, and keep valid text defaults as text values.

empty membership filters match nothing

I made an empty prepared IN filter resolve to false before execution, while preserving its behaviour when negated.

clear errors for unsupported payload enums

I made unsupported payload enum values return clear query errors, while keeping supported record values working.