Summer release
Caution
Several BC breaking changes are in this version, but most of them shouldn't impact the user of the DSL. You might be
impacted if you work with more lower level APIs (like some of the livebooks do and therefore required small adjustments.
- the parameters of
Leds.set_led_strip_info/3are around, so it's more consistent - added a
countto theset_leds(andset_leds_with_rotation) to optimize the call. It's allowed to benil - the animation
typeis now mandatory - renamed several functions
- several functions got moved to other modules or deleted
It should be rather obvious which changes will break compatibility and it should be clear on how to fix it
Intro
In this a lot of things have changed to improve the stability and the quality of the code. The whole system now hangs in a supervision tree and processes get restarted if they start to fail for some reason. There are still some more changes expected but the biggest junk is done, so it's time for this summer release.
Note: The expected changes in the Effects did not happen in this version, this is on the plan for the next version as part of the further improvements of the Coordinator
What's new?
Features
- started all the processes in a
Supervisortree:- Built the AnimationSystem supervisor with
Animation.Manager,LedStrips,Animation.JobScheduler, ... - Attached the
Animation.AnimatorandAnimation.Coordinatorto theLedStrip - provided the possibility to specify a
:supervisoroption in theuse Fledexcall - Note: more smaller changes are expected in the next version, like introducing a
stop_xyzto the supervisors, move the job scheduler to theLedStrip, ...
- Built the AnimationSystem supervisor with
- removed the dependency from Animator onto the
Leds.sendfunction. We introduced aLedStrip.set_leds_with_rotationfunction. Animation.Animatoroptions are now allowed to benil- added a
:log_levelparameter touse Fledexbecause the Fledex config might not be read if not started as an application. The default is to only log info levels and above
Docs
- big overhaul and restructuring of the documentation.
- added more documentation (
@moduledoc,@typedoc,@doc) and improvement of livebooks - added more livebooks for school presentation (in German, WIP)
- started to write some documentation for the coordinator (WIP)
- started using a modified ex_doc version to get the documentation working as desired (see elixir-lang/ex_doc#2118 for details)
- added favicon and logo to the documentation
Tests
- added more negative tests (especially related to the supervisor tree)
- simplified some tests (a result of introducing the supervisor tree)
- improved the stability of the tests
Builds
- added support for Elixir 1.18
- small refactoring how the colors are stored that avoid the failing compilation (due to too expensive color compilation)
- fixed some warnings that are emitted by the Elixir 1.18 compiler
- decided on the versions to support and test for.
- updated dependencies
- added scorecard analysis
- added OpenSSF Best Practices
- reduced the compile time dependencies
Bugs
- corrected some copyright notices (they had the wrong year)
Cleanups
- renamed
shutdownfunctions tostopto be consistent - moved several files/functions/... around and removed unnecessary stuff
- moved functions around so there is more consistency
- improved the
@specs- added them wherever they were missing
- simplified them by introducing new types
- corrected them where erroneous (dialyzer does not report any issues anymore)
- renamed them (like
Manager.configs_ttoManager.config_t)
- moved all TODOs into the
TODO.mdfile. Thereby, Credo now reports asfound no issues - cleaned up the
IO.putsand replaced them with Logger entries where necessary. Especially logging process start and shutdown - removed unused code
- removed the optional qualifier from the type spec where they are required
- breaking out the utility functions used in components
- fixing the component interface that any manager config is valid (not just animations)
- getting rid of the AnimatorBase and the AnimatorInterface (they weren't necessary and made things more complicated than necessary)
- made the animation type mandatory. The use of a default made things more fragile.
Final words
For the next release, as partially mentioned above, I'm looking at:
- further improvements and documentation for the
Coordinator, including the changes on theEffects. - improving the documentation for the school material
- improving the
Supervisortree (to get theJobScheduleras a part of theLedStrip(and maybe exchangeQuantumfor another library, maybe even one with millisecond precision?) - And maybe, but only maybe, provide support for other led strips (like WS2812, WS2813, WS2815, ... which are all working the same way)
And now I wish you a nice summer and a lot of fun!