Skip to content

Chore Swaps

tempus2016 edited this page Jun 22, 2026 · 2 revisions

Chore swaps let a child ask to take over today's turn of a rotation chore from a sibling. The request is pending until a parent approves it, at which point the chore is reassigned to the requester for the day.


When a Swap Is Possible

Swaps only apply to rotation chores — those using an alternating, random, balanced, or first_come assignment mode, where a single child holds today's turn.

A request is rejected outright if:

  • The chore is in everyone or unassigned mode (there is no single turn to take over)
  • The chore is already assigned to the requesting child today

Requesting a Swap

There are two ways to request a swap:

  • From the child card — see From the Child Card below.
  • With the taskmate.request_swap service, or from the chore row in the Admin Panel (Request swap button).
service: taskmate.request_swap
data:
  chore_id: b3f9a12c
  requester_id: a8c8376a
Field Required Description
chore_id Yes The rotation chore to take over
requester_id Yes The child who wants today's turn

The service is linked-child gated — a child user can only request on their own behalf. The request is stored with a pending status, recording the requester, the child who currently holds the turn (from_child_id), and a timestamp.


From the Child Card

Since v4.0.1, a child can request a swap directly from their child card. Below the day's chores, a Take over a chore section lists the rotation chores whose turn belongs to a sibling today and that this child is in the pool for. Each row shows the chore name and its (post-multiplier) points, with a Request button.

Tapping Request calls taskmate.request_swap for that child and the button changes to Requested — the request then goes to the parent's approval queue. The section only lists chores in a rotation mode (alternating, random, balanced, first_come); everyone and unassigned chores never appear, and a child's own turn is never listed.

The section is gated by the child card's show_swaps option, which is on by default. Set show_swaps: false in the card config to hide it.


Parent Approval

Pending swap requests appear to parents in the Admin Panel (with a count badge). For each, the parent can approve or reject:

Action What happens
Approve Today's turn is reassigned to the requester — the chore's current assignee becomes the requesting child for the day. The request is marked approved.
Reject The pending request is removed. The rotation is unchanged.

On approval, TaskMate fires a taskmate_swap_approved event carrying chore_id, requester_id, and from_child_id.


Scope of a Swap

A swap changes only today's assignment of the chore. It does not alter the underlying rotation order or anchor — the next scheduled day follows the normal rotation algorithm as if the swap had not happened.


Related

Clone this wiki locally