Releases: henrique-coder/turbodl
🎉 TurboDL 0.7.0 - Critical Bug Fixes & Code Quality Improvements
📦 Summary
TurboDL is an extremely smart, fast, and efficient download manager designed to optimize your downloading experience.
❇️ Available for automatic installation at PyPI and manual installation at GitHub.
📋 Changes in this version:
Changed
- Build system updated to use
uv_build
for improved package building - Development instructions enhanced with prerequisite information for repository cloning
- README format improved with better organization and enhanced keywords
- Makefile updated to use
uv run
for lint and format commands consistently - Ruff command ordering optimized in format target for improved functionality
- Install command updated to include
--upgrade
flag for better dependency management - Demo GIF asset refreshed with updated visual demonstration
Added
uvicorn
added to development dependencies for enhanced development server support.env
file extension added to.gitignore
to prevent environment file tracking
Fixed
- Critical download functionality restored by resolving URL validation and connection issues
- Invalid URL format corrections in download tests for proper test execution
- Default connection speed configuration corrected in downloader fixture
- StreamSnapper object casing standardized throughout codebase
- Test file updates and invalid URL format corrections for reliability
- README instruction ordering improved for better user clarity
- StreamSnapper source updated to latest commit hash for compatibility
Removed
- Python 3.14 classifier and optional CLI dependency removed for stability
- CLI interface installation instructions removed from README for consistency
- Version constraints removed from StreamSnapper dependency for flexibility
📋 Commit History:
- fix: update click dependency to allow for newer versions
- fix: restore install target in Makefile and update help message
- fix: pin click dependency to version 8.1.8 for consistency
- fix: update Makefile to use 'uv run' for lint and format commands
- fix: update dependencies in pyproject.toml and uv.lock for compatibility
- fix: remove version constraint for streamsnapper dependency
- fix: remove Python 3.14 classifier and optional dependency for cli in pyproject.toml and uv.lock
- fix: remove CLI interface installation instruction from README.md
- fix: update streamsnapper dependency to version 0.3.1 and adjust source to PyPI
- fix: update click, typer, and ruff dependencies for compatibility
- fix: update pytest dependency to version 8.4.0 in pyproject.toml and uv.lock
- fix: update fastapi to version 0.115.13 and ruff to version 0.12.0 in pyproject.toml and uv.lock
- fix: reorder ruff commands in format target for improved functionality
- fix: update readme format, enhance keywords, and upgrade pytest to version 8.4.1 in pyproject.toml and uv.lock
- fix: update invalid URL in test_invalid_url
- fix: update development instructions to include prerequisites for cloning the repository
- fix: add .env file extension to .gitignore to prevent environment files from being tracked
- fix: update dependencies and sources in pyproject.toml and uv.lock
- fix: update demo.gif asset
- fix: update requests and urllib3 versions in uv.lock
- fix: update fastapi version to 0.116.0 in pyproject.toml and uv.lock
- fix: update fastapi to 0.116.1 and ruff to 0.12.3 in dependency groups
- fix: update ruff version to 0.12.4 in lint dependency group
- fix: update install command to include --upgrade flag
- fix: update starlette version to 0.47.2 and adjust source URLs
- chore: update ruff version to 0.12.5 in lint dependency group
- fix: update build system and dependencies to use uv_build and latest versions
- fix: add uvicorn into dev dependencies and update all libs
- fix: correct casing of StreamSnapper objects
- fix: update ruff version to 0.12.9 in lint dependency group
- fix: update ruff version to 0.12.9 in lint dependency group
- fix: correct default connection speed in downloader fixture
- fix: update test files and correct invalid URL format in download tests
- fix: update StreamSnapper source to latest commit hash
- fix: reorder instructions in README for clarity
- fix: .gitignore items order
- chore: update some libs
- chore: update to latest StreamSnapper commit hash
- docs: update preview gif
- docs: update gif command generator
- chore: update version to 0.7.0
- Merge pull request #25 from henrique-coder/dev
📊 Compare Changes
🎉 TurboDL 0.6.2 - Critical CLI Resolution & Python Versioning Update
📦 Summary
TurboDL is an extremely smart, fast, and efficient download manager designed to optimize your downloading experience.
❇️ Available for automatic installation at PyPI and manual installation at GitHub.
📋 Changes in this version:
Changed
- CI Python test matrix adjusted to support versions 3.10 through 3.13
- CI workflow steps and environment variable handling improved for clarity
- Version constraints for Typer and development dependencies loosened for flexibility
- Release job timeout in CI workflow reduced for security and stability
Fixed
- Critical CLI operational issues resolved by correcting Pydantic dependency version and configuration
📋 Commit History:
- fix: update dependency specifications to remove version constraints for consistency
- fix: improve clarity of CI workflow steps for Python and UV setup
- fix: update typer dependency to remove version constraint for flexibility
- fix: improve clarity of CI workflow steps for Python and UV setup
- fix: remove version constraints for development dependencies in pyproject.toml and uv.lock
- debug: update Python version matrix and improve UV step naming for clarity
- debug: update Python version matrix to include 3.13 and restore OS options for testing
- fix: add pydantic dependency to pyproject.toml and uv.lock for compatibility
- fix: update pydantic dependency version for compatibility
- fix: update pydantic dependency version to ensure compatibility
- debug: remove pydantic dependency from pyproject.toml and uv.lock
- fix: update CI workflow to maintain consistency in environment variables
- fix: restore original CI matrix for compatibility across platforms and Python versions
- fix: reduce timeout for release job to improve efficiency
- chore: update version to 0.6.2 in changelog, pyproject.toml, and uv.lock
- Merge pull request #24 from henrique-coder/dev
📊 Compare Changes
🎉 TurboDL 0.6.1 - CLI Stability & Python 3.14 Support
📦 Summary
TurboDL is an extremely smart, fast, and efficient download manager designed to optimize your downloading experience.
❇️ Available for automatic installation at PyPI and manual installation at GitHub.
📋 Changes in this version:
Added
- Support for Python 3.14 development versions in CI test matrix
- Python 3.14 classifier added to
pyproject.toml
for future compatibility
Changed
- CLI demo command updated to use
uv run
for operational consistency - Demo GIF and link for CLI updated in documentation with a new version
Fixed
- Critical CLI functionality restored by updating
click
dependency to version8.1.8
- Formatting of OS matrix in CI workflow configuration corrected
Dependencies
click
(transitive viatyper
) updated to version8.1.8
📋 Commit History:
- chore: add Python 3.14-dev to CI workflow matrix
- Merge pull request #21 from henrique-coder/dev
- style: fix formatting of OS matrix in CI workflow
- chore: add Python 3.14 to classifiers in pyproject.toml
- Merge pull request #22 from henrique-coder/dev
- fix: update CLI demo link and replace demo GIF with new version
- fix: update demo command to use 'uv run' for consistency
- fix: update click dependency version to 8.1.8 for compatibility
- chore: bump version to 0.6.1
- Merge pull request #23 from henrique-coder/dev
📊 Compare Changes
🎉 TurboDL 0.6.0 - New YouTube Support, `uv` Migration & Enhancements
📦 Summary
TurboDL is an extremely smart, fast, and efficient download manager designed to optimize your downloading experience.
❇️ Available for automatic installation at PyPI and manual installation at GitHub.
📋 Changes in this version:
Added
- New YouTube download support leveraging StreamSnapper for optimal stream selection
- Full project migration to
uv
for dependency and environment management (uv.lock
) - Optional installation extra:
[cli]
for CLI support - New
.python-version
file specifying Python 3.13 for consistent development
Changed
- Build system transitioned from Poetry-core to Hatchling for package building
- Project source code fully consolidated into
src/turbodl
directory structure - Makefile commands streamlined and help text improved for better usability
- README updated with YouTube feature details and improved installation instructions
- Internal comment terminology standardized to "Local modules" for code clarity
streamsnapper
dependency is now a core requirement for all installationstyper
dependency for CLI made optional, managed via the new[cli]
extra
Fixed
- Internal module import paths standardized to
src.turbodl
for consistency - Error handling improved for missing optional CLI dependencies at runtime
- Connection calculation logic in
calculate_max_connections
optimized - Unused
expected_hash
parameter removed fromdownload_single_file
method - Default Python interpreter in Makefile set to
python
for wider compatibility - File hashes for
urllib3
dependency updated to ensure integrity - Linting and formatting rules in
ruff.toml
updated and refined
Dependencies
ruff
updated to version^0.11.9
typer
updated to version^0.15.3
(now optional via[cli]
extra)urllib3
(transitive) updated to version2.4.0
via direct resolution
📋 Commit History:
- fix: update ruff version to 0.11.4 in poetry.lock and pyproject.toml
- fix: enhance install target in Makefile to support optional extras and improve help message
- fix: improve error handling for missing CLI dependencies in main.py
- fix: update typer dependency to be optional and add extras for cli and youtube
- fix: remove optional flag for streamsnapper and update related extras in pyproject.toml
- fix: update install target in Makefile to use poetry update instead of install
- fix: correct install target in Makefile to use poetry install instead of update
- fix: update urllib3 version to 2.4.0 and adjust related file hashes
- fix: optimize connection calculation in calculate_max_connections function
- feat: implement YouTube downloader with video and audio merging functionality with FFmpeg support
- Merge pull request #19 from henrique-coder/dev
- docs: update installation instructions to include CLI interface option
- fix: remove expected_hash parameter in download_single_file method calls
- chore: update ruff version to 0.11.6 in poetry.lock and pyproject.toml
- refactor: standardize comment terminology from "Local imports" to "Local modules"
- fix: change default Python version from python3 to python in Makefile
- chore: update packaging version from 24.2 to 25.0 in poetry.lock
- chore: update typer version to 0.15.3 and ruff version to 0.11.9 in pyproject.toml
- refactor: movev all project files to src/turbodl directory
- fix: update import paths to use src.turbodl for consistency
- add: .python-version file specifying Python version 3.13
- fix: update ruff.toml configuration for linting rules and formatting options
- docs: enhance README with YouTube support feature and improve parameter tables
- refactor: streamline Makefile commands and improve help text
- refactor: migrate from Poetry to Hatchling for build system configuration
- remove: poetry.lock file
- add: uv.lock file
- refactor: update lint and format commands to include json and yaml file types
- refactor: remove unnecessary blank line in CI workflow
- fix: remove empty lines from changelog extraction in release workflow
- chore: update version to 0.6.0 in changelog, pyproject.toml, and uv.lock
- refactor: streamline CI workflow by removing Poetry setup and using uv for dependency management
- chore: update UV setup action to version 6 in CI workflow
- refactor: replace Poetry with UV for test execution in Makefile and CI workflow
- refactor: standardize uv setup steps in CI workflow
- Merge pull request #20 from henrique-coder/dev
📊 Compare Changes
🎉 TurboDL 0.5.2 - Enhanced HTTP Features & Connection Management
📦 Summary
TurboDL is an extremely smart, fast, and efficient download manager designed to optimize your downloading experience.
❇️ Available for automatic installation at PyPI and manual installation at GitHub.
📋 Changes in this version:
Changed
- Streamlined HTTP client initialization and enhanced file info fetching logic
- Updated RemoteFileInfo size type to allow "unknown" and improved URL validation
- Simplified argument annotations for better code clarity
- Enhanced documentation for clarity and consistency
Added
- Inactivity timeout option to download command for improved connection management
- Enhanced timeout configuration for HTTP client with better handling of stalled connections
- Updated default HTTP headers for improved content negotiation and security
- Memory optimization feature added through ChunkBuffer's reset_buffer method
- UnidentifiedFileSizeError exception for more graceful handling of unknown file sizes
Fixed
- Reduced maximum RAM usage constant from 30% to 20% for better system compatibility
- Enhanced file size input handling in download method
- Updated installation instructions for clarity
- Simplified downloader functionality for reliability
Dependencies
- Updated ruff to version 0.11.3
- Updated rich package to version 14.0.0
- Updated typing-extensions to version 4.13.0
- Updated pytest to version 8.3.5
- Updated typer to version 0.15.2
- Updated tenacity to version 9.1.2
- Updated pydantic to version 2.11.1
- Updated dependencies for anyio and iniconfig
📋 Commit History:
- chore: update dependencies for anyio, iniconfig, ruff to latest versions
- refactor: improve argument annotations in download_retry_decorator wrapper function
- chore: update ruff dependency to version 0.11.2 in poetry.lock and pyproject.toml
- refactor: remove setup-venv target from Makefile for simplicity
- chore: update typing-extensions dependency to version 4.13.0 in poetry.lock
- refactor: simplify argument annotations in various functions and classes
- Merge pull request #14 from henrique-coder/dev
- feat: add inactivity timeout option to download command
- fix: update .gitignore to include server directory
- feat: add FastAPI to development dependencies
- feat: add FastAPI to poetry.lock file
- fix: enhance file size input handling in download method
- fix: simplify downloader fixture by removing unnecessary parameters
- docs: update installation instructions in README.md for clarity
- Merge pull request #15 from henrique-coder/dev
- fix: update release workflow for improved clarity and security
- fix: simplify CI workflow by refining test reporting and enhancing Python version matrix
- fix: refine CI workflow by updating Python version matrix and improving test result reporting
- fix: enhance CI workflow by refining test status reporting and simplifying result handling
- fix: enhance CI workflow by updating job configurations and improving test result handling
- fix: simplify CI workflow by removing unnecessary permissions and steps
- fix: enhance CI workflow by adding caching for Poetry and its dependencies
- fix: update pydantic version to 2.11.1 and refresh associated files
- fix: update caching paths and streamline Poetry installation in CI workflows
- fix: streamline CI workflows by removing caching steps and updating installation methods for Poetry and dependencies
- fix: enhance CI workflow by adding caching for Poetry installation and dependencies
- fix: update CI workflow to set Poetry cache directory and streamline caching steps
- fix: correct reference to Poetry cache directory in CI workflow
- fix: update reference to Poetry cache directory in CI workflow (final)
- Merge pull request #16 from henrique-coder/dev
- chore: update rich package version to 14.0.0 in poetry.lock and pyproject.toml
- fix: update dependency version constraints in pyproject.toml
- fix: update warning to note format in installation instructions
- fix: update tenacity version to 9.1.2 in poetry.lock and pyproject.toml
- fix: remove unnecessary setup-venv from Makefile phony targets
- chore: update ruff to version 0.11.3 in lint group
- fix: update note to warning in installation instructions for clarity
- Merge pull request #17 from henrique-coder/dev
- chore: update version to 0.5.2 in pyproject.toml and enhance CHANGELOG with new dependencies
- Merge pull request #18 from henrique-coder:dev
📊 Compare Changes
🎉 TurboDL 0.5.1 - Performance Enhancements & Stability Improvements
📦 Summary
TurboDL is an extremely smart, fast, and efficient download manager designed to optimize your downloading experience.
❇️ Available for automatic installation at PyPI and manual installation at GitHub.
📋 Changes in this version:
Changed
- Streamlined HTTP client initialization and enhanced file info fetching logic
- Improved code readability by adjusting indentation in download_with_buffer_worker
- Updated RemoteFileInfo size type to allow "unknown" and improved URL validation
- Simplified Makefile commands and updated help text
- Updated project description to emphasize optimization features
Added
- Inactivity timeout configuration for HTTP client and improved timeout handling
- Updated default HTTP headers for enhanced content negotiation and security
- Reset_buffer method to ChunkBuffer for better memory management
- UnidentifiedFileSizeError exception for handling unknown file sizes
Fixed
- Reduced maximum RAM usage constant from 30% to 20% for better system compatibility
Dependencies
- Updated ruff to version 0.11.0
- Updated pytest to version 8.3.5
- Updated typer to version 0.15.2
📋 Commit History:
- fix: update project description to emphasize optimization features and enhance README content
- chore: update ruff to version 0.9.8 and typer to version 0.15.2 in dependencies
- chore: update pytest to version 8.3.5 and ruff to version 0.9.9 in dependencies
- chore: update ruff to version 0.9.10 in dependencies
- chore: update ruff to version 0.11.0 in dependencies
- refactor: simplify Makefile commands and update help text
- fix: reduce maximum RAM usage constant from 30% to 20%
- feat: add UnidentifiedFileSizeError exception for unidentifiable file sizes
- refactor: update RemoteFileInfo size type to allow "unknown" and improve URL validation
- feat: enhance file size handling by introducing UnidentifiedFileSizeError for unknown sizes
- feat: update default HTTP headers for improved content negotiation and user agent specification
- feat: add reset_buffer method to ChunkBuffer for memory management
- refactor: improve code readability by adjusting indentation in download_with_buffer_worker
- feat: update default HTTP headers for enhanced content negotiation and security
- feat: add inactivity timeout configuration for HTTP client and improve timeout handling
- refactor: streamline HTTP client initialization and enhance file info fetching logic
- docs: update README to include inactivity_timeout parameter for download function
- docs: enhance README and core.py documentation for clarity and consistency
- docs: refine README for clarity and improve section headings
- chore: update changelog for version 0.5.1 with performance enhancements and stability improvements
- docs: remove code style badge from README for clarity
- Merge pull request #13 from henrique-coder/dev
📊 Compare Changes
🎉 TurboDL 0.5.0 - Major Improvements & New Features
📦 Summary
TurboDL is an extremely smart, fast, and efficient download manager with several automations.
❇️ Available for automatic installation at PyPI and manual installation at GitHub.
📋 Changes in this version:
Changed
- Migrated to httpx library for improved HTTP/2 support
- Optimized chunk size calculations for better performance
- Enhanced error handling and recovery mechanisms
- Improved progress bar responsiveness
- Updated dependencies and requirements
Added
- Advanced retry mechanisms with exponential backoff
- Adaptive chunk size based on connection speed
- Enhanced error messages and debugging information
- New connection pooling system
Fixed
- Memory management issues with large files
- Progress bar flickering during high-speed downloads
- Connection timeout handling
- Thread synchronization issues
- File corruption during interrupted downloads
Removed
- Legacy HTTP client implementation
- Deprecated connection handling methods
- Obsolete retry mechanisms
- Logger functionality
📋 Commit History:
- remove: old parameter
- update: CI tests
- Merge pull request #11 from henrique-coder/dev
- fix: some downloader errors
- remove: .turbodownload suffix
- update: user agent version and some constants
- update: psutil to latest version
- enhance: ruff.toml rules
- format: file
- remove: D212 ruff rule
- add: smart url truncate
- add: some extra text to CLI argument
- add: docstrings and comments
- format: code
- move: constant to constants file
- lfs: .gif files
- add: demo.gif file
- move: gif to assets dir
- fix: Makefile "demo" and README demo gif url
- update: demo gif file
- chore: update ruff version
- remove: logger
- optimize: RAM buffer
- fix: RAM buffer use
- refactor: connections calculator, space checker & add: some docstrings
- chore: upgrade ubuntu to latest version and fixed some things
- chore: update GitHub Actions to use ubuntu-latest and improve security settings
- fix: update test command to handle expected failures and improve demo recording
- fix: update test command to include expected failures for better reporting
- fix: increase default connection speed and update demo link in README
- fix: improve error handling in data processing module
- fix: enhance download functions with detailed docstrings and improved error handling
- fix: update connection speed default to 100 Mbps and enhance signal handling documentation
- fix: enhance ChunkBuffer class with detailed docstrings and improved memory management
- chore: bump version to 0.5.0
- chore: bump version to 0.5.0 in pyproject.toml
- Merge pull request #12 from henrique-coder/dev
📊 Compare Changes
🎉 TurboDL 0.3.6 - Bug Fixes & Performance Improvements
📦 Summary
TurboDL is an extremely smart, fast, and efficient download manager with several automations.
❇️ Available for automatic installation at PyPI and manual installation at GitHub.
📋 Changes in this version:
Changed
- Updated CLI demo gif
- Updated Makefile
Added
- Added a new logger system (always log everything to a file, located at {TEMP_DIR}/turbodl.log)
Fixed
- Size formatting issues
Removed
- Unused constants
- --save-log-file CLI option
- assets directory
📋 Commit History:
- chore: fix typo
- chore: ignored new dir
- chore: added humanfriendly lib and updated ruff version
- chore: updated poetry.lock file
- remove: format_size func due to a new lib
- remove: save-log-file option CLI option
- remove: unused constants
- enhance: file logger
- add: logs with logger func
- remove: save_log_file parameter
- chore: updated gitignore
- chore: updated demo gif and some related stuff
- Merge pull request #9 from henrique-coder/dev
- chore: bump version to 0.3.6
- Merge pull request #10 from henrique-coder/dev
📊 Compare Changes
🎉 TurboDL 0.3.5 - Performance & Stability Improvements
📦 Summary
TurboDL is an extremely smart, fast, and efficient download manager with several automations.
❇️ Available for automatic installation at PyPI and manual installation at GitHub.
📋 Changes in this version:
Changed
- Moved all constants to a dedicated constants.py file
- Updated chunk buffer values
- Enhanced code typings
- Improved max connections calculator
Added
- Demo option for Makefile
- Signal handlers for graceful exit
- .turbodownload suffix to incomplete downloads
- DownloadInterruptedError exception
- Demo CLI gif for documentation
Fixed
- Hash checker improvements
- Wrong file path handling
- Various gitignore configurations
- Test files structure
- Code formatting with ruff linter
- Changed minimum "max connections" to 2 instead of 4
- Enhanced chunk range generator
- Increased keepalive time and reduced max connections to 24
- Various CLI options and configurations
📋 Commit History:
- fix: increased keepalive time and reduced max connections to 32
- fix: enhance chunk range generator and max connections calculator
- fix: changed min "max connections" to 2 instead of 4
- add: .turbodownload suffix to incomplete downloads
- add: DownloadInterruptedError exception
- fix: demo cli gif and all codeblocks
- add: demo cli gif file
- fix: some options & add: demo option
- update: file header
- add: demo option
- fix: gitignore items
- chore: fixed tests files
- format: code with ruff linter
- move: all constants to constants.py file
- enhance: some typings
- refactor: max connections calculator
- change: chunk buffer values
- add: signal handlers (for fancy exit)
- fix: wrong file path errors
- enhance: hash checker
- change: MIN_CONNECTIONS to 2
- chore: bump version to 0.3.5
- fix: CHANGELOG contents
- Merge pull request #8 from henrique-coder/dev
📊 Compare Changes
🎉 TurboDL 0.3.4 - Hotfixes
📦 Summary
TurboDL is an extremely smart, fast, and efficient download manager with several automations.
❇️ Available for automatic installation at PyPI and manual installation at GitHub.
📋 Changes in this version:
Changed
- Updated documentation by adding a demo gif demonstrating the TurboDL functionality
Added
- Missing hash verification feature
- Automatic retries on connection errors
Fixed
- Fixed release workflow
- Fixed CLI argument names and their values
📋 Commit History:
- add: demo CLI gif to docs
- fix: slowed cli demo gif
- remove: static cli demo gif file
- add: direct url instead of static file
- chore: update gitignore
- add: new exceptions
- update: exceptions file
- Revert "update: exceptions file"
- update: exceptions file
- add: retry decorators & remove: bad downloader func
- enhance: code & add: hash checker
- lint: format imports
- add: CI tests new parameter
- move: funcs to main code & fix: CLI value errors
- chore: bump version to 0.3.4 (Hotfixes)
- Merge pull request #7 from henrique-coder/dev