v1.2.2 "Tsuiseki" - Stream Request Tracking
Release Date: July 24, 2025
Code Name: "Tsuiseki" (追跡 - Tracking/Tracing)
Type: Patch Release
🎯 Overview
Version 1.2.2 enhances the streaming architecture with request ID tracking and improves the separation between server-to-client and client-to-server methods. This release provides better traceability for streaming operations and cleaner architectural boundaries in the hub implementation.
🛠️ Technical Details
Request ID Tracking for Streams
All streaming operations now include request ID tracking, enabling:
- Better correlation between stream requests and responses
- Improved debugging and monitoring capabilities
- Enhanced error tracking for streaming operations
Method Separation in Hub
The hub implementation now clearly separates:
- Server-to-Client Methods: Operations initiated by the server
- Client-to-Server Methods: Operations initiated by the client
This separation provides:
- Clearer API boundaries
- Better security modeling
- Improved maintainability
🔄 Changes
Streaming Infrastructure
- Request ID Support: All stream requests now include tracking identifiers
- Method Organization: Clear separation of directional methods in hub implementation
- Improved Traceability: Enhanced logging and debugging for streaming operations
Architecture Improvements
- Cleaner Boundaries: Distinct separation between server and client initiated operations
- Better Organization: Methods grouped by communication direction
- Enhanced Clarity: More intuitive API structure for developers
💻 Usage Examples
Stream Request with Tracking
// Server initiates stream request with tracking
var requestId = Guid.NewGuid().ToString();
await hubConnection.InvokeAsync("RequestLogsStreamAsync", new GetLogsRequest
{
SessionId = "session-123",
Count = 100,
RequestId = requestId // Now tracked throughout the stream lifecycle
});
// Client can correlate responses using the request ID
LogsStreamRequested += async (request) =>
{
logger.LogInformation($"Processing stream request: {request.RequestId}");
await ReceiveLogsStreamAsync(GetLogStreamAsync(request));
};
Hub Method Organization
public class JiroHub : Hub<IJiroClient>
{
// Server-to-Client Methods
public async Task NotifyClientAsync(Notification notification) { }
public async Task RequestClientDataAsync(DataRequest request) { }
// Client-to-Server Methods
public async Task ReceiveLogsStreamAsync(IAsyncEnumerable<LogEntry> stream) { }
public async Task UpdateConfigurationAsync(Configuration config) { }
}
🚀 Deployment
- Version 1.2.2 maintains full backward compatibility
- No breaking changes to public APIs
- Existing streaming operations continue to work without modification
- Request ID is optional for backward compatibility
🔮 Future Considerations
- Request ID tracking foundation enables future distributed tracing support
- Method separation prepares for potential security enhancements
- Improved organization facilitates future API expansions
Note: This release focuses on internal improvements and architectural refinements. While there are no breaking changes, the enhanced tracking and organization provide a stronger foundation for future streaming enhancements.