Releases: JnyJny/busylight
Release list
Well That Took Longer Than I Thought
New features:
- Serial USB support
New light support:
- Compusa fit-statUSB
- MuteMe MuteMe
- MuteSync MuteSync
Deprecated:
- The
fastapibased web api is now deprecated and will be replaced with a standalone project.
Windows tests are passing, weirdly. I still don't claim Windows support but it might be working better now.
Web API Docs Work - Again.
Fixed a self-inflicted bug regarding version tracking that broke FastAPIs automatic documentation generation. All good now.
New Light Day - MuteMe
This release includes initial support for the MuteMe LLC's family of devices:
- MuteMe Original
- MuteMe Mini
More Things Fixed than Broken
- Improved blinking with multiple devices (it works now, so definitely improved)
- Test coverage is hovering around 87% which is better.
- Generally a more pleasing and consistent interface.
Now With asyncio and Stuff!
Ok I'm sorry, but I'm not sorry. This version contains breaking changes. Lots of breaking changes. So many breaking changes. All of these changes were in service of converting the programming model from threads (to allow each light to be animated concurrently by a separate software thread), to asyncio.Tasks. Converting to tasks allowed each thread to be animated concurrently from a single thread. The driving reason is the explicitly single-threaded nature of hidapi which was beginning to exhibit more unstable behavior when used in a multi-threaded environment.
Version 0.17.0 is a near complete re-write of busylight.lights.USBLight:
- improved subclass support
- expanded utility of class methods for
USBLight - removed threading support for animations and keep alive activities
- added asyncio support for animations and keep alive activities
- improved exception handling to detect unplugged/unavailable lights
The manager class busylight.manager.LightManager was re-written:
- updated for
USBLightclass and subclasses - improved exception handling of lights
- switched threading for asyncio to support concurrency
The command-line interface was updated to use the LightManager class with only minor changes to the actual interface.
The tests suite was updated for the new asyncio implementation. The mocking isn't quite as clean as I would like, but it's good enough for now. The tests should run whether or not there are physical lights connected.
Lastly, the FastAPI web interface underwent significant changes:
- routes were removed
- routes were expanded to accept optional keyword arguments
Note: changes between versions 0.16 and 0.17 were mostly python version compatibility fixes and GitHub Action maintenance. The real changes happened between 0.15 and 0.16.
Full Changelog: 0.15.0...0.17.0
The End of Era
Barring unforeseen circumstances, this will be the finial version of Busylight For Humans™ utilizing a threaded model. The next version, provisionally 0.16.0, will use asynchronous I/O to implement features that previously used threads. The hidapi framework is single threaded, so it was basically lucky on my part that busylight worked as well as it did.
What's Changed
- Bump typer from 0.3.2 to 0.4.1 by @dependabot in #126
Full Changelog: 0.15.3...0.15.4
A Smidgeon of Pidgeons
ThingM blink lights now blink.
Luxafor Flag blink unbroken
This release fixes blink for the Luxafor Flag. It blinks now, where before it didn't.
Quintillions of Quails
This patch release fixed a big bug in busylight.manager.LightManager.update() and will only matter to users of the web API. The LightManager will now be able to realize that devices have been plugged and unplugged while it wasn't looking.
A Trepidation of Turnips
The optional web API is now working again after some minor breakage, please refer to the builtin API documentation:
$ busylight server
...
and navigate a browser to "http://hostname:port/docs" to see the automatically generated API documentation.
Bugs fixed:
- Kuando BusyLight keep-alive thread was too good at it's job.