Features
Disable outbound HTTP requests from modules
Standalone operators can now disable module-originated HTTP requests with the [module-http] enabled = false configuration setting. This provides an explicit deployment-level control for environments where modules should not be allowed to access external HTTP services.
(#5774)
Improved .NET version and host OS handling
spacetime init and spacetime dev now choose a compatible .NET target based on the host OS: .NET 10 on Windows and Linux, and .NET 8 on macOS. C# build, generation, development, and publish commands now report incompatible host and .NET combinations clearly. This also fixes duplicate package references in .NET 8 NativeAOT module projects.
(#5571)
Bug Fixes
Preserve acknowledged transactions across commitlog maintenance
Commitlog segment rotation and compression now durably sync newly installed segment files and their containing directory. Previously, a power loss in a narrow window after a segment was renamed could lose transactions that had already been acknowledged as durable; compression could similarly replace a durable segment without fully persisting the replacement. The updated persistence path preserves the confirmed-read durability guarantee across crashes.
(#5785)
TypeScript SDK preserves identity during automatic reconnect
The TypeScript SDK now reuses the identity token issued during a first-time anonymous connection when automatically reconnecting. Previously, if the initial connection was created without a stored token, a later reconnect could request a new anonymous identity and silently lose access to data associated with the original identity. Explicit connection rebuilds can still change identity as intended.
(#5761)
Improve WebSocket liveness and idle timeout handling
Any client data now counts as WebSocket activity and extends the idle deadline, rather than requiring a pong specifically. Idle connections are closed with a proper close handshake and an idle timeout reason, with a grace period before forced teardown. This improves liveness detection and gives clients a clear reason for disconnection.
(#5517)
Fix C++ index queries with three or more columns
C++ multi-column index scans now correctly support exact prefixes followed by an optional terminal range across indexes with three or more columns. Invalid queries with a non-terminal range are rejected at compile time, and index iterator buffering now handles large result payloads correctly.
(#5565)
Fix Unity static state reset and WebGL builds
The C# SDK now resets generated generic table-handle static state through a non-generic Unity initialization path, fixing Play Mode behavior when domain reload is disabled. The missing IEnumerator import used by Unity WebGL message parsing has also been restored.
Clean up SDK state after errors and disconnections
The C# SDK now clears outstanding request tracking and pending operations when connections fail, removes failed subscriptions, and rejects one-off queries immediately when disconnected. This prevents stale state and memory from accumulating across error and reconnect paths.
(#5794)
What's Changed
- Add configuration for disabling module outbound HTTP requests in #5774
- Improve WebSocket liveness checks and idle timeout handling in #5517
- Preserve acknowledged transactions across commitlog rotation and compression in #5785
- Improve .NET version and host OS handling in #5571
- Preserve TypeScript client identity tokens during automatic reconnect in #5761
- Fix Unity static state resetting for generic types in #5738
- Fix Unity WebGL
IEnumeratorimport in #5792 - Clean up C# SDK state after errors and disconnections in #5794
- Fix C++ multi-column queries with three or more columns in #5565
Full Changelog: v2.8.3...v2.9.0