# SmartPool Changelog All notable changes to the SmartPool project. ## [1.1.0] - 2026-01-22 ### Changed - Cluster-Based Mapping #### Database Schema - ✅ Changed `proxy_access_mapping` table from proxy_id to cluster-based mapping ```sql -- Before proxy_access_mapping (access_token, proxy_id, priority) -- After proxy_access_mapping (access_token, cluster, priority) ``` #### Benefits - **Scalability**: Add/remove proxies without updating mappings - **Flexibility**: Group proxies logically by cluster - **Maintainability**: Fewer mapping records to manage - **Performance**: Simpler queries, better index utilization #### Breaking Changes - `IProxyMetadataRepository.AddAccessMappingAsync()` signature changed: ```csharp // Before Task AddAccessMappingAsync(string accessToken, int proxyId, ...); // After Task AddAccessMappingAsync(string accessToken, string cluster, ...); ``` - HTTP API endpoint parameter changed: ```bash # Before POST /api/smart-pool/v1/SmartProxy/access-mapping/add?accessToken=token&proxyId=123 # After POST /api/smart-pool/v1/SmartProxy/access-mapping/add?accessToken=token&cluster=cluster_vn_http ``` #### Migration Guide 1. **Export existing mappings** (if any): ```sql SELECT access_token, proxy_id, priority FROM old_proxy_access_mapping; ``` 2. **Identify proxy clusters**: ```sql SELECT DISTINCT cluster, country, protocol FROM smart_pool_meta.proxy_metadata FINAL; ``` 3. **Create cluster mappings**: ```sql INSERT INTO smart_pool_meta.proxy_access_mapping SELECT DISTINCT old.access_token, p.cluster, old.priority FROM old_mappings old INNER JOIN smart_pool_meta.proxy_metadata FINAL p ON old.proxy_id = p.id; ``` 4. **Update application code**: - Change API calls from `proxyId` to `cluster` - Update any direct database queries #### Files Modified - `src/Icomm.API.SmartPool/clickhouse_init.sql` - `src/Icomm.API.SmartPool/Repositories/IProxyMetadataRepository.cs` - `src/Icomm.API.SmartPool/Repositories/Impl/ProxyMetadataRepository.cs` - `src/Icomm.API.SmartPool/Controllers/v1/SmartProxyController.cs` #### Documentation Added - `SMARTPOOL_CLUSTER_MAPPING.md` - Comprehensive cluster mapping guide --- ## [1.0.0] - 2026-01-22 ### Added - Initial Release #### Projects Created - `Icomm.SmartPool.Abstractions` - Shared interfaces and models - `Icomm.API.SmartPool` - API Backend (gRPC + HTTP) - `Icomm.SmartPool.Proxy` - Client SDK - `Icomm.SmartPool.Tests` - Unit tests #### Features - **5 Proxy Selection Strategies**: - Random: Random selection - Round Robin: Load balancing - Least Delay: Fastest proxy - Adaptive Ranking: Highest success rate - Alternative: Similar proxy replacement - **Dual Protocol Support**: - gRPC (MagicOnion) - High performance - HTTP REST API - Standard web API - **ClickHouse Integration**: - Separated databases: `smart_pool_meta` and `smart_pool_logs` - High-performance logging - Automatic aggregation with Materialized Views - 90-day TTL on logs - **Client SDK**: - Easy integration via DI - Support both gRPC and HTTP - IWebProxy support for HttpClient #### Dependencies - .NET 8.0 - MagicOnion 6.1.7 - ClickHouse.Client 7.14.0 - EasyCaching.Redis 1.9.2 - Dapper 2.1.35 - Serilog 8.0.1 #### Documentation - `SMARTPOOL_README.md` - Main overview - `SMARTPOOL_IMPLEMENTATION_SUMMARY.md` - Implementation details - `SMARTPOOL_USAGE_EXAMPLES.md` - Usage examples - `SMARTPOOL_QUICK_REFERENCE.md` - Quick reference - `SMARTPOOL_DATABASE_SEPARATION.md` - Database architecture - `SMARTPOOL_UPGRADE_NOTES.md` - HttpToSocks5Proxy upgrade notes --- ## [0.9.0] - 2026-01-22 (Pre-release) ### Added - HttpToSocks5Proxy upgraded to .NET 8.0 (v2.0.0) - Project structure and dependencies setup - ClickHouse schema design - Strategy pattern implementation --- ## Versioning This project follows [Semantic Versioning](https://semver.org/): - **MAJOR**: Incompatible API changes - **MINOR**: New functionality (backwards compatible) - **PATCH**: Bug fixes (backwards compatible) ## Release Notes Format Each release includes: - **Added**: New features - **Changed**: Changes in existing functionality - **Deprecated**: Soon-to-be removed features - **Removed**: Removed features - **Fixed**: Bug fixes - **Security**: Security improvements --- **Last Updated**: 2026-01-22