New apps Added

This commit is contained in:
2026-07-08 10:43:39 -04:00
parent 3b1f4bbd75
commit fefc2c8b5c
1114 changed files with 406637 additions and 154 deletions
+884
View File
@@ -0,0 +1,884 @@
{
"config": {
"step": {
"user": {
"title": "Welcome to TaskMate!",
"description": "Set up your family chore management system. You can customize the points currency that children will earn.",
"data": {
"points_name": "Points Currency Name (e.g., Stars, Coins, Bucks)",
"points_icon": "Points Icon"
}
}
},
"error": {
"name_required": "Name is required"
},
"abort": {
"already_configured": "TaskMate is already configured"
}
},
"selector": {
"chore_action": {
"options": {
"save": "Save Changes",
"re_enable": "Re-enable Chore",
"disable": "Disable Chore",
"delete": "Delete This Chore"
}
},
"reward_action": {
"options": {
"save": "Save Changes",
"delete": "Delete Reward"
}
},
"time_category": {
"options": {
"morning": "Morning",
"afternoon": "Afternoon",
"evening": "Evening",
"night": "Night",
"anytime": "Anytime"
}
},
"schedule_mode": {
"options": {
"specific_days": "Specific days of the week",
"recurring": "Recurring (every N days/weeks/months)",
"one_shot": "One-time task (single day)"
}
},
"due_days_option": {
"options": {
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday",
"sunday": "Sunday"
}
},
"recurrence": {
"options": {
"every_2_days": "Every 2 days",
"weekly": "Weekly",
"every_2_weeks": "Every 2 weeks",
"monthly": "Monthly",
"every_3_months": "Every 3 months",
"every_6_months": "Every 6 months"
}
},
"recurrence_day_option": {
"options": {
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday",
"sunday": "Sunday",
"any_day": "Any day"
}
},
"first_occurrence_mode": {
"options": {
"available_immediately": "Available immediately",
"wait_for_first_occurrence": "Wait for first scheduled occurrence"
}
},
"streak_reset_mode": {
"options": {
"reset": "Reset — streak goes to 0 on missed day",
"pause": "Pause — streak preserved until next completion"
}
},
"visibility_operator": {
"options": {
"none": "No filter — Always show chore",
"equals": "Equals — Show when entity state matches exactly",
"not_equals": "Not Equal — Show when entity state does not match",
"gte": "Greater than or equal (≥) — Show when numeric value is ≥ target",
"lte": "Less than or equal (≤) — Show when numeric value is ≤ target",
"gt": "Greater than (>) — Show when numeric value is > target",
"lt": "Less than (<) — Show when numeric value is < target"
}
},
"assignment_mode": {
"options": {
"everyone": "Everyone — every assigned child sees the chore",
"alternating": "Alternating — rotate through the assigned children, one per day",
"random": "Random — pick one assigned child at random each day",
"balanced": "Balanced — split today's balanced chores evenly across the assigned children",
"first_come": "First come, first served — first child to complete it wins; it hides for the rest",
"unassigned": "Unassigned — no child sees this chore"
}
},
"task_group_policy": {
"options": {
"sticky": "Sticky — same child for all chores in the group",
"spread": "Spread — different children across the group today"
}
},
"task_group_action": {
"options": {
"save": "Save Changes",
"delete": "Delete Group"
}
}
},
"services": {
"complete_chore": {
"name": "Complete Chore",
"description": "Mark a chore as completed by a child",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to complete"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child completing the chore"
}
}
},
"complete_bonus_subtask": {
"name": "Complete Bonus Sub-task",
"description": "Complete a bonus sub-task after the parent chore is done",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the parent chore"
},
"bonus_subtask_id": {
"name": "Bonus Sub-task ID",
"description": "The ID of the bonus sub-task to complete"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child completing the bonus sub-task"
}
}
},
"approve_chore": {
"name": "Approve Chore",
"description": "Approve a completed chore and award points",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the chore completion to approve"
}
}
},
"approve_all_chores": {
"name": "Approve All Chores",
"description": "Approve all pending chore completions (or a specific set) and award points",
"fields": {
"completion_ids": {
"name": "Completion IDs",
"description": "Specific completion IDs to approve; omit to approve all pending"
}
}
},
"reject_chore": {
"name": "Reject Chore",
"description": "Reject a completed chore",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the chore completion to reject"
}
}
},
"undo_chore_approval": {
"name": "Undo Chore Approval",
"description": "Reverse an accidental chore approval — removes the awarded points and returns the completion to pending so it can be approved again.",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the approved chore completion to revert to pending"
}
}
},
"undo_transaction": {
"name": "Undo Transaction",
"description": "Reverse a points transaction by its ID — penalties, bonuses, manual add/remove adjustments and gifts (both legs). Automatic transactions (weekend/streak/perfect-week bonuses, pool moves, decay, interest) can't be undone.",
"fields": {
"transaction_id": {
"name": "Transaction ID",
"description": "The ID of the points transaction to reverse"
}
}
},
"claim_reward": {
"name": "Claim Reward",
"description": "Child claims a reward using their points",
"fields": {
"reward_id": {
"name": "Reward ID",
"description": "The ID of the reward to claim"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child claiming the reward"
}
}
},
"approve_reward": {
"name": "Approve Reward",
"description": "Approve a reward claim",
"fields": {
"claim_id": {
"name": "Claim ID",
"description": "The ID of the reward claim to approve"
}
}
},
"allocate_points_to_pool": {
"name": "Allocate Points to Pool",
"description": "Move points from a child's spendable balance into a reward's savings pool (locked).",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child making the allocation"
},
"reward_id": {
"name": "Reward ID",
"description": "The ID of the reward pool to deposit into"
},
"points": {
"name": "Points",
"description": "Number of points to allocate (capped at pool capacity and spendable balance)"
}
}
},
"add_points": {
"name": "Add Points",
"description": "Add bonus points to a child",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to add points to"
},
"points": {
"name": "Points",
"description": "The number of points to add"
},
"reason": {
"name": "Reason",
"description": "Optional reason for the bonus"
}
}
},
"remove_points": {
"name": "Remove Points",
"description": "Remove points from a child (penalty)",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to remove points from"
},
"points": {
"name": "Points",
"description": "The number of points to remove"
},
"reason": {
"name": "Reason",
"description": "Optional reason for the penalty"
}
}
},
"reject_reward": {
"name": "Reject Reward",
"description": "Reject a reward claim",
"fields": {
"claim_id": {
"name": "Claim ID",
"description": "The ID of the reward claim to reject"
}
}
},
"preview_sound": {
"name": "Preview Sound",
"description": "Preview a completion sound effect in the browser",
"fields": {
"sound": {
"name": "Sound",
"description": "The sound to preview"
}
}
},
"set_chore_order": {
"name": "Set Chore Order",
"description": "Set the display order of chores for a child",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to set chore order for"
},
"chore_order": {
"name": "Chore Order",
"description": "Ordered list of chore IDs"
}
}
},
"add_penalty": {
"name": "Add Penalty",
"description": "Create a new penalty definition",
"fields": {
"name": {
"name": "Name",
"description": "The name of the penalty"
},
"points": {
"name": "Points",
"description": "The number of points to deduct when applied"
},
"description": {
"name": "Description",
"description": "Optional description of the penalty"
},
"icon": {
"name": "Icon",
"description": "MDI icon for the penalty"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs this penalty applies to"
}
}
},
"update_penalty": {
"name": "Update Penalty",
"description": "Update an existing penalty definition",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to update"
},
"name": {
"name": "Name",
"description": "New name for the penalty"
},
"points": {
"name": "Points",
"description": "New points value"
},
"description": {
"name": "Description",
"description": "New description"
},
"icon": {
"name": "Icon",
"description": "New icon"
},
"assigned_to": {
"name": "Assigned To",
"description": "New list of child IDs"
}
}
},
"remove_penalty": {
"name": "Remove Penalty",
"description": "Remove a penalty definition",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to remove"
}
}
},
"apply_penalty": {
"name": "Apply Penalty",
"description": "Apply a penalty to a child, deducting points",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to apply"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child to apply the penalty to"
}
}
},
"add_bonus": {
"name": "Add Bonus",
"description": "Create a new bonus definition",
"fields": {
"name": {
"name": "Name",
"description": "The name of the bonus"
},
"points": {
"name": "Points",
"description": "The number of points to award when applied"
},
"description": {
"name": "Description",
"description": "Optional description of the bonus"
},
"icon": {
"name": "Icon",
"description": "MDI icon for the bonus"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs this bonus applies to"
}
}
},
"update_bonus": {
"name": "Update Bonus",
"description": "Update an existing bonus definition",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to update"
},
"name": {
"name": "Name",
"description": "New name for the bonus"
},
"points": {
"name": "Points",
"description": "New points value"
},
"description": {
"name": "Description",
"description": "New description"
},
"icon": {
"name": "Icon",
"description": "New icon"
},
"assigned_to": {
"name": "Assigned To",
"description": "New list of child IDs"
}
}
},
"remove_bonus": {
"name": "Remove Bonus",
"description": "Remove a bonus definition",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to remove"
}
}
},
"apply_bonus": {
"name": "Apply Bonus",
"description": "Apply a bonus to a child, awarding points",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to apply"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child to apply the bonus to"
}
}
},
"add_chore": {
"name": "Add Chore",
"description": "Create a new chore dynamically, typically from an automation or script",
"fields": {
"name": {
"name": "Name",
"description": "The name of the chore"
},
"description": {
"name": "Description",
"description": "Optional description of the chore"
},
"points": {
"name": "Points",
"description": "Points awarded when this chore is completed"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs to assign this chore to. Leave empty to assign to all children"
},
"time_category": {
"name": "Time Category",
"description": "When this chore should be completed: morning, afternoon, evening, night, or anytime"
},
"one_shot": {
"name": "One-Shot",
"description": "If true, this is a one-time chore that expires after being completed or at the end of the day"
},
"requires_approval": {
"name": "Requires Approval",
"description": "If true, a parent must approve the completion before points are awarded"
}
}
},
"skip_chore": {
"name": "Skip Chore",
"description": "Advance today's rotation past the current assignee. Ephemeral — tomorrow's rotation resumes as normal.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to skip"
}
}
},
"set_chore_manual_start": {
"name": "Set Manual Start Child",
"description": "Set which child starts a rotating chore. For alternating mode this reorders the pool; for random/balanced it only overrides today's assignee.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to update"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who should start the rotation"
}
}
},
"add_task_group": {
"name": "Add Task Group",
"description": "Create a task group (sticky = same child, spread = different children).",
"fields": {
"name": {
"name": "Name",
"description": "Display name for the group"
},
"policy": {
"name": "Policy",
"description": "sticky (same child) or spread (different children)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "List of chore IDs in the group. For sticky, the first chore is the leader."
}
}
},
"update_task_group": {
"name": "Update Task Group",
"description": "Update a task group's name, policy, or membership.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to update"
},
"name": {
"name": "Name",
"description": "New display name"
},
"policy": {
"name": "Policy",
"description": "New policy (sticky or spread)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "Replacement chore ID list. For sticky, the first chore is the leader."
}
}
},
"remove_task_group": {
"name": "Remove Task Group",
"description": "Delete a task group. Member chores are not affected.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to delete"
}
}
},
"start_timed_task": {
"name": "Start Timed Task",
"description": "Start or resume the timer on a timed task",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child starting the timer"
}
}
},
"pause_timed_task": {
"name": "Pause Timed Task",
"description": "Pause a running timed task timer",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child pausing the timer"
}
}
},
"stop_timed_task": {
"name": "Stop Timed Task",
"description": "Stop a timed task timer and submit for approval",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child stopping the timer"
}
}
},
"add_badge": {
"name": "Add Badge",
"description": "Create a custom badge.",
"fields": {
"name": {
"name": "Name",
"description": "The display name of the badge"
},
"description": {
"name": "Description",
"description": "Description of how the badge is earned"
},
"icon": {
"name": "Icon",
"description": "Icon for the badge (e.g. mdi:beach)"
},
"tier": {
"name": "Tier",
"description": "Badge tier: bronze, silver, gold or platinum"
},
"point_bonus": {
"name": "Point bonus",
"description": "Points credited to the child when the badge is earned"
},
"criteria": {
"name": "Criteria",
"description": "List of metric / operator / value dicts. Empty = manual-award only."
},
"assigned_to": {
"name": "Assigned to",
"description": "List of child IDs (empty = all)"
},
"notify_on_earn": {
"name": "Notify on earn",
"description": "Send a notification when the badge is earned"
}
}
},
"update_badge": {
"name": "Update Badge",
"description": "Update an existing badge. For built-ins, only point_bonus, tier, assigned_to, enabled, notify_on_earn are editable.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to update"
},
"name": {
"name": "Name",
"description": "New display name of the badge"
},
"description": {
"name": "Description",
"description": "New description of the badge"
},
"icon": {
"name": "Icon",
"description": "New icon for the badge"
},
"tier": {
"name": "Tier",
"description": "Badge tier: bronze, silver, gold or platinum"
},
"point_bonus": {
"name": "Point bonus",
"description": "Points credited to the child when the badge is earned"
},
"criteria": {
"name": "Criteria",
"description": "List of metric / operator / value dicts. Empty = manual-award only."
},
"assigned_to": {
"name": "Assigned to",
"description": "List of child IDs (empty = all)"
},
"enabled": {
"name": "Enabled",
"description": "Whether the badge is active"
},
"notify_on_earn": {
"name": "Notify on earn",
"description": "Send a notification when the badge is earned"
}
}
},
"remove_badge": {
"name": "Remove Badge",
"description": "Remove a custom badge. Built-ins cannot be removed.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to remove"
}
}
},
"award_badge_manually": {
"name": "Award Badge Manually",
"description": "Manually award a badge to a child.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to award"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child receiving the badge"
}
}
},
"revoke_badge": {
"name": "Revoke Badge",
"description": "Revoke an awarded badge. If a point bonus was credited, it is reversed.",
"fields": {
"awarded_badge_id": {
"name": "Awarded Badge ID",
"description": "The ID of the awarded badge record to revoke"
}
}
},
"rebuild_badges": {
"name": "Rebuild Badges",
"description": "Re-evaluate all badges across all children silently (no notifications, no point bonuses)."
},
"apply_mandatory_penalty": {
"name": "Apply Mandatory Penalty",
"description": "Deduct the configured penalty points for a missed mandatory chore and clear the review item.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"choose_avatar": {
"name": "Choose Avatar",
"description": "A child switches to an avatar they have unlocked.",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child"
},
"icon": {
"name": "Avatar icon",
"description": "The mdi icon of an unlocked catalogue avatar (e.g. mdi:rocket-launch)."
}
}
},
"dismiss_mandatory_chore": {
"name": "Dismiss Mandatory Chore",
"description": "Clear a missed mandatory chore review item with no penalty.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"gift_points": {
"name": "Gift Points",
"description": "Transfer spendable points from one child to another (parent-controlled).",
"fields": {
"from_child_id": {
"name": "From child ID",
"description": "The ID of the child sending points"
},
"to_child_id": {
"name": "To child ID",
"description": "The ID of the child receiving points"
},
"points": {
"name": "Points",
"description": "The number of points to transfer"
}
}
},
"postpone_mandatory_chore": {
"name": "Postpone Mandatory Chore",
"description": "Give a missed mandatory chore another period (or tomorrow) without a penalty, and clear the review item.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"request_swap": {
"name": "Request Chore Swap",
"description": "A child requests to take over today's rotation assignment of a chore (pending parent approval).",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to take over"
},
"requester_id": {
"name": "Requester child ID",
"description": "The ID of the child requesting the swap"
}
}
},
"test_notification": {
"name": "Test Notification",
"description": "Send a sample notification of the given type to its enabled recipients (ignores the master on/off so routing can be verified).",
"fields": {
"type_id": {
"name": "Notification type",
"description": "Notification type id, e.g. pending_chore_approval, badge_earned, streak_milestone"
}
}
},
"record_allowance_payout": {
"name": "Record Allowance Payout",
"description": "Deduct points and record a real-money allowance payout in the ledger (fixed conversion rate; parent-controlled).",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child receiving the payout"
},
"points": {
"name": "Points",
"description": "Points to convert to cash and deduct"
}
}
}
},
"entity": {
"sensor": {
"child_stats": {
"unit_of_measurement": "chores"
},
"child_badges": {
"unit_of_measurement": "badges"
}
},
"number": {
"weekend_multiplier": {
"name": "Weekend multiplier"
},
"perfect_week_bonus": {
"name": "Perfect week bonus"
}
},
"select": {
"streak_reset_mode": {
"name": "Streak reset mode"
},
"card_design": {
"name": "Card design"
}
}
}
}