Skip to content

Releases: MrTomRocker/homeassistant-necromancer

v0.2.0

24 Jun 23:25

Choose a tag to compare

Downloads

A major update — recovery now tracks and reports its own result, the guard shows an honest blind state and surfaces config problems in Repairs, plus a handful of edge-case fixes. Read the breaking changes before updating.

⚠️ Breaking changes

  • Status attribute targetrecover_driver. Any dashboard or template reading state_attr('sensor.<guard>_status', 'target') must switch to recover_driver.
  • Health Check off is no longer a blind "assume success". With the check off, the recovery driver's own result now decides the attempt: a PoE port that doesn't come back online, or a recovery action that sets recover_failed, is a failed attempt (retry → escalate). Existing health_check-off guards behave more strictly.

✨ New

  • blind status. When a guard can't read its health (source unavailable, template render error) it now shows blind instead of a stale ok — matching the Health entity. No recovery is triggered (unknown is never a fault); it returns to ok/suspect once health reads again.
  • Recovery result tracking. New status attributes: fail_count, last_fail, last_recover_driver_result (the driver's own good/failed verdict, distinct from the guard state) and last_recover_driver_time. A recovery action can set the recover_failed variable to report a failed repair.
  • Config-health in Repairs. Misconfigured guards/ports now surface in Settings → Repairs, event-driven and self-clearing: a blind guard (missing/disabled health entity), a health template that reads only missing entities or references a missing one, an invalid recovery action, a PoE port with no id, or a PoE port whose actuator/status entity is missing.

🐛 Fixes

  • Manual recover during a snooze now lifts the snooze instead of leaving the guard stranded.
  • Manual recover while following a linked partner's repair is ignored (no competing double-cycle).
  • A PoE port whose actuator raises now ends failed instead of stranded on recovering.

🧹 Internals

  • RecoveryDriver.recover() returns a verdict. README, architecture and the regression checklist fully aligned; hassfest + ruff clean.

v0.1.9

23 Jun 11:15
c6a4437

Choose a tag to compare

Downloads

Changes

  • Release v0.1.9 — transparent brand assets + wordmark logo @MrTomRocker (#10)

v0.1.8

23 Jun 08:05
b9ba220

Choose a tag to compare

Downloads

Changes

  • Release v0.1.8 @MrTomRocker (#9)
  • CI tests + unknown-state lock + Why-Necromancer motivation @MrTomRocker (#8)
  • docs(readme): add self-healing demo GIFs (Auto-PoE + smart plug) @MrTomRocker (#7)
  • docs: fix code↔doc drift from audit (snoozed state, notify_guard, counts, anchors) @MrTomRocker (#6)
  • docs(readme): bold hero banner + grouped, expanded feature list @MrTomRocker (#5)

v0.1.7

22 Jun 19:05
ee1f959

Choose a tag to compare

Highlights

  • action_cycle variable carry — capture state in the off action and read it in the on action (e.g. restore a device's prior state after a power-cycle), no helper entity needed.
  • necromancer.notify_guard service — push a custom message through a guard's own notify action (great for recovery scripts reporting their own progress).
  • Config-flow polish — recovery actions grouped in their own section; clearer notification + timing wording.
  • Docs — restructured README + a 9-recipe cookbook under docs/cookbook/.
  • Quality — full docstrings + lint gates, per-module loggers, expanded test suite (160+ tests).

Notable

  • strings.json removed — custom components ship translations/ directly.
  • Recovery-action variable guard_idguard_entity_id.

Full changelog: #4 · Minimum Home Assistant: 2025.7

v0.1.6

21 Jun 23:47
1846190

Choose a tag to compare

Downloads

What's new in v0.1.6

v0.1.6 builds Necromancer out into a full self-healing framework — everything since v0.1.5.

Added

  • PoE recovery — a single PoE fabric resolves a device to its port and power-cycles it, with last-known-port fallback and coalesced concurrent cycles (no double-cycling); new necromancer.repair_poe_port service and a poe_port recovery strategy.
  • YAML import/export of the flat PoE-port list in the options flow.
  • Guard groups (linking) — link guards that share a root cause; when one repairs, the others hold and re-verify instead of competing. Follower success is silent by default (opt-in per guard).
  • Supervisor / staged guards — a guard whose health template watches other guards' status; with self-reference (feedback-loop) detection.
  • Operator services — per guard reset / snooze / unsnooze, plus bulk snooze_all / unsnooze_all (maintenance mode); new snoozed lifecycle state (survives restart, auto-resumes).
  • Recovery event entityevent.<guard>_recovery fires recovered / escalated / blocked.
  • Notifications as an action — a user-defined action sequence with message / name / event / event_text variables; TTS-friendly, EN + DE.
  • Optional integration reload of the assigned device after a repair (before verify).
  • Blind-guard detection — a template health that reads only missing/disabled entities is flagged.

Changed

  • Recovery mode choice moved from the device step into the strategy step of the wizard.
  • Auto-recovery switch is now a configuration entity; leaner status-sensor attributes.
  • Architecture: domain logic split into a core/ package (HA shell vs. core); typed entry.runtime_data (NecromancerData); LinkCoordinator and the config-flow schema/selector layer extracted; the PoE fabric is the single PoE authority (the poe_port driver is a thin adapter).

Fixed

  • Linked-guard teardown & follow-up verify are now race-safe.
  • Don't last-known-cycle a PoE port that now serves a different device; ignore placeholder port ids (-, empty, unknown).
  • Ignore a manual recover while a cycle is already running.
  • Reject action guards with no action at submit; reject negative timings on YAML import.
  • Logging cleanup: correct levels, and no full traceback per recovery attempt (less log noise).
  • Hardened several guard-linking corner cases.

Quality & docs

  • Test net: unit + engine + in-process integration suites and a pytest suite on HA's native harness (entities, services, full config/subentry/options flow) — ~91 % line coverage; hassfest- and ruff/format-clean.
  • README rewritten as a user guide (mental model, lifecycle, entities, services, recipes, FAQ); docs/arch/ architecture + testing + timing references.

v0.1.5

19 Jun 02:07

Choose a tag to compare

Fixes

  • Health: an explicit off_value (e.g. unavailable) now triggers recovery instead of being swallowed by the no-false-alarm default.

Changes

  • Brand icon now ships in the integration (HA 2026.3 brand proxy) — removed the embedded Home Assistant logo.
    • Wording: "service" instead of "hub" (matches integration_type).

CI / tooling

  • Single Validate workflow (hassfest + HACS + ruff, no ignores), Dependabot, release automation, zip release + downloads badge, issue forms.

v0.1.2

19 Jun 01:39

Choose a tag to compare

Downloads

Changes

  • Changed icon to met custom_integration guidelines

v0.1.1

19 Jun 01:14

Choose a tag to compare

Downloads

Fixes

  • Health: an explicit off_value (e.g. unavailable) now triggers recovery
    instead of being swallowed by the no-false-alarm default.

v0.1.0

19 Jun 00:41

Choose a tag to compare

Downloads

Initial public release. 🎉

Self-healing framework for Home Assistant: watches your devices and automatically
revives dead devices, bridges, gateways, PoE/smart-plug hardware, Node-RED flows
and stuck automations. Install via HACS as a custom repository — see the README.