v4.4.0
TaskMate v4.4.0 is a major release that rolls up the entire codebase-audit remediation campaign plus 14 new features — 49 PRs (#583–#631) since v4.3.1. The integration is now meaningfully more secure, more correct, faster, and substantially more capable.
Install / upgrade: HACS → TaskMate → Redownload → pick
4.4.0, then restart Home Assistant. Hard-refresh the browser afterwards so the updated cards load.
✨ New features
- Chore dependencies / unlocks (FEAT-1, #603) — a chore can be gated until another is approved.
- Leaderboard seasons (FEAT-2, #624) — monthly reset + champion badge so a perpetual leader doesn't demoralise siblings.
- Allowance / real-money payout ledger (FEAT-3, #627) — convert points into a parent-confirmable allowance with a payout log (fixed-cost only).
- Family co-op goals (FEAT-4, #628) — a shared target ("everyone hits 500 → movie night") with a progress card.
- Per-child quiet hours / DND (FEAT-5, #605) — suppress reminders during school/bedtime windows.
- Reminder escalation (FEAT-6, #606) — nudge → reminder → parent alert when a mandatory chore stays incomplete.
- Negative-balance policy (FEAT-7, #595) —
allow_negative/ floor-at-zero behaviour when a penalty would push a child below zero. - Native
todoplatform (FEAT-8, #602) — each child's due chores as a Home Assistant To-do list (works with the native to-do card and voice assistants). number/selectconfig entities (FEAT-9, #601) — key settings (multipliers, costs, streak-reset mode, card design) exposed as entities for automation.- ICS / calendar subscription export (FEAT-10, #625) — a subscribe URL so chores appear in Google/Apple Calendar.
- Automation blueprint pack (FEAT-11, #622) — ready-made blueprints shipped with the integration.
- Voice / conversation intents (FEAT-12, #629) — ask your assistant about chore status.
- Photo-proof gallery card (FEAT-13, #626) — browse submitted evidence photos.
- Monthly report-card summary (FEAT-14, #623) — per-child monthly recap notification.
🔒 Security
- SEC-1 (#584) — sanitize
header_colorbefore CSS interpolation across the affected cards (closes a config-author CSS-injection vector). - SEC-2 (#591) — disk quota + orphan sweep for evidence photos.
- SEC-3 (#592) — mutating service calls are now written to the admin audit log (previously only panel/WS actions were).
- SEC-4 / SEC-6 (#599) — tighten the kiosk cross-child completion gate; clamp negative point arguments at the coordinator layer.
- SEC-5 (#616) — re-validate
photo_urlon config import. - Plus the foreign-
photo_urlrejection incomplete_chore(#583).
🐛 Fixes
- ERR-1 (#585) — reverse streak-milestone bonuses on reject/undo (fixes points drift).
- ERR-2 (#590) — project interval recurrences correctly when
recurrence_startis unset (availability vs calendar no longer diverge). - ERR-3 (#586) — count today's completion when resuming a paused streak.
- ERR-4 (#587) — track and clear the points-card toast auto-hide timer.
- ERR-5 (#588) — guard bonuses/penalties create+edit against double-submit.
- ERR-6 / ERR-8 / ERR-9 (#594) — config-sounds observer leak, child-card badge subscribe race,
--mdc-icon-sizetypo. - ERR-7 (#600) — resolve Today/Yesterday graph tooltip labels in the HA timezone.
- #604 (#615) — rewards card grows to fit all rewards in designed styles.
⚡ Performance
- PERF-1 (#607) — memoize the per-build chore-availability matrix.
- PERF-2 (#613) — cache the data snapshot keyed by storage version.
- PERF-3 (#614) — debounce storage saves via
async_delay_save. - PERF-4 (#618) — gate service-description rebuilds on a cheap
data_versionfingerprint. - PERF-5 (#593) — run the availability listener on the loop + cache tracked entities.
🧹 Refactor & quality
- QUAL-2 (#631) — merge the ~95%-identical bonuses/penalties cards into one shared
taskmate-incentive-card.jscomponent. - QUAL-3 (#630) — extract the copy-pasted header-colour picker into the shared
taskmate-design.jslayer. - QUAL-6 (#619) — enable Ruff isort (
I) + bugbear (B). - ARCH-1 (#617) — typed storage accessors for root flags.
- Dead-code removal and
set_settingtyping fix (#598).
🌍 i18n
- I18N-1 / I18N-2 (#589) — back-fill 7 missing service translations + the
first_comeselector key across all locales (de/fr/nb/nn/pt/pt-BR/en/en-GB).
🧪 CI & tests
- CI-1 (#620) — pin the HA test harness to a py3.12-compatible version.
- CI-3 (#621) — add an ESLint gate over
www/cards + panel. - TEST-1 / TEST-2 (#596, #597) — coverage for the
buttonplatform and the timed-task lifecycle.
Validated on the dev HA instance before release: the integration loads cleanly with no tracebacks, the new services and number/select/todo entity surfaces register, and the refactored incentive cards serve correctly.