Skip to content

Releases: Luminger/ezcoo-cli

v0.2.0 - Major Modernization and Feature Expansion

18 Oct 17:50
f41fe75

Choose a tag to compare

Important: License Change

This release changes the project license from Apache-2.0 to GPL-3.0-or-later. This means all derivative works must also be licensed under GPL-3.0-or-later and remain open source. If you were using this project under Apache-2.0, you may continue to use versions ≤0.1.1 under that license, but v0.2.0 and later are GPL-licensed.

Overview

This release represents a complete modernization of the project with breaking changes to improve maintainability, type safety, and usability both as a CLI tool and as a Python library.

Added

High-Level KVM Interface

  • New KVM class in kvm.py providing type-safe, structured interface for library usage
  • Comprehensive data models using dataclasses for all KVM responses
  • Generic KVMResponse[T] wrapper ensuring type safety for all operations

Multi-Device Support

  • Support for controlling multiple KVM switches on the same serial bus (addresses 0-99)
  • New discover command to find all devices with their firmware versions

Enhanced CLI Commands

Complete rewrite replacing simple console.py:

  • status: Show system status with firmware version and address
  • help: Display device help information
  • input switch: Switch inputs with output selection
  • output routing: Query current input-to-output routing
  • output stream: Check output stream status
  • edid get/set: Manage EDID data for inputs
  • discover: Find all devices on the serial bus
  • Multiple output formats: --format raw|json|pretty

Comprehensive Testing

  • Full test suite with pytest achieving 89% code coverage
  • Unit tests for Device, KVM, and CLI commands
  • Integration tests for end-to-end workflows
  • Hardware replay tests using pytest-reserial (no hardware needed for CI)

Documentation & CI/CD

  • Extensive README with installation, usage examples, and library usage guide
  • Official EZCOO KVM switch manual (PDF) in docs/
  • GitHub Actions workflows for automated testing and building on PRs
  • Complete release process documentation

Breaking Changes

License

  • License changed from Apache-2.0 to GPL-3.0-or-later

Build System & Tooling

  • Poetry → uv: Faster dependency management
  • flake8 → ruff: Modern linting and formatting
  • Build backend: poetry-core → hatchling

CLI Changes

  • Complete rewrite: cli.py replaces console.py
  • Default output format: Changed from raw device response to human-readable pretty format
  • New options: --address for multi-device support, --format for output control

API Changes

  • Response types: Returns structured KVMResponse[T] objects instead of raw strings
  • Enhanced error handling: New DeviceError and DeviceConnectionError exceptions
  • Type hints: Updated to modern Python 3.10+ syntax

Dependencies

  • Removed: attrs, mypy, flake8 family
  • Added: pytest, pytest-cov, pytest-reserial, ruff
  • Minimum Python: 3.10+

Fixed

  • Improved error handling with specific exception types
  • Better validation of command responses
  • More reliable serial port handling
  • Command injection prevention

Installation

pip install ezcoo-cli==0.2.0

See the CHANGELOG for complete details.

v0.1.1

17 Oct 12:59

Choose a tag to compare

Maintenance Release

Changed

  • Updated dependencies: Refreshed all project dependencies to their latest compatible versions
    • Ensures compatibility with newer Python environments
    • Includes security updates and bug fixes from upstream packages

Installation

pip install ezcoo-cli==0.1.1

v0.1.0

17 Oct 12:59

Choose a tag to compare

Bug Fix Release

Fixed

  • Corrected baudrate: Fixed incorrect baudrate from 115600 to the correct 115200 baud
    • This resolves communication issues with EZCOO KVM switches
    • Devices now communicate reliably over the serial interface

Installation

pip install ezcoo-cli==0.1.0

v0.0.1 - Initial Release

17 Oct 12:58

Choose a tag to compare

Initial Release

This is the first proof-of-concept release of ezcoo-cli, a command-line tool for controlling EZCOO KVM switches via serial interface.

Features

  • Basic serial communication with EZCOO KVM switches
  • Command-line interface for switching inputs
  • Support for input switching (1-4) to outputs
  • Built with Python using Click for CLI and pyserial for communication

Installation

pip install ezcoo-cli

Usage

ezcoo-cli input switch <input-number>