Skip to content

feat(chores): chore dependencies / unlocks (FEAT-1)#603

Merged
tempus2016 merged 1 commit into
mainfrom
feat/chore-dependencies
Jun 26, 2026
Merged

feat(chores): chore dependencies / unlocks (FEAT-1)#603
tempus2016 merged 1 commit into
mainfrom
feat/chore-dependencies

Conversation

@tempus2016

Copy link
Copy Markdown
Owner

FEAT-1 — chore dependencies / unlocks

A chore can now depend on other chores: it stays unavailable for a child until every chore in its depends_on has an approved completion by that same child today. (e.g. "Get dressed" only unlocks after "Make bed" is approved.)

Surfaces

  • models: Chore.depends_on (+ from_dict/to_dict)
  • gating: added to is_chore_available_for_child, so it flows through the availability matrix, the cards, get_due_chores_for_child and the new todo platform automatically
  • websocket: depends_on in the add/update schema + _CHORE_EDITABLE_FIELDS (applied generically); async_add_chore param
  • sensor: depends_on exposed in _build_chores_list so the editor pre-selects current deps
  • panel: a "Depends on" multi-select in the chore editor (mirrors the proven assigned_to chip picker), wired through the draft + save
  • i18n: panel.chore_depends_label/_hint in all 8 locales

Testing

  • 4 gating unit tests (unmet blocks, met unlocks, unapproved doesn't unlock, other-child doesn't unlock); 147 across model/availability/calendar/assignment suites green.
  • Live on ha-dev: created B depending on A — B unavailable (False) until A was approved for the child, then True; picker + locale labels confirmed served live. Test chores cleaned up.

From AUDIT_REPORT.md §5 (FEAT-1).

A chore can now depend on other chores: it stays unavailable for a child
until every chore in its depends_on has an approved completion by that
same child today.

- models: Chore.depends_on (+ from_dict/to_dict)
- coord_chores.is_chore_available_for_child: dependency gate (so it flows
  through the availability matrix, the cards, get_due_chores and the todo
  platform automatically)
- websocket: depends_on in the add/update schema + editable-fields set
  (applied generically); async_add_chore param
- sensor: depends_on exposed in _build_chores_list so the editor shows
  the current selection
- panel: 'Depends on' multi-select in the chore editor (mirrors the
  assigned_to chip picker), wired through the draft + save
- i18n: panel.chore_depends_label/_hint in all 8 locales

Tests: 4 gating cases (unmet blocks, met unlocks, unapproved doesn't
unlock, other-child doesn't unlock). Verified live on ha-dev: B
(depends on A) was unavailable until A was approved for the child, then
became available; panel picker + locale labels served live.
@github-actions github-actions Bot added backend Python integration code cards Lovelace cards / frontend (www/*.js) translations i18n / locale strings tests Test suite labels Jun 26, 2026
@tempus2016 tempus2016 merged commit f956e2e into main Jun 26, 2026
10 checks passed
@tempus2016 tempus2016 deleted the feat/chore-dependencies branch June 26, 2026 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend Python integration code cards Lovelace cards / frontend (www/*.js) tests Test suite translations i18n / locale strings

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant