Skip to content

v5.8.0

Choose a tag to compare

@tempus2016 tempus2016 released this 21 Sep 13:32
2fa6e94

Three new features and ten fixes. The fixes are mostly one theme: a chore or reward is now worth what it was worth at the time, not whatever the chore or reward has been edited to since.


New

Weekly targets — "three times this week, any day" (#904)

A chore can carry a weekly quota instead of a fixed schedule. Set Weekly target to 3 in the chore editor and it stays on offer on its usual days until the child has done it three times this week, Monday-anchored. Instrument practice, reading, exercise — the cases where the requirement is a weekly minimum rather than particular days.

It rides on top of the existing schedule rather than replacing it, so "3× a week but weekdays only" works: set the days as usual and add a target. The child card shows 2/3 this week from the first tick and dims the row once the quota is full. Progress is derived from completions, never stored, so nothing resets on a Monday and raising the target mid-week simply re-opens it.

Pending completions count toward the quota, so a slow approval never hands out a spare go — and rejecting one frees the slot again.

Graphite card design (#906)

A sixth card design: a clean, corporate/system look for households that would rather the dashboard didn't shout. Set it per card with card_design: graphite, or as the family default in Settings → Card design. All 21 cards support it.

A nudge when a child is one away from a badge (#893)

The child card's Next up row now adds a short line — "One more and it's yours!" — when the badge it is tracking is one unit short of its target. Distance is measured in the criterion's own units rather than percent, because 90% of a ten-week badge is one week away while 90% of a hundred-point badge is ten points away.

Deliberately rare: a line that shows for half the climb has stopped meaning anything by the time it matters. Manually awarded badges carry no criterion and never nudge. Turn it off per card with show_badge_nudge: false.


Changed

The weekend bonus is no longer a separate activity entry (#907)

If you use the weekend multiplier, a double-points Saturday chore used to appear twice in the activity feed: the chore at its base value, then a separate "Weekend bonus (×2)" line for the extra. It now appears once, on the chore that earned it — a 10-point chore on a ×2 Saturday reads as a single 20.

Balances are unchanged, and existing bonus entries in your history still display exactly as before. Only new completions are recorded the new way.

This matters beyond tidiness: the graph, weekly and leaderboard cards add completions and transactions together, so now that a completion reports its true award, a second entry for the same points would have counted the bonus twice.


Fixed

What things are worth

  • A finished chore's history showed today's price, not what it earned (#907). Re-pricing a chore rewrote every past completion of it, and the weekend multiplier never appeared on the row that earned it. Approved completions now report what was actually paid.
  • Approving a chore paid today's price, not what the child was promised (#899). A chore edited while the work sat in the review queue changed the price after the fact. Worse, the speed bonus and roulette multiplier were silently dropped on every approval-required chore — and for roulette that was unrecoverable, since the daily pick has moved on by the time a parent reviews. The award is now recorded at submission and honoured at approval; an explicit points override still wins.
  • A timed chore was paid at the rate it was approved at, not the rate it ran at (#909). Trimming the rate while a session waited for review paid the child the new rate for time already spent.
  • Re-pricing a reward rewrote what past purchases cost (#897). The activity feed, the panel timeline and the per-period spending cap all read the reward's current price, so dropping a reward's cost retroactively shrank a child's spend for the period and freed up budget they had already used.

Rewards

  • Rejecting an already-approved claim deleted the purchase and kept the points (#886). Reachable whenever two parents review the same claim — one approves in the panel while the other taps Reject on a stale list. The stale review is now refused, naming the reward.
  • An underfunded jackpot fell back to charging one child's wallet (#889). If the shared pool drained while a claim was pending — a raised cost, an unassigned contributor — approving billed the whole jackpot to whoever was holding the claim. Duplicate claims left over from before v5.7.0 could do the same. A jackpot is now paid from its pool or not at all.
  • Editing a reward could strand the points children saved towards it (#895). Switching a reward between jackpot and ordinary, turning pool mode off, or dropping a child from its assignment left their deposits locked in a jar that no longer existed — and pool allocations have no withdraw. Those savings are now refunded, and any claim the edit invalidated is cancelled with them.
  • A reward's Claim button was offered when claiming would fail (#901). It judged affordability from the wallet alone, so a jackpot or a filled savings jar showed a dead button, while sold-out, expired, time-locked and already-claimed rewards were all offered anyway. can_afford and points_needed are now answered from whichever purse actually pays.

Notifications

  • Approve and Reject on a reward push notification did nothing (#903). Chore pushes worked; reward pushes were silently dead, with nothing in the log either.

Under the hood

  • The Lovelace cards now have automated coverage (#884). A dependency-free harness loads each card's real source, renders it, and presses its buttons — so a row that stops rendering a control, or wires one to the wrong handler, fails CI instead of being caught by hand in a browser. Runs with npm test.
  • New Ideas discussions are mirrored into feature-request issues (#887).
  • The README mentions open-ended chores (#882).

Upgrading

Nothing to do. HACS → TaskMate → Redownload → restart Home Assistant, then hard-refresh the browser so the cards reload.