Roadmap¶
This page tracks planned and completed enhancements. Detailed specifications for each item live in the issues/ directory of the repository.
Want to contribute?
If you'd like to work on a planned item, open a GitHub Issue to discuss your approach before writing code. See Contributing for setup instructions.
Feature status¶
| ID | Feature | Status | Milestone |
|---|---|---|---|
| DL-001 | Persistent TCP connections + connection pool | ✅ Done | v1.3.0 |
| DL-003 | Automatic retry logic with exponential backoff | ✅ Done | v1.5.0 |
| DL-005 | State caching and optimistic updates | ✅ Done | v1.5.0 |
| DL-002 | Granular CLI subcommands | ⏳ Planned | v1.7.0 |
| DL-004 | mDNS / Zeroconf discovery | ⏳ Planned | v1.8.0 |
Planned¶
DL-002 — Granular CLI subcommands¶
Replace the current fixed interaction sequence with individual subcommands, making the CLI scriptable from shell scripts and cron jobs.
Proposed interface:
dlight discover
dlight on --ip 192.168.1.123 --id DL12345
dlight off --ip 192.168.1.123 --id DL12345
dlight brightness 75 --ip 192.168.1.123 --id DL12345
dlight color-temp 3000 --ip 192.168.1.123 --id DL12345
The existing --discover / --ip / --id flags remain supported for backwards compatibility.
DL-004 — mDNS / Zeroconf discovery¶
Add mDNS-based discovery via zeroconf as an alternative (not replacement) to the current UDP broadcast. Lamps that advertise themselves via mDNS will be discoverable on networks where UDP broadcast is blocked or the devices are on a different subnet.
discover_devices() will gain an optional mdns=True parameter. Existing code using the default call signature does not need changes.
Completed¶
DL-001 — Persistent TCP connections (v1.3.0)¶
Connection pooling keyed by (host, port, ssl) with per-device asyncio.Lock, idle timeout eviction, and unconditional eviction on any exchange failure.
DL-003 — Automatic retry logic (v1.5.0)¶
max_retries and retry_backoff constructor parameters on AsyncDLightClient. Retries only on DLightTimeoutError and DLightConnectionError; never on protocol errors.
DL-005 — State caching and optimistic updates (v1.5.0)¶
Internal _state cache in DLightDevice with optimistic mutation before network calls and rollback on failure. get_state() returns the cache without a network call; force_update=True bypasses it.