Releases: Luminger/ezcoo-cli
Releases · Luminger/ezcoo-cli
v0.2.0 - Major Modernization and Feature Expansion
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
KVMclass inkvm.pyproviding 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
discovercommand 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 addresshelp: Display device help informationinput switch: Switch inputs with output selectionoutput routing: Query current input-to-output routingoutput stream: Check output stream statusedid get/set: Manage EDID data for inputsdiscover: 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.pyreplacesconsole.py - Default output format: Changed from raw device response to human-readable pretty format
- New options:
--addressfor multi-device support,--formatfor output control
API Changes
- Response types: Returns structured
KVMResponse[T]objects instead of raw strings - Enhanced error handling: New
DeviceErrorandDeviceConnectionErrorexceptions - Type hints: Updated to modern Python 3.10+ syntax
Dependencies
- Removed:
attrs,mypy,flake8family - 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.0See the CHANGELOG for complete details.
v0.1.1
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.1v0.1.0
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.0v0.0.1 - Initial Release
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-cliUsage
ezcoo-cli input switch <input-number>