v5.1.0
Two features aimed at the two things you do most: give a chore a real photograph, and adjust a child's points without leaving the panel. Plus a correlation id for anyone wiring TaskMate into something else.
No configuration changes — upgrade is drop-in.
Upload a picture for a chore
The Picture field in the chore editor now takes a photograph, not just an icon from the list. Upload a JPEG, PNG or WebP and it replaces the icon everywhere the chore appears: the child card, the routine card, the reorder card and the panel.
A photo of your dishwasher beats a generic plate outline — and for a child who can't read yet, it's the difference between recognising the task and guessing.
How to use it: Admin panel → Chores → edit a chore → Picture → upload a file. Up to 2 MB per image, 64 MB across all chores.
Files are stored locally in taskmate_images/ beside your config — nothing leaves your machine. They're served over signed URLs so a dashboard renders them without the viewer holding a token, uploading is admin-only because it writes to disk, and the file is deleted when the chore is deleted or re-pictured.
Adjust points from the Children page
Every child card in the panel now carries a row of quick buttons — −20 −10 −5 and +5 +10 +20 by default — plus ⋯ for a custom amount with an optional reason.
Awarding a few points for something off-list, or docking some, no longer means building a service call by hand.
How to use it: Admin panel → Children → tap a button on the child's card. Set your own amounts in Settings → Quick point amounts as a comma-separated list, e.g. 5, 10, 20. Every adjustment appears in the activity feed and can be undone from there.
claim_id on the reward outcome events
taskmate_reward_claimed already carried a claim_id. Its two outcome events, taskmate_reward_approved and taskmate_reward_rejected, now carry the same value, so an external shop, kiosk or lock-screen integration can follow one claim from request to outcome instead of guessing from child and reward ids.
Rejection in particular had no other signal — a rejected claim is deleted outright, so it never reaches the activity feed.
The new External Lock-Screen Shops wiki page documents the safe pattern: never act on a claim, filter both ids, keep a single unlock owner, fail closed.
Thanks to @jr551 for this contribution. (#764)
Fixes
- Manual point adjustments can be undone again — Undo in the activity feed refused every manual add or remove. The check was an allow-list of known reasons, and a manual adjustment carries whatever reason you typed (or none), so it never matched. It's now a deny-list of the derived transactions that genuinely must not be undone — weekend bonuses, streak milestones, pool allocations — and everything else is reversible. (#762, closes #761)
- Duplicating a chore no longer destroys its picture — a duplicated chore points at the same image file as the original, and deleting or re-picturing either copy unlinked that file, leaving the other chore showing a broken image with nothing in the log. The file is now kept until the last chore referencing it goes. Found while testing this release. (#769, closes #768)
Internal
- The test suite no longer depends on file ordering — twelve tests failed in a full run on Python 3.11 while passing in isolation, because two files used
asyncio.get_event_loop()after another test had already closed the loop. (#766, closes #765)
Upgrading
HACS → TaskMate → Redownload → 5.1.0, then restart Home Assistant. Hard-refresh your browser (Ctrl+Shift+R) so the updated cards load.
Full changelog: v5.0.4...v5.1.0