🚨 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'
- Built-in agent sentence How do I get help on Supernotify answers with a link to the online help page, in English and Italian
Notify Entities
- Any scenario or delivery can be exposed as a Notify Entity, by adding
notify_entitywith the name to go afternotify.- A message sent to a scenario's notify entity is a default notification with that scenario applied, and to a delivery's is one with that delivery selected
- A repair is raised, and no entity made, if the notify entity, or a
notifyaction of that name, already exists - Used as a target of
supernotify.notify, it applies its scenario or selects its delivery on that notification
- Every notify entity, including each recipient's
notify.recipient_<name>, also has a legacynotifyaction of the same name, so the Alert integration can list them innotifiers- This opens up scenarios and deliveries to anything that takes a notify entity or action, see the Alert integration example
Snoozing
- A
TAGsnooze 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_idto the notify call. - The sender is found from the call's context, and a script started by an automation counts both.
- Matches by
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_pushtransport, which auto raises a repair to remove the device
- Now it is handled separately from other exceptions and treated as a missed target within the
- 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
criticalpriority 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
messageof 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_textis sent as its ownmessage: TTScall 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; newmobile_push_tts_delaychanges it (0for straight away).mobile_push_tts_locale/_enginego with it astts_text_language/tts_engine- for
critical, the extra calls carryttl: 0+priority: highlike the notification (without them the TTS waited for the phone to be unlocked and was then spoken late), and the TTS goes onmedia_stream: alarm_stream_max(the app puts the volume back afterwards); otherwisemobile_push_alarm_stream/_maxpick the stream - Tried on a Samsung S26 Ultra
- The companion app takes notification commands and TTS as the
Archive
enquire_archivecan filter bypriority, one or more, ignoring case - beforelimit, so a month of archive can be searched for its few critical notifications in one call- The
summaryverbosity now includesmissed, the count of deliveries asked for but not sent, so apartial_deliverycan be explained from a summary list - The
summaryverbosity ofenquire_archiveleaves outdelivery_provenance, about half its size - it is still there atstandardandfull
🐛 Bug fixes
- Snoozing a mobile device ignored devices that had been selected via a
personentity 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 everyconditionwithin theconditionsis separately checked in strict mode. - A scenario's
deliverygiven as a single delivery name, or a list of names, was rejected as invalid configuration in YAML, though documented as a way to switch those deliveries on. Now both are accepted, as well as a mapping. - Missing or misspelled entities are also now checked as part of
conditionsvalidation, and will be logged rather than disabling the scenario or delivery since the integration that provided the entities might start after Supernotify
📚 Documentation
- Help section improved, and with more examples of how Google and AI agents like ChatGPT, Claude, Kimi etc can give advice and write YAML
- Add a recipe for Pyscript usage
- Add a Rain Alert recipe, using the Alert integration with a scenario notify entity
- The dashboard recipe now shows how to install the pre-built SuperNotify Cards Dashboard
- New section on Android Commands and Spoken Text
📝 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,engineordelivery_registryavailable 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-beta5