Changelog¶
All notable changes to this project will be documented here. The format follows Keep a Changelog; versioning follows Semantic Versioning.
The canonical source is CHANGELOG.md in the repository root.
[Unreleased]¶
[1.6.1] — 2026-06-10¶
Changed¶
- Internal version bump; no functional changes.
[1.6.0] — 2026-06-10¶
Added¶
ConnectionPoolextracted to_pool.py;_async_send_tcp_commandis now a thin retry loop over the pool.- Wire-format codec extracted to
_frame.py(encode_command,read_response,mask_command). - Technical architecture document (
docs/ARCHITECTURE.md). - Real in-process
FakeDLightServerreplaces asyncio stream mocks across the entire test suite.
Changed¶
async with AsyncDLightClient()no longer implicitly enablespersistent; passpersistent=Trueexplicitly.- Package version single-sourced from
dlightclient.__version__viapyproject.toml.
Fixed¶
__aenter__no longer mutatespersistent; import-fallback test dummies removed.
[1.5.1] — 2026-05-01¶
Security¶
- Credentials (
password) masked in all debug log output regardless of log level.
[1.5.0] — 2026-04-20¶
Added¶
- Automatic retry logic with exponential backoff (
max_retries,retry_backoff) — DL-003. - Per-device
asyncio.Lockin the connection pool. - Idle timeout eviction (default 60 s).
- TLS support:
ssl=Trueor customssl.SSLContext;--ssl/--insecureCLI flags. - State caching and optimistic updates in
DLightDevice— DL-005.
Changed¶
get_state()returns the cached value by default; passforce_update=Trueto query the device.
[1.4.0] — 2026-03-15¶
Added¶
- Python 3.11, 3.12, and 3.13 added to the supported matrix and CI.
[1.3.2] — 2026-03-10¶
Fixed¶
pyproject.tomllicence field modernised; resolvedsetuptoolsdeprecation warnings.
[1.3.0] — 2026-03-01¶
Added¶
- Connection pooling and persistent TCP connections (
persistent=True,idle_timeout) — DL-001. async with AsyncDLightClient(...)context manager for automatic pool cleanup.
[1.2.0] — 2025-11-01¶
Added¶
- Significantly expanded test coverage.
Fixed¶
- Echo detection: device echoing a command verbatim now raises
DLightResponseError.
[1.1.0] — 2025-08-01¶
Added¶
DLightDevicehigh-level facade:turn_on,turn_off,set_brightness,set_color_temperature,get_state,get_info,flash.
[1.0.1] — 2025-06-01¶
Changed¶
- Full async/await rewrite using
asyncio; blocking socket calls removed.
[0.1.0] — 2025-04-11¶
Added¶
- Initial release:
AsyncDLightClient,discover_devices, UDP discovery, TCP command protocol. - PyPI packaging and GitHub Actions CI/CD.