Changes since v0.3.0
v0.3.1 → v0.3.7: Stability Improvements & "No Response" Support
🐛 Crash Fixes (v0.3.3)
Several users reported the plugin entering a crash loop when bulbs failed to return hardware information (e.g. unknown devices, timeouts). Init() no longer aborts when FirmwareVersion or HardwareInfo cannot be retrieved — the plugin continues with default values instead. (Issues #7, #22, #27, #34)
🏷️ Empty Label Fallback (v0.3.4)
Bulbs without a configured name were silently ignored and never added to HomeKit. The plugin now falls back to the bulb's IP address, then "LIFX Bulb" as a last resort. (Issue #37)
🌡️ ColorTemperature Warning Fixed (v0.3.5)
HomeKit logged a warning when the kelvin value exceeded the bounds registered for the characteristic. The returned mired value is now clamped to [minValue, maxValue]. (Issue #44)
📡 "No Response" Instead of "Off" (v0.3.6)
When a bulb was physically disconnected from power, HomeKit incorrectly showed "Off" instead of "No Response". The following scenarios are now handled correctly:
- During operation: The polling watcher detects within 5 seconds that the bulb is not responding and immediately marks it as "No Response" — without waiting for the
light-offlineevent (~15s delay). - On startup: Bulbs that are unreachable when the plugin starts are marked as "No Response" as soon as the discovery window closes.
- Cached accessories: Bulbs that have never been seen since the last restart (e.g. permanently offline) are also correctly declared as "No Response".
(Issue #38)
🔁 False "No Response" After Controlling Accessories Fixed (v0.3.7)
After controlling a bulb or switch (e.g. toggling power, changing brightness or colour temperature), HomeKit would incorrectly show "No Response" after a short time — even though the device was fully reachable. Multiple root causes have been fixed:
- Poll-failure tolerance: A single UDP timeout or transient network hiccup no longer immediately marks a device as offline. The accessory now tolerates up to 3 consecutive failed polls before setting the "No Response" state. The failure counter resets to zero on the next successful poll.
- Self-recovery without events: If a device recovers from a brief dropout, it is automatically marked as online again as soon as a poll succeeds — without waiting for a
light-onlineevent from the LAN client, which was only emitted after a full offline/online cycle. - Watcher no longer restarted on set commands: Every
setcommand (on/off, brightness, colour, kelvin) previously restarted the 5-second poll interval immediately. This caused the first poll to arrive while the bulb was still executing a transition, producing a spurious timeout. The watcher now runs at a stable 5-second cadence regardless of set commands. - Double callback in Switch fixed: In
switch.ts, a missingreturnafter the error handler caused both the error callback and the success callback to be invoked simultaneously on failure — passingundefinedas the relay state and incorrectly reporting the relay as unreachable.