👻👻👻👻👻👻👻👻👻👻
On a large installation, Spook could bring everything to a halt about ten minutes after every start, until the watchdog restarted it. Working out the "did you mean sensor.something?" line on a broken reference means comparing it against every entity in its domain, Spook did that inline for every issue, and threw the answers away every time any entity appeared or disappeared anywhere. Measured on two thousand automations with dangling references: thirty-three seconds of solid event loop per round, then the whole thing again. It is three quarters of a second now, on a thread. If you were stuck on 5.0.0 because nothing newer stayed up, this is the one.
An automation can snooze itself again. Turning one off stops its running actions, and that run was the one asking for the snooze, so the snooze was cancelled halfway through being written down. What was left was an automation switched off with nothing to switch it back on.
Long-term statistics get a quarter of an hour before Spook calls them abandoned. A sensor is briefly in neither the state machine nor the registry more often than it sounds, and every one of those moments looked like history left behind.
And Spook offers to clear them now, rather than listing them and pointing at the Statistics page, which is not much of an offer when the list is two hundred long. It looks again before clearing anything and only removes what your list and that fresh look agree on.
Helpers are reported with their entity ID. A title is not something Home Assistant can be searched by, so anybody chasing a helper that had gone strange had a name and nowhere to take it.
Your ignored repairs come back once
Ignoring used to mean "nothing here, ever": an issue was keyed to the script it was found in, so a genuinely broken thing appearing there later arrived already silenced. It is keyed to the findings now, which is a one off cost. Everything you have ever ignored shows up again. Ignore it once more and it stays that way.
Thanks to @sshalyminov for the unresponsive instance, with the bisect and tracebacks that made it findable; @PVSonnenfreund for the working sensor whose history Spook called abandoned; @trenchcoatjedi and @teskanoo for the snooze that never woke up; @misc-brabs for the helper nobody could find; and @jsuelwald, @I-am-Joel and @teskanoo for saying plainly that a list of two hundred things is not a repair unless you can act on it. 🫶
../Frenck
Blogging my personal ramblings at frenck.dev
✨ New features
🐛 Bug fixes
- Stop repair inspections stalling the event loop @frenck (#1675)
- Let a statistic settle before calling it abandoned @frenck (#1677)
- Let a snoozed automation finish what it was doing @frenck (#1678)
- Key an issue to what was found, not to where it was found @frenck (#1679)
- Say which entity a helper is, not only what it is called @frenck (#1680)
🚀 Enhancements
- Stop repair inspections stalling the event loop @frenck (#1675)
- Key an issue to what was found, not to where it was found @frenck (#1679)
🧰 Maintenance
- Say which entity a helper is, not only what it is called @frenck (#1680)
- Weigh a blueprint the way a real installation has it @frenck (#1681)
- Follow hassfest to where master went @frenck (#1683)
- Translations update from Hosted Weblate @weblate (#1673)
- Translations update from Hosted Weblate @weblate (#1668)
📚 Documentation
⬆️ Dependency updates
- ⬆️ Update dependency ruff to v0.16.9 @renovate[bot] (#1670)
- ⬆️ Update dependency pytest-homeassistant-custom-component to v0.13.367 @renovate[bot] (#1676)