👻👻👻👻👻👻👻👻👻👻
Three new triggers. spook.debounce waits for a burst to settle and reports it once: a hallway motion sensor fires twenty times, you hear about it after it went quiet, with a count and how long it went on. spook.all_of is "and" over time, which Home Assistant cannot say: the phone came home and the front door opened, either order, within two minutes, so that is a person and not a draft. spook.recovered is the other half of spook.stale: it fires when something comes back from unavailable, but only after it was really gone, so a router reboot taking the whole house through unavailable and back in ten seconds does not count.
Groups made through the interface could not be changed from an automation at all. group.add_members, group.remove_members and group.set_members fix that. Adding refuses a member that does not exist, because otherwise Spook would report an issue about something Spook just did.
Then the blueprint update entities, which had a rough two weeks. 🙈 Home Assistant fills in a few selector settings itself and puts them wherever its validator likes, and Spook read that reshuffle as an update, every restart, for everyone. That was the loud one. Behind it: a skipped update came back after every restart, because Home Assistant restores the skip and then drops it when nothing is on offer yet. A disabled update entity crashed every check round. And a blueprint renamed by its author was never offered, which it now is when the source is a single file. A gist or a forum topic can hold more than one blueprint, and the name is the only thing telling them apart, so those keep the guard.
Two false positives elsewhere. The orphaned statistics repair listed statistics that were imported into the recorder on purpose, and disabled entities, and the suggested fix would have deleted working energy history. And area: on a card that uses it as a caption was reported as an area that had gone missing.
Thanks to @cnotin, who reported the statistics one with the fix attached; @tivoo, who traced the skip through Home Assistant's own code before I got to it; @kschlichter for the this.entity_id1 fix; @Somberland for a test that pins the selector decision; and @bkbartk, @Matthias1977-tech, @besteru and @PineappleEmperor for reports precise enough to go straight to a test. 🫶
../Frenck
Blogging my personal ramblings at frenck.dev
Or subscribe to my bi-weekly newsletter: https://frenck.dev/newsletter
✨ New features
- Tell me when it came back, not when it blinked @frenck (#1582)
- Change a group's members while the house is running @frenck (#1581)
- Home Assistant cannot say "and" over time @frenck (#1584)
- A motion sensor does not report motion once @frenck (#1588)
🐛 Bug fixes
- Not everybody has a Resources page to open @frenck (#1579)
- Reload what was pruned, or nothing changed @frenck (#1580)
- The order Home Assistant fills a selector in is not an update @frenck (#1597)
- A disabled blueprint is asking not to be told @frenck (#1643)
- A restart does not take a skip back @frenck (#1644)
- No state is not the same as left behind @frenck (#1645)
- An area on anything but an area card is a caption @frenck (#1646)
- A file of its own can only have been renamed @frenck (#1647)
- Fix using prefix matching for NEVER_AN_ENTITY to cover this.entity_id* variants @kschlichter (#1606)
🚀 Enhancements
- Test that a selector outside the input block keeps its order @Somberland (#1615)
🧰 Maintenance
- Translations update from Hosted Weblate @weblate (#1598)
- Translations update from Hosted Weblate @weblate (#1617)
📚 Documentation
- Tell me when it came back, not when it blinked @frenck (#1582)
- Change a group's members while the house is running @frenck (#1581)
- Home Assistant cannot say "and" over time @frenck (#1584)
- A motion sensor does not report motion once @frenck (#1588)
⬆️ Dependency updates
19 changes
- ⬆️ Update actions/deploy-pages action to v5.0.1 @renovate[bot] (#1577)
- ⬆️ Update dependency pytest-homeassistant-custom-component to v0.13.362 @renovate[bot] (#1587)
- ⬆️ Update dependency prek to v0.5.2 @renovate[bot] (#1594)
- ⬆️ Update dependency ruff to v0.16.6 @renovate[bot] (#1604)
- ⬆️ Update dependency pytest-homeassistant-custom-component to v0.13.363 @renovate[bot] (#1599)
- ⬆️ Update github/codeql-action action to v4.38.0 @renovate[bot] (#1620)
- ⬆️ Update dependency node to v24.21.0 @renovate[bot] (#1619)
- ⬆️ Update dependency pytest-homeassistant-custom-component to v0.13.364 @renovate[bot] (#1611)
- ⬆️ Update dependency zizmor to v1.30.1 @renovate[bot] (#1618)
- ⬆️ Update home-assistant/actions digest to 58bff37 @renovate[bot] (#1623)
- ⬆️ Update astral-sh/setup-uv action to v10.1.0 @renovate[bot] (#1627)
- ⬆️ Update dependency ruff to v0.16.7 @renovate[bot] (#1626)
- ⬆️ Update dependency pytest-homeassistant-custom-component to v0.13.365 @renovate[bot] (#1634)
- ⬆️ Update dependency prek to v0.5.3 @renovate[bot] (#1636)
- ⬆️ Update codecov/codecov-action action to v7.1.0 @renovate[bot] (#1637)
- ⬆️ Lock file maintenance @renovate[bot] (#1616)
- ⬆️ Update dependency ruff to v0.16.8 @renovate[bot] (#1638)
- ⬆️ Update codecov/codecov-action action to v7.1.1 @renovate[bot] (#1639)
- ⬆️ Update github/codeql-action action to v4.38.1 @renovate[bot] (#1642)