# Changelog
This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## v0.2.2 - 2025-04-24
* Updates
* Fixed dropped alarm descriptions that were reported before Alarmist starts
* Fixed `Alarmist.remove_synthetic_alarm/1` to actually work. It doesn't look
like this function is actually used in practice, but it will work now.
* Add `Alarmist.synthetic_alarm_ids/0` to list what's been registered
* Add `Alarmist.subscribe_all/0` and `Alarmist.unsubscribe_all/0` for ease of
subscribing to all events
* Gracefully handle redundant alarm registrations. These can happen on
supervision tree restart. Extra notifications aren't sent and if alarm
conditions actually did change on the re-registration, the new ones would be
used.
* Alarm modules now have a `__get_alarm_def__/0` function for getting the
alarm condition source code
## v0.2.1 - 2025-03-27
* Updates
* Fix serious issue with incorrect clearing of timers that affects synthetic
alarms that use timers such as Debounce, Intensity, and Hold. Timeouts could
be missed. Thanks to @x4lldux for reporting the issue.
* Improve compile-time checks for `defalarm`
* Various documentation improvements and an example
* Update licensing and copyright for [REUSE compliance](https://reuse.software/)
## v0.2.0 - 2024-12-09
This is a backwards incompatible update. The following changes are needed:
1. Replace all calls to `Alarmist.current_alarms/0` with
`Alarmist.get_alarm_ids/0`. This is a hard deprecation.
2. Update all message handling on Alarmist events to expect and use the
`Alarmist.Event.t()`. In most usage, this means matching on `:id` and
`:state` and it should simplify the handling functions.
* Updates
* Simplify the API by completely abstracting away the internal implementation
with uses the PropertyTables library. This will allow for further internal
improvements without forcing breaking changes.
* Align the API for getting alarms with `:alarm_handler`. This added the
`Alarmist.get_alarms/0` function.
* Remove a race condition involving the use of alarm descriptions.
Descriptions are sent to subscribers with the alarm status change
notification now.
* Use one timestamp value for all alarms that were set at initialization time.
This removes the ambiguity of whether an alarm changed a few milliseconds
after Alarmist start up or was one of the original alarms.
* Report when alarms are in an `:unknown` state when no information is
available. This is useful for the `:previous_state` field in alarm events.
## v0.1.3 - 2024-09-26
* Updates
* Don't crash on non-atom Alarm IDs. Alarmist doesn't support these yet so
they're currently ignored.
## v0.1.2 - 2024-03-04
First public release
## v0.1.1 - 2024-02-29
* Updates
* Delay swapping alarm handler until supervision tree started to fix possible
crash on startup
## v0.1.0 - 2024-01-19
Initial release