v1.2.9
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: 168andsnooze_default_duration: 720already worked in previous versions.
🐛 Bug fixes
hold_action: urlon desktop —window.open("_blank")called from inside asetTimeoutloses user-activation and is silently blocked by popup blockers. Fixed by deferring the open topointerup, which is a direct user-interaction event and is never blocked.hold_action: urlon mobile/touch — iOS/Safari sendspointercancelinstead ofpointerupafter a long-press (WKWebView limitation), so the deferred URL path was never reached. Fixed by usingwindow.location.hrefdirectly from the hold timer for touch gestures.- Overlay
secondary_textwith{% %}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!
