Table of Contents

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.