Skip to content

v1.2.9

Choose a tag to compare

@djdevil djdevil released this 28 Apr 17:07
a70dab8

AlertTicker Card v1.2.9

🔔 Overlay fires for ALL matching entities in filter-mode

Previously, when a filter-mode alert (device_class, entity_filter, label_filter, area_filter) had multiple entities simultaneously satisfying the condition (e.g. 3 batteries below 20%), the overlay banner fired only for the first entity — all others were silently ignored. Now every matching entity gets its own overlay, fired one at a time every 2 seconds, with the correct per-entity message and name. When an entity recovers, it is removed from the notified set so it can re-fire if the condition becomes active again.


🌐 Full Jinja2 {% if %} / {% else %} block tag support

Template fields (message, secondary_text, group_message, group_expanded_message, group_secondary_text, overlay messages) now correctly evaluate Jinja2 block tags even without any {{ }} expression. The {{ "" }} workaround is no longer needed:

message: >
  Waste collection in {state}
  {% if state_attr('sensor.bins','daysTo') == 1 %} day {% else %} days {% endif %}

🗂️ Group tap / hold actions + custom secondary text

Three new options for grouped filter alerts, all configurable in the visual editor:

alerts:
  - device_class: update
    group: true
    group_message: "🐳 {count} updates available"
    group_secondary_text: "Tap to manage · {count} pending"
    group_tap_action:
      action: navigate
      navigation_path: /update
    group_hold_action:
      action: url
      url_path: http://portainer.local
Key Description
group_tap_action Action when tapping the collapsed group header. Default: expand/collapse (non-breaking)
group_hold_action Action when holding the collapsed group header
group_secondary_text Custom secondary line replacing the auto-generated entity name list. Supports {count}, {names}, Jinja2

💤 Snooze menu: 1 week and 1 month

The snooze duration menu now includes 1 week (168 h) and 1 month (720 h) alongside the existing 1h / 4h / 8h / 24h options, available in all 10 supported languages.

For a fixed long snooze without a menu (single tap), snooze_duration: 168 and snooze_default_duration: 720 already worked in previous versions.


🐛 Bug fixes

  • hold_action: url on desktopwindow.open("_blank") called from inside a setTimeout loses user-activation and is silently blocked by popup blockers. Fixed by deferring the open to pointerup, which is a direct user-interaction event and is never blocked.
  • hold_action: url on mobile/touch — iOS/Safari sends pointercancel instead of pointerup after a long-press (WKWebView limitation), so the deferred URL path was never reached. Fixed by using window.location.href directly from the hold timer for touch gestures.
  • Overlay secondary_text with {% %} blocks — secondary text in overlay banners containing only Jinja2 block tags was stripped raw instead of being rendered server-side.
  • Filter-mode overlay message with {% %} blocks — filter-mode overlay messages now use WebSocket server-side rendering for both {{ }} expressions and {% %} block tags.

📦 Full changelog

See CHANGELOG.md for the complete list of changes.


☕ If this update saves you time, consider buying me a coffee — it keeps the development going!

Buy Me A Coffee