diff --git a/CHANGELOG.md b/CHANGELOG.md index abe5c9e..dfdbaf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,108 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.0.0] - 2025-10-25 + +### Breaking Changes + +- **REST API Integration**: Core architecture modified to support REST API functionality + - Changes to internal APIs for download management and tracking + - Title and track classes updated with API integration points + - Core component interfaces modified for queue management support +- **Configuration Changes**: New required configuration options for API and enhanced features + - Added `simkl_client_id` now required for Simkl functionality + - Service-specific configuration override structure introduced + - Debug logging configuration options added +- **Forced Subtitles**: Behavior change for forced subtitle inclusion + - Forced subs no longer auto-included, requires explicit `--forced-subs` flag + +### Added + +- **REST API Server**: Complete download management via REST API (early development) + - Implemented download queue management and worker system + - Added OpenAPI/Swagger documentation for easy API exploration + - Included download progress tracking and status endpoints + - API authentication and comprehensive error handling + - Updated core components to support API integration + - Early development work with more changes planned +- **CustomRemoteCDM**: Highly configurable custom CDM API support + - Support for third-party CDM API providers with maximum configurability + - Full configuration through YAML without code changes + - Addresses GitHub issue #26 for flexible CDM integration +- **WindscribeVPN Proxy Provider**: New VPN provider support + - Added WindscribeVPN following NordVPN and SurfsharkVPN patterns + - Fixes GitHub issue #29 +- **Latest Episode Download**: New `--latest-episode` CLI option + - `-le, --latest-episode` flag to download only the most recent episode + - Automatically selects the single most recent episode regardless of season + - Fixes GitHub issue #28 +- **Service-Specific Configuration Overrides**: Per-service fine-tuned control + - Support for per-service configuration overrides in YAML + - Fine-tuned control of downloader and command options per service + - Fixes GitHub issue #13 +- **Comprehensive JSON Debug Logging**: Structured logging for troubleshooting + - Binary toggle via `--debug` flag or `debug: true` in config + - JSON Lines (.jsonl) format for easy parsing and analysis + - Comprehensive logging of all operations (session info, CLI params, CDM details, auth status, title/track metadata, DRM operations, vault queries) + - Configurable key logging via `debug_keys` option with smart redaction + - Error logging for all critical operations + - Removed old text logging system +- **curl_cffi Retry Handler**: Enhanced session reliability + - Added automatic retry mechanism to curl_cffi Session + - Improved download reliability with configurable retries +- **Simkl API Configuration**: New API key support + - Added `simkl_client_id` configuration option + - Simkl now requires client_id from https://simkl.com/settings/developer/ + +### Changed + +- **Binary Search Enhancement**: Improved binary discovery + - Refactored to search for binaries in root of binary folder or subfolder named after the binary + - Better organization of binary dependencies +- **Type Annotations**: Modernized to PEP 604 syntax + - Updated session.py type annotations to use modern Python syntax + - Improved code readability and type checking + +### Fixed + +- **Config Directory Support**: Cross-platform user config directory support + - Fixed config loading to properly support user config directories across all platforms + - Fixes GitHub issue #23 +- **HYBRID Mode Validation**: Pre-download validation for hybrid processing + - Added validation to check both HDR10 and DV tracks are available before download + - Prevents wasted downloads when hybrid processing would fail +- **TMDB/Simkl API Keys**: Graceful handling of missing API keys + - Improved error handling when TMDB or Simkl API keys are not configured + - Better user messaging for API configuration requirements +- **Forced Subtitles Behavior**: Correct forced subtitle filtering + - Fixed forced subtitles being incorrectly included without `--forced-subs` flag + - Forced subs now only included when explicitly requested +- **Font Attachment Constructor**: Fixed ASS/SSA font attachment + - Use keyword arguments for Attachment constructor in font attachment + - Fixes "Invalid URL: No scheme supplied" error + - Fixes GitHub issue #24 +- **Binary Subdirectory Checking**: Enhanced binary location discovery (by @TPD94, PR #19) + - Updated binaries.py to check subdirectories in binaries folders named after the binary + - Improved binary detection and loading +- **HLS Manifest Processing**: Minor HLS parser fix (by @TPD94, PR #19) +- **lxml and pyplayready**: Updated dependencies (by @Sp5rky) + - Updated lxml constraint and pyplayready import path for compatibility + +### Refactored + +- **Import Cleanup**: Removed unused imports + - Removed unused mypy import from binaries.py + - Fixed import ordering in API download_manager and handlers + +### Contributors + +This release includes contributions from: + +- @Sp5rky - REST API server implementation, dependency updates +- @stabbedbybrick - curl_cffi retry handler (PR #31) +- @TPD94 - Binary search enhancements, manifest parser fixes (PR #19) +- @scene (Andy) - Core features, configuration system, bug fixes + ## [1.4.8] - 2025-10-08 ### Added @@ -179,7 +281,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- **Matroska Tag Compliance**: Enhanced media container compatibility +- **Matroska Tag Compliance**: Enhanced media container compatibility - Fixed Matroska tag compliance with official specification - **Application Branding**: Cleaned up version display - Removed old devine version reference from banner to avoid developer confusion