v2.7.2 - MQTT dismissed-timer resurrection fix
This release closes the remaining edge of the multi-device MQTT sync bug from #112. v2.7.1 stopped a stale client from running expiry cleanup, but a device waking from the background could still re-publish its old cached timer list and bring back a timer that had already been dismissed somewhere else. This release shuts that path down too.
🐛 Fixed
- Dismissed timers no longer come back when another device wakes up (#112). A backgrounded device that reopens loads a cached snapshot first, before Home Assistant delivers the fresh retained state. Until now the card could normalize that stale snapshot and write it straight back to the retained MQTT topic, resurrecting a timer that was already dismissed on another device (and, because the re-publish carried a newer timestamp, every device then accepted it). The card now treats cache and shadow snapshots as non-authoritative and refuses to persist or publish from them. It only writes back when the data is authoritative: local storage, or a fresh reading from the MQTT
sensor_entity. - No phantom alarm on wake. A stale, already-expired timer held in cache no longer rings, plays audio, or emits an
expiredevent while the card is catching up. Once the fresh sensor snapshot arrives the real state takes over, so a genuinely expired timer still rings as expected.
🔧 Behavior
- No configuration changes are required. Existing MQTT setups (including the
default_timer_entity: sensor.*shorthand) keep working as-is. - Local and helper storage are unaffected; the new guard only applies to MQTT cache/shadow reads.
Notes
- Published as a pre-release for wider multi-device testing before it is promoted to stable.
Full Changelog: v2.7.1...v2.7.2