Skip to content

CHANGELOG

v5.5.1 (2026-06-14)

Bug Fixes

  • ceiling: Compare stored state at uint16 wire granularity (08b7e8d)

  • color: Expose raw HSBK values instead of rounded ones (80b0b2f)

  • color: Stop rounding computed lerp/average outputs (515dd91)

v5.5.0 (2026-06-13)

Bug Fixes

  • 01: CR-01 drop size-invalid datagrams instead of aborting discovery (b33fde1)

  • 01: Finish review-fix pass — WR-03/WR-04/WR-05 (21c2b35)

  • 01: IN-01 remove no-cover pragma from exit-save except clause (282900c)

  • 01: IN-02 run exit-save via asyncio.to_thread (D-01 revised) (0e46531)

  • 01: IN-03 preserve port, timeout and max_retries in from_ip (fa5da87)

  • 01: Tolerate unknown DeviceService values from real hardware (0cb5dc6)

  • 01: WR-01 merge on-disk device entry instead of replacing on save (a176243)

  • 01: WR-01 reject all-zeros broadcast target in serial guard (76b00ef)

  • 01: WR-02 align mDNS idle-reset semantics with D-04 (74928f8)

  • 01: WR-02 assert state payload content in save-on-exit test (3c1c646)

  • 01: WR-03 write state file atomically via temp file and os.replace (fde7b20)

  • devices: Guarantee ceiling connection cleanup if save is cancelled (6c5933d)

  • discovery: Reject non-zero target padding in the serial guard (415006a)

Documentation

  • Add Phase 1 — unify duplicated discovery loops (426f018)

  • Create roadmap (1 phase) (c79fa7c)

  • Define v1 requirements (496ee75)

  • Initialize project (31ec39f)

  • Map existing codebase (ee7b4e0)

  • 01: Add code review fix report (03aa5b6)

  • 01: Add code review fix report (a876703)

  • 01: Add code review report (b9d7b8f)

  • 01: Add code review report (48bfa88)

  • 01: Capture phase context (d856de1)

  • 01: Capture phase context (20e0252)

  • 01: Create phase plan (052253b)

  • 01: Create phase plan (1b14726)

  • 01: Finalise phase plan artifacts (8fbb139)

  • 01: Mark Unify-discovery-loops phase complete & verified (0109677)

  • 01: Record D-01 revision and final code review fix report (086339f)

  • 01: Research ceiling save-on-exit phase (7456f22)

  • 01-01: Complete ceiling-save-on-exit plan (488dff5)

  • 01-01: Complete IdleDeadline plan (5748c49)

  • 01-02: Complete thin-discover-devices-wrapper plan (690fd20)

  • 01-03: Complete mDNS IdleDeadline adoption plan (74aa472)

  • 01-04: Complete deprecate-receive-many plan (4345760)

  • 01-05: Complete discovery error test gap plan (e23cec0)

  • phase-1: Add security threat verification (dbff129)

  • phase-1: Add security threat verification (608929d)

  • phase-1: Add validation strategy (f310ebf)

  • phase-1: Add validation strategy (b85ea2a)

  • phase-1: Complete phase execution (b941e14)

  • phase-1: Create phase plans for discovery loop unification (be081e5)

  • phase-1: Evolve PROJECT.md after phase completion (376bf9f)

  • phase-1: Research unify-duplicated-discovery-loops (e67c946)

  • state: Record phase 1 context session (262f8d3)

  • state: Record phase 1 context session (1aa4b2f)

  • v1.0: Add milestone audit (passed 7/7) and close out validation map (c99e9ad)

Features

  • 01-01: Add IdleDeadline unit tests in test_network/test_utils.py (40f9578)

  • 01-01: Implement CeilingLight.aexit to save state on exit (GREEN) (272d79b)

  • 01-01: Implement IdleDeadline in network/utils.py (28bb3d6)

  • 01-04: Deprecate UdpTransport.receive_many with DeprecationWarning (bc6c95d)

v5.4.9 (2026-05-21)

Bug Fixes

  • Add new products to the LIFX product list (f0e31c9)

v5.4.8 (2026-04-17)

Bug Fixes

  • Raise OSError in create_mdns_socket and handle exit in main() (5d036be)

Documentation

  • planning: Address code review nitpicks in codebase docs (5609034)

v5.4.7 (2026-04-17)

Bug Fixes

  • Ensure CeilingLightState exists before caliing set_power (48cef24)

v5.4.6 (2026-03-22)

Bug Fixes

  • Add MIT license header to effects ported from pkivolowitz/lifx (5830c98)

v5.4.5 (2026-03-22)

Bug Fixes

  • Device.connect() now returns Light for CCT and brightness-only products (df6d787)

  • Patch correct target for is_ceiling_product in tests (666a406)

v5.4.4 (2026-03-21)

Bug Fixes

  • Set a default value for duration_seconds for set_hev_cycle (f7fc708)

Documentation

  • Update docstring to provide more detail on hev config (02de0f0)

v5.4.3 (2026-03-21)

Bug Fixes

  • Defer is_on flag updates and add power-aware factory initialisation (3db28a3)

  • Defer is_on flags until after power-on and sync public fields on power-off (b412e40)

  • Defer stored state updates until after I/O succeeds in turn-off methods (01588ec)

  • Harden CeilingLightState against aliased mutations and stale snapshots (73a7275)

  • Move ceiling component state to CeilingLightState dataclass (06372b9)

  • Resolve remaining CodeRabbit review comments (cd450a8)

  • Return defensive copy of stored downlight colours (2575889)

  • Sync ceiling component is_on state in getter methods (8b83f35)

  • Sync public CeilingLightState fields in all mutators and getters (1eac576)

v5.4.2 (2026-03-21)

Bug Fixes

  • Guard against ValueError if signal is negative or 0 (a1085c6)

v5.4.1 (2026-03-19)

Bug Fixes

  • Asyncio and import pattern cleanup (review-critical_20260318) (07fed68)

  • Protocol correctness and code quality fixes (review-critical_20260318) (e3276bf)

  • animation: Validate HSBK input length in update_colors() (94b232f)

  • codecov: Allow coverage uploads from failing CI runs (1843d19)

  • color: Preserve full precision in with_* helpers (35f6229)

  • effects: Clear _last_generated_hsbk unconditionally after iteration (b6bf2bb)

  • test: Make source ID rejection test deterministic (3d93826)

  • test: Move noqa ARG001 to the actually unused config parameter (2c068bc)

  • transport: Rate-limit QueueFull warning to prevent log flooding (82378af)

Documentation

  • Fix remaining int RGB references and clean up long float literals (5880ad2)

  • Streamline CLAUDE.md from 907 to 381 lines (59769e8)

  • animator: Fix stale comment about source ID allocation (6336427)

  • effects: Consolidate effects content into user-guide (Phase 1) (71a5684)

  • effects: Document _last_frames limitation for protocol-direct path (257febf)

  • effects: Update FrameEffect docstrings for generate_protocol_frame (8e52cee)

  • mkdocs: Fix all documentation correctness issues (7a061e4)

  • nav: Update navigation and add progressive disclosure links (Phase 4) (42caf99)

  • plan: Fix task list checkbox spacing at line 25-26 (2f9e5e9)

  • plan: Fix task list checkbox spacing at line 39-40 (cb09448)

  • plan: Fix task list checkbox spacing at line 54-55 (5b3dd32)

  • plan: Fix task list checkbox spacing at line 70-71 (c0990aa)

  • plan: Fix task list checkbox spacing at line 75-79 (70440a2)

  • source: Fix misleading docstrings in base.py, api.py, exceptions.py (901d4aa)

  • structure: Relocate misplaced content and fix orphaned links (Phase 3) (25f2186)

  • tests: Fix misleading comment in idle timeout test (b76a418)

  • themes,animation: Deduplicate themes and animation content (Phase 2) (c489bc7)

Performance Improvements

  • animation: Avoid slice allocation in update_colors() hot loop (b3152e1)

  • animation: Use pre-compiled struct.Struct for HSBK writes (1b54956)

  • aurora: Add direct generate_protocol_frame() override (review-perf_20260318) (a01f289)

  • effects: Add generate_protocol_frame() to FrameEffect (review-perf_20260318) (24bb03c)

  • framebuffer: Pre-compute canvas-to-device LUT at init time (review-perf_20260318) (3b28194)

  • packets: Replace flat list building with direct struct.pack_into (review-perf_20260318) (ced40eb)

  • protocol: Guard asdict() in Packet.unpack() behind debug check (review-perf_20260318) (44617c1)

v5.4.0 (2026-03-18)

Documentation

  • effects: Add animated GIFs and effects gallery page (fbcaadc)

  • effects: Add documentation for 18 effects adapted from pkivolowitz/lifx (a4f47be)

Features

  • examples: Add effects demo script with device-type-aware selection (be36b95)

v5.3.0 (2026-03-18)

Bug Fixes

  • color: Clamp blend parameter in lerp methods (4c41ca4)

  • effects: Fix zones_per_bulb normalization, embers single-zone, CA restart, and test assertions (f049252)

  • effects: Polish ported effects and fix API surface issues (ee01ec9)

  • effects: Resolve Pyright possibly-unbound variable in Sine effect (b6629ad)

  • security: Skip bandit B311 globally and remove nosec comments (90e713b)

  • tests: Update registry test to use superset check (a9c3063)

  • tests: Update theme count from 42 to 57 after palette additions (e416341)

Documentation

  • Add design spec for porting pkivolowitz/lifx effects (2d17778)

  • Add implementation plan for effects port (70bfe89)

  • Address spec review findings (9a3ca10)

Features

  • color: Add lerp_oklab and lerp_hsb methods to HSBK (71a794a)

  • effects: Add Cylon (Larson scanner) effect (26e75d5)

  • effects: Add Double Slit (wave interference) effect (7617cca)

  • effects: Add Embers (fire simulation) effect (3a9ab6c)

  • effects: Add Fireworks effect (d509f4b)

  • effects: Add Jacob's Ladder (electric arcs) effect (c447011)

  • effects: Add Newton's Cradle effect (a414b37)

  • effects: Add Pendulum Wave effect (9315730)

  • effects: Add Plasma (electric tendrils) effect (6fed46d)

  • effects: Add Plasma2D effect for matrix devices (2a94fd7)

  • effects: Add Ripple (water drops) effect (d3a4a33)

  • effects: Add Rule 30 (cellular automaton) effect (13b9f07)

  • effects: Add Rule Trio (three CAs blended) effect (45346d4)

  • effects: Add Sine (traveling ease wave) effect (24a2ec9)

  • effects: Add Sonar (radar pulses) effect (575fed4)

  • effects: Add Spectrum Sweep effect (9aad95b)

  • effects: Add Spin (color migration) effect (9b91fc9)

  • effects: Add Twinkle (sparkle) effect (2660f19)

  • effects: Add Wave (standing wave) effect (63cdf9b)

  • effects: Register and export all 18 ported effects (c5caa0d)

  • theme: Add palette themes from pkivolowitz/lifx (4126ccf)

v5.2.1 (2026-03-18)

Bug Fixes

  • tests: Add pytest-timeout, retry flaky Windows emulator tests (4b6b3a9)

  • tests: Extend timeout to 120s for emulator tests (016e1aa)

Documentation

v5.2.0 (2026-02-07)

Bug Fixes

  • Address CodeRabbit review feedback (487f4ab)

Documentation

  • Fix duration_ms formula (1000 -> 1500/fps) in effects API docs (487f4ab)

Features

  • Add new effects, effect registry, and rename examples (2f8192d)

v5.1.1 (2026-02-06)

Performance Improvements

  • Optimize device initialization and packet sending (865c4e3)

  • Pure-Python optimizations for protocol, network, and animation layers (a9a4bd4)

v5.1.0 (2026-01-24)

Bug Fixes

  • animation: Load capabilities before checking has_chain (69e50b3)

Documentation

  • Add DeviceGroup usage example (9f85854)

  • Remove reference to deleted FieldSerializer class (5db0262)

Features

  • animation: Add high-performance animation module (afc8063)

v5.0.1 (2026-01-14)

Bug Fixes

  • Handle asyncio.TimeoutError on Python 3.10 (4438bc4)

v5.0.0 (2026-01-12)

Features

  • Add Python 3.10 support (7c39131)

Breaking Changes

  • Batch operations now raise first exception immediately (asyncio.gather behavior) instead of collecting all exceptions into an ExceptionGroup (TaskGroup behavior).

v4.9.0 (2025-12-30)

Features

  • api: Add HTML named colors and kelvin temperature presets (b631d43)

v4.8.1 (2025-12-24)

Bug Fixes

  • Tighten up the URL parsing to be even more specific (0222362)

v4.8.0 (2025-12-20)

Features

  • network: Add mDNS/DNS-SD discovery for LIFX devices (f25987d)

v4.7.5 (2025-12-16)

Bug Fixes

  • devices: Override set_color in CeilingLight to track component state (0d20563)

v4.7.4 (2025-12-16)

Performance Improvements

  • devices: Reduce get_all_tile_colors calls in CeilingLight (3936158)

v4.7.3 (2025-12-16)

Bug Fixes

  • devices: Capture component colors before set_power turns off light (a99abee)

v4.7.2 (2025-12-16)

Bug Fixes

  • api: Close device connections in DeviceGroup context manager (054bfee)

Documentation

  • api: Add dataclass documentation and improve navigation (c859c87)

v4.7.1 (2025-12-13)

Bug Fixes

  • devices: Add length parameter to copy_frame_buffer() (6a74690)

v4.7.0 (2025-12-13)

Features

  • devices: Add fast parameter to set_extended_color_zones() (0276fca)

v4.6.1 (2025-12-12)

Bug Fixes

  • devices: Check for power and brightness for Ceiling components (bd1b92f)

v4.6.0 (2025-12-11)

Features

  • devices: Add CeilingLightState dataclass for ceiling component state (607f15c)

v4.5.1 (2025-12-11)

Bug Fixes

  • devices: Export CeilingLight add add user guide and API documentation (10e0089)

v4.5.0 (2025-12-08)

Features

  • devices: Add CeilingLight with independent uplight/downlight component control (95fc5a6)

v4.4.1 (2025-12-03)

Bug Fixes

  • theme: Prevent color displacement in multi-tile matrix theme application (ca936ec)

v4.4.0 (2025-11-29)

Features

  • devices: Add factory pattern with automatic type detection and state management (4374248)

v4.3.9 (2025-11-27)

Bug Fixes

  • network: Propagate timeout from request() to internal methods (b35ebea)

v4.3.8 (2025-11-25)

Bug Fixes

  • network: Raise exception on StateUnhandled instead of returning False (5ca3e8a)

v4.3.7 (2025-11-25)

Bug Fixes

  • devices: Raise LifxUnsupportedCommandError on StateUnhandled responses (ec142cf)

v4.3.6 (2025-11-25)

Bug Fixes

  • network: Return StateUnhandled packets instead of raising exception (f27e848)

v4.3.5 (2025-11-22)

Bug Fixes

  • devices: Allow MatrixEffect without palette (fb31df5)

v4.3.4 (2025-11-22)

Bug Fixes

  • network: Exclude retry sleep time from timeout budget (312d7a7)

v4.3.3 (2025-11-22)

Bug Fixes

  • Give MatrixLight.get64() some default parameters (a69a49c)

  • themes: Apply theme colors to all zones via proper canvas interpolation (f1628c4)

v4.3.2 (2025-11-22)

Bug Fixes

  • effects: Add name property to LIFXEffect and subclasses (deb8a54)

v4.3.1 (2025-11-22)

Bug Fixes

  • Actually rename the matrix methods (061aaa7)

v4.3.0 (2025-11-22)

Features

  • effects: Unify effect enums and simplify API (df1c3c8)

v4.2.1 (2025-11-21)

Bug Fixes

  • Get_wifi_info now returns signal and rssi correctly (6db03b3)

v4.2.0 (2025-11-21)

Documentation

  • api: Remove obsolete reference to MessageBuilder (9847948)

Features

  • devices: Add ambient light sensor support (75f0673)

v4.1.0 (2025-11-20)

Features

  • network: Replace polling architecture with event-driven background receiver (9862eac)

v4.0.2 (2025-11-19)

Bug Fixes

  • Product registry generation (2742a18)

v4.0.1 (2025-11-18)

Bug Fixes

  • devices: Prevent connection leaks in temporary device queries (0ee8d0c)

v4.0.0 (2025-11-18)

Features

  • devices: Replace TileDevice with MatrixLight implementation (1b8bc39)

Breaking Changes

  • devices: TileDevice class has been removed and replaced with MatrixLight

v3.1.0 (2025-11-17)

Features

  • Remove connection pool in favor of lazy device-owned connections (11b3cb2)

v3.0.1 (2025-11-17)

Bug Fixes

  • Get_power() now returns an integer value not a boolean (3644bb9)

v3.0.0 (2025-11-16)

Features

  • Convert discovery methods to async generators (0d41880)

  • Replace event-based request/response with async generators (fa50734)

Breaking Changes

  • Internal connection architecture completely refactored

v2.2.2 (2025-11-14)

Bug Fixes

  • devices: Replace hardcoded timeout and retry values with constants (989afe2)

v2.2.1 (2025-11-14)

Bug Fixes

  • network: Resolve race condition in concurrent request handling (8bb7bc6)

v2.2.0 (2025-11-14)

Features

  • network: Add jitter to backoff and consolidate retry logic (0dfb1a2)

v2.1.0 (2025-11-14)

Features

  • Add mac_address property to Device class (bd101a0)

v2.0.0 (2025-11-14)

Refactoring

  • Simplify state caching and remove TTL system (fd15587)

v1.3.1 (2025-11-12)

Bug Fixes

  • Add Theme, ThemeLibrary, get_theme to main lifx package exports (6b41bb8)

Documentation

  • Add mkdocs-llmstxt to create llms.txt and llms-full.txt (4dd378c)

  • Remove effects release notes (2fdabc0)

v1.3.0 (2025-11-10)

Features

v1.2.1 (2025-11-08)

Bug Fixes

  • Implement tile effect parameters as local quirk (f4ada9b)

v1.2.0 (2025-11-07)

Features

v1.1.3 (2025-11-06)

Performance Improvements

  • Reduce network traffic when updating individual color values (679b717)

v1.1.2 (2025-11-05)

Bug Fixes

  • Dummy fix to trigger semantic release (86ad8b4)

v1.1.1 (2025-11-05)

Bug Fixes

  • Dummy fix to trigger semantic release (12786b5)

v1.1.0 (2025-11-05)

Features

  • Replace cache TTL system with timestamped state attributes (5ae147a)

v1.0.0 (2025-11-04)

  • Initial Release