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.