CHANGELOG.md

# Changelog

## v0.4.1 - 2022-10-17

* Changes
  * Added support for starting Delux as an OTP application. This is triggered by
    supplying an application configuration (see README.md). Please see
    documentation for tradeoffs.
  * Added support for specifying an initial configuration. The indicators no
    longer are forced to start in the off state.
  * Support looping Morse code sequences

## v0.4.0 - 2022-10-14

This is a big update that improves program playback timing to compensate for
the Linux kernel's HZ configuration and implementation of LED pattern triggers.
This affects all programs, but you probably won't notice it unless you're
creating Morse code patterns or measuring LED output with a logic analyzer.

* Backwards incompatible changes
  * "Priority" is now called "slot". If you have custom priorities defined in
    your configurations, you will need to change them to `slot`. This change
    was made to make the use of this feature easier to explain. I.e. programs
    are put in slots, one program per slot per indicator, slots have an order.

* Changes
  * Added `:backend` parameters and specifically the `:hz` parameter to support
    better playback timing. If unset, HZ=1000 is assumed. This results in
    almost the same timings as earlier versions. See the README for more
    information.
  * Added `Delux.Effects.number_blink/3` for blinking out a number. This is for
    things like error codes - like error 1, 2, 3, etc.
  * Added `Delux.Effects.timing_test/2` to debug timing precision issues with a
    logic analyzer.
  * Removed unnecessary writes to the filesystem when using multiple
    indicators. This fixes an issue where a change on one indicator restarts a
    program on a second indicator.
  * Reorganized the backend code to support future alternative backends. This is
    currently unplanned work, but it's now easier to think about adding a way to
    run Delux using Circuits.GPIO or a simulated LED.

## v0.3.1 - 2022-09-26

* Changes
  * Support dimming arbitrary patterns to off. The dimming feature still doesn't
    dim all patterns, but dimming to off works for everything now.

## v0.3.0 - 2022-09-07

* Changes
  * Favor singleton use of Delux with default arguments to `render/3` and
    `info/2`. Now that Delux is being used more frequently as a singleton, this
    makes the API more convenient. This is backwards incompatible if you had
    been taking advantage of default arguments, but you should get compile-time
    and dialyzer errors. If you do name your Delux GenServers, you'll have to
    specify all arguments to `render/3` and `info/2`.
  * Improve argument error messages by reporting what the valid options are in
    addition to what you passed.

## v0.2.0 - 2022-08-26

* Changes
  * Register the Delux GenServer with a default name so that pids or names don't
    need to be passed to all APIs. Since Delux is almost always used as a
    singleton, this simplifies the API.

## v0.1.3 - 2022-08-11

* Changes
  * Fix typespecs to remove warnings found by Dialyzer
  * Update `Delux.Effects.waveform/3` to support color atom names and check RGB
    tuples for range. The latter fixes errors that get detected later on and are
    more confusing to figure out.

## v0.1.2 - 2022-08-11

* Changes
  * Improve `Delux.Effects.waveform/3` so that it's easier to use and produces
    shorter patterns. It now has examples in the docs and unit tests.

## v0.1.1 - 2022-08-10

* Changes
  * Adjust timed pattern playback to minimize trimming LED programs.
    Unfortunately, LED programs still get cut off at the end with this release.
    If you're using Morse code, you'll see this. We plan on fixing this
    completely in a future release.
  * Support empty LED setups to simplify configuration of multi-target projects
    and unit tests.

## v0.1.0 - 2022-08-08

Initial release