Skip to content

v5.6.0

Choose a tag to compare

@tempus2016 tempus2016 released this 12 Sep 09:37
· 91 commits to main since this release
25bc6ff

New

Custom completion sounds (#858)

Upload your own clips and pick one per chore, instead of choosing only from the built-in set.

Admin panel → Settings → Completion sounds → Upload sound. MP3, OGG, WAV or M4A, up to 1 MB each. Give each one a name, then choose it on any chore from Completion sound in the chore editor. Sounds can be played, renamed and deleted from the same screen; deleting one resets any chore using it back to the default and tells you how many were changed.

Built-in sounds are unchanged and remain the default. Full details: Completion Sounds.

Time-locked rewards (#861)

Restrict a reward to certain days, certain hours, or both — so "Friday film night" is only claimable on a Friday evening.

Open a reward → Advanced — time lock → Limit when this can be claimed, then set Days and/or a From/Until window. Leave the days unticked for no day restriction, or the times blank for any time of day. The end time is exclusive (07:00–19:00 stops at 19:00), equal times mean no restriction, and a start later than the end spans midnight (20:00–01:00).

The reward stays visible and shows as locked outside its window. Saving points into a pool reward is never blocked, and a parent can still approve a claim that is already waiting. Full details: Time-Locked Rewards.

Require a linked account per child (#863)

New setting under Settings → Parents, off by default.

Leave it off for a shared family tablet where one Home Assistant account is used by everyone — that is the existing behaviour and nothing changes. Turn it on if each child has their own Home Assistant login and you want only that account to act as that child. Admins and configured parents can always act for any child either way. Link a child to an account in the child's editor.

Fixed

  • The icon field in the admin panel now matches the panel's own inputs, instead of Home Assistant's default Material shell (#862).
  • Two taps landing at the same moment can no longer both be paid. A completion is recorded before its points are awarded, so a double tap, or an "Approve all" overlapping a single approve, pays once (#863).
  • Undoing or rejecting an approved completion now steps any quest chain back and refunds the quest completion bonus. Re-approving the same completion no longer pays a repeatable quest's bonus a second time (#863).
  • Approving a reward claim now re-checks stock and expiry. Several claims queued against a limited reward could previously be approved in turn and issue more than existed, because the stock counter stops at zero (#863).
  • Rejecting a chore completion now re-checks whether a mandatory miss is owed, and only once that period has closed. A submission made just before a deadline and rejected afterwards previously left no miss behind (#863).

Changed

Behaviour changes worth knowing about before you upgrade. Most households will notice nothing.

Rewards (#863)

  • A reward assigned to particular children can now only be claimed — and saved towards in a pool — by those children. The cards already filtered on this; now the backend does too, so a service call or automation follows the same rule.
  • The same reward can no longer be queued twice. A second claim while one is waiting is refused with "A claim for … is already waiting for approval", and each child is limited to 20 pending claims at once.

Chores (#863)

  • The assignment, schedule and availability rules the child card uses are now applied to every schedule mode when a completion arrives by service call, entity or Dev Tools. Previously only day-scheduled chores were re-checked, so recurring and one-shot chores assigned to one child could be completed by another that way.
  • A bonus sub-task now follows its parent chore's assignment.

Read Aloud (#863) — check your automations

  • media_player and tts_entity must now be entity ids in the right domain. An automation passing anything else will fail validation instead of being forwarded.
  • message is capped at 500 characters.
  • The call is now made with the calling user's context, so Home Assistant applies that user's entity permissions to the speaker.
  • A caller-supplied message from someone who is not a parent or admin is ignored, and the generated chore list is read out instead.

Backup, restore and template packs (#863)

  • Restoring a backup, or importing a shared template pack, now checks the type of each value as well as which fields are allowed. Numbers that aren't numbers are coerced or fall back to their default, infinities and NaN are rejected, timestamps that don't parse are dropped, and an unrecognised completion sound falls back to the default. A hand-edited or very old backup may have odd values normalised rather than carried through.

Uploads and serving (#863)

  • Chore evidence photos are limited to 20 uploads per minute per user, with a bound on how many are processed at once.
  • Audio type detection is stricter, so a file that isn't really audio is now refused at upload rather than stored.
  • Uploaded images and sounds are served with X-Content-Type-Options: nosniff and an inline content disposition, matching how evidence photos were already served.

Audit log (#863)

  • Actions a child drives — completing a chore, claiming a reward, allocating points to a pool, spinning the roulette, choosing an avatar, starting or stopping a timed task, requesting a swap — are now recorded, naming the acting user and the child.
  • The log keeps its 500-entry cap but now reports how many older entries have aged out, so a full log no longer hides that anything was dropped.

Maintenance

  • Release builds now publish signed build provenance for taskmate.zip, and the release guard verifies the attached archive matches the tagged source (#863).
  • CI tooling is pinned and checksummed, and local secret/scratch patterns are covered by .gitignore (#863).
  • Version bump to 5.6.0 (#864).
  • Dependency updates: ESLint (#845), globals (#860), pytest-homeassistant-custom-component (#854), home-assistant/actions/hassfest (#859), pre-commit hooks (#855). The CI floor constraints were moved out of Dependabot's reach so they stop being bumped into an unresolvable state (#853).

Upgrading

Update through HACS and restart Home Assistant. No configuration changes are required, and no setting changes behaviour on its own — the one new option is off by default. Card resources re-register automatically at the new version; a hard refresh (Ctrl+Shift+R) clears any stale card JavaScript.

The one thing to check is Read Aloud above, if you call taskmate.read_aloud from an automation with anything other than a real media_player.* / tts.* entity id.

Full changelog: v5.5.0...v5.6.0