Skip to content

v2.6.0 - Tap, hold & double-tap actions

Choose a tag to compare

@eyalgal eyalgal released this 28 May 16:28

This release adds the standard Home Assistant tap_action / hold_action / double_tap_action interface to the card. You can wire taps to more-info, toggle, navigate, url, call-service / perform-action, or none, both at card level and per row.

✨ Actions

  • Three interactions per surface: tap, long-press (500 ms), and double-tap (300 ms window). Each can carry the full HA ActionConfig (entity, service data, confirmation, navigation path, URL).
  • Card-level actions: configured under the new Actions panel in the editor (hidden behind "Show advanced"). Fire on any tap that doesn't land on an interactive element inside the card.
  • Per-row actions: each entity row in the Entities panel has its own Actions block (also advanced-only). Row-level settings override card-level for that row; everything else falls back to the card default.
  • Resolution order: row → card → built-in default. The only built-in default is tap on an idle HA timer.* entity, which opens the inline duration editor (unchanged behavior). Hold and double-tap have no built-in fallback.
  • Smart toggle routing: HA's timer.* domain has no toggle service, so the card routes tap_action: toggle to the most useful per-state action: predefined (pinned) rows start, idle HA timers open the inline editor, idle helper/local/MQTT/Voice PE timers start, and running/paused timers pause-resume. Untracked entities fall through to domain.toggle as expected.

🐛 Fixes

  • Paused timers no longer freeze the display one second high: the previous pause path captured the last-tick remaining value, which is up to 250 ms stale. Math.ceil(stale_ms / 1000) sometimes landed one full second above what the next tick would have rendered. Pause now recomputes remaining live from end_ts at the click moment. Affects local, MQTT, and helper timers (including predefined ones once started).
  • tap_action: toggle works on predefined rows: template rows have no source entity, so the early entity-id guard in the action handler made toggle a silent no-op. Toggling a predefined row now starts the timer, matching the start button.
  • Paused timers no longer open the inline editor by default: a regression in the first action RC routed any tap on a non-running timer through the editor-open default. Paused taps with no configured tap_action are now a no-op; configure tap_action: toggle if you want pause/resume on tap.

🔧 Behavior

  • Default no-action behavior is unchanged for everything except idle HA timer.* (still opens the editor). Cards that don't set any *_action keep behaving identically to v2.5.0.
  • The action handlers ignore taps that originate inside interactive elements (button, ha-icon-button, ha-textfield, ha-input, ha-select, the action buttons row, the progress bar, anything marked data-no-action), so existing in-card controls (start, pause, cancel, edit, custom duration) keep working as before.

✨ Card picker (Home Assistant 2026.6+)

The card now opts in to the new By entity card picker introduced in Home Assistant 2026.6. When you add a card and pick an entity, Simple Timer Card shows up under the Community section with a live preview, so you can drop it onto a dashboard without scrolling the full card list.

It is suggested whenever the entity is a timer.* entity, or its entity id contains timer (for example sensor.echo_spot_next_timer). Selecting the suggestion inserts a type: custom:simple-timer-card config pre-wired to that entity. On older Home Assistant versions the hook is simply ignored, so nothing changes.