Skip to content

Releases: vertopal/vertopal-cli

Vertopal CLI v2.2.0

27 Nov 08:03
v2.2.0
1dee702

Choose a tag to compare

✨ Added

  • New API exceptions (TooManyRequestsError, FreeAppLimitedError, DisabledForFreeAppError, WrongFormatStructureError, InvalidFormatError).
  • Public Config class with support for in-memory runtime overrides (update, clear_overrides, get).
  • Masking of sensitive values (e.g., API tokens) in string representations.
  • Exposed Config at the top-level package for external usage.

🐛 Fixed

  • Improved _ChunkedFileWrapper to rewind file streams before upload, preventing EMPTY_FILE errors 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 handle Content-Type headers with parameters (e.g. application/json; charset=utf-8).

Full Changelog: v2.1.0...v2.2.0

Vertopal CLI v2.1.0

05 Nov 14:19
v2.1.0
e7764b8

Choose a tag to compare

✨ Added

  • Support for configurable upload and download chunk sizes:
    • New settings: stream_upload_chunk_size and stream_download_chunk_size (fall back to stream_chunk_size if unset).
    • New _ChunkedFileWrapper internal utility to enforce fixed chunk sizes during streaming.
    • New _Interface.upload_chunk_size and _Interface.download_chunk_size properties to resolve effective chunk sizes.
    • API.upload_file now accepts an optional chunk_size parameter, defaulting to configuration values.

🐛 Fixed

  • Fixed _ChunkedFileWrapper.read(-1) to return the full file instead of a single chunk, preventing truncated uploads for binary files.
  • Corrected send_request JSON validation logic to check the Content-Type header instead of endpoint path, preventing errors when handling binary responses (e.g., file downloads).
  • Explicitly use .value for InterfaceStrategyMode and InterfaceSublistMode to 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, and tuple) instead of typing.List, typing.Dict, and typing.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

Vertopal CLI v2.0.3

01 Sep 15:55
v2.0.3
aef28b9

Choose a tag to compare

🐛 Fixed

  • Updated GitHub Actions build matrix to replace ubuntu-20.04 with ubuntu-22.04 in preparation for the deprecation and removal of the ubuntu-20.04 runner 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

Vertopal CLI v2.0.2

01 Sep 16:03
v2.0.2
0fc7b65

Choose a tag to compare

Note

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=True from @dataclass declarations to restore compatibility with Python 3.9.

Full Changelog: v2.0.1...v2.0.2

Vertopal CLI v2.0.1

01 Sep 16:02
v2.0.1
4589c96

Choose a tag to compare

Note

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@v3 and actions/download-artifact@v3 with v4 equivalents.
  • Adjusted artifact download step to use pattern and merge-multiple for collecting OS-specific build artifacts in a single directory during release.

Full Changelog: v2.0.0...v2.0.1

Vertopal CLI v2.0.0

01 Sep 14:36
v2.0.0
f2748ff

Choose a tag to compare

Note

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:

  1. Reconfigure private credentials

    • The configuration key for the application ID has changed from api.appid to api.app.

    • You must update your stored credentials; otherwise, the program will raise an InvalidCredentialError exception.

    • New syntax (v2.0.0+):

      vertopal config api.app "your-app-id" api.token "your-security-token"
    • Old syntax (pre‑2.0.0):

      vertopal config --app "your-app-id" --token "your-security-token"
  2. Note the new public default credential

    • Vertopal CLI now ships with a built‑in, non‑authenticated credential (app: free, token: FREE-TOKEN) so you can start using it immediately after installation.
    • This credential is free but subject to daily rate limits. For production workloads, configure your private credentials as shown above.

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 vertopal command: --app, --token, --overwrite, and --silent.

  • Configuration key changed — the application ID is now stored under the INI-style key api.app in the user configuration file (previously api.appid).
    Users upgrading from earlier versions must reconfigure their private credentials to continue using them.

    New syntax (v2.0.0+):

    vertopal config api.app "your-app-id" api.token "your-security-token"

    Old syntax (pre‑2.0.0):

    vertopal config --app "your-app-id" --token "your-security-token"

    The old flags are no longer supported. See also the new public default credential in the Added section.

✨ Added

  • Improvements to the vertopal CLI (see vertopal convert --help):
    • Bulk conversion support: accept files, directories, globs and brace/range patterns (e.g. {a,b}, {1..5}, **/*).
    • Read from stdin by using - as an input source.
    • Write to stdout by 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-since filter.
  • Added credential management to centralize application ID and security token handling (see vertopal/api/credential.py).
  • Introduced a new cli subpackage and refactored command managers for clearer separation of concerns (see vertopal/cli).
  • Reworked the CLI entry point and argument parser for clearer help, subcommands, and argument validation (see vertopal/vertopal.py).
  • Added Readable and Writable I/O protocols and three adapter modules: file, in-memory, and stdio for consistent I/O abstractions (see vertopal/io/protocols.py, and vertopal/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 settings module, enums, types, and Prism terminal styling helper for consistency across the codebase (see vertopal/settings.py, vertopal/enums.py, vertopal/types.py, and vertopal.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 cli subpackage; command registration and adapter responsibilities were reorganized into dedicated manager modules (see vertopal/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, and vertopal/utils/data_wrappers.py).
  • Stabilized packaging and metadata to the src/ layout and modern build metadata (see pyproject.toml, and setup.py).
  • Moved API exception types into the top-level vertopal.exceptions module and simplified exception usage across modules.
  • Relocated the build helper into tools/build.py for clearer separation of tooling code.
  • Reworked the configuration module to use a singleton Config and safer load/write semantics (see vertopal/utils/config.py).
  • Redesigned vertopal.api.v1.API to be an instantiable client object rather than a module-level static; this enables per-instance configuration and better testability.
  • Updated the vertopal config subcommand: 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 (see vertopal 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

Vertopal CLI v1.1.0

07 Jan 18:57
v1.1.0
7fc7aca

Choose a tag to compare

🚀 Features

  • Add optional --beautify (flag) argument to the vertopal api command to pretty-print to the standard output.
  • Add 3 new vertopal.api.v1.API methods: format_get(), convert_graph(), and convert_formats().

🐛 Bug Fixes

  • Use minimum version for package dependencies.

Full Changelog: v1.0.6...v1.1.0

Vertopal CLI v1.0.6

18 Dec 12:14
v1.0.6
6bab581

Choose a tag to compare

🐛 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

Vertopal CLI v1.0.5

25 Oct 14:23
v1.0.5
3180573

Choose a tag to compare

🚀 Features

  • Introducing api command for sending authenticated HTTP requests to the Vertopal API.
    To view the full api command help, execute vertopal api --help in the terminal.

Full Changelog: v1.0.4...v1.0.5

Vertopal CLI v1.0.4

10 Oct 13:49
v1.0.4
8018dda

Choose a tag to compare

🚀 Features

  • Introducing Converter class 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