3.0.0 (2025-12-02)
⚠ BREAKING CHANGES
-
SchedulerJobThread now requires worker_id parameter for proper distributed lock functionality
-
refactor(tasks): consolidate duplicated Redis status update functions into shared utils
Extract the duplicated _update_redis_status function from multiple job files
(cleanup_job, statistics_job, task_status_job, webdav_job) into a new shared
app.tasks.utils.update_redis_status function to eliminate code duplication
and improve maintainability. Also refactor the scheduler's _update_scheduler_status
function by extracting helper functions for better code organization.
- refactor(backend): enhance service health checks and infrastructure resilience
- Add health check endpoints (/health/live, /health/ready) with Redis, Supabase, and PikPak status validation
- Implement structured logging with correlation IDs for better observability
- Add connection pooling for Redis client with 50 max connections
- Integrate Flask-Limiter for API rate limiting (2000/day, 500/hour)
- Configure Docker healthchecks with curl-based readiness probes
- Add request timeout handling for PikPak operations (60s default)
- Implement graceful shutdown handlers for SIGINT/SIGTERM signals
- Optimize database queries with indexes on statistics and actions tables
- Configure automatic container restart policies for improved uptime
- refactor(backend): enhance service resilience with circuit breaker and multi-tier caching
- Add circuit breaker pattern to PikPak API calls for improved fault tolerance
- Implement exponential backoff retry logic with jitter for better error recovery
- Create multi-tier caching system (Redis → Disk → Memory) with LRU eviction
- Optimize Dockerfile build process with better layer caching and dependency management
- Parallelize statistics collection API calls for improved performance
- Add worker ID support to scheduled job threads
- Include new dependencies: flask-limiter, flask-compress, pybreaker
These changes significantly improve backend service reliability, performance, and caching efficiency while maintaining backward compatibility.
- refactor(backend): improve logging configuration and reduce verbosity across services
- Add environment-based log level configuration in app factory
- Reduce verbosity of third-party loggers (httpx, apscheduler, werkzeug)
- Implement worker-specific log filtering for multi-worker Gunicorn deployments
- Add Flask gzip compression support
- Clean up duplicate logging configurations across modules
- Set appropriate log levels for WebDAV and other components
- Add WORKER_ID environment variable for worker identification
- Improve error handling and cooldown logging in auth module
- Standardize code formatting and indentation across auth module
- refactor(auth): convert async methods to synchronous
Convert authentication methods from async to synchronous implementation and standardize login state file handling with constants.
- refactor(health): improve health check structure with helper functions
- Extract Redis, Supabase, and PikPak health check functions
- Consolidate health check logic into _perform_health_checks helper
- Add comprehensive docstrings for endpoint purposes
- Adjust docker-compose healthcheck interval from 30s to 2m
These changes improve code maintainability by separating concerns and making the health check logic more modular and easier to test.