👻👻👻👻👻👻👻👻👻👻
Spook 5 focuses on making repairs more useful and less noisy.
A major release, but the major part of it can be found in making the foundation of Spook more solid.
A lot of work went into improving how Spook detects unknown entities and actions in automations, scripts, dashboards, templates, helpers, and devices. The result should be fewer false positives, better repair timing, and behavior that more closely matches Home Assistant itself.
This release also adds new helper actions, todo entity support, improved translations, and a much stronger test setup behind the scenes.
Thanks to everyone who helped out on this one!
../Frenck
Blogging my personal ramblings at: https://frenck.dev
Or subscribe to my bi-weekly newsletter: https://frenck.dev/newsletter
✨ New features
- Add sensor for todo entities @josephabbey (#1116)
- Add create and delete services for input number helpers @potelux (#1222)
- Add user enable and disable actions @alec-pinson (#1187)
- Detect unknown actions in scripts @frenckatron (#1282)
- Add Simplified and Traditional Chinese translations (zh-Hans & zh-Hant) @hzonz (#1288)
- Allow templates for zone coordinates @frenckatron (#1308)
🐛 Bug fixes
- Use event-payload PR label verification @frenckatron (#1279)
- Redirect repairs to the first view with unknown entities @piitaya (#1172)
- Fix inverse helper device linking (breaks in HA 2026.8) @andrew-codechimp (#1227)
- Fix catalan translations @Rabosa616 (#1265)
- Update cs.json @petrmatula190 (#1233)
- sort the entity list in the unknown entity repair message for dashboards @besteru (#1163)
- Fix Swedish translations in sv.json @adnansarajlic (#1229)
- Fix Czech translations for automation errors @3dg1luk43 (#1207)
- Fix placeholders in Finnish translation @sofkaski (#1166)
- Improve Swedish repair translations @razzietheman (#1159)
- Fix translated placeholders in translations @frenckatron (#1280)
- Fix fired one-time listener cleanup @frenckatron (#1281)
- Ignore concatenated template entity fragments @frenckatron (#1284)
- Ignore notify targets in automation entity checks @frenckatron (#1283)
- Fix add area to floor service schema @frenckatron (#1293)
- Fix recorder statistics metadata import @frenckatron (#1294)
- Allow enabling disabled devices by ID @frenckatron (#1295)
- Ignore repair events without action @frenckatron (#1296)
- Recheck automation services when components load @frenckatron (#1299)
- Handle script referenced entity extraction errors @frenckatron (#1305)
- Skip disabled service sequence steps @frenckatron (#1309)
- Ignore entity ID prefixes in templates @frenckatron (#1306)
- Handle string native number values @frenckatron (#1303)
- Ignore Jinja import filenames @frenckatron (#1307)
- Fix Spook action names in translations @frenckatron (#1311)
- Ignore event payloads in automation repair checks @frenckatron (#1312)
- Clean up repair listeners on deactivate @frenckatron (#1314)
- Reduce repeated template extraction work @frenckatron (#1315)
- Inspect plural automation config sections @frenckatron (#1319)
- Skip disabled automations for service repairs @frenckatron (#1323)
- Align script and automation counts with UI @frenckatron (#1320)
- Ignore event data device IDs in plural triggers @frenckatron (#1321)
- Ignore entity references in Jinja comments @frenckatron (#1322)
- Treat time date sensors as known entities @frenckatron (#1317)
- Cascade device enable and disable actions @frenckatron (#1318)
- Offer to enable existing Spook entry @frenckatron (#1316)
- Preserve repair issue dismissal state @frenckatron (#1324)
- Recheck automation repairs on state changes @frenckatron (#1325)
- Recheck dashboard repairs on state changes @frenckatron (#1326)
🚀 Enhancements
- Find unknown entities in heading badge @piitaya (#1173)
- Extract unknown reference repair base classes @frenckatron (#1276)
🧰 Maintenance
- Translations update from Hosted Weblate @weblate (#1083)
- Fix typo in issue template @davet2001 (#1088)
- Add Home Assistant test harness @frenckatron (#1266)
- Add Python 3.14 coverage testing @frenckatron (#1268)
- Remove stale SonarCloud configuration @frenckatron (#1272)
- Use prek for local hooks @frenckatron (#1269)
- Add Scorecard and dependency review @frenckatron (#1271)
- Harden GitHub Actions with zizmor @frenckatron (#1270)
- Add helper extractor tests @frenckatron (#1274)
- Add unknown entity extractor tests @frenckatron (#1275)
- Use event-payload PR label verification @frenckatron (#1279)
- Add ectoplasm discovery contract tests @frenckatron (#1278)
- Translations update from Hosted Weblate @weblate (#1084)
- Cover already configured Spook config flow @frenckatron (#1289)
- Cover Spook inverse config flow @frenckatron (#1290)
- Cover entity extraction helpers @frenckatron (#1291)
- Cover Spook setup restart paths @frenckatron (#1292)
- Translations update from Hosted Weblate @weblate (#1298)
- Collapse dependency release notes @frenckatron (#1302)
- Translations update from Hosted Weblate @weblate (#1310)
📚 Documentation
- Fix spelling error in documentation/faq.md @raydixon (#1192)
- Correct minor typos in FAQ @CloCkWeRX (#1154)
- Rename action from hide_entity to update_entity_id @pfeifferch (#1120)
- Clarify hidden entity voice exposure @frenckatron (#1304)
⬆️ Dependency updates
80 changes
- ⬆️ Lock file maintenance @renovate[bot] (#1089)
- ⬆️ Update astral-sh/setup-uv action to v6.8.0 @renovate[bot] (#1091)
- ⬆️ Update softprops/action-gh-release action to v2.3.4 @renovate[bot] (#1095)
- ⬆️ Lock file maintenance @renovate[bot] (#1096)
- ⬆️ Update softprops/action-gh-release action to v2.4.1 @renovate[bot] (#1097)
- ⬆️ Update actions/setup-node action to v6 @renovate[bot] (#1104)
- ⬆️ Update astral-sh/setup-uv action to v7 @renovate[bot] (#1099)
- ⬆️ Update mcr.microsoft.com/devcontainers/python Docker tag to v3.14 @renovate[bot] (#1108)
- ⬆️ Update astral-sh/setup-uv action to v7.1.1 @renovate[bot] (#1111)
- ⬆️ Update dependency node to v22.21.0 @renovate[bot] (#1113)
- ⬆️ Update sigstore/gh-action-sigstore-python action to v3.1.0 @renovate[bot] (#1114)
- ⬆️ Update astral-sh/setup-uv action to v7.1.2 @renovate[bot] (#1115)
- ⬆️ Update dependency node to v22.21.1 @renovate[bot] (#1117)
- ⬆️ Update softprops/action-gh-release action to v2.4.2 @renovate[bot] (#1122)
- ⬆️ Update dependency node to v24 @renovate[bot] (#1118)
- ⬆️ Update astral-sh/setup-uv action to v7.1.3 @renovate[bot] (#1123)
- ⬆️ Update dependency node to v24.11.1 @renovate[bot] (#1125)
- ⬆️ Update actions/checkout action to v5.0.1 @renovate[bot] (#1130)
- ⬆️ Update actions/checkout action to v6 @renovate[bot] (#1132)
- ⬆️ Update astral-sh/setup-uv action to v7.1.4 @renovate[bot] (#1133)
- ⬆️ Update softprops/action-gh-release action to v2.5.0 @renovate[bot] (#1137)
- ⬆️ Lock file maintenance @renovate[bot] (#1101)
- ⬆️ Update actions/checkout action to v6.0.1 @renovate[bot] (#1139)
- ⬆️ Update actions/setup-node action to v6.1.0 @renovate[bot] (#1140)
- ⬆️ Update sigstore/gh-action-sigstore-python action to v3.2.0 @renovate[bot] (#1141)
- ⬆️ Update astral-sh/setup-uv action to v7.1.5 @renovate[bot] (#1145)
- ⬆️ Lock file maintenance @renovate[bot] (#1146)
- ⬆️ Update dependency node to v24.12.0 @renovate[bot] (#1148)
- ⬆️ Update astral-sh/setup-uv action to v7.1.6 @renovate[bot] (#1149)
- ⬆️ Lock file maintenance @renovate[bot] (#1150)
- ⬆️ Lock file maintenance @renovate[bot] (#1152)
- ⬆️ Lock file maintenance @renovate[bot] (#1155)
- ⬆️ Lock file maintenance @renovate[bot] (#1158)
- ⬆️ Update astral-sh/setup-uv action to v7.2.0 @renovate[bot] (#1160)
- ⬆️ Lock file maintenance @renovate[bot] (#1164)
- ⬆️ Update dependency node to v24.13.0 @renovate[bot] (#1167)
- ⬆️ Update actions/setup-node action to v6.2.0 @renovate[bot] (#1168)
- ⬆️ Lock file maintenance @renovate[bot] (#1170)
- ⬆️ Update release-drafter/release-drafter action to v6.1.1 @renovate[bot] (#1171)
- ⬆️ Update actions/checkout action to v6.0.2 @renovate[bot] (#1174)
- ⬆️ Update release-drafter/release-drafter action to v6.2.0 @renovate[bot] (#1175)
- ⬆️ Lock file maintenance @renovate[bot] (#1176)
- ⬆️ Update astral-sh/setup-uv action to v7.2.1 @renovate[bot] (#1178)
- ⬆️ Lock file maintenance @renovate[bot] (#1179)
- ⬆️ Update astral-sh/setup-uv action to v7.3.0 @renovate[bot] (#1180)
- ⬆️ Lock file maintenance @renovate[bot] (#1182)
- ⬆️ Update dependency node to v24.13.1 @renovate[bot] (#1183)
- ⬆️ Lock file maintenance @renovate[bot] (#1186)
- ⬆️ Lock file maintenance @renovate[bot] (#1191)
- ⬆️ Update dependency node to v24.14.0 @renovate[bot] (#1193)
- ⬆️ Update astral-sh/setup-uv action to v7.3.1 @renovate[bot] (#1194)
- ⬆️ Lock file maintenance @renovate[bot] (#1196)
- ⬆️ Update actions/setup-node action to v6.3.0 @renovate[bot] (#1198)
- ⬆️ Update release-drafter/release-drafter action to v6.3.0 @renovate[bot] (#1200)
- ⬆️ Update release-drafter/release-drafter action to v6.4.0 @renovate[bot] (#1201)
- ⬆️ Lock file maintenance @renovate[bot] (#1203)
- ⬆️ Update astral-sh/setup-uv action to v7.4.0 @renovate[bot] (#1206)
- ⬆️ Update astral-sh/setup-uv action to v7.5.0 @renovate[bot] (#1208)
- ⬆️ Update softprops/action-gh-release action to v2.5.3 @renovate[bot] (#1212)
- ⬆️ Lock file maintenance @renovate[bot] (#1215)
- ⬆️ Update release-drafter/release-drafter action to v7 @renovate[bot] (#1209)
- ⬆️ Update astral-sh/setup-uv action to v7.6.0 @renovate[bot] (#1216)
- ⬆️ Update release-drafter/release-drafter action to v7.1.0 @renovate[bot] (#1217)
- ⬆️ Update release-drafter/release-drafter action to v7.1.1 @renovate[bot] (#1218)
- ⬆️ Lock file maintenance @renovate[bot] (#1219)
- ⬆️ Update dependency node to v24.14.1 @renovate[bot] (#1221)
- ⬆️ Update sigstore/gh-action-sigstore-python action to v3.3.0 @renovate[bot] (#1224)
- ⬆️ Lock file maintenance @renovate[bot] (#1226)
- ⬆️ Update astral-sh/setup-uv action to v8 @renovate[bot] (#1225)
- ⬆️ Update actions/deploy-pages action to v5 @renovate[bot] (#1223)
- ⬆️ Lock file maintenance @renovate[bot] (#1232)
- ⬆️ Update release-drafter/release-drafter action to v7.2.0 @renovate[bot] (#1234)
- ⬆️ Update softprops/action-gh-release action to v2.6.2 @renovate[bot] (#1236)
- ⬆️ Update softprops/action-gh-release action to v3 @renovate[bot] (#1237)
- ⬆️ Lock file maintenance @renovate[bot] (#1238)
- ⬆️ Update actions/upload-pages-artifact action to v5 @renovate[bot] (#1239)
- ⬆️ Update dependency node to v24.15.0 @renovate[bot] (#1241)
- ⬆️ Update astral-sh/setup-uv action to v8.1.0 @renovate[bot] (#1242)
- Bump idna from 3.11 to 3.15 @dependabot[bot] (#1252)
- Bump urllib3 from 2.6.3 to 2.7.0 @dependabot[bot] (#1267)