github rhizomatics/supernotify 2.14.0-beta4

latest releases: v2.14.0-beta6, v2.14.0-beta5, 2.14.0-beta5...
pre-release6 hours ago

🚨 Breaking changes

Python 3.13 and Home Assistant versions 2026.3 and earlier

As previously indicated, support for py3.13 and Home Assistant 2026.2 and earlier is no longer assured now that 2026.10 is released.
It may continue to work on older installations, however the build checks to verify against 2026.2/py3.13 are no longer part of the pre-release or release process.

Scenario and Delivery Conditions

These are now evaluated more thoroughly at start-up, so you may find old overlooked condition errors raising repairs, these are likely to be real problems in the logic.

✨ Enhancements

Assist

  • Snoozing requests don't stop critical notifications, unless the instruction explicit asks to snooze 'even critical'

Snoozing

  • A TAG snooze also matches the automation or script that sent the notification
    • Matches by entity_id, name or alias
    • Any notification raised by an automation can be paused on its own (pause garage closed for an hour) without adding entity_id to the notify call.
    • The sender is found from the call's context, and a script started by an automation counts both.

Mobile

  • Mobile apps are updated now as they are added and removed, not only when the component starts up
  • If a mobile app is removed, its action goes away - this used to lead
    to stack traces in logs and the entire notification mapped as an error even if other deliveries succeeded.
    • Now it is handled separately from other exceptions and treated as a missed target within the mobile_push transport, which auto raises a repair to remove the device
  • Recipients with manually configured or discovered mobile devices now get them checked at startup, and a repair raised if that mobile is no longer known to Home Assistant. The repair links to the People documentation, and can be dismissed like other repairs.
  • Improved how critical priority is applied for Android mobile apps with Do Not Disturb mode
  • Android commands and TTS operations sent as independent calls
    • The companion app takes notification commands and TTS as the message of a call of their own (message: command_dnd + data.command, message: TTS + data.tts_text), not as data of an ordinary notification.
    • Now each mobile_push_command_* is sent as its own call just before the notification, so the screen is on / Do Not Disturb is off when it arrives
    • mobile_push_tts_text is sent as its own message: TTS call after the notification - one wait for all the devices, 5 seconds by default, since started together the TTS cut off the notification's own sound; new mobile_push_tts_delay changes it (0 for straight away). mobile_push_tts_locale / _engine go with it as tts_text_language / tts_engine
    • for critical, the extra calls carry ttl: 0 + priority: high like the notification (without them the TTS waited for the phone to be unlocked and was then spoken late), and the TTS goes on media_stream: alarm_stream_max (the app puts the volume back afterwards); otherwise mobile_push_alarm_stream / _max pick the stream
    • Tried on a Samsung S26 Ultra

Archive

  • enquire_archive can filter by priority, one or more, ignoring case - before limit, so a month of archive can be searched for its few critical notifications in one call
  • The summary verbosity now includes missed, the count of deliveries asked for but not sent, so a partial_delivery can be explained from a summary list
  • The summary verbosity of enquire_archive leaves out delivery_provenance, about half its size - it is still there at standard and full

🐛 Bug fixes

  • Snoozing a mobile device ignored devices that had been selected via a person entity rather than as a direct target. Now it gets snoozed regardless of how selected.
  • Complex conditions could have invalid template conditions (with logic inside {{ and }}) that wouldn't be detected if prior conditions evaluated as false. Now every condition within the conditions is separately checked in strict mode.
  • Missing or misspelled entities are also now checked as part of conditions validation, and will be logged rather than disabling the scenario or delivery since the integration that provided the entities might start after Supernotify

📚 Documentation

📝 Other changes

  • Home Assistant compatibility for testing moved to 2026.4->2026.10 range
  • For developers, there is now a custom plugin for the Homeassistant REPL developer shell, that makes live objects like scenarios,engine or delivery_registry available as shell variables to acesss via Python

What's Changed

  • Apply mobile device snoozes to devices resolved from a person by @lollox80 in #269
  • fix: spoken and assistant snoozes leave critical through, unless asked 'even critical' by @lollox80 in #271
  • Tag snooze matches the automation or script that sent the notification by @lollox80 in #270
  • Follow re-paired mobile apps, and raise a repair rather than snooze a missing notify action by @lollox80 in #272
  • mobile_push: critical on Android sounds through Do Not Disturb by @lollox80 in #275
  • enquire_archive: priority filter, missed in summary, no provenance in summary by @lollox80 in #276
  • mobile_push: Android commands and TTS sent as calls of their own by @lollox80 in #277

Full Changelog: v2.13.2...2.14.0-beta4

Don't miss a new supernotify release

NewReleases is sending notifications on new releases.