|
113 | 113 | - **models**: Allow proxy host to be an IP or a hostname |
114 | 114 | - **proxy**: Add url property to handle auth and simplify usage |
115 | 115 | - **manager**: return Lease from acquire_proxy |
| 116 | + |
| 117 | +## v0.8.0 (2026-03-26) |
| 118 | + |
| 119 | +### Feat |
| 120 | + |
| 121 | +- **storage**: add CRUD methods to IStorage, IAsyncStorage and all adapters |
| 122 | + |
| 123 | +## v0.7.0 (2026-03-24) |
| 124 | + |
| 125 | +### Feat |
| 126 | + |
| 127 | +- add AsyncPostgresStorage backed by SQLAlchemy async + asyncpg |
| 128 | + |
| 129 | +## v0.6.0 (2026-03-24) |
| 130 | + |
| 131 | +### Feat |
| 132 | + |
| 133 | +- Sprint 4 — async storage interface, tracing callbacks, and Grafana dashboard |
| 134 | +- Sprint 3 — observability, concurrency tests, and production docs |
| 135 | +- add RetryConfig, add_proxies_bulk, and storage debug logging |
| 136 | + |
| 137 | +### Refactor |
| 138 | + |
| 139 | +- add custom exceptions, type safety fixes, and geo utility |
| 140 | + |
| 141 | +## v0.5.0 (2025-11-24) |
| 142 | + |
| 143 | +### Feat |
| 144 | + |
| 145 | +- add observability helpers |
| 146 | +- add benchmark harness |
| 147 | +- **filters**: support composite expressions |
| 148 | +- **manager**: add retry helpers |
| 149 | +- **storage**: add selector strategies for leasing |
| 150 | + |
| 151 | +### Fix |
| 152 | + |
| 153 | +- expose demo metrics on default registry |
| 154 | +- pin grafana prometheus datasource uid |
| 155 | +- export health check strategy |
| 156 | +- use synthetic health checks in demo |
| 157 | +- assign ids to demo proxies |
| 158 | +- seed proxies with uuids |
| 159 | +- seed pool ids in production template |
| 160 | +- create tables in production template |
| 161 | +- include readme in worker build |
| 162 | + |
| 163 | +## v0.4.0 (2025-11-08) |
| 164 | + |
| 165 | +### Feat |
| 166 | + |
| 167 | +- **storage**: embed postgres adapter into package |
| 168 | +- **tests**: add storage contract suite and postgres extra |
| 169 | +- add postgres storage adapter template |
| 170 | +- enrich proxy callbacks with telemetry payloads |
| 171 | +- add async helpers for ProxyManager |
| 172 | +- **utils**: add storage bootstrap helpers |
| 173 | +- **manager**: add acquire and release callbacks |
| 174 | +- **health,storage**: add health check orchestrator |
| 175 | +- **manager,storage**: add lease context helper and allow zero ASN |
| 176 | +- **manager**: validate lease duration input |
| 177 | +- **manager**: auto-register default consumer |
| 178 | +- redesign health checking toolkit |
| 179 | +- add geospatial filtering and toolkit exports |
| 180 | +- **storage**: Implement thread-safe InMemoryStorage adapter |
| 181 | +- **health**: Add error_message to HealthCheckResult for better diagnostics |
| 182 | +- Implement stream_health_checks and its tests |
| 183 | +- Add HealthChecker and update IStorage for health checks |
| 184 | +- Implement asynchronous proxy health checker |
| 185 | +- Add automated changelog generation with commitizen |
| 186 | +- Implement concurrent proxy leasing |
| 187 | +- Implement acquire_proxy method in ProxyManager |
| 188 | +- Add ProxyManager and initial tests |
| 189 | +- Add ProxyManager class skeleton |
| 190 | +- Add Pydantic models and storage interface |
| 191 | +- Add CI/CD workflows and project documentation files |
| 192 | +- Configure project tools (ruff, pytest, mypy) |
| 193 | + |
| 194 | +### Fix |
| 195 | + |
| 196 | +- **storage**: allow zero ASN filter |
| 197 | +- **models**: bracket ipv6 hosts in proxy url |
| 198 | +- normalize proxy and target URLs |
| 199 | +- **tests**: Adapt integration tests to architectural changes |
| 200 | +- **tests**: Correctly mock httpx.AsyncClient in health checks |
| 201 | +- **health**: Correct httpx proxy usage for async checks |
| 202 | +- remove python 3.14 from test.yaml |
| 203 | +- Correct syntax in GitHub Actions workflows |
| 204 | + |
| 205 | +### Refactor |
| 206 | + |
| 207 | +- rename package to pharox |
| 208 | +- remove duplicate storage state and unused stats |
| 209 | +- **models**: Use Enum for proxy protocol validation |
| 210 | +- **models**: Rename 'last_checked_at' to 'checked_at' for clarity |
| 211 | +- **models**: Rename Client model to Consumer |
| 212 | +- **models**: Decouple authentication logic from core models |
| 213 | +- **api**: Use pool names in public API, while using IDs internally |
| 214 | +- **models**: Use pool_id foreign key instead of pool_name |
| 215 | +- **tests**: Remove obsolete mock-based tests in favor of integration tests |
| 216 | +- **models**: Use Annotated for field validation syntax |
| 217 | +- **storage**: Update to pydantic's model_copy method |
| 218 | +- **storage**: Temporarily remove health check methods from IStorage |
| 219 | +- **models**: Allow proxy host to be an IP or a hostname |
| 220 | +- **proxy**: Add url property to handle auth and simplify usage |
| 221 | +- **manager**: return Lease from acquire_proxy |
0 commit comments