Changelog History
-
v2.2.0 Changes
November 27, 2025✨ Added
- 🆕 New API exceptions (
TooManyRequestsError,FreeAppLimitedError,DisabledForFreeAppError,WrongFormatStructureError,InvalidFormatError). - ⚡️ Public
Configclass with support for in-memory runtime overrides (update,clear_overrides,get). - Masking of sensitive values (e.g., API tokens) in string representations.
- 🔦 Exposed
Configat the top-level package for external usage.
🛠 🐛 Fixed
- Improved
_ChunkedFileWrapperto rewind file streams before upload, preventingEMPTY_FILEerrors and truncated uploads. Added__len__,__iter__, and__next__methods for better streaming client compatibility and chunk iteration. - Improved JSON response detection in
vertopal.api.interface._Interface.send_request
to correctly handleContent-Typeheaders with parameters (e.g.application/json; charset=utf-8).
Full Changelog:
v2.1.0...v2.2.0 - 🆕 New API exceptions (
-
v2.1.0 Changes
November 05, 2025✨ Added
- 👌 Support for configurable upload and download chunk sizes:
- New settings:
stream_upload_chunk_sizeandstream_download_chunk_size(fall back tostream_chunk_sizeif unset). - New
_ChunkedFileWrapperinternal utility to enforce fixed chunk sizes during streaming. - New
_Interface.upload_chunk_sizeand_Interface.download_chunk_sizeproperties to resolve effective chunk sizes. API.upload_filenow accepts an optionalchunk_sizeparameter, defaulting to configuration values.
- New settings:
🛠 🐛 Fixed
- 🛠 Fixed
_ChunkedFileWrapper.read(-1)to return the full file instead of a single chunk, preventing truncated uploads for binary files. - Corrected
send_requestJSON validation logic to check theContent-Typeheader instead of endpoint path, preventing errors when handling binary responses (e.g., file downloads). - Explicitly use
.valueforInterfaceStrategyModeandInterfaceSublistModeto ensure consistent string output across Python versions (avoiding f-string differences introduced after Python 3.10).
🛠 Changed
- 🔨 Refactored type hints to use built-in generics (
list,dict, andtuple) instead oftyping.List,typing.Dict, andtyping.Tuple. - ⚡️ Updated README installer instructions to use a unified endpoint for macOS and Linux (
https://run.vertopal.com/cli/unix).
Full Changelog:
v2.0.3...v2.1.0 - 👌 Support for configurable upload and download chunk sizes:
-
v2.0.3 Changes
September 01, 2025🛠 🐛 Fixed
- ⚡️ Updated GitHub Actions build matrix to replace
ubuntu-20.04withubuntu-22.04in preparation for the deprecation and removal of theubuntu-20.04runner image on GitHub Actions (April 1, 2025). This ensures continued availability of Linux builds and avoids scheduled brownout outages.
Full Changelog:
v2.0.2...v2.0.3 - ⚡️ Updated GitHub Actions build matrix to replace
-
v2.0.2 Changes
September 01, 2025Note
🏗 This version was published to PyPI but no binary build using GitHub Actions was created.
🚀 2.0.3 is the latest patch release and should be preferred.🛠 🐛 Fixed
- ✂ Removed
slots=Truefrom@dataclassdeclarations to restore compatibility with Python 3.9.
Full Changelog:
v2.0.1...v2.0.2 - ✂ Removed
-
v2.0.1 Changes
September 01, 2025Note
🏗 This version was published to PyPI but no binary build using GitHub Actions was created.
🚀 2.0.3 is the latest patch release and should be preferred.🛠 🐛 Fixed
- ⚡️ Updated GitHub Actions workflow to replace deprecated
actions/upload-artifact@v3andactions/download-artifact@v3with v4 equivalents. - 🚀 Adjusted artifact download step to use
patternandmerge-multiplefor collecting OS-specific build artifacts in a single directory during release.
Full Changelog:
v2.0.0...v2.0.1 - ⚡️ Updated GitHub Actions workflow to replace deprecated
-
v2.0.0 Changes
September 01, 2025Note
🏗 This version was published to PyPI but no binary build using GitHub Actions was created.
🚀 2.0.3 is the latest patch release and should be preferred.📦 Migration Guide (from 1.x to 2.0.0)
⬆️ If you are upgrading from Vertopal CLI 1.x, please review and apply the following changes to ensure a smooth transition:
- Reconfigure private credentials
0️⃣ 2. Note the new public default credential
💥 For full details, see the Breaking Changes and Added sections below.
🚚 🚨 Removed (Breaking Changes)
⬇️ Dropped support for Python 3.7 and 3.8 — the package now requires Python 3.9 or later (see
pyproject.toml).✂ Removed support for legacy import/layout patterns; the project now uses the
src/package layout as the canonical layout.Removed several legacy public symbols previously exported from the package root to provide a smaller, stable public surface (see
vertopal/ __init__.py).✂ Removed the top-level re-export of internal API classes. Consumers should import low-level clients directly from their modules (for example
vertopal.api.v1.API).✂ Removed several command-line flags from the
vertopalcommand:--app,--token,--overwrite, and--silent.💅 Configuration key changed — the application ID is now stored under the INI-style key
api.appin the user configuration file (previouslyapi.appid).
Users upgrading from earlier versions must reconfigure their private credentials to continue using them.
✨ Added
👌 Improvements to the
vertopalCLI (seevertopal convert --help):- Bulk conversion support: accept files, directories, globs and brace/range patterns (e.g.
{a,b},{1..5},**/*). - Read from
stdinby using-as an input source. - Write to
stdoutby passing--output -. - Accept a file list as input and override output filename or output directory per invocation.
- Recursive directory traversal and exclude-by-pattern support.
- Filter inputs by modification date using an ISO 8601
--modified-sincefilter.
- Bulk conversion support: accept files, directories, globs and brace/range patterns (e.g.
➕ Added credential management to centralize application ID and security token handling (see
vertopal/api/credential.py).🔨 Introduced a new
clisubpackage and refactored command managers for clearer separation of concerns (seevertopal/cli).👀 Reworked the CLI entry point and argument parser for clearer help, subcommands, and argument validation (see
vertopal/vertopal.py).Added
ReadableandWritableI/O protocols and three adapter modules: file, in-memory, and stdio for consistent I/O abstractions (seevertopal/io/protocols.py, andvertopal/io/ __init__.py).➕ Added structured API response wrappers and richer helpers to the v1 client to simplify caller code (vertopal/api/v1.py).
➕ Added a centralized
settingsmodule,enums,types, andPrismterminal styling helper for consistency across the codebase (seevertopal/settings.py,vertopal/enums.py,vertopal/types.py, andvertopal.utils.prism).➕ Added a public default credential to simplify first-run experience: the CLI ships with a non-authenticated, limited credential (app:
free, token:FREE-TOKEN) so users can try the service without creating an account. This credential is intended for personal testing and evaluation and is subject to daily rate limits; production workloads should configure a private credential in the user config.
🛠 Changed
- 👀 Moved terminal and CLI internals into the new
clisubpackage; command registration and adapter responsibilities were reorganized into dedicated manager modules (seevertopal/cli). - Converted API client methods to return lightweight, structured response wrappers rather than raw dicts/tuples to improve ergonomics and error handling (see
vertopal/api/v1.py, andvertopal/utils/data_wrappers.py). - 📇 Stabilized packaging and metadata to the
src/layout and modern build metadata (seepyproject.toml, andsetup.py). - 🚚 Moved API exception types into the top-level
vertopal.exceptionsmodule and simplified exception usage across modules. - 🏗 Relocated the build helper into
tools/build.pyfor clearer separation of tooling code. - 👀 Reworked the configuration module to use a singleton
Configand safer load/write semantics (seevertopal/utils/config.py). - 🔧 Redesigned
vertopal.api.v1.APIto be an instantiable client object rather than a module-level static; this enables per-instance configuration and better testability. - ⚡️ Updated the
vertopal configsubcommand: the command's interface and behavior for modifying the user configuration file has been redesigned. It now exposes clearer interactive and non-interactive options, safer write semantics, and explicit flags for common keys (seevertopal config --help).
🛠 🐛 Fixed
- 🛠 Fixed multiple resource leaks and inconsistent timeout usages in HTTP calls; timeouts are now applied uniformly for requests, uploads, and downloads.
Full Changelog:
v1.1.0...v2.0.0 -
v1.1.0 Changes
January 07, 2024🚀 Features
- ➕ Add optional
--beautify(flag) argument to thevertopal apicommand to pretty-print to the standard output. - Add 3 new
vertopal.api.v1.APImethods:format_get(),convert_graph(), andconvert_formats().
🛠 🐛 Bug Fixes
- 📦 Use minimum version for package dependencies.
Full Changelog:
v1.0.6...v1.1.0 - ➕ Add optional
-
v1.0.6 Changes
December 18, 2023🛠 🐛 Bug Fixes
- Build Windows binary using PyInstaller 5.7.0 and a compiled bootloader to prevent false-positive antivirus alerts.
Full Changelog:
v1.0.5...v1.0.6 -
v1.0.5 Changes
October 25, 2023🚀 Features
- Introducing
apicommand for sending authenticated HTTP requests to the Vertopal API.
To view the fullapicommand help, executevertopal api --helpin the terminal.
Full Changelog:
v1.0.4...v1.0.5 - Introducing
-
v1.0.4 Changes
October 10, 2023🚀 Features
- Introducing
Converterclass for easier file convert implementation in your projects. - ➕ Added custom exceptions to give developers better control on the conversion errors.
📈 Improvements
- 📦 Use different product names in User-Agent to distinguish between the requests of CLI and Python package.
🛠 🐛 Bug Fixes
- Increase the connection timeout for the upload and the download tasks for upload/downloading the bigger-sized files.
Full Changelog:
v1.0.3...v1.0.4 - Introducing