Skip to content

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 21 Jun 23:47
· 59 commits to refs/heads/main since this release
1846190

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.