Table of Contents

v1.1.5 "Kiban" - Foundation Strengthening

Release Date: July 21, 2025
Code Name: "Kiban" (基盤 - Foundation)
Type: Minor Release


🎯 Overview

Version 1.1.5 strengthens the foundation of Jiro.Shared by introducing a base class for client implementations. This release simplifies the development of Jiro clients by providing automatic SignalR event wiring and comprehensive logging capabilities, reducing boilerplate code and improving observability.

✨ Features Added

  • JiroClientBase Abstract Class: New base class that automatically wires up SignalR hub events to IJiroClient interface events.
  • Automatic Event Wiring: Eliminates the need for manual SignalR event registration in client implementations.
  • Built-in Logging Support: Comprehensive logging for all WebSocket events with before/after execution tracking.
  • Constructor Flexibility: Optional logger parameter allows for custom logging implementations.

🐛 Bug Fixes

  • N/A (No user-facing bugs fixed in this release)

🔄 Changes

New Components

  • JiroClientBase.cs: Abstract base class providing:
    • Automatic SignalR hub connection event wiring
    • Structured logging for all events
    • Protected hub connection access for derived classes
    • Virtual initialization and cleanup methods

Logging Enhancements

  • All events now log with structured format:
    • [INF] {EventName} received - When an event is triggered
    • [INF] {EventName} executed - After successful execution
  • Optional logger injection through constructor

🛠️ Technical Details

  • Non-Breaking Change: Existing IJiroClient implementations continue to work unchanged.
  • Inheritance Model: New clients can inherit from JiroClientBase for simplified implementation.
  • Exception Handling: Throws NotImplementedException for unhandled events, ensuring proper implementation.
  • Performance: Minimal overhead with optional logging (null-checked).

💻 Usage Example

// Simple client implementation with automatic event wiring
public class MyJiroClient : JiroClientBase
{
    public MyJiroClient(HubConnection connection, ILogger<MyJiroClient> logger) 
        : base(connection, logger)
    {
        // Events are automatically wired up!
        CommandReceived += async (command) => 
        {
            // Handle command
        };
        
        LogsRequested += async (request) => 
        {
            // Return logs
            return new LogsResponse { /* ... */ };
        };
    }
}

🚀 Deployment

  • Version 1.1.5 has been built, tested, and is ready for deployment to NuGet.org.
  • All tests pass on .NET 9.0 runtime.
  • Package metadata updated with latest version information.

Note: This release strengthens the foundation of client implementations, making it easier and faster to build robust Jiro clients with proper logging and event handling out of the box.