Skip to content

v3.9.5

Choose a tag to compare

@tempus2016 tempus2016 released this 19 May 11:12
a677bcc

Stable v3.9.5. Consolidates the two betas (Activity card redesign + per-card editor switches) plus two admin-panel fixes landed after beta.2.

Added

Activity card redesign (#373, #375)

The Activity card body was redesigned to make events easier to scan, filter, and triage:

  • Event-type filter chips — All / Chores / Rewards / Adjustments, in-card state, no config needed.
  • Sticky date dividers with full date (Today · Mon 13 May) pinned while scrolling.
  • Left accent stripes per event type — 🟢 approved · 🟠 pending · 🔴 penalty/rejected · 🟣 reward redemption.
  • Right-aligned signed points pill — bold +5 / −25 as the second thing you read after the name.
  • No redundant "approved" pill on the default chore row (stripe + icon + points already say it); pending/rejected still badge because they need attention.
  • Relative-time labels (just now / 5m ago / 2h ago / 3d ago) alongside the absolute time.

The full-colour header banner driven by header_color is preserved — only the card body changed.

Activity card — per-card editor switches (#376)

Three boolean toggles in the Activity card GUI editor, each defaulting to on, so existing cards are unchanged:

  • Show filter chips
  • Coloured event stripes
  • Relative time labels

Booleans equal to their default are stripped from the saved YAML, so configs stay minimal.

Fixed

Admin panel blank after a long-backgrounded tab (#379, #380)

Returning to a /taskmate-admin tab that had been backgrounded for a long time showed a blank panel content area (HA chrome intact, no console error, only F5 recovered).

HA's partial-panel-resolver strips the custom panel from the DOM while the websocket is down and re-attaches the cached element on reconnect. Because the panel is a plain HTMLElement (not LitElement), nothing then called _render() again — every trigger was guarded out (_rendered/_shellReady sticky, _state stale-but-truthy, no disconnected→connected transition recorded across a tab freeze), so its existing shell-rebuild self-heal was never reached. Now connectedCallback, _onVisibilityChange, set hass and a central check in _render() rebuild the shell when it has been stripped, and returning to the tab always refetches (parity with how Lovelace repaints on reconnect — this also clears staleness from changes made on another device while the tab was idle).

Raised-button text unreadable on hover (#378)

Hovering a raised button (+ Add child, Approve, the notification "on" toggle, etc.) used filter: brightness(1.1), which lightened the accent background toward white while the white label was already maxed out — collapsing contrast in every theme. Hover now darkens the background via a repurposed --tm-accent-hover token (color-mix with 14% black) and leaves the label untouched, improving white-on-accent WCAG contrast across all themes.

Compatibility

  • No breaking config changes. All existing card keys preserved (entity, title, child_id, max_items, header_color).
  • 18 new translation keys added across all 8 locale files (English placeholders for non-EN locales — localisable later).
  • No backend/service or storage-schema changes.

How to update

HACS → TaskMate → ⋮ → Redownload → pick v3.9.5 → restart Home Assistant, then hard-refresh the browser (Ctrl/Cmd+Shift+R) so the new panel/card JS loads.

After updating, verify:

  1. Activity card keeps its full-colour header; filter chips, sticky date dividers, left stripes, signed points pill and relative-time labels render; the GUI editor shows the three toggles.
  2. Raised buttons stay readable on hover.
  3. Leave /taskmate-admin open, switch away for a long while, come back — the panel repopulates instead of going blank.

Full changelog: v3.9.4...v3.9.5