2.7 KiB
2.7 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelong, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Project scaffold with uv, pre-commit, ruff, and conventional commits
- Database infrastructure: async SQLAlchemy 2.0 with asyncpg driver
- Proxy domain models: ProxySource, Proxy, ProxyCheck, ProxyTag
- Accounts domain models: User, ApiKey, CreditLedger, ProxyLease
- Alembic async migration setup with initial schema
- Pydantic-settings configuration module
- Integration test infrastructure with per-test rollback
- Update configuration into subgroups
- Plugin system: Protocol contracts, registry with validation, event bus
- Plugin auto-discovery via importlib package scanning
- Built-in plugins: plaintext parser, TCP connect checker, SMTP notifier
- Plugin discovery integration tests
- FastAPI app factory with lifespan (database, Redis, plugin discovery)
- Health check endpoint
- Proxy source CRUD routes (list, create, get, update, delete)
- FastAPI dependency providers for database session, Redis, and plugin registry
- Pydantic schemas for proxy domain
- Proxy query endpoint with filtering by status, protocol, anonymity, country, score, latency, uptime
- Sorting and pagination for proxy listings
- Proxy service layer with upsert and query functions
- User registration with API key generation
- API key authentication via Bearer token
- Credit ledger with balance queries
- API key management (create, list, revoke)
- Account info and credit history endpoints
- Proxy acquire endpoint with atomic lease creation via Redis
- Credit debit on acquisition with balance verification
- Proxy release endpoint with immediate lease cleanup
- Lease audit trail in PostgreSQL
- ARQ worker with startup/shutdown lifecycle
- Scrape tasks: scrape_source, scrape_all
- Validation tasks: validate_proxy with staged pipeline, revalidate_sweep
- Cleanup tasks: prune_dead_proxies, prune_old_checks, expire_leases
- Cron schedules for all periodic tasks
- Production Dockerfile with multi-stage uv build
- Test Dockerfile with dev dependencies
- Docker Compose test stack with ephemeral Postgres (tmpfs)
- Database reset script for local development
- Makefile with common development commands
- Manual scrape trigger endpoint: POST /sources/{id}/scrape
- Protocol-prefix parser plugin for socks5://ip:port format
- HTTP anonymity checker plugin (stage 2) with exit IP detection
- SOCKS4/5 support via httpx-socks transport
- Anonymity level classification (transparent/anonymous/elite)
Changed
- Centralized test fixtures in conftest.py
- Integration tests use shared client fixture