Release Notes
All notable changes to Home Keeper are documented here. The format follows
Keep a Changelog and the project uses semantic
versioning (with PEP 440 pre-release suffixes — bN/aN/rcN — for betas).
[0.9.0] - 2026-07-23
Added
- Notes on problem-sensor tasks — remembered for next time. When Home Keeper
mirrors a
device_class: problembinary sensor as a task, you can now attach a free-text note to it right from the task's detail page (Add a note → type → Save). The note is for the instructions you want next time the problem fires — the fix that worked last time, a part number, where the shut-off valve is. It sticks with that sensor: it survives the task clearing and re-arming, and even survives the mirror being removed and recreated (turning problem-sensor sync off and on, or temporarily excluding the sensor), so it reappears the next time the same problem goes off. - Manufacturer/model/serial number for existing-device appliances. Attaching an appliance to a device you already have in Home Assistant used to offer only a device picker — none of the catalog fields a fully virtual appliance gets. Those fields (manufacturer, model, serial number, icon) are now available for existing-device appliances too, and picking a device prefills any that are still empty from the device's own registry entry — handy since not every integration reports them. Fields you've already filled in (or the device doesn't know) are never overwritten, so you can freely correct or complete what the device is missing. (Fixes #145)
- Back-date or correct a task completion. The completion dialog now has an
optional Completed at date/time field (defaults to now) for logging a
completion in the past — so a floating task's next-due date measures from when
you actually did it, not from when you got around to logging it. The task
history list also gains a move date action on each completion row to fix an
already-recorded entry's timestamp after the fact, without touching its note,
cost, photo, or who. Backed by a new
home_keeper.move_completionservice and matching websocket command; automations that already react tohome_keeper_task_completed/home_keeper_task_uncompletedsee a move for free. (Fixes #143)
Fixed
- The task-completion dialog's Save button was invisible. For a task set to
"Ask for details" or "Require details" on completion, tapping Done opened a
dialog to log a note/cost/who — but its Mark done/Save, Skip details,
and Cancel buttons never rendered, in the panel or the mobile app, so there was
no way to confirm or dismiss it. Home Assistant's
ha-dialogcomponent changed its internal slot API (action buttons must now be wrapped in<ha-dialog-footer>); the panel's completion dialog hadn't been updated to match. (Fixes #144)
[0.8.0] - 2026-07-04
Added
- Discover known companions from the panel. The Settings → Companions section now links out to the docs catalog of integrations and glue that work with Home Keeper, so you can browse the full list even when nothing is detected on your setup. The docs page also invites you to open a GitHub issue to suggest a companion (or glue) integration that should be listed.
- In-form help for creating tasks. The task editor now explains itself as you fill it in: every field carries concise helper text, a ? icon by the form title links straight to the docs, and sensor-based tasks gain a short primer plus a live, computed hint that reads the bound sensor and spells out what happens next — e.g. "This sensor reads 660 h now. The task becomes due at 760 h, then every 100 h after each completion." This clears up the most common confusion with usage-meter tasks: the target counts usage from the sensor's current reading, not from zero, and the count restarts after each completion.
- Product URL on replaceable parts. A part can now carry a link to where you buy it (e.g. an Amazon listing). When set, the part's name in the appliance detail page becomes a clickable link that opens the product page in a new tab, so reordering a worn or consumed part is one click away. (Fixes #118)
- Attach a file to a replaceable part. A part can now carry a single attached file (a receipt, spec sheet, or photo) alongside its product URL — upload it from the part's editor and open or remove it later, the same secure upload/storage path appliance documents already use.
- A linked task's "Consumable link" points straight at the part's product page. When a maintenance task is tied to a part that has a product URL, that link now opens the product page directly — in the panel's task detail and on the dashboard card's task row — instead of just naming the part.
- Auto-create a "buy" task when a spare part runs low. A replaceable part that tracks stock with a reorder threshold can now opt into an automatic shopping reminder: enable Auto-create buy task on the part, and whenever its stock drops to (or below) the reorder point Home Keeper adds a one-off "Buy {part}" task — on the appliance's device page, the to-do list, and the panel. The reminder clears itself once the part is restocked above the threshold (or you turn the option off). Completing the reminder restocks the part by a configurable Restock quantity (default 1), closing the low → buy → restocked loop with no automation to write.
Changed
- A task's appliance links now render as chips, inline with the rest. On the dashboard card, a task's document/metadata links, uploaded files, and a linked part's product URL previously appeared as plain blue links in a separate row below the task's chips, which read inconsistently. They now render as primary-tinted link-chips in the same chip row as the status, area, and label chips — one tidy, wrapping row — while still opening in a new tab on tap.
Fixed
- Auto-generated maintenance task names now follow your Home Assistant language. The name Home Keeper generates for a wear part (e.g. "Replace {part} ({appliance})") was always English; it's now translated into your configured language across every surface — the panel, the to-do list, the calendar, notifications, and the device pages — and updates automatically if you change the language. (Fixes #119)
- Fixed a batch of bugs found during an in-depth code review (correctness, security, and reliability), plus internal maintainability cleanups.
[0.8.0b5]
Changed
- A task's appliance links now render as chips, inline with the rest. On the dashboard card, a task's document/metadata links, uploaded files, and a linked part's product URL previously appeared as plain blue links in a separate row below the task's chips, which read inconsistently. They now render as primary-tinted link-chips in the same chip row as the status, area, and label chips — one tidy, wrapping row — while still opening in a new tab on tap.
[0.8.0b4]
Added
- Auto-create a "buy" task when a spare part runs low. A replaceable part that tracks stock with a reorder threshold can now opt into an automatic shopping reminder: enable Auto-create buy task on the part, and whenever its stock drops to (or below) the reorder point Home Keeper adds a one-off "Buy {part}" task — on the appliance's device page, the to-do list, and the panel. The reminder clears itself once the part is restocked above the threshold (or you turn the option off). Completing the reminder restocks the part by a configurable Restock quantity (default 1), closing the low → buy → restocked loop with no automation to write.
[0.8.0b3]
Added
-
Product URL on replaceable parts. A part can now carry a link to where you buy it (e.g. an Amazon listing). When set, the part's name in the appliance detail page becomes a clickable link that opens the product page in a new tab, so reordering a worn or consumed part is one click away. (Fixes #118)
-
Attach a file to a replaceable part. A part can now carry a single attached file (a receipt, spec sheet, or photo) alongside its product URL — upload it from the part's editor and open or remove it later, the same secure upload/storage path appliance documents already use.
-
A linked task's "Consumable link" points straight at the part's product page. When a maintenance task is tied to a part that has a product URL, that link now opens the product page directly — in the panel's task detail and on the dashboard card's task row — instead of just naming the part.
Fixed
- Fixed a batch of bugs found during an in-depth code review (correctness, security, and reliability), plus internal maintainability cleanups.
[0.8.0b2]
Added
- In-form help for creating tasks. The task editor now explains itself as you fill it in: every field carries concise helper text, a ? icon by the form title links straight to the docs, and sensor-based tasks gain a short primer plus a live, computed hint that reads the bound sensor and spells out what happens next — e.g. "This sensor reads 660 h now. The task becomes due at 760 h, then every 100 h after each completion." This clears up the most common confusion with usage-meter tasks: the target counts usage from the sensor's current reading, not from zero, and the count restarts after each completion.
Fixed
- Auto-generated maintenance task names now follow your Home Assistant language. The name Home Keeper generates for a wear part (e.g. "Replace {part} ({appliance})") was always English; it's now translated into your configured language across every surface — the panel, the to-do list, the calendar, notifications, and the device pages — and updates automatically if you change the language. (Fixes #119)
[0.8.0b1]
Added
- Discover known companions from the panel. The Settings → Companions section now links out to the docs catalog of integrations and glue that work with Home Keeper, so you can browse the full list even when nothing is detected on your setup. The docs page also invites you to open a GitHub issue to suggest a companion (or glue) integration that should be listed.
[0.7.0] - 2026-06-30
Added
-
Integration-provided metadata chips on tasks. Integrations can now attach compact metadata chips to any task via the
task_chipsfield onhome_keeper.add_task/update_task. Each chip carries a label, an optionalmdi:icon, and an optional link URL — making contextual information (e.g. battery type, part number) immediately visible in both the sidebar panel task list and the dashboard card without cluttering the task notes. -
Richer appliance device pages. A virtual appliance's Home Assistant device page now surfaces much more of its Home Keeper data: the device-info block shows a first-class serial number (alongside make/model), each stock-tracked part gets an editable spare-stock number and a low-stock problem sensor, and the page's Visit link deep-links straight to that appliance's panel page (manuals, full inventory, history) rather than the panel root. Per-device diagnostics download is scoped to just that appliance's tasks and parts.
-
Jump from the panel to an appliance's device page. The "Virtual device" chip on the Appliances list and appliance detail is now a clickable link to that appliance's Home Assistant device page (it was a static marker before).
Fixed
-
Problem Sensor Sync no longer leaves empty device cards behind. When you disable Problem Sensor Sync — or exclude an individual sensor, device, area, or label — the synced task and its entities are removed as before, and now the associated device is cleaned up too: a device Home Keeper created for the synced task is removed outright, and a device owned by another integration simply loses its (now entity-less) Home Keeper association. No more orphaned, zero-entity Home Keeper devices under Settings → Devices & Services → Home Keeper.
-
Device chip on a task/appliance card row now opens the device page. Clicking the device chip was hijacked by the card row's open-detail handler (it opened the task or appliance detail instead); the chip click no longer bubbles to the row.
[0.7.0b4]
Added
- Richer appliance device pages. A virtual appliance's Home Assistant device page now surfaces much more of its Home Keeper data: the device-info block shows a first-class serial number (alongside make/model), each stock-tracked part gets an editable spare-stock number and a low-stock problem sensor, and the page's Visit link deep-links straight to that appliance's panel page (manuals, full inventory, history) rather than the panel root. Per-device diagnostics download is scoped to just that appliance's tasks and parts. A task attached to a foreign device is left to its owning integration (Home Keeper only adds its per-task entities there).
- Jump from the panel to an appliance's device page. The "Virtual device" chip on the Appliances list and appliance detail is now a clickable link to that appliance's Home Assistant device page (it was a static marker before).
Fixed
- Device chip on a task/appliance card row now opens the device page. Clicking the device chip was hijacked by the card row's open-detail handler (it opened the task or appliance detail instead of navigating to the device); the chip click no longer bubbles to the row.
[0.7.0b3] - 2026-06-29
Fixed
- Problem Sensor Sync no longer leaves empty device cards behind. When you disable Problem Sensor Sync — or exclude an individual sensor, device, area, or label — the synced task and its entities are removed as before, and now the associated device is cleaned up too: a device Home Keeper created for the synced task is removed outright, and a device owned by another integration simply loses its (now entity-less) Home Keeper association. No more orphaned, zero-entity Home Keeper devices under Settings → Devices & Services → Home Keeper.
[0.7.0b2] - 2026-06-29
Added
- Integration-provided metadata chips on tasks. Integrations can now attach
compact metadata chips to any task via the
task_chipsfield onhome_keeper.add_task/update_task. Each chip carries a label, an optionalmdi:icon, and an optional link URL — making contextual information (e.g. battery type, part number) immediately visible in both the sidebar panel task list and the dashboard card without cluttering the task notes.
[0.7.0b1] - 2026-06-29
Internal version bump after 0.6.0 stable shipped.
[0.6.0] - 2026-06-29
This release adds consumable linking so completing a task (e.g. swapping a water filter) automatically draws down your spare stock and fires a reorder alert, appliance document shortcuts directly on dashboard card rows so a manual or parts page is one tap away, and a round of panel clarity improvements that make the task list easier to read at a glance. Highlights, for anyone upgrading from 0.5.0:
Added
-
Link a task to a consumable (sensor-driven reorder). Any task can now be linked to an appliance consumable so that marking it done consumes one spare from the part's stock — and fires
home_keeper_part_low_stockwhen you cross the reorder threshold, so an automation can add it to your shopping list. Pair it with a sensor-based task to cover the "there's no schedule — my fridge tells me when the water filter is spent" case: the sensor arms the task, and completing it (when you swap the filter) draws down inventory and signals buy more. Link from the task form's new Linked consumable picker — scoped to the consumables of the appliance the task is attached to — or with the newhome_keeper.set_task_consumableservice (omit the ids to unlink). -
Show appliance documents on a task's dashboard-card row. Each task can now pick which of its appliance's documents to surface directly on the dashboard task card: external document links, uploaded files (a PDF manual, a photo), and free-form metadata links (e.g. a reorder or warranty page). Choose them in the panel's task editor under Links to show on card (the picker appears once the task's appliance has documents); the card renders each as a compact chip on the task's row — a link or file opens in a new tab (an uploaded file via a short-lived signed URL) — so a manual or parts page is one tap away while you work. The selection rides the existing
home_keeper.add_task/update_taskservices (card_links), and entries resolve live — rename or remove one on the appliance and the card follows.
Changed
-
Panel clarity improvements for first-time users. Several refinements make the task list easier to read at a glance: a dismissible "Welcome to Home Keeper" banner on the Tasks tab explains the kinds of tasks you'll see; the recurrence picker now uses plain language ("Repeats after each completion", "Repeats on a fixed schedule", "Just once", "Based on a sensor") instead of internal jargon; overdue tasks show how overdue they are (e.g. "3 days overdue"); monitored tasks are labelled simply "Monitored" and a completion-blocked task shows a muted "Clears automatically" caption; sensor-synced tasks owned by Home Keeper show an "Auto-synced" chip; and the appliance editor's Custom fields and Parts & wear items sections collapse by default on a new appliance so first setup isn't a wall of fields.
-
Tapping a task row on the dashboard card no longer opens an edit form. The card is now a focused do-and-glance surface: one-tap Done, add via the header +, and link chips — while editing and deleting move to the sidebar panel, where the full task editor lives.
Fixed
- The dashboard card and panel now reliably refresh after an update. Their module URLs are cache-busted by the bundle's content hash instead of the integration version, so a rebuilt frontend always loads fresh — no more stale card (or "card configuration error" in the mobile app) after upgrading, including across preview builds that reuse a version string.
- Uploaded file documents on the card now open in the mobile app. A pinned file chip is now a plain link with its URL pre-signed when the card loads, so a tap opens it natively — the Home Assistant companion app (iOS/WKWebView) was silently blocking the previous open-on-tap.
- Back navigation from a cross-view detail page now returns to the correct previous page. Navigating Appliance → device → related Task and pressing Back used to jump to the top-level Tasks tab instead of back to the appliance/device view. (Fixes #105)
- Problem Sensor Sync no longer leaves stale entities after disabling or excluding.
Disabling the sync, or adding a device/entity/label exclusion, now removes the
next_duesensor andoverduebinary sensor that were created for the synced task — they no longer linger on the device after the task is gone. (Fixes #104)
[0.6.0b4]
Added
- Show appliance documents on a task's dashboard-card row. Each task can now pick
which of its appliance's documents to surface directly on the
dashboard task card: external document links,
uploaded files (a PDF manual, a photo), and free-form metadata links (e.g. a
reorder or warranty page). Choose them in the panel's task editor under Links to
show on card (the picker appears once the task's appliance has documents); the card
renders each as a compact chip on the task's row — a link or file opens in a new tab
(an uploaded file via a short-lived signed URL) — so a manual or parts page is one tap
away while you work. The selection rides the existing
home_keeper.add_task/update_taskservices (card_links), and entries resolve live — rename or remove one on the appliance and the card follows.
Changed
- Tapping a task row on the dashboard card no longer opens an edit form. This made it easy to accidentally open (and delete from) a task when you only meant to mark it done. The card is now a focused do-and-glance surface: one-tap Done, add via the header +, and link chips — while editing and deleting move to the sidebar panel, where the full task editor lives.
Fixed
- The dashboard card and panel now reliably refresh after an update. Their module URLs are cache-busted by the bundle's content hash instead of the integration version, so a rebuilt frontend always loads fresh — no more stale card (or "card configuration error" in the mobile app) after upgrading, including across preview builds that reuse a version string.
- Uploaded file documents on the card now open in the mobile app. A pinned file chip is now a plain link with its URL pre-signed when the card loads, so a tap opens it natively — the Home Assistant companion app (iOS/WKWebView) was silently blocking the previous open-on-tap because it happened just after an async request. (External links were always fine.)
[0.6.0b3]
Changed
- Panel clarity pass for first-time users. Several refinements make the task list
easier to read at a glance:
- A dismissible "Welcome to Home Keeper" banner on the Tasks tab explains the kinds of tasks you'll see mixed together (recurring, monitored, and companion- contributed). Dismiss it with Got it and it stays gone.
- The recurrence picker uses plain language — "Repeats after each completion", "Repeats on a fixed schedule", "Just once", "Based on a sensor" — instead of the "Floating / Fixed / Sensor-based" jargon.
- Overdue cards now show how overdue they are (e.g. "3 days overdue") next to the due date, so urgency reads at a glance.
- Monitored tasks are labelled simply "Monitored" (the "(condition-driven)" parenthetical is gone), and a completion-blocked task shows a muted "Clears automatically" caption instead of a dead, greyed-out Done button.
- Sensor-synced tasks owned by Home Keeper itself now show an "Auto-synced" chip rather than the redundant "Managed by Home Keeper", and companion "Managed by …" chips carry the integration's icon so owner/device/status chips read distinctly.
- The appliance "Virtual device" chip has an explanatory tooltip, and the appliance editor's advanced Custom fields and Parts & wear items sections collapse by default on an empty appliance (and remember your choice while editing), so adding a first appliance isn't a wall of fields.
[0.6.0b2]
Added
- Link a task to a consumable (sensor-driven reorder). Any task can now be
linked to an appliance consumable so that marking it done consumes one spare
from the part's stock — and fires
home_keeper_part_low_stockwhen you cross the reorder threshold, so an automation can add it to your shopping list. Pair it with a sensor-based task to cover the "there's no schedule — my fridge tells me when the water filter is spent" case: the sensor arms the task, and completing it (when you swap the filter) draws down inventory and signals buy more. Link from the task form's new Linked consumable picker — scoped to the consumables of the appliance the task is attached to — or with the newhome_keeper.set_task_consumableservice (omit the ids to unlink). The link is independent of the auto-generated wear-part tasks, so it's never reconciled away and the task stays fully editable.
[0.6.0b1]
[0.5.0] - 2026-06-26
This release adds offline manuals & documents so appliance files are available even when a manufacturer's site isn't, profiles as named, reusable task filters you define once and use everywhere, actionable mobile notifications so each household member can complete, snooze, or skip tasks right from their phone, and standalone snooze and skip services for any automation. Highlights, for anyone upgrading from 0.4.0:
Added
- Offline manuals & documents. An appliance can now hold a list of documents —
manuals, warranties, receipts — each either an external link or an uploaded
file (PDF or image) stored locally on your Home Assistant instance, so the manual
is there even when the manufacturer's site isn't. Manage them in the appliance's
Manuals & documents editor: each existing document shows as a card with its name
and details (a link's URL, or an uploaded file's filename, size and type) and Open,
Edit and Remove actions — open previews it in a new tab, edit renames it (and
changes a link's URL; uploaded files are rename-only). A separate Add a document
area adds another link or uploads a file; you can attach link documents while first
creating an appliance, before it's saved. The appliance detail page lists them, opening
a file through a short-lived signed URL. Uploaded files are served by an authenticated
endpoint and removed from disk when you delete the document or the appliance. New
home_keeper.add_asset_document/home_keeper.update_asset_document/home_keeper.remove_asset_documentservices (for links — files upload from the panel) and matching websocket commands. This replaces the single appliancemanual_urlfield; your existing manual link is migrated automatically into a document on upgrade — no action needed. - Profiles (reusable saved filters). A Profile is a named, saved filter —
status (overdue / due soon / all) plus optional labels/areas/devices — that you define
once in Settings → Profiles and reuse everywhere tasks are filtered: in a
notification, in the Profile dropdown on the panel's Tasks tab, and in the
dashboard card editor's Filter by profile picker. New
home_keeper.list_profilesservice andhome_keeper/get_profileswebsocket command read them. - Actionable notifications (per-person chore queues). Home Keeper can now push a
mobile-app notification for what's due, with Mark done / Snooze / Skip / Open
buttons that route back into Home Keeper so the schedule is recalculated correctly
(completing advances recurrence; snoozing re-arms a fresh reminder). Configure
notifications in Settings → Notifications: each notification references a
Profile (which tasks it covers) and targets one or more companion-app devices with
its own button set, snooze duration, and style (a walk that sends the first
due task and advances to the next as you action it, or a single digest summary). A
notification can auto-send when a task goes overdue/due-soon, or be triggered on
demand with the new
home_keeper.notifyservice — e.g. from a "Chores" calendar event — so two household members each get their own filtered list. Tapping an action emits ahome_keeper_task_completed/_snoozed/_skippedevent withorigin: home_keeper_notification_action. - Snooze and skip a task. The notification buttons are also standalone services:
home_keeper.snooze_task(defer a task's due date by a number of hours — "remind me later") andhome_keeper.skip_task(advance to the next occurrence — "skip this one") move a task's schedule without recording a completion (the maintenance log and a floating task's clock are left untouched). Each fires ahome_keeper_task_snoozed/home_keeper_task_skippedevent, also available as device-automation triggers.
[0.4.0] - 2026-06-22
This release adds companion discovery so integrations that work with Home Keeper surface in the panel, sensor-based tasks driven by a numeric entity rather than the clock, and device exclusions for problem-sensor sync. Highlights, for anyone upgrading from 0.3.0:
Added
- Companion discovery (Settings → Companions). Home Keeper now surfaces
integrations that work with it, right in the panel. Connected companions
(integrations that announce themselves — e.g. Pawsistant, or the Battery Notes
bridge) get a Configure button that deep-links to their own settings.
Suggested rows point you at a bridge for a popular integration you already have
installed (e.g. Battery Notes) but haven't connected yet, with an Install
link and a Dismiss to silence it. Two paths feed this: an integration can
register itself via the new
home_keeper.register_companionservice (so Home Keeper never hard-codes it), and Home Keeper detects a small curated set of popular upstreams from a catalog. Newhome_keeper_companion_connected/home_keeper_companion_suggestedevents let automations react. See the Companions README section and docs/INTEGRATING.md §7. - Sensor-based tasks. A recurrence type whose due-state is derived from a bound
numeric Home Assistant entity rather than the clock, in two modes. Usage / meter
generalises floating recurrence from elapsed time to elapsed sensor units — "service
every 500 running hours", "oil every 15,000 km" — arming once the reading advances
the chosen target since the last completion (which resets the meter; a meter reset
re-anchors automatically). Threshold arms when the reading crosses a comparison
against a value, with an optional hold and attribute read — "replace the filter when
airflow drops below 60 %" — and re-arms only on a fresh crossing. Armed sensor tasks
appear on the to-do list and fire
home_keeper_task_overduelike any other; the task detail shows live meter progress. Create them in the panel or viahome_keeper.add_taskwith asensormapping. - Exclude devices from problem-sensor sync. The problem-sensor sync feature gains
an Excluded devices picker (panel Settings, the options flow, and the
home_keeper.set_optionsservice) alongside the existing entity / area / label exclusions. Excluding a device leaves out everydevice_class: problembinary sensor that belongs to it.
Changed
- Settings tab layout. The completed one-off retention setting now lives in its own General card, separate from the Problem sensor sync card it's unrelated to.
[0.4.0b1] - 2026-06-21
Added
- Companion discovery (Settings → Companions). Home Keeper now surfaces
integrations that work with it, right in the panel. Connected companions
(integrations that announce themselves — e.g. Pawsistant, or the Battery Notes
bridge) get a Configure button that deep-links to their own settings.
Suggested rows point you at a bridge for a popular integration you already have
installed (e.g. Battery Notes) but haven't connected yet, with an Install
link and a Dismiss to silence it. Two paths feed this: an integration can
register itself via the new
home_keeper.register_companionservice (so Home Keeper never hard-codes it), and Home Keeper detects a small curated set of popular upstreams from a catalog. Newhome_keeper_companion_connected/home_keeper_companion_suggestedevents let automations react. See the Companions README section and docs/INTEGRATING.md §7. - Sensor-based tasks. A recurrence type whose due-state is derived from a bound
numeric Home Assistant entity rather than the clock, in two modes. Usage / meter
generalises floating recurrence from elapsed time to elapsed sensor units — "service
every 500 running hours", "oil every 15,000 km" — arming once the reading advances
the chosen target since the last completion (which resets the meter; a meter reset
re-anchors automatically). Threshold arms when the reading crosses a comparison
against a value, with an optional hold and attribute read — "replace the filter when
airflow drops below 60 %" — and re-arms only on a fresh crossing. Armed sensor tasks
appear on the to-do list and fire
home_keeper_task_overduelike any other; the task detail shows live meter progress. Create them in the panel or viahome_keeper.add_taskwith asensormapping.
[0.3.0] - 2026-06-21
This release adds three new ways to drive tasks — condition-driven triggered
tasks, one-off do-once tasks, and synced problem binary sensors — a Lovelace
dashboard card, rich per-completion history, a comprehensive event/automation
surface, in-panel Settings, and more flexible appliances, and moves the
integration onto the Platinum quality scale. Highlights, for anyone upgrading
from 0.2.0:
Added
- Condition-driven (
triggered) tasks. A recurrence type for maintenance that responds to a condition rather than a schedule — a battery going low, a leak, a filter past its threshold. A triggered task has no schedule: an owning integration arms it (the newhome_keeper.trigger_taskservice, or by creating it) when the condition becomes true and clears it (complete_task) when it resolves, which records the event in history and returns the task to a dormant state. Dormant triggered tasks are invisible to the to-do list, calendar, and overdue sensors, and the panel tucks them into a collapsed "Monitored" section; armed ones read as due-now everywhere. This is the engine behind the Battery Notes glue integration. - One-off (do-once) tasks. A recurrence type for tasks that happen once rather
than on a schedule — renew a passport, register a car, replace a single item. Pick
One-off on the task form and choose a due date (defaults to today); it shows
on the to-do list, calendar and overdue sensors like any task until you complete it,
then goes dormant and moves to a collapsed Completed section in the panel (its
completion history is kept). Undoing the completion brings it back to its due date.
Available to automations via
home_keeper.add_task/update_task(recurrence_type: one-offwith adue). A new One-off retention (days) option (Settings tab, options flow, andhome_keeper.set_options) can auto-delete a completed one-off this many days after it's done; the default0keeps them forever. - Sync
problembinary sensors as tasks (opt-in). A new option automatically mirrors everybinary_sensorwith theproblemdevice class as a Home Keeper task. The task is armed (shows as due-now on the to-do list, calendar and device page) while the sensor reports a problem and clears itself automatically once the originating integration resolves it. These synced tasks can't be completed inside Home Keeper — the underlying problem has to be fixed in real life — so the Done action is shown disabled on every surface and tapping it explains why. Each task inherits the sensor's device and area; narrow the scope with entity / area / label exclusions. Off by default. - Dashboard task card. A resizable Lovelace card (
custom:home-keeper-card) shows your tasks as a list with a one-tap Done button on each row, and opens an inline editor for adding, editing, and deleting tasks without leaving the dashboard. It is auto-registered as a resource (no manual setup) and appears in the "Add card" picker. A GUI config editor exposes filtering (by status, area, device, recurrence type, due-within horizon, and labels), sorting, status/area/device grouping, a max-items cap, and display toggles. Built entirely from Home Assistant's own components and theme variables, and it stays in sync with completions made from any other surface. - Task labels & per-subject cards. Tasks now carry a
labelsfield — editable in the panel/card task form and viahome_keeper.add_task/update_task, and echoed on every task event. Point a card at one or more labels (e.g.dog,car, a kid's name) to get a focused list: a card per subject. The filter matches a task by its own labels or by the labels on its attached device or area. - Per-completion metadata (note, cost, photo, who). A completion can now carry
optional context: a free-form note, a cost, a photo (uploaded to Home Assistant's
image store), and who did it (a
personentity). Capture is a per-task setting —none(the default one-tap Done),optional(a details dialog, plus a Skip shortcut), orrequired(the dialog with mandatory field(s)). The panel shows each completion's note/cost/photo/who in the task history and lets you edit a past entry without changing the schedule. Newhome_keeper.complete_taskfields and a newhome_keeper.update_completionservice expose this to automations; the latest completion's metadata is mirrored on the task's next due sensor attributes, and ahome_keeper_task_completion_updatedevent fires when a past completion is edited. - Comprehensive lifecycle events + automation-editor device triggers. Home Keeper now fires a Home Assistant bus event for every meaningful change, so you can automate on the full lifecycle instead of just completions and low-stock. New events: tasks created / updated / deleted / uncompleted / triggered and the time-based overdue and due-soon transitions; spare parts out of stock and restocked (alongside the existing low-stock); and appliances created / updated / deleted. The time and stock transitions are edge-triggered (one event per crossing) and silently baselined on restart, so a reboot never replays an "overdue" storm. Each event also shows up as a device trigger in the visual automation editor. See docs/EVENTS.md for the full catalog and example automations.
- A Settings tab in the panel. Home Keeper's integration options are now editable
right in the sidebar panel — a Settings tab alongside Tasks and Appliances — so
you don't have to dig through Settings → Devices & services → Configure. It mirrors
the options flow and saves as you change it. The options flow still works, and a
new
home_keeper.set_optionsservice exposes the same settings to automations. - Flexible appliance metadata — custom fields. An appliance's descriptive details
are now a free-form list of custom fields instead of a fixed set of inputs. Each
field has a label and a type — text, link, or date — and you add as many
as you like, with one-click seeds for the common ones (serial number, warranty
expiry, purchase/install dates, provider, vendor, notes). A date field is
display-only unless you tick Track as a sensor, which surfaces it as a
datesensor on the device for automations (e.g. "warranty expiring in 30 days → notify"). Manufacturer, model, manual link, cost, icon and area remain dedicated fields, and the insurance inventory export lists each appliance's custom fields in a new Details column. Note: this changes how appliance metadata is stored — an existing appliance's old descriptive fields are not migrated; re-enter them as custom fields. - Backdating when creating tasks and parts. The New Task form has an optional
Last completed field that seeds an initial completion so a floating task's
next-due is measured from when the activity actually last happened; integrations can
pass the same via
home_keeper.add_task'slast_completed. The parts editor gains a matching Last replaced date for wear items so the maintenance task it creates starts its clock from the real replacement date. The appliance parts list was also redesigned into per-part cards (type icon/badge, cadence, last-replaced, spare-stock). - Platinum integration quality scale. Home Keeper now declares the
Platinum quality scale,
with a per-rule ledger in
custom_components/home_keeper/quality_scale.yaml. The codebase is fully type-checked (mypy, withpy.typed) in CI.
Changed
- A wear-item replacement task with no recorded last-replaced date is now due now, not "assumed fresh". When Home Keeper derives a replacement task from an appliance wear item that has no "Last replaced" date, it now reads as due immediately (matching brand-new floating tasks) instead of scheduling the first reminder a full interval out. Backdate the part's last-replaced date (or mark the task done) to start its clock from a known point. Wear items with a recorded replacement date are unaffected.
- A spare part dropping straight to zero now fires
home_keeper_part_out_of_stock, nothome_keeper_part_low_stock. Out-of-stock is the more specific event and takes precedence. If an automation listened forhome_keeper_part_low_stockto catch a part reaching zero, switch it to (or also listen for)home_keeper_part_out_of_stock. A part crossing into low without hitting zero still fireshome_keeper_part_low_stock. - User-facing error messages are now localizable. Errors raised by Home Keeper
services and entities use Home Assistant translation keys (
strings.json→exceptions) so they can be translated (English-first for now). - Home Keeper now registers as a service-type integration (
integration_type), so Home Assistant groups it accordingly in the UI.
[0.3.0b12] - 2026-06-21
Added
- Per-completion metadata (note, cost, photo, who). A completion can now carry
optional context: a free-form note, a cost, a photo (uploaded to Home Assistant's
image store), and who did it (a
personentity). Capture is a per-task setting chosen on the task form —none(the default one-tap Done),optional(a details dialog with everything optional, plus a Skip shortcut), orrequired(the dialog with mandatory field(s)). The panel shows each completion's note/cost/photo/who in the task history and lets you edit a past entry without changing the schedule; the dashboard card sends a required task to the panel to capture its details. The set of required fields is stored per task (completion_required_fields) so it can later be made field-by-field configurable without a data migration. Newhome_keeper.complete_taskfields and a newhome_keeper.update_completionservice expose this to automations; the latest completion's metadata is mirrored on the task's next due sensor attributes, and ahome_keeper_task_completion_updatedevent fires when a past completion is edited. - Platinum integration quality scale. Home Keeper now declares the
Platinum quality scale,
with a per-rule ledger in
custom_components/home_keeper/quality_scale.yaml. The codebase is fully type-checked (mypy, withpy.typed) in CI.
Changed
- Error messages are now localizable. Errors raised by Home Keeper services and
entities use Home Assistant translation keys (
strings.json→exceptions) so they can be translated (currently English-first across all locales, translated incrementally). - Home Keeper now registers as a service-type integration (
integration_type), so Home Assistant groups it accordingly in the UI.
Fixed
- Settings exclusions now take effect immediately. Adding a problem-sensor entity, area, or label to a skip list in the panel's Settings tab is now reflected right away: the integration reload that re-runs the problem-sensor sync is awaited before the save returns, and the panel refreshes its task list so the excluded sensor's synced task disappears (or reappears when you clear the exclusion) without needing a manual refresh or page reload.
[0.3.0b11] - 2026-06-20
Added
- Filter the dashboard card by label — one card per subject. Tag tasks with
Home Assistant labels (e.g.
dog,car, a kid's name) and point a Home Keeper card at one or more of them to get a focused list: a card for the dog, one for home maintenance, one for the car, one per kid. The label filter matches a task by its own labels or by the labels on its attached device or area — so a Home Keeper virtual appliance you've labelled in Settings → Devices is picked up automatically, and a subject doesn't have to map onto an HA area or device. Configure it from the card editor (Limit to labels, plus an Any/All match mode and an optional Show labels toggle that renders each task's label chips). Tasks now carry alabelsfield, editable in the panel/card task form and via thehome_keeper.add_task/home_keeper.update_taskservices; the value is also echoed on every task event.
[0.3.0b10] - 2026-06-19
Changed
- A synced problem-sensor task now shows its Done button disabled instead of hiding it. Previously the action just vanished for these un-completable tasks, which read as "missing" rather than "blocked". The button is now visibly greyed, and tapping it (in the panel or the dashboard card) pops up a short explanation that the problem clears automatically once the originating integration resolves it — so it's clear why you can't mark it done here.
[0.3.0b9] - 2026-06-19
Added
- A Settings tab in the panel. Home Keeper's integration options are now editable
right in the sidebar panel — a Settings tab alongside Tasks and Appliances — so
you don't have to dig through Settings → Devices & services → Configure. It's a
plain form mirroring the options flow (the problem-sensor sync toggle plus
entity / area / label exclusions) that saves as you change it. The options flow
still works, and a new
home_keeper.set_optionsservice exposes the same settings to automations.
[0.3.0b7] - 2026-06-19
Added
- Sync
problembinary sensors as tasks (opt-in). A new option — Settings → Devices & services → Home Keeper → Configure — automatically mirrors everybinary_sensorwith theproblemdevice class as a Home Keeper task. The task is armed (shows as due-now on the to-do list, calendar and device page) while the sensor reports a problem and clears itself automatically once the originating integration resolves it (the sensor returns to OK). These synced tasks can't be completed inside Home Keeper — the underlying problem has to be fixed in real life — so the Done action is hidden on every surface (panel, dashboard card, to-do list, device button) and the completion service/websocket reject them with an explanation. Each task inherits the sensor's device and area, so it appears on the device's page. Narrow the scope with entity / area / label exclusions in the same options screen. Syncing is off by default.
[0.3.0b6] - 2026-06-19
Added
- Comprehensive events for everything that happens — and automation-editor
triggers. Home Keeper now fires a Home Assistant bus event for every meaningful
change, so you can automate on the full lifecycle instead of just completions and
low-stock. New events: tasks created / updated / deleted / uncompleted / triggered
and the time-based overdue and due-soon transitions; spare parts out of
stock and restocked (alongside the existing low-stock); and appliances
created / updated / deleted. The time and stock transitions are edge-triggered
(one event per crossing, never repeated every cycle) and are silently baselined on
restart, so a reboot never replays an "overdue" storm. Each event also shows up as a
device trigger in the visual automation editor — on a task's device or an
appliance you can pick "Task became overdue" or "Spare part out of stock" without
knowing the event name. The existing
home_keeper_task_completedpayload gains the full task spine (device/area/recurrence/next-due/enabled) on top of its long-standing fields. See the new docs/EVENTS.md for the full catalog, payloads and example automations.
Changed
- A spare part dropping straight to zero now fires
home_keeper_part_out_of_stock, nothome_keeper_part_low_stock. Out-of-stock is the more specific event and takes precedence. If you had an automation listening forhome_keeper_part_low_stockto catch a part reaching zero, switch it to (or also listen for)home_keeper_part_out_of_stock. A part crossing into low without hitting zero still fireshome_keeper_part_low_stockas before.
[0.3.0b5] - 2026-06-17
-
Flexible appliance metadata — custom fields replace the fixed metadata form. An appliance's descriptive details are now a free-form list of custom fields instead of a fixed set of inputs. Each field has a label and a type — text, link, or date — and you add as many as you like, with one-click seeds for the common ones (serial number, warranty expiry, purchase/install dates, provider, vendor, notes). Links are clickable and open in the browser. A date field is display-only unless you tick Track as a sensor, which surfaces it as a
datesensor on the device for automations (e.g. "warranty expiring in 30 days → notify") — so you no longer get a sensor for every date whether you use it or not. Manufacturer, model, manual link, cost, icon and area remain dedicated fields (they wire into the Home Assistant device card and the inventory export), and the insurance inventory export keeps its value totals while listing each appliance's custom fields in a new Details column. Note: this changes how appliance metadata is stored; pre-release, an existing appliance's old descriptive fields are not migrated. -
A wear-item maintenance task with no recorded replacement date is now due now, not "assumed fresh". When Home Keeper derives a replacement task from an appliance wear item that has no "Last replaced" date, it used to assume the part was fresh and schedule the first reminder a full interval out. It now reads as due immediately, matching how brand-new floating tasks behave: an unknown replacement history is surfaced now rather than hidden for a cycle. Backdate the part's last-replaced date (or mark the task done) to start its clock from a known point instead. Wear items with a recorded replacement date are unaffected.
[0.3.0b4] - 2026-06-17
- Backdate a wear item's last replacement when adding it. The parts editor now has an optional "Last replaced" date field for wear items, so the maintenance task it creates starts its clock from the real replacement date instead of from today — useful for parts you'd already replaced before tracking them in Home Keeper.
- Redesigned the appliance parts list. On an appliance's detail page, each part now reads as a card with a type icon and badge, its replacement cadence, last-replaced date, and spare-stock chips at a glance, replacing the cramped one-line summary.
[0.3.0b3] - 2026-06-17
- Dashboard task card. A new resizable Lovelace card (
custom:home-keeper-card) shows your tasks as a list with a one-tap Done button on each row, and opens an inline editor for adding, editing, and deleting tasks without leaving the dashboard. It is auto-registered as a resource (no manual setup) and appears in the "Add card" picker. A GUI config editor exposes filtering (by status, area, device, recurrence type, due-within horizon), sorting, status/area/device grouping, a max-items cap, and display toggles. Built entirely from Home Assistant's own components and theme variables, and it stays in sync with completions made from any other surface. - Fix: the card no longer spins forever when tasks fail to load. If the task fetch fails (e.g. the integration isn't set up yet, or was removed while a card is still on a dashboard), the card now shows a clear error and keeps retrying on the next update instead of an endless spinner.
- Fix: a fast double-tap of a card's Done button no longer records two completions — a completion already in flight ignores re-entrant taps.
[0.3.0b2] - 2026-06-16
- Backdate last completion when creating a task. The New Task form now includes an optional "Last completed" datetime field. Setting it seeds an initial completion entry so a floating task's next-due date is measured from when the activity actually last happened, rather than being due immediately. Useful when you first install Home Keeper and already know the last time a task was done.
[0.3.0b1] - 2026-06-16
- Condition-driven (
triggered) tasks. A third recurrence type for maintenance that responds to a condition rather than a schedule — a battery going low, a leak, a filter past its threshold. A triggered task has no schedule: an owning integration arms it (the newhome_keeper.trigger_taskservice, or by creating it) when the condition becomes true and clears it (complete_task) when it resolves, which records the event in history and returns the task to a dormant state. Dormant triggered tasks are invisible to the to-do list, calendar, and overdue sensors, and the panel tucks them into a collapsed "Monitored" section; armed ones read as due-now everywhere. This is the engine behind the Battery Notes glue integration. Seedocs/INTEGRATING.md§7 anddocs/BATTERY_NOTES_PLAN.md.
[0.2.0] - 2026-06-16
-
Managed tasks (stronger integration ownership). Integrations that create tasks can declare a
managed_byblock that Home Keeper acts on (unlike the opaquesource): managed tasks show a "Managed by {name}" chip, lock declared fields out of the edit form, surface an optional completion prompt and a deep link back to the owning integration, and can be grouped by integration. If the owner is uninstalled or disabled, its tasks flip to "Integration offline", become deletable again, and a "Remove orphaned tasks" banner offers one-click cleanup;home_keeper.delete_taskgains aforceoption as a last resort. Seedocs/INTEGRATING.md§6. -
Home inventory export (for insurance). An Export inventory button on the Appliances tab downloads a CSV — make/model/serial, purchase and warranty dates, replacement cost, and the value of spares on hand, with a grand total. Also exposed to automations as the
home_keeper.export_inventoryservice. -
Spare-inventory tracking for parts. Any part can track a stock count and a reorder-at threshold. Completing a wear-item replacement consumes a spare, and when stock hits the threshold a
home_keeper_part_low_stockevent fires. The panel shows on-hand count and a Low stock chip;home_keeper.adjust_part_stockrestocks or consumes spares from automations. -
Deep links & a working Back button in the panel. Tabs (
/home-keeper/appliances) and detail pages (/home-keeper/tasks/<id>) are now in the URL — linkable, bookmarkable, and refresh-safe — and the browser Back button steps back inside the panel instead of leaving it. -
A brand-new floating task is due now, not a full interval away. A floating task with no completion history used to be dated one interval into the future (a chore you'd never done showed up as "due in 30 days"); it now reads as due immediately. Completing it — or seeding a "last done" date (below) — starts the clock from there. Fixed and appliance wear-part tasks are unaffected. Applies to newly-created tasks; an existing never-completed floating task keeps its current due date until next edited or completed.
-
add_taskaccepts an optionallast_completed"last done" seed. Integrations that already know when an activity last happened can passlast_completedso the first next-due is measured from that date (next_due = last_completed + interval) instead of due-now. Seedocs/INTEGRATING.md.
[0.2.0b2] - 2026-06-15
-
A brand-new floating task is due now, not a full interval away. A floating task with no completion history used to be dated one interval into the future (a chore you'd never done showed up as "due in 30 days"). It now reads as due immediately — a task you haven't done yet is due now. Completing it (or seeding a "last done" date, below) starts the clock from there. Fixed (calendar-anchored) tasks and appliance wear-part tasks are unaffected. This applies to newly-created tasks; an existing never-completed floating task keeps its current due date until next edited or completed.
-
add_taskaccepts an optionallast_completed"last done" seed. Integrations that already know when an activity last happened can passlast_completedto seed an initial completion, so the first next-due is measured from that date (next_due = last_completed + interval) instead of due-now. Seedocs/INTEGRATING.md.
[0.2.0b1] - 2026-06-15
-
Managed tasks (stronger integration ownership). Integrations that create tasks can now declare a
managed_byblock, which Home Keeper acts on (unlike the opaquesource). Managed tasks show a "Managed by {name}" chip; declared fields are locked out of the edit form; and an optional completion prompt and a deep link back to the owning integration are surfaced. Tasks can also be grouped by integration. If the owning integration is uninstalled or disabled, its tasks flip to "Integration offline", become deletable again, and a "Remove orphaned tasks" banner offers one-click cleanup;home_keeper.delete_taskalso gains aforceoption as a last resort. Seedocs/INTEGRATING.md§6. -
Home inventory export (for insurance). A new Export inventory button on the Appliances tab downloads a CSV — make/model/serial, purchase and warranty dates, replacement cost, and the value of spares on hand, with a grand total — built from metadata you've already entered. Also available to automations as the
home_keeper.export_inventoryservice (returns the report plus CSV). -
Spare-inventory tracking for parts. Any part can now track a stock count and a reorder-at threshold. Completing a wear-item replacement consumes one spare, and when stock drops to/below the threshold a
home_keeper_part_low_stockevent fires so you can automate a shopping-list add or reorder. The panel shows the on-hand count and a Low stock chip; thehome_keeper.adjust_part_stockservice restocks or consumes spares from automations. -
Deep links & a working Back button in the panel. The panel's view now lives in the URL — tabs (
/home-keeper/appliances) and detail pages (/home-keeper/tasks/<id>) are linkable and bookmarkable, and refreshing keeps your place. The browser Back button now steps back to the previous page inside the panel (e.g. detail → list) instead of navigating away from Home Keeper entirely.
[0.1.0b5] - 2026-06-15
-
Group and filter the task list. The panel's list view gains a persisted group by control — tasks by Status (overdue / due soon / later / no schedule), Area, or Device; appliances by Area — rendering collapsible sections with counts. Tasks also get quick All / Overdue / Due soon filter chips.
-
Full detail pages for tasks and appliances. Tapping a row now opens a dedicated detail page instead of a history-only dialog. A task page shows its status, schedule, notes, and completion history; an appliance page gathers its metadata, parts & wear items, related tasks, subdevices, and full maintenance history (including the retained history of removed tasks) in one place. Done / Edit / Delete live on the detail page, and task rows keep a quick Done plus a red overdue accent.
[0.1.0b4] - 2026-06-15
-
Completion history for tasks and appliances. Click a task to see every time it was completed — the dates, how many, and the average cadence — or click an appliance to see a timeline of all maintenance done on it across every related task. Answers "when did I last do this / when was this serviced?" at a glance.
-
Appliance history outlives a deleted task. When a task that belongs to an appliance is deleted, its completion history is kept on the appliance (shown as a "removed task") so the appliance's maintenance record survives. A standalone task's history is removed with it, and deleting an appliance clears its archive.
-
Undo an accidental completion. Each entry in the history view has a delete button; removing a completion re-derives the task's next due date (a floating task rewinds to the previous completion; a fixed schedule is unaffected).
-
Device-page entities name themselves by task. When several Home Keeper tasks are attached to the same existing device, their per-task entities (the mark done button, next due sensor, and overdue binary sensor) used to all share the same name, so there was no way to tell which control belonged to which task. Each is now prefixed with its task name (e.g. "Replace filter: Mark done"). Self-owned task devices are unaffected (the device is already named after the task). Renaming a task now refreshes its device-page entity names (and a self-owned task device's own name) instead of leaving them stale.
-
Sidebar panel device chips are now actionable. The device chip on task and appliance rows links to that device's Home Assistant page when clicked (or via keyboard), and shows the device's integration brand logo (falling back to a generic device icon when no brand image is available).
Fixed
- Wear-part tasks no longer break the calendar and sensors. A maintenance task derived from a wear part (with a "last replaced" date) computed a timezone-naive due date, which made its next due sensor, overdue binary sensor, and the whole Home Keeper calendar go unavailable. The due date is now timezone-aware, and existing affected tasks self-heal on the next reload.
- Long-running fixed-schedule tasks no longer crash. A fixed (anchored) daily/weekly task whose anchor was far in the past (a daily task left running ~1.4 years, a weekly one ~9.6 years) raised an internal error when computing its next occurrence — taking down the calendar and the next-due/overdue entities, and 500-ing the create form for a far-past anchor. Occurrences are now computed directly instead of by stepping to an iteration cap.
- Absurd intervals are rejected cleanly. A recurrence interval or wear-part replacement interval large enough to overflow date math now returns a clear validation error instead of an internal server error.
- Wear-part maintenance tasks are managed only through their part. They can no longer be deleted directly (which previously did nothing useful — the next reconcile recreated them); the panel hides edit/delete on these tasks and points you to the appliance part instead. Completing one is preserved across reconciles.
- Editing a wear part's replacement interval no longer resets the clock. The due date now re-bases off the part's last-replaced date (or its creation), so changing "every 3 months" to "every 4 months" extends the schedule instead of restarting it from today.
- A future "last replaced" date is rejected, and duplicate part identifiers are regenerated, so a part's derived task can't be silently hidden or mis-stamped.
[0.1.0b3] - 2026-06-14
-
Cross-integration task contributions. Other integrations can now contribute recurring tasks to Home Keeper and stay in two-way sync — with no code dependency in either direction. A task carries an opaque, caller-namespaced
source;home_keeper.add_taskreturns the newtask_idin its service response; and Home Keeper fires ahome_keeper_task_completedevent (carryingsourceand anoriginmarker) on every completion — whether checked off in the to-do list, pressed on the device button, or completed via the service — so a contributor can mirror completions both ways and break loops. A newhome_keeper.testinghelper (an in-memory fake of the services + completion event, built on Home Keeper's own model code) plus a publicdocs/INTEGRATING.mdmake it easy for other integrations to build and test against the contract. -
Internationalization (16 languages). Home Keeper is now localized into a common set of locales — English, German, French, Spanish, Italian, Dutch, Polish, Brazilian Portuguese, Norwegian Bokmål, Swedish, Danish, Finnish, Czech, Russian, Simplified Chinese, and Catalan. The config flow, service definitions, and device-page entity names use Home Assistant's native translation system (
strings.json↔translations/<lang>.json), and the sidebar panel ships a small dependency-free i18n module that follows your HA language (with English fallback for anything untranslated). Plural forms use the browser'sIntl.PluralRules, and parity tests keep every locale in sync with the English source on both the backend and the frontend. -
Panel rebuilt on the Home Assistant design language. The admin sidebar panel now uses HA's own components throughout instead of hand-rolled markup: every form is a native
ha-form(with HA's text/number/select/date fields, the searchable device & area pickers, and the mdi icon picker), task/appliance rows areha-cards, navigation usesha-tab-group, status shows asha-assist-chip, and actions useha-button/ha-icon-button. Looks and behaves like the rest of HA (theming, dark mode, mobile) — no functional changes to tasks or appliances.
[0.1.0b2] - 2026-06-14
- Appliances & virtual devices. A new Appliances tab in the panel lets you
register an appliance Home Keeper provisions as a real virtual device (so
multiple maintenance tasks share one device page), or attach asset metadata to
an existing device from another integration. Metadata covers manufacturer/model/
serial, purchase/install/warranty-expiry dates, cost, vendor, manual link, and
consumable part numbers. Date fields are exposed as
datesensors on the device page so they're automatable (e.g. warranty-expiry reminders).- New services:
add_asset,update_asset,delete_asset,list_assets, plus matching websocket commands for the panel. - Virtual devices are owned by the config entry, so removing Home Keeper cleans them up; deleting an appliance detaches its tasks (they become standalone).
- New services:
- Structured parts & wear items. Appliances now carry a structured parts list (name, part number, vendor, cost, consumable/wear type) replacing the old free-text part-numbers string. A wear item with a replacement interval automatically creates a maintenance task on the appliance's device (to-do + calendar + mark-done button + next-due sensor), and completing it stamps the part's last replaced date.
- Subdevices & related devices. An appliance can be a subdevice of another
(native HA
via_devicenesting), and can list arbitrary related devices — including foreign ones — surfaced in the panel. - Tighter HA integration.
area_idis validated against real HA areas; virtual devices link back to the panel viaconfiguration_url; appliances take an optional mdi icon; and adiagnostics.pydownload is available for support.
[0.1.0b1] - 2026-06-13
Initial UX prototype (beta). Published as a pre-release — offered via HACS only to
users who enable "Show beta versions". The stable 0.1.0 will be cut from this
once the prototype settles.
- Recurrence engine supporting floating (reset-from-completion) and fixed (anchored DAILY/WEEKLY/MONTHLY schedule) tasks, with end-of-month clamping.
- Local task storage and a
DataUpdateCoordinator. - A dedicated Home Keeper sidebar panel for administration: list tasks, create/ edit with a recurrence editor, and optionally attach a task to a device.
- Native usage entities: a
todolist and acalendar, plus per-taskbutton,sensor, andbinary_sensorentities that attach to a device's page when a task is linked to a device. - Services:
add_task,update_task,delete_task,complete_task,list_tasks, and matching websocket commands for the panel. - Full test harness: pytest unit tests for the recurrence engine/model, a Docker integration suite, Playwright e2e smoke tests + screenshot capture, and vitest frontend tests. PR-merge-driven release workflow with beta/stable channels.