Skip to content

CHANGELOG

All notable changes to this project will be documented in this file.

2.2.0 - 2026-03-25

Bug Fixes

  • Dropped base python version from 3.12 to 3.11 (29ccd98)

2.1.1 - 2026-03-25

Bug Fixes

  • Add interrupt parameter to light on method (92a985d)

Documentation

  • fix dangling cross-reference in contributing.md (87bac4a)

Other

  • Updated uv.lock with latest dependencies. (d75a029)

2.1.0 - 2026-03-24

Bug Fixes

  • cancel pre-existing tasks in Light.on() via Template Method (#59) (06d7cd2)
  • use uv sync for git-cliff in release workflow (7350ca0)
  • use GH_PAT for release changelog push (af63027)

2.0.1 - 2026-03-15

Bug Fixes

  • use GH_PAT for auto-merge workflow permissions (3099e9d)
  • add preflight checks to publish tasks (2c039b5)

Other

  • add scratch file names to .gitignore (ff0b596)

Refactor

  • modernize type annotations with Self and Callable (#57) (2df1ff6)

1.0.1 - 2026-03-15

Features

  • replace changelog generation with git-cliff (#55) (8c7635c)

0.15.4 - 2026-03-14

Bug Fixes

  • mark blyncusb doc code block as notest (8a118d7)
  • set testpaths so bare pytest runs unit tests only (07d71fa)
  • IndexError in button_on method addressed. (32319a6)
  • Luxafor Flag on method could barf on incorrect led specification. (98802bc)
  • resolve CI failures - lint rules, libusb dependency, format (2c6c8bb)
  • Changed path encoding order in Light.at_path (19b5637)

Documentation

  • sync doc test guidance across CLAUDE.md, CONTRIBUTING.md, docs/, and release workflow (#44) (03f5fd7)
  • rewrite documentation to match actual API (fixes #43) (27a8e16)

Features

  • add support for early Blynclight models (VID 0x1130) (#52) (498a80b)
  • add poe doc-test task, update all references (4f74ff3)
  • add executable doc tests with pytest-markdown-docs (#44) (f0d553e)

Other

  • Luxafor Mute is_button method does not work. (8d47268)
  • nope, needed libusb too. Added back into test workflows. (be4d483)
  • libudev.h supplied by libudev-dev and not libusb. (bfc77c6)
  • Remove hallucinated section from README (9d5ba2c)
  • Updated tests (bd35a7c)
  • Updated pyproject.toml (9c42260)

Styling

  • remove underscore prefixes from docs/conftest.py (42c7d70)

0.15.3 - 2025-11-22

Bug Fixes

  • busylight_core.hardware.Hardware (ab3b0d9)

Features

  • Acquire Light instances using path specifier. (6551ae3)
  • busylight_core.light.Light.nleds property (e2cf8c8)

Refactor

0.15.2 - 2025-09-21

Bug Fixes

  • refactor Kuando keepalive to instance method and update tests (6704451)
  • TaskableMixin mock detection and vendor test (c7386bf)

0.15.1 - 2025-08-12

Documentation

  • Updated README.md examples. (c0d7633)

Features

  • added as_dict method to Harwdare (d430726)
  • Added str to Light (b9c973a)

0.15.0 - 2025-07-31

Bug Fixes

  • add missing interval parameter for periodic keepalive (4aa03f0)
  • Some serial devices have None for vendor or product IDs (665cb26)
  • accidently commited working file (a9a089d)

Documentation

  • remove unnecessary Kuando-specific section from CLAUDE.md (b6c590f)
  • remove keepalive mentions from user documentation (1fcfd94)
  • update documentation for TaskableMixin and Kuando keepalive (d552aac)
  • update issue templates with correct version commands (7bfeca3)
  • add Implementation links to vendor API reference navigation (d6c77a9)
  • restructure API reference documentation (603e01a)

Features

  • add threading fallback for TaskableMixin (663ba9a)
  • add new device support request issue template (7778b86)

Other

  • add version attribute validation tests (86c6ac1)

Refactor

  • simplify Kuando keepalive implementation (f5695ed)
  • restructure vendor implementations into logical modules (25b16d7)

Styling

  • ruff formatting cleanup (662176c)

0.14.1 - 2025-07-25

Bug Fixes

  • Use consistent busylight_core naming in tool section (83b21b2)

Documentation

  • update all documentation for vendor Lights classes (b676a52)
  • Broken link in README.md (c693c38)
  • Consolidated development info in CONTRIBUTING.md (3054ab3)
  • Removed mute from Kuando in vendor/device table. (86ea9e0)
  • Wordsmithing the README (b6ae056)
  • Fixed doc URLs in README. s/advanced-features/features/ (c5fa708)
  • fix documentation links in README (41703a6)
  • comprehensive documentation improvements and API reference enhancement (652ce8a)
  • removed nonfunctional fix for footnote rendering. (444f36c)
  • Update CONTRIBUTING.md for optimized release workflow (b0bcf28)
  • Document optimized release workflow in CLAUDE.md (0ad1067)
  • Document Python version configuration in workflows README (21b5aeb)
  • Document workflow communication mechanism in README (fa02ff6)
  • Add GitHub Pages setup link to workflows README (e3ae0d4)
  • Remove irrelevant Jinja formatting section from workflows README (840d11b)
  • Update workflows README to reflect optimized architecture (ca8c844)
  • Optimize CLAUDE.md for token efficiency and objectivity (98f0627)
  • Standardize exception variable names from 'e' to 'error' (5d6ff49)

Features

  • add vendor-specific Lights classes for direct access (90177e7)
  • Updated busylight_core package with version information string. (9fdfde3)
  • added release method to busylight_core.light.Light (6bce0de)
  • Add error handling for missing Python version config (aebb765)

Other

  • add comprehensive tests for vendor Lights classes (ee27c3c)
  • Remove unnecessary JSON conversion for Python versions (6866a0f)

Refactor

  • Standardize Light class caching to @cache decorator (e7fe6e3)

0.11.0 - 2025-07-22

Other

  • Update tests to match corrected device capabilities (303e0f5)

0.10.0 - 2025-07-22

Bug Fixes

  • Correct audio capabilities across Embrava Blynclight variants (d88e806)

Documentation

  • Updated light and init docstrings (645e592)
  • Updated README examples. (f083f06)
  • Update project documentation with docstring format guidance (84e8cce)
  • Update project documentation with docstring format guidance (ccabfc8)

Other

  • ignore scripts directory that CLAUDE creates for one-off tools. (afbd9dd)

Refactor

  • Standardize docstrings to Sphinx reStructuredText format (64f182f)
  • Standardize docstrings to Sphinx reStructuredText format (c3b10a4)

0.9.2 - 2025-07-22

CI

  • Updated release workflow to include automatic changelog updates. (7fa49dc)

Other

0.9.1 - 2025-07-22

Other

  • satisfying ruff check in src and tests (4aca9d7)
  • ruff check updates, refactor of the blinkstick claims methods. (2d3f681)

0.9.0 - 2025-07-22

Documentation

  • Restore proper docstrings with Google/JavaDoc style formatting (185e04a)

Features

  • Enhanced async task management with prioritization and error handling (a395382)

Other

  • Add plan.md to .gitignore (d114171)
  • Add comprehensive hierarchy tests for all vendor base classes (345bae0)

Refactor

  • Updated agile innovative blinkstick classes with a parameterized _claims classmethod (267de41)
  • Replace try/except/pass with contextlib.suppress (942c245)
  • Clean up async task management code (ca28010)
  • Remove plan.md from repository (eebd65a)
  • complete vendor base class hierarchy standardization (1f61902)
  • implement Phase 1 foundation improvements (de94f2f)

Styling

  • Replace single-character exception variable with descriptive name (01cd5d7)

0.8.0 - 2025-07-20

Other

  • Updated Kuando _busylight.ScaledColorField to work with 3.11 and 3.12 (73778cc)

0.7.0 - 2025-07-20

Bug Fixes

  • Fixed a bug in the _muteme.OneBitField class's setter method. (2a988b7)

Other

  • Updated Kunado _busylight ColorField set and get methods. (a1c3044)
  • Ruff updates for test_vendor_plantronics_status_indicator (8907412)
  • Add comprehensive tests for Plantronics Status Indicator device (6abfdac)

0.6.0 - 2025-07-20

Other

  • Cleaned up poe tasks in pyproject. (073df3a)
  • Ruff updates to tests. (80e4975)
  • Add comprehensive tests for CompuLab fit-statUSB device (22f835a)
  • Add comprehensive tests for Light.udev_rules classmethod (3aac874)
  • Ruff check fixes. (ccc92a9)
  • Refactored Kuando Busylight tests. (ec00ad7)
  • Clean up docstrings and standardize color property documentation (367874b)
  • Renamed Kuando Busylight Alpha test suite. (dab57e9)
  • Refactored Kuando Busylight family and updated tests. (eac743d)
  • Refactor color handling architecture across all devices (af4d85d)
  • Updated .gitignore (2c26238)
  • Bugfix for blinkstick_base.BlinkStickBase (35df5b8)
  • Updated busylight_core.light.Light (42b8597)
  • Updated Luxafor tests for proper Busy Tag vendor name. (53a935e)
  • Busy Tag device now in the Luxafor family of devices. (ef2ef45)
  • Updated Agile Innovative BlinkStick family (f8da555)
  • Updated Agile Innovative BlinkStick family of imports. (95396da)

0.5.0 - 2025-07-19

Bug Fixes

  • Fix exception implementation and hardware handle property (d9ab8b7)

Other

  • Updated Embrava blynclight test, removed check for deleted struct property. (f640d11)
  • Add BlinkStickBase abstract base class for Agile Innovative devices (889ba11)
  • Simplify Embrava Blynclight implementation and improve documentation (e617c68)
  • Enhance Embrava Blynclight implementation with color field support (b5a1de4)
  • Enhance exception handling and improve hardware robustness (801d92a)
  • Enhance Light class documentation and type safety (68c8e91)
  • Updated test_light (db665f1)
  • Updated Agile Innovative tests: ruff check (d255617)
  • Updated README with link to Busylight For Humans™ (e650fc7)

0.4.1 - 2025-07-18

Other

  • Added check to subclasses method to exclude Light subclasses whose supported_device_ids dictionary is None (1904d9e)
  • Updated README.md (b11f457)

0.4.0 - 2025-07-18

Other

  • Added support for remainder of the Agile Innovative BlinkStick family of devices: BlinkStick, BlickStick Pro, BlickStick Nano, BlickStick Flex, and BlickStick Strip (3b3a4c9)
  • Update BlinkStick tests for new State API (c1b0ed5)

0.3.5 - 2025-07-18

Bug Fixes

  • Fix descriptor protocol handling for Python 3.11 compatibility (2f03dab)

0.3.4 - 2025-07-18

Other

  • Update BlinkStick tests for GRB color fix implementation (51912d8)
  • Updates to Agile Innovative BlinkStick, bug in new code and testing. (ea5c4e4)
  • Updated BlinkStick devices. (07a363f)
  • ruff check tests now runs clean (f26943f)
  • ruff format tests (9e14843)
  • Achieve 99% test coverage with comprehensive edge case testing (fdfaad6)
  • Rename all vendor-specific test files with test_vendor_ prefix (9215065)
  • Complete comprehensive test coverage for all remaining vendor implementations (4a90a9a)
  • Add comprehensive test coverage for EPOS and Kuando vendor implementations (5e57d55)

0.3.3 - 2025-07-17

Other

  • Renamed Light.reset property to Light.was_reset since it shadowed the reset method. Whoops. (b29c7d7)
  • ruff format tests updated unpacking. (a10f704)
  • Updated MuteSync (5521c69)

0.3.2 - 2025-07-17

Other

  • Update mutesync claims method (38d849b)

0.3.1 - 2025-07-17

Other

  • Updated mutesync vendor to reflect new ownership by MuteMe (30a6382)
  • Updated .envrc (ddf3d0c)
  • Updated vendor and model information (fcbf8e5)

0.3.0 - 2025-07-16

Bug Fixes

  • Fixed typo in busylight_alpha (6ab20ee)
  • Fix all ruff check issues in test suite and complete pytest compliance (3d47216)
  • Fix all ruff check issues in src directory (c6752f7)
  • Fixed light.Light.hash (070fcbb)
  • Fix API Reference navigation to properly show Light class (b3e6bda)

Other

  • Updated project dependencies (9939a28)
  • Improve API design and test coverage with property refactoring (df3a436)
  • Update old exception references to new exception names (0f5d07d)
  • Updated base class implementations to satisfy ruff check (24b03db)
  • Updated source with ruff format (52f7102)
  • Updated pyproject.toml ruff check options (4e577cb)
  • Updated busylight_core/light.py (254ba9d)
  • Updated Vendor Embrava init (8096084)
  • Updated EPOS Busylight (ed88619)
  • EPOS Busylight Support (ba756be)
  • Updated Tests (b25f72d)
  • Refactored Embrava Blynclight (c964555)
  • Updated MuteMe vendor tests to include MuteSync (28dc5d1)
  • Removed empty vendor test for busytag (1b30067)
  • Updated tests" -m "Moved MuteSync fixtures to MuteMe module. (c232f91)
  • Refactor Light API to simplify device support pattern (e6a09c4)
  • MuteSync now vendored by MuteMe (577913a)
  • MuteSync now vendored by MuteMe (dd24156)
  • Moved BusyTag to the Luxafor vendor subdirectory. (8ee7ed0)
  • Updated tests/conftest.py (420361a)
  • Updated pyproject.toml (204bf44)
  • Updated README.md (602a686)
  • Updated gitignore for .claude (1435089)
  • Updated envrc (f40fbc8)
  • Updated docs to highlight busylight_core.Light class (c1059d6)
  • Updated .envrc (e008dfb)
  • Prominently feature Light class in API reference (2f26ff4)
  • Improve API reference navigation with organized table of contents (2f2f48f)
  • Remove pre-commit hook installation from contributing docs (aac516e)
  • Update documentation to remove CLI references and expand features (76f5bf3)

0.2.4 - 2025-07-13

Other

  • Increased minimum python version to 3.11 (e312f9d)

0.2.3 - 2025-07-13

Bug Fixes

  • Fixed bug in conftest.py (222963a)

0.2.2 - 2025-07-13

Other

  • Narrowed supported python versions (f9f19d9)

0.2.1 - 2025-07-13

Other

  • Added dev dep tomlkit (87a222c)
  • Initial commit of CLAUDE.md (ad15f96)

0.2.0 - 2025-07-13

Bug Fixes

  • Fix async test failures and deprecation warnings (0da7618)

Other

  • Transplanted working busylight_core into new template hotness. (d6dbd01)
  • initial commit (fd5ca26)