Changelog
All notable changes to SignalARRR will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[4.0.0] - Unreleased
Breaking Changes
- Target framework changed from
netstandard2.0tonet10.0 ImpromptuInterfaceremoved — replaced by source-generated proxies and opt-inDispatchProxyfallback- Proxy creation now requires
[SignalARRRContract]attribute on interfaces (or referenceCocoar.SignalARRR.DynamicProxyfor runtime fallback) - Custom
IAuthenticatorinterface removed — use ASP.NET Core authentication handlers and[Authorize]policies instead - HTTP Proxy pass-through feature removed (deferred to Phase 2)
netstandard2.0target dropped — all packages now targetnet10.0(except SourceGenerator which targetsnetstandard2.0per Roslyn requirements)- Hub-level
[Authorize]inheritance restored: if the Hub class has[Authorize], ServerMethods classes inherit it automatically (behavior change from v2.x where this was disabled)
Added
- Source Generator: Compile-time proxy generation from
[SignalARRRContract]interfaces — zero reflection, AOT-friendly Cocoar.SignalARRR.Contracts: Single-reference meta-package for shared interface projects (attribute + generator + ProxyGenerator)Cocoar.SignalARRR.DynamicProxy: Opt-inDispatchProxy-based runtime fallback for plugin/dynamic scenarios- CancellationToken server-to-client propagation: Server can pass
CancellationTokento client methods and cancel remotely ServerProxyCreatorHelper.StreamAsync<T>: Server can requestIAsyncEnumerable<T>streams from client methodsServerStreamManager: Channel-based stream correlation for server-initiated client streamsStreamItemToServer/StreamCompleteToServerhub methods for client-to-server stream item deliveryClientManagertyped extensions:GetTypedMethods<T>(connectionId)for server-to-client RPC from outside hub context- Authorization integration tests: Tests for authenticated calls, unauthenticated rejection, and hub-level auth inheritance
TreatWarningsAsErrors: Enabled globally viaDirectory.Build.props
Removed
ImpromptuInterfacedependencynetstandard2.0target / polyfill packages (Microsoft.Bcl.AsyncInterfaces,System.Threading.Channels, etc.)SignalARRRDynamicProxy.csandStreamingType.csfrom ProxyGenerator (replaced by DispatchProxy package)- Non-generic
Invoke(Type returnType, ...)overloads fromClientProxyCreatorHelperandServerProxyCreatorHelper - Old
RegisterMethodsclient-side registration API (replaced byRegisterInterface) - Custom
IAuthenticatorinterface andTryAuthenticate/SetAuthDataonClientContext
[2.1.2] - Previous Release
Features
- Split hub methods across multiple classes via
ServerMethods<T> - Method-level authorization with
[Authorize]attribute - Continuous token validation with automatic challenge/refresh
- Server-to-client RPC with response awaiting
- Support for
IObservable<T>,IAsyncEnumerable<T>, andChannelReader<T>streaming - Type-safe client proxies from interfaces
- Multi-platform support (Server, .NET Client, TypeScript Client)