Hey there! Thanks for using HAGHS, i really appreciate it 👍
☕ Do you enjoy it? If you've ever gotten value from HAGHS, buying me a coffee is the nicest way to say so ❤️ buy me a coffee, it keeps the project and me going 😉 Thank you!
HAGHS v2.4.0 is the first stable release since v2.3.0. It explains every reported zombie, lists unhealthy integration entries and empty devices, adds opt-in stale reporting and conditional ignore labels, and brings the dashboard cards up to date (v1.4). Some changes can move your score after the update; they are all listed under Behavior Changes. Full details: v2.4.0_CHANGELOG.md.
Behavior Changes
All changes since v2.3.0 (not only since the last beta) that can change your score, a recommendation or what HAGHS records.
- Repairs now count (#97). Your score can drop. Every open repair of another integration costs 5 application points, at most 10. While any repair is open, the application score is capped at 99.
- Why: an open repair is a real problem that needs attention, and the Config-Audit bonus used to hide it.
- Example: our update test went from v2.3.0 to v2.4.0 on a test instance with two open repairs from other integrations. The score fell from 100 to 97 (application pillar 100 → 95). Nothing else changed.
- What you can do: fix the repair, or use Home Assistant's own "Ignore" on it (Settings → Repairs). Ignored repairs do not count, and repairs raised by HAGHS itself never count.
- Unregistered entities no longer count as zombies (#98). Your score can rise. Entities without an entity-registry entry (YAML templates, Utility Meter, Riemann sum and similar) are working entities. They now appear only in
unregistered_count,unregistered_entitiesandunregistered_count_per_domain, never inzombie_count, and never cost points.- What you can do: nothing needed. Automations that read
zombie_countmay see a lower number.
- What you can do: nothing needed. Automations that read
- Ignore labels on areas now apply (discussion #96); your score can rise. A configured ignore label on an area excludes the entities in that area from the zombie, dead-device, update and stale checks. An entity's own area takes precedence over its device's area. If you already had such a label on an area, its entities are now excluded, which can change your score.
- What you can do: remove the label from the area to count those entities again.
- No PSI and no CPU/RAM sensor: not measured instead of 0 % (#123). On systems without PSI, an empty CPU or RAM sensor field used to count as 0 % load, so it never lowered the hardware score. Now the missing value is left out: the hardware pillar averages only what is measured. HAGHS still sets up and keeps running;
cpu_ram_source(partialornone),rec_cpu_ram_unmeasured, a recommendation line, a status line on both dashboard cards and a non-blocking repair show it. With PSI or with both sensors nothing changes.- Example: SSD with 8 % free, no I/O pressure data, both fields empty: hardware 93 in v2.3.0, 80 now.
- What you can do: pick the sensors in the repair (Settings → Repairs) or in the HAGHS options. If System Monitor's processor and memory sensors exist, the form suggests them; HAGHS never selects them by itself.
- Calculation failures are visible (#135). If a pillar fails or times out, HAGHS now shows a warning (
pillar_fallbacks,update_cycle_failed,rec_pillar_fallback,rec_update_failed) instead of reporting an all-clear. Formulas, weights and fallback values are unchanged. - Dead devices: fewer false warnings (#143). A device is flagged only when all of its monitored entities are
unavailablebeyond their grace period;unknownno longer counts as an outage. Dead devices stay informational and cost no points. - Recommendation texts follow your Home Assistant language (#114, German and Brazilian Portuguese translations). On a German or Portuguese installation,
recommendationsis now translated. Some English wordings were also corrected, for example "integration entry/entries" instead of "integration(s)". English texts are otherwise unchanged.- What you can do: automations that match recommendation text should read the
rec_*flags instead; they are language-independent.
- What you can do: automations that match recommendation text should read the
- Config-Audit bonus for recorder retention (#181). Home Assistant always sets a recorder retention (
purge_keep_days, default 10 days), so the +5 "purge days configured" was given to everyone. Now the +5 is given when the recorder keeps at most 10 days; with a longer retention the bonus drops by 5 and the Config-Audit line says "recorder keeps more than 10 days". The entity-filter +5 is unchanged.- Example: one update pending past the grace period, hardware 100: default installation unchanged; 30 days retention, no filter: application 100 → 95, global 100 → 97.
- The 7-day update grace survives restarts (#182). HAGHS used to forget when it first saw a pending update at every Home Assistant restart, so with weekly restarts updates never cost points. Now the first sighting of each offered version is kept in
.storage/haghs.update_first_seen; a newer version starts its own 7 days. After updating HAGHS the first 7 days count from the update, so nothing costs points at once.- What you can do: nothing needed. If you restart often, pending updates now count after 7 days. On the first start after updating HAGHS, all open updates start their grace period then, so there is no immediate deduction.
- Entity lists are no longer kept in recorder history. On large instances the attributes exceeded Home Assistant's 16 KB recorder limit, and then the whole history of that state was lost.
zombie_entities,unregistered_entities,dead_devices,repairsandpending_updates(and the new lists) are now excluded from history. Their current values are unchanged, and counts, pillars andrec_*flags stay in history.
Options you set in v2.3.0 stay as they are; new options start at their defaults (checked by the update test from v2.3.0).
What's New
- Why and since when each zombie is reported (#154):
zombie_reasons,zombie_since,zombie_count_per_reasonandzombie_count_per_integration. A zombie is an availability signal, not a deletion list; onlyconfig_entry_missingstrongly points to an orphaned entity. - Unhealthy integration entries are listed (#134):
integration_unhealthy_entries, and a new option to exclude single entries from Integration Health. - Empty devices are reported (#93): devices without any entity, informational only. Hubs, parents of child devices (Home Assistant 2026.9+), composite devices, services and disabled devices are skipped (#191).
- Readable dashboard lists (#185): every list on both cards shows one entry per line.
- Repair form asks only for what is missing (#184): both sensor fields are optional; an empty field keeps its setting.
- Dead devices are flagged (#120):
dead_device_count,dead_devices,dead_device_ids. - Opt-in stale reporting (discussion #79): watch labels for entities that stop reporting; nothing changes without them.
- Conditional ignore labels: ignore labels that apply only while a helper is on, for example for a vacation mode, without Spook.
- Every missing score point is explained (#92): Integration Health and Config-Audit get their own recommendation and flag.
- Dashboard cards v1.4 (Lite and Pro, docs/cards.md): zombie reasons and "for", counts by reason and integration, a Stale Reporting card, status lines, and a link to every entity, device and settings page. Older HAGHS versions keep working with the new cards.
- Translations: German, complete Brazilian Portuguese (#138).
Bug Fixes
- A failing informational check no longer makes its pillar fall back to 100 and hide the problem; the score is calculated normally and the failure is logged once.
- The coordinator can no longer be stopped by an unguarded sub-component (#103).
- Label service names in the docs and UI text corrected (#99); option and recommendation texts match the code; punctuation aligned (#136).
Documentation and Infrastructure
- README and ROADMAP updated; zombies are documented as an availability signal (#154).
- Installation through the Home Assistant Marketplace (#193): since Home Assistant 2026.11, HACS is built in as Settings → Marketplace. The docs describe both ways (Marketplace on 2026.11 and later, HACS up to 2026.10), including updates and beta opt-in. Existing HACS installations move to the Marketplace automatically.
- Documentation checked against the code before this release (#180, #186, #194): every statement in README and docs/ was checked; the last fixes also correct two status lines on the cards and an example sensor name.
- The README is much shorter: setup, labels, attributes, cards and release summaries keep a short version there, the details moved unchanged to docs/. The card configurations are now docs/cards/lite.yaml and docs/cards/pro.yaml.
- Before release, the integration was smoke-tested and the update from v2.3.0 was tested on Home Assistant 2024.10.4 (the minimum), 2026.9.3, 2026.10.4 and 2026.11.0 (options kept, new options at their defaults).
- The dashboard cards were checked in a browser on the same versions: every link clicked, target page verified. On 2024.10 an entity link opens the Entities page but not its more-info dialog; the card page says so.