# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelong](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [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 ### Changed - Centralized test fixtures in conftest.py - Integration tests use shared client fixture