Skip to main content

Logging completions

By default marking a task Done is one tap. But for the chores you want a record of — "what did this service cost, who did it, what did I notice?" — a task can capture per-completion detail: a free-form note, a cost, a photo, and who did it (a Home Assistant person).

Use case. Turn the completion history into a real maintenance log: track what you spend on filters over the years, attach a photo of the part you fitted, or note which family member last walked the dog — all queryable later from the task's history.

How it's used. Each task chooses its capture mode when you create or edit it (On completion):

  • One-tap done — the default; no dialog, nothing changes.
  • Ask for details (optional) — Done opens a dialog with note / cost / photo / who, all optional (a Skip details button still completes instantly).
  • Require details — the dialog appears and the required field(s) must be filled before the task can be marked done.

The dialog uploads photos through Home Assistant's native image store and picks who from your person entities. Every recorded completion shows its note, cost, photo thumbnail and who in the task's history, where you can edit a past entry (fix a note, add a forgotten receipt) without disturbing the schedule. The most recent completion's details are also exposed on the task's next due sensor attributes, and the home_keeper.complete_task / home_keeper.update_completion services carry the same fields for automations.

Back-dating a completion, or correcting one after the fact. The dialog's Completed at field (defaults to now) lets you log a completion for when the work actually happened — not when you got around to opening the app. This matters most for a floating task, whose next-due date measures from the completion: log a 30-day task 5 days late and floating math would otherwise push the next occurrence 5 days too far out. If you already logged a completion at the wrong time, each history row's move date button (next to edit and delete) re-timestamps that one entry — unlike the pencil (edit) button, which only touches note/cost/photo/who and never the date. Backed by the home_keeper.move_completion service for automations.

The move-date dialog on a history row — re-timestamps one completion without touching its note, cost, photo, or who

The set of required fields is stored per task, so a future release can let you require specific fields (e.g. always a cost) without any migration.

Where "require details" applies. The capture dialog — and the required gate — live in the panel. Completing a task from a surface that has no dialog (the native to-do checkbox, the mobile app, the device mark-done button, or a bare home_keeper.complete_task service call) just records the completion immediately, with whatever metadata was passed (none from a checkbox). This is deliberate: those surfaces can't prompt, and hard-blocking them would make a required task impossible to complete from the to-do list or an automation. So required is a capture prompt in the panel, not a global constraint — the dashboard card honours it by sending you to the panel instead of quick-completing. Automations that want to record detail can pass note / cost / photo / who to the service.

The completion-details dialog — note, cost, who and photo captured when a task is marked done

Every completion's note and cost (and who/photo) then show in the task's history, where each entry can be edited or removed:

Task history annotated with per-completion cost and notes, each row editable

Administration and usage are intentionally separated: you manage tasks and appliances from the Home Keeper sidebar panel, and use them through native HA entities and the dashboard card. The panel list view can group/filter tasks, and tapping any row opens a detail page with the full schedule, notes, and completion history.