Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
a321d6e
Show a child's photo from their person entity
claude Oct 2, 2026
e9fe6ba
Show a changed child photo straight away
claude Oct 7, 2026
52b9bac
Add sticker chart view and past-job logging
claude Oct 2, 2026
5ceeff5
Test past-job logging against weekly target bonuses and every-N-days …
claude Oct 14, 2026
b8d6758
Drop the photo picker strings repeated in every locale
claude Oct 14, 2026
fa34abc
Cap a past day's weekly-target chores at that week's quota
claude Oct 14, 2026
497d731
Past-job logging: one set of rules for refusing, listing and showing …
claude Oct 14, 2026
d651211
Show the photo on every card that draws a child, and track trimmed ids
claude Oct 14, 2026
29dae28
Merge the photo branch's review fixes
claude Oct 14, 2026
8f90c08
Show the photo on the bounty, auction and teamwork faces too
claude Oct 14, 2026
36ddb38
Merge the photo branch's second review fixes
claude Oct 14, 2026
ca8e3ec
Badges card shows the child's photo; the photo picker offers any enti…
claude Oct 14, 2026
d1738af
Undo a backdated job's weekly bonus too, and respect a birthday day off
claude Oct 14, 2026
0fd5be4
Merge the photo branch's third review fixes
claude Oct 14, 2026
230a06b
Sticker chart: birthday rules in the weekly goal, keyboard undo
claude Oct 14, 2026
e439053
Photo picker: leave out TaskMate's own child sensors
claude Oct 14, 2026
54d9648
Merge branch 'upstream-pr/photo' into upstream-pr/sticker
claude Oct 14, 2026
b52590c
Merge main into #1063 (sticker chart) after #1062 was squash-merged
tempus2016 Oct 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
3. **Parents approve** — chores marked "requires approval" land in a pending queue
4. **Kids claim rewards** — points are only deducted once a parent approves the claim

Everything is managed from the **TaskMate panel** in the Home Assistant sidebar, and surfaced on your dashboards through 27 Lovelace cards.
Everything is managed from the **TaskMate panel** in the Home Assistant sidebar, and surfaced on your dashboards through 28 Lovelace cards.

All data stays inside your Home Assistant instance. Nothing is sent to any external service.

Expand Down Expand Up @@ -89,7 +89,7 @@ Lovelace resources register automatically on startup. Edit your dashboard → **

| For kids | For parents |
|----------|-------------|
| Child · Rewards · Reward Progress · Points Display · Routine · Kiosk · Streak · Badges · Bounty Board · Wishlist · Recap · Chore Auction | Approvals · Parent Dashboard · Overview · Chore Board · Activity · Points · Reorder · Penalties · Bonuses · Weekly · Graph · Leaderboard · Calendar · Family Goal · Photo Gallery |
| Child · Sticker Chart · Rewards · Reward Progress · Points Display · Routine · Kiosk · Streak · Badges · Bounty Board · Wishlist · Recap · Chore Auction | Approvals · Parent Dashboard · Overview · Chore Board · Activity · Points · Reorder · Penalties · Bonuses · Weekly · Graph · Leaderboard · Calendar · Family Goal · Photo Gallery |

Every card takes a `header_color` and a `card_design` option. See [Dashboard Cards](https://github.com/tempus2016/taskmate/wiki/Dashboard-Cards) for each card's full configuration.

Expand All @@ -108,7 +108,7 @@ Every card takes a `header_color` and a `card_design` option. See [Dashboard Car
| [Getting Started](https://github.com/tempus2016/taskmate/wiki/Getting-Started) | First-time setup walkthrough |
| [Admin Panel](https://github.com/tempus2016/taskmate/wiki/Admin-Panel) | The management hub in the HA sidebar |
| [Settings](https://github.com/tempus2016/taskmate/wiki/Settings) | Every configurable setting in one place |
| [Dashboard Cards](https://github.com/tempus2016/taskmate/wiki/Dashboard-Cards) | All 27 Lovelace cards and their options |
| [Dashboard Cards](https://github.com/tempus2016/taskmate/wiki/Dashboard-Cards) | All 28 Lovelace cards and their options |
| [Services](https://github.com/tempus2016/taskmate/wiki/Services) | Every callable service, with examples |
| [Sensor Reference](https://github.com/tempus2016/taskmate/wiki/Sensor-Reference) | All entities and their attributes |
| [Automations](https://github.com/tempus2016/taskmate/wiki/Automations) | Bus events, blueprints, and examples |
Expand All @@ -134,4 +134,4 @@ Bug reports and feature requests are welcome in [Issues](https://github.com/temp

MIT — see [LICENSE](LICENSE).

> Originally created by [vinnybad/choremander](https://github.com/vinnybad/choremander). This fork adds 27 Lovelace cards, an admin panel, a bonus points system, streak tracking, reward approval flow, a penalty system, and much more.
> Originally created by [vinnybad/choremander](https://github.com/vinnybad/choremander). This fork adds 28 Lovelace cards, an admin panel, a bonus points system, streak tracking, reward approval flow, a penalty system, and much more.
11 changes: 11 additions & 0 deletions custom_components/taskmate/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,16 @@ async def handle_complete_chore(call: ServiceCall) -> None:
chore_id = call.data[ATTR_CHORE_ID]
child_id = call.data[ATTR_CHILD_ID]
as_parent = call.data.get(ATTR_AS_PARENT, False)
completed_date = call.data.get("completed_date")
if completed_date is not None:
# Logging a job for an earlier day is a grown-up's correction, never
# a child's: it is always parent-gated and always approved.
await _async_require_parent(hass, call)
try:
await coordinator.async_complete_chore_on_date(chore_id, child_id, completed_date)
except ValueError as err:
raise ServiceValidationError(str(err)) from err
return
if as_parent:
# Completing on behalf of a child (auto-approve + instant award) is a
# parent privilege. Enforce it on the backend, not just by hiding the
Expand Down Expand Up @@ -1302,6 +1312,7 @@ async def handle_rebuild_badges(call: ServiceCall) -> None:
vol.Required(ATTR_CHILD_ID): cv.string,
vol.Optional(ATTR_AS_PARENT, default=False): cv.boolean,
vol.Optional("photo_url"): cv.string,
vol.Optional("completed_date"): cv.date,
vol.Optional("note"): cv.string,
vol.Optional("suggested_points"): vol.All(
vol.Coerce(int), vol.Range(min=0, max=CHORE_SUGGESTED_POINTS_MAX)
Expand Down
Loading
Loading