v0.14.0
What's Changed
Subscription streams are now budgeted per authorized peer alongside the server-wide cap, and a store reused across transports serves live streams again. A concurrent close() blocks until the close settles on every transport, and ClientBuilder refuses registration after build(). The extension contracts move under Server\Extension and Client\Extension (see BREAKING_CHANGES.md).
Changed
ClientBuilderrefuses every registration afterbuild(), matchingServerBuilder.SubscriptionStoreInterfacegainsreopen(), called byServeron attach, so a store reused on a new transport serves live streams again. See BREAKING_CHANGES.md.- A concurrent
close()on the HTTP transports andInMemoryTransportnow blocks until the close settles, matching stdio, andTransportInterface::close()documents the guarantee. - The extension contracts move into
Server\ExtensionandClient\Extension, mirroringCore\Extension. See BREAKING_CHANGES.md.
Security
SubscriptionStorebudgets streams per authorized peer (maxSubscriptionsPerPeer, default 256), so one OAuth client cannot exhaust the server-wide subscription cap. See BREAKING_CHANGES.md.
Full Changelog: v0.13.0...v0.14.0