Skip to content
Draft

2026.5.0 #169484

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1708 commits
Select commit Hold shift + click to select a range
2fb0de3
Add actions to Indevolt integration (#163578)
Xirt Apr 27, 2026
8ce1487
Register a stub transport for ESPHome serial proxies via USB (#169308)
puddly Apr 27, 2026
7594ead
Add departure_delay sensor to Israel Rail (#169035)
mikomgk Apr 27, 2026
d192218
Bump aioautomower to 2.7.4 (#169331)
Thomas55555 Apr 27, 2026
1a25864
Bump aiontfy to 0.8.5 (#169327)
tr4nt0r Apr 27, 2026
c048af2
Update to iaqualink 0.7.0 (#169330)
flz Apr 27, 2026
d8a4b36
Bump indevolt-api to 1.6.3 (#169338)
Xirt Apr 27, 2026
63d4f4d
Bump freebox-api to 1.3.1 (#169335)
frantzju Apr 27, 2026
308cb68
Refactor indevolt integration to remove magic number constants (#169337)
Xirt Apr 28, 2026
8d5f83e
Add explicit test of conditions.async_conditions_from_config (#169042)
emontnemery Apr 28, 2026
f36799d
Refactor timezone handling in mqtt datetime (#169342)
epenet Apr 28, 2026
2f3a624
Restore state_class to derivative sensor (#163557)
karwosts Apr 28, 2026
d3809dd
Improve error handling for vacuum clean_area (#168177)
arturpragacz Apr 28, 2026
4eb000d
Add state tracking to EntityConditionBase (#169030)
emontnemery Apr 28, 2026
fa6c6ee
Fix bang olufsen flaky tests in Python 3.14.3 (#169345)
epenet Apr 28, 2026
fa0cf37
Fix Duco diagnostics crash on connection error (#169322)
ronaldvdmeer Apr 28, 2026
73dcc2f
Add missing call to ConditionChecker.async_setup in async_from_config…
emontnemery Apr 28, 2026
bf4b865
Fix OneDrive upload service to report all missing files at once (#169…
leodrivera Apr 28, 2026
9656aaa
Fix Withings via_device race causing flaky test_devices (#169347)
epenet Apr 28, 2026
7f44fe0
Update gotailwind to v0.4.0 (#169316)
frenck Apr 28, 2026
7dacd00
Fix otbr flaky config flow tests in Python 3.14.3 (#169348)
epenet Apr 28, 2026
7cb4d5c
Require admin for addon panel register and delete (#169329)
mdegat01 Apr 28, 2026
33e5a96
Require admin on APIs to create/delete config entries from Supervisor…
mdegat01 Apr 28, 2026
6663717
Require local_only to be a boolean on webhook (#169296)
edenhaus Apr 28, 2026
eb85d7c
Allow targeting non-primary entities in triggers (#168857)
abmantis Apr 28, 2026
b2269b3
Bump yolink-api to 0.6.5 (#169350)
matrixd2 Apr 28, 2026
eb2217c
Use modern condition API in condition tests (#169354)
emontnemery Apr 28, 2026
7e2a7b9
Fix shelly device_trigger tests (#169305)
epenet Apr 28, 2026
96bd991
Use modern condition API in condition helper tests (#169353)
emontnemery Apr 28, 2026
c50676d
Bump actron-neo-api requirement to version 0.5.6 (#169357)
kclif9 Apr 28, 2026
b47b7fa
User camera unique id in go2rtc if available (#168603)
edenhaus Apr 28, 2026
ab08153
Expose more port metadata when listing serial ports (#169336)
puddly Apr 28, 2026
1fc0b62
Fix flaky template test (#169361)
justanotherariel Apr 28, 2026
955e836
Add template number device_class (#168438)
Petro31 Apr 28, 2026
0280d92
netatmo: add battery sensor for doortags (#168202)
farkasdi Apr 28, 2026
5ff1c15
Unload scripts created by script entities (#169364)
emontnemery Apr 28, 2026
ba8b1b2
Fix flaky google calendar tests (#169371)
epenet Apr 28, 2026
3aea7f0
Fix flaky stream test_stream_retries (#169372)
epenet Apr 28, 2026
b90a074
Bump indevolt-api to 1.6.4 (#169377)
Xirt Apr 28, 2026
eaf7210
Add siren platform to UniFi Protect integration (#169216)
RaHehl Apr 28, 2026
de4e1c4
Restrict homematic.set_install_mode service to admins (#169203)
balloob Apr 28, 2026
30f310f
Add UniFi Protect relay output switches via public API (#169201)
RaHehl Apr 28, 2026
6636e67
Fix flaky cloud TTS and picotts streaming tests (#169376)
epenet Apr 28, 2026
aa5e942
Fix flaky gardena_bluetooth test_timeout_manufacturer_data (#169389)
epenet Apr 28, 2026
86e8b9d
Add temporary mute button for Heiman smoke detector (#169311)
lboue Apr 28, 2026
d62f136
Add child lock entity for Eve Matter devices (#169391)
lboue Apr 28, 2026
8fd3d0b
Fix nobo_hub KeyError when a zone or component is removed (#169378)
oyvindwe Apr 28, 2026
d19c250
Discover Fibaro FGMS001 v2.8 as a motion sensor for Z-Wave (#169276)
AlCalzone Apr 28, 2026
d2fddf1
Include matching integrations in scanned ports WS API (#169387)
puddly Apr 28, 2026
d3cf5d9
Add duration support to cover conditions (#169346)
emontnemery Apr 28, 2026
799bcb0
Fix Matter electrical sensors wrongly categorized as diagnostic (#169…
lboue Apr 28, 2026
2f2413c
Enforce per-entity permissions in calendar HTTP and WS APIs (#169235)
balloob Apr 28, 2026
ea5b633
Bump rf-protocols to 2.2.0 (#169400)
balloob Apr 28, 2026
cd639b8
Add battery mode select to Zinvolt (#169397)
joostlek Apr 28, 2026
65a12b4
Add Novy Cooker Hood integration (#169194)
piitaya Apr 28, 2026
dfe4085
Add fan platform to Novy Cooker Hood (#169380)
piitaya Apr 28, 2026
80c7e47
Migrate UniFi Network discovery from SSDP to unifi_discovery (#168122)
RaHehl Apr 28, 2026
0ae5a19
Handle ZHA dynamic entity add/remove events (#169341)
TheJulianJES Apr 28, 2026
4ea0e6b
Require admin for supervisor event publishing and addon options info …
mdegat01 Apr 28, 2026
e1c81c9
Reword country_not_configured repair description (#168357)
oxidworks Apr 28, 2026
ea34fe4
Bump Tesla Fleet API to 1.4.7 (#169411)
Bre77 Apr 28, 2026
d956af0
Add ability to filter GetLiveContext tool (#168457)
NickM-27 Apr 29, 2026
4c70fef
Fix flaky mcp_server tests with Python 3.14.3 (#169385)
epenet Apr 29, 2026
3683607
Deprecate firmware update button in FRITZ!Box Tools (#168117)
mib1185 Apr 29, 2026
ef63ab5
Use new UPTIME sensor class for Vodafone Station (#169077)
chemelli74 Apr 29, 2026
c020008
Fix flaky test_alexa_config_expose_entity_prefs with Python 3.14.3 (#…
epenet Apr 29, 2026
fe0da5c
Bump PyViCare to 2.60.1 (#169401)
lackas Apr 29, 2026
44e94a8
Add last_action state attribute to timers (#168282)
emontnemery Apr 29, 2026
84d5085
Add path-specific custom instructions to copilot gen script (#169402)
abmantis Apr 29, 2026
cd5e21d
Allow Axis websocket event usage if supported (#169409)
Kane610 Apr 29, 2026
4b232be
Unload scripts created by intent_script (#169363)
emontnemery Apr 29, 2026
c3f01b3
Unload scripts created by wake_on_lan switch (#169367)
emontnemery Apr 29, 2026
cd92cb1
Filter out "Unknown" part_name from Teslemetry energy device model (#…
Bre77 Apr 29, 2026
a9c23ff
iaqualink: add reconfigure flow (#169412)
flz Apr 29, 2026
97be8f4
Add DRY HVAC mode support to Actron Air based on hardware capabilitie…
kclif9 Apr 29, 2026
06a9671
Bump axis to v69 (#169408)
Kane610 Apr 29, 2026
aa74748
Fix watts coordinator interrupting fast polling on hub update (#169365)
epenet Apr 29, 2026
dc8abff
Improve data updating for Tibber (#168065)
Danielhiversen Apr 29, 2026
891efeb
Use enumerate instead of range(len()) in Duco fan speed list (#169392)
Amousibrahim Apr 29, 2026
62082bd
Use modern condition API in script helper (#169355)
emontnemery Apr 29, 2026
cdeb550
Use new UPTIME sensor class for Synology DSM (#169090)
chemelli74 Apr 29, 2026
e975496
Fix flaky test_tasks_logged_that_block_stage_2 with Python 3.14.3 (#1…
epenet Apr 29, 2026
b56cdb9
Fix flaky unifi device_tracker entity race on setup (#169359)
epenet Apr 29, 2026
b9bbe36
Remove name field from Forecast.solar config flow (#169165)
klaasnicolaas Apr 29, 2026
5e4f8f8
Fix missing hue.activate_scene actions (#168859)
konradstrack Apr 29, 2026
45121ed
Use new console pages for vehicles and energy sites in Teslemetry (#1…
Bre77 Apr 29, 2026
326895f
Victron GX: Platinum quality scale (#169070)
tomer-w Apr 29, 2026
05121b8
Unload scripts and conditions created by automations (#169362)
emontnemery Apr 29, 2026
0224928
Bump python-otbr-api to 2.10.0 (#169370)
agners Apr 29, 2026
d531ce8
Use async_on_create_entry in bayesian (#169218)
gjohansson-ST Apr 29, 2026
e4e4785
Clean up entity_service_call tests (#169170)
arturpragacz Apr 29, 2026
6552cf8
Keep options values when chaging or starting program on Home Connect …
Diegorro98 Apr 29, 2026
acd9dd2
Protect CI cache save against cancellation (#168310)
cdce8p Apr 29, 2026
3dd972c
Fix jvcprojector entities going unavailable on transient command erro…
SteveEasley Apr 29, 2026
2a5b95b
Require hass in Template (#169292)
edenhaus Apr 29, 2026
05bfb3a
Add number platform to Fumis integration (#169100)
frenck Apr 29, 2026
a7baedc
Add error and alert sensors to Fumis integration (#169307)
frenck Apr 29, 2026
8091f51
Reject manifest dependencies on core integrations in hassfest (#169425)
epenet Apr 29, 2026
d41c9ae
Bump aioshelly to 13.24.1 (#169426)
thecode Apr 29, 2026
71fc725
Extract state template functions into a state Jinja2 extension (#169034)
frenck Apr 29, 2026
0dfbe3e
Expose async_clear_advertisement_history in the bluetooth API (#169191)
bdraco Apr 29, 2026
d41a3ae
Use defaults for device class UPTIME in Shelly (#169148)
chemelli74 Apr 29, 2026
a95c216
Unload scripts created by websocket command execute_script (#169368)
emontnemery Apr 29, 2026
284242b
Copy unit_of_measurement onto energy inverted power sensor (#169427)
MindFreeze Apr 29, 2026
bb41a2d
Fix logbook spam by including image domain in ALWAYS_CONTINUOUS_DOMAI…
daily063 Apr 29, 2026
39d3bc3
Bump deebot-client to 18.2.0 (#169003)
edenhaus Apr 29, 2026
278f25e
Redact sensitive api creds before logging message in websocket api (#…
ch604 Apr 29, 2026
b4bfe6b
Rename timer last_action to last_transition (#169430)
emontnemery Apr 29, 2026
f4637db
Add routine management to Alexa Devices (#166291)
chemelli74 Apr 29, 2026
32743fc
Fix Acaia battery sensor going unavailable on first-session disconnec…
ayn Apr 29, 2026
57d9e8e
Filter history API responses by per-entity read permissions (#169236)
balloob Apr 29, 2026
7cb1d5b
Allow targeting non-primary entities in conditions (#169291)
abmantis Apr 29, 2026
013c5e7
Add diagnostics to Fumis integration (#169437)
frenck Apr 29, 2026
7e2b8e1
Bump aioshelly to 13.24.2 (#169440)
bieniu Apr 29, 2026
7bb297a
Bump ZHA to 1.3.0 (#169433)
TheJulianJES Apr 29, 2026
cef9797
Victron GX device_tracker optional attributes (#168646)
tomer-w Apr 29, 2026
a3f1c06
Fix host connections for Fritz (#169434)
chemelli74 Apr 29, 2026
9d53645
Remove LLM test instruction (#169442)
abmantis Apr 29, 2026
6f2aa78
Fix availability state for bridged Matter devices (#165078)
vturekhanov Apr 29, 2026
b480606
Add OMIE integration (#150399)
luuuis Apr 29, 2026
894547a
Add Axis doorbell event platform (#169422)
Kane610 Apr 29, 2026
fd98594
Use defaults for device class UPTIME in Fritz (#169149)
chemelli74 Apr 29, 2026
57c37fc
Fix race in Ping device tracker device lookup (#169432)
epenet Apr 29, 2026
d03bec2
Fix race in devolo Home Network device tracker device lookup (#169454)
epenet Apr 29, 2026
4f34725
Fix flaky portainer test_device_registry (#169456)
epenet Apr 29, 2026
2da4400
Fix Sonos group regroup race when entity is not yet registered (#169445)
epenet Apr 29, 2026
5c57fc6
Fix Duco HTTPS polling performance by lowering SCAN_INTERVAL to 10 se…
ronaldvdmeer Apr 29, 2026
3ba3ecd
Use new UPTIME sensor class in NAM (#169458)
bieniu Apr 29, 2026
1cc7789
Use new UPTIME sensor class in Brother (#169457)
bieniu Apr 29, 2026
b8b7169
Add automation behavior selector (#166484)
bramkragten Apr 29, 2026
63868bc
Migrate Renovate config (#169462)
renovate[bot] Apr 29, 2026
e0bf767
Update ruff (#169461)
renovate[bot] Apr 29, 2026
5b05061
Fix plex sensor test broken by Python 3.14.3 asyncio changes (#169448)
epenet Apr 29, 2026
0e0d54e
Update uv to 0.11.8 (#169463)
renovate[bot] Apr 29, 2026
84d566a
Update pyOpenSSL to 26.1.0 (#169464)
renovate[bot] Apr 29, 2026
0a3f0d9
Update url-normalize to 3.0.0 (#169466)
renovate[bot] Apr 29, 2026
1b81cfe
Make it always optional to specify trigger and condition options (#16…
emontnemery Apr 29, 2026
b8bb2e0
Use uptime sensor class in devolo Home Network (#169469)
Shutgun Apr 29, 2026
d82ce1e
Update ruff (#169473)
renovate[bot] Apr 29, 2026
2871b87
Revert "Include indirect automation references in device view (#16771…
MartinHjelmare Apr 29, 2026
ce977e9
Update cryptography to 47.0.0 (#169465)
renovate[bot] Apr 29, 2026
d3e77d4
Add timer triggers (#169450)
emontnemery Apr 29, 2026
8113734
Extract triggers/conditions/services for non-primary entities (#169441)
abmantis Apr 29, 2026
da7fbb0
Correct entity_id change for scripts (#169472)
emontnemery Apr 29, 2026
f33ad12
Correct entity_id change for automations (#169470)
emontnemery Apr 29, 2026
4ad71a0
Improve timer icons (#169474)
emontnemery Apr 29, 2026
ef6fd92
Add notify entities to Mobile app integration (#168510)
tr4nt0r Apr 29, 2026
162a4fc
Use automation behavior selector in triggers and conditions (#169438)
emontnemery Apr 29, 2026
3e3e425
Bump Fumis integration to platinum quality scale (#169443)
frenck Apr 29, 2026
07c4025
Add indevolt binary sensor platform (#169375)
Xirt Apr 29, 2026
7dbffb7
Update frontend to 20260429.0 (#169475)
piitaya Apr 29, 2026
3be1aa5
Include errors in script trace when continue_on_error is set (#168676)
emontnemery Apr 29, 2026
f5363db
Move finish watering to sensor (#169476)
elupus Apr 29, 2026
568a008
Bump version to 2026.5.0
frenck Apr 29, 2026
ef7eed5
Bump version to 2026.5.0b0
frenck Apr 29, 2026
3b00c5b
Check device registration before completing Hive reauth flow (#168035)
KJonline May 4, 2026
f6aa4e2
Fix reasoning summary handling for OpenAI o-models (#168093)
jftkcs May 2, 2026
1afeadc
Victron GX: bug fix for missing translation key (#168461)
tomer-w Apr 30, 2026
67b7d17
Add Broadlink infrared emitter support (#168889)
YuvalWS Apr 29, 2026
3b778d2
fix: incorrect position inversion for blebox gateBox cover (#168893)
bkobus-bbx Apr 30, 2026
d1461f2
Bump weatherflow4py to 1.5.4 (#168994)
jeeftor Apr 30, 2026
2d626c2
Storage problem management for Comelit Serial Bridge (#169297)
chemelli74 Apr 29, 2026
a397742
Implement current setpoint method in actron air integration (#169358)
kclif9 Apr 29, 2026
777c369
Remove scripts from DATA_SCRIPTS on unload (#169415)
emontnemery Apr 29, 2026
b274fe8
Re-interview ZHA device on websocket reconfigure (#169483)
TheJulianJES Apr 29, 2026
9aa092c
Correct wake_on_lan entity behavior when entity_id changes (#169486)
emontnemery Apr 29, 2026
ebd21ea
Fix uptime sensor for Synology DSM (#169512)
chemelli74 Apr 30, 2026
70e30b0
Fix KeyError in telegram_bot media group download debug log (#169519)
Bolshem May 1, 2026
0d8c7fb
Fix: Migrate also device entries to subentry in GitHub integration (#…
tr4nt0r Apr 30, 2026
6322f1e
Victron GX: Bug fix: parent device is mapped to the wrong device (#16…
tomer-w Apr 30, 2026
f7ee742
Update knx-frontend to 2026.4.30.60856 (#169529)
farmio Apr 30, 2026
1dbd933
Enable duration support in all entity conditions (#169532)
emontnemery Apr 30, 2026
148603a
Bump blebox_uniapi to 2.5.2 (#169534)
bkobus-bbx Apr 30, 2026
ee4d150
Use the correct schema for triggers/conditions "for" option (#169539)
abmantis Apr 30, 2026
03e6d3b
Bump ohme to 1.9.0 (#169556)
dan-r Apr 30, 2026
60f3b3b
Update frontend to 20260429.1 (#169565)
piitaya May 1, 2026
145c743
Bump aioshelly to 13.25.0 (#169569)
thecode Apr 30, 2026
c30ac2c
Bump pyuptimerobot to 25.0.0 (#169572)
chemelli74 May 4, 2026
1be0934
Fix grammar and clarity in samsungtv/strings.json (#169574)
SeifEddineMezned Apr 30, 2026
1677e41
Fix possessive apostrophe errors in mqtt/strings.json (#169576)
SeifEddineMezned Apr 30, 2026
77beddb
Fix Duco unknown node type not re-evaluated after becoming known (#16…
ronaldvdmeer May 1, 2026
f36676c
Bump opower to 0.18.2 (#169588)
tronikos May 1, 2026
33ee3d6
Decrease WebDAV client timeout (#169591)
jpbede May 1, 2026
ed52b0c
Change vacuum template config names for clean area (#169599)
Petro31 May 1, 2026
5ba6e34
Fix detection of CPU temperature sensor support on olde FRITZ!Box mod…
mib1185 May 4, 2026
bdb6663
Pass `None` config entry to schluter coordinator (#169621)
mib1185 May 1, 2026
5e8886a
Fix M1S-T500 update error (#169651)
kmod-midori May 3, 2026
b165d82
Fix grammar in mqtt/strings.json: "Minimal one" → "At least one" (#16…
SeifEddineMezned May 2, 2026
191d2d1
Bump satel_integra to 1.3.0 (#169668)
Tommatheussen May 2, 2026
ed35b23
Updated prowlpy to 1.1.5 (#169671)
OMEGARAZER May 3, 2026
9e357e7
Bump python-duco-client to 0.3.10 (#169677)
ronaldvdmeer May 3, 2026
ce4fc9e
Improve ProxmoxVE config flow preparing bug fixing (#169682)
CoMPaTech May 4, 2026
2d8f369
Update Nest doorbell event to use standard DoorbellEventType.RING (#1…
allenporter May 4, 2026
179d370
Use uptime device_class for Uptime sensor (#169692)
karwosts May 3, 2026
2874282
Ignore location FORBIDDEN response for the Volvo integration (#169713)
thomasddn May 4, 2026
126058e
Bump bring-api to 1.1.2 (#169729)
tr4nt0r May 4, 2026
7c44a0b
Update frontend to 20260429.2 (#169748)
piitaya May 4, 2026
a3e1209
Bump version to 2026.5.0b1
balloob May 4, 2026
2d66ebe
Add trigger media_player.muted (#156736)
emontnemery May 5, 2026
4f78bbc
Use all_devices in ViCare diagnostics for completeness (#169429)
lackas May 4, 2026
4d575e6
Improve template reload (#169480)
emontnemery May 5, 2026
8e5bf2a
Fix async_unload teardown race in scripts (#169562)
arturpragacz May 5, 2026
c56c506
Add precipitation device class to WeatherFlow Cloud accumulation sens…
shbatm May 4, 2026
f828b16
Bump pylitterbot to 2025.4.0 (#169652)
natekspencer May 5, 2026
4dfa2b8
Limit power status binary sensor to non-LR5 devices (#169659)
natekspencer May 4, 2026
663f7e3
Add Celsius and Fahrenheit to Smartthings UNITS mapping (#169686)
kernelpanic85 May 4, 2026
8218ff0
Add missing initialization charging power status option to Volvo (#16…
thomasddn May 5, 2026
53905fb
Bump victron-ble-ha-parser to 0.7.0 (#169736)
rajlaud May 5, 2026
f6dec34
Bump pytrydan to 1.0.0 (#169742)
dgomes May 4, 2026
e15852f
Fix uptime template sensor (#169743)
Petro31 May 4, 2026
a7eaa51
Fix config flow validation in Nord Pool (#169751)
gjohansson-ST May 4, 2026
643ae08
Bump Insteon-panel to 0.6.2 (#169757)
ssyrell May 4, 2026
9d0e2df
bump sense-energy to 0.14.1 (#169761)
kbickar May 4, 2026
2945b51
Bump pyTibber to 0.37.3 (#169762)
Danielhiversen May 4, 2026
58e97e7
Update xknxproject to 3.9.0 (#169775)
farmio May 5, 2026
af4cb95
Add missing code for miele washing machine (#169795)
astrandb May 5, 2026
6cfedb5
Add Sensereo matter brand (#169836)
joostlek May 5, 2026
c12e1b5
Add Zunzunbee Zigbee brand (#169838)
joostlek May 5, 2026
c5e08b2
Return the requested format for OpenAI TTS (#169839)
Shulyaka May 5, 2026
9473213
Bump version to 2026.5.0b2
balloob May 5, 2026
0e8ecd1
Catch additional errors as potentially retryable errors during energy…
masterkoppa May 2, 2026
3050e79
Expose SET_SPEED for all fans via PercentSetting in Matter (#169696)
lboue May 6, 2026
c581eaa
Add trigger timer.time_remaining (#169763)
emontnemery May 6, 2026
8e41933
Record notification from legacy notify action in Mobile App (#169749)
tr4nt0r May 6, 2026
afad1e8
Improve mobile_app device tracker tests (#169724)
emontnemery May 4, 2026
4dd996b
Add trigger media_player.unmuted (#169797)
emontnemery May 5, 2026
ffae6ed
Validate yaml matches implementation in automation options_supported …
emontnemery May 5, 2026
1d3d714
Bump intents to 2026.5.5 (#169855)
synesthesiam May 5, 2026
4b24ca9
Bump serialx to 1.7.0 (#169867)
puddly May 5, 2026
2bfdb96
Improve trigger test helper docstrings (#169869)
emontnemery May 5, 2026
c139e99
Improve condition test helper docstrings (#169871)
emontnemery May 5, 2026
22a7daa
Add method _should_include to EntityTriggerBase (#169837)
emontnemery May 5, 2026
12e443c
Improve entity trigger tests (#169881)
emontnemery May 6, 2026
4f4f464
Add method _should_include to EntityConditionBase (#169884)
emontnemery May 6, 2026
7f186f4
Add media_player volume triggers (#169885)
emontnemery May 6, 2026
d177944
Fix Zinvolt select options (#169886)
joostlek May 6, 2026
65ca790
Bump satel_integra to 1.3.1 (#169889)
Tommatheussen May 6, 2026
eabaf3b
Add media_player muted conditions (#169892)
emontnemery May 6, 2026
f08cd01
Update frontend to 20260429.3 (#169893)
bramkragten May 6, 2026
9e955d8
Add media_player volume condition (#169897)
emontnemery May 6, 2026
eab9747
Exclude incompatible entities from humidity automations (#169898)
emontnemery May 6, 2026
3e26d0d
Exclude incompatible entities from temperature automations (#169901)
emontnemery May 6, 2026
d70ffcd
Bump version to 2026.5.0b3
frenck May 6, 2026
9da9f8f
Unload scripts and conditions created by template entities (#169366)
emontnemery May 6, 2026
0c5b02e
Exclude incompatible climate entities from climate automations (#169903)
emontnemery May 6, 2026
cc83ee8
Exclude incompatible water_heater entities from water_heater automati…
emontnemery May 6, 2026
8d53f7a
Exclude incompatible humidifier entities from humidifier automations …
emontnemery May 6, 2026
8c79d1e
Remove _get_tracked_value method from EntityConditionBase (#169906)
emontnemery May 6, 2026
32f65b2
Bump pyTibber to 0.37.4 (#169907)
Danielhiversen May 6, 2026
4cd0d9d
Bump version to 2026.5.0b4
frenck May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
225 changes: 225 additions & 0 deletions .claude/agents/raise-pull-request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
---
name: raise-pull-request
description: |
Use this agent when creating a pull request for the Home Assistant core repository after completing implementation work. This agent automates the PR creation process including running tests, formatting checks, and proper checkbox handling.
model: inherit
color: green
tools: Read, Bash, Grep, Glob
---

You are an expert at creating pull requests for the Home Assistant core repository. You will automate the PR creation process with proper verification, formatting, testing, and checkbox handling.

**Execute each step in order. Do not skip steps.**

## Step 1: Gather Information

Run these commands in parallel to analyze the changes:

```bash
# Get current branch and remote
git branch --show-current
git remote -v | grep push

# Determine the best available dev reference
if git rev-parse --verify --quiet upstream/dev >/dev/null; then
BASE_REF="upstream/dev"
elif git rev-parse --verify --quiet origin/dev >/dev/null; then
BASE_REF="origin/dev"
elif git rev-parse --verify --quiet dev >/dev/null; then
BASE_REF="dev"
else
echo "Could not find upstream/dev, origin/dev, or local dev"
exit 1
fi

BASE_SHA="$(git merge-base "$BASE_REF" HEAD)"
echo "BASE_REF=$BASE_REF"
echo "BASE_SHA=$BASE_SHA"

# Get commit info for this branch vs dev
git log "${BASE_SHA}..HEAD" --oneline

# Check what files changed
git diff "${BASE_SHA}..HEAD" --name-only

# Check if test files were added/modified
git diff "${BASE_SHA}..HEAD" --name-only | grep -E "^tests/.*\.py$" || echo "NO_TESTS_CHANGED"

# Check if manifest.json changed
git diff "${BASE_SHA}..HEAD" --name-only | grep "manifest.json" || echo "NO_MANIFEST_CHANGED"
```

From the file paths, extract the **integration domain** from `homeassistant/components/{integration}/` or `tests/components/{integration}/`.

**Track results:**
- `BASE_REF`: the dev reference used for comparison
- `BASE_SHA`: the merge-base commit used for diff-based checks
- `TESTS_CHANGED`: true if test files were added or modified
- `MANIFEST_CHANGED`: true if manifest.json was modified

**If no suitable dev reference is available, STOP and tell the user to fetch `upstream/dev`, `origin/dev`, or a local `dev` branch before continuing.**

## Step 2: Run Code Quality Checks

Run `prek` to perform code quality checks (formatting, linting, hassfest, etc.) on the files changed since `BASE_SHA`:

```bash
prek run --from-ref "$BASE_SHA" --to-ref HEAD
```

**Track results:**
- `PREK_PASSED`: true if `prek run` exits with code 0

**If `prek` fails or is not available, STOP and report the failure to the user. Do not proceed with PR creation. If the failure appears to be an environment setup issue (e.g., missing tools, command not found, venv not activated), also point the user to https://developers.home-assistant.io/docs/development_environment.**

## Step 3: Stage Any Changes from Checks

If `prek` made any formatting or generated file changes, stage and commit them as a separate commit:

```bash
git status --porcelain
# If changes exist:
git add -A
git commit -m "Apply prek formatting and generated file updates"
```

## Step 4: Run Tests

Run pytest for the specific integration:

```bash
pytest tests/components/{integration} \
--timeout=60 \
--durations-min=1 \
--durations=0 \
-q
```

**Track results:**
- `TESTS_PASSED`: true if pytest exits with code 0

**If tests fail, STOP and report the failures to the user. Do not proceed with PR creation.**

## Step 5: Identify PR Metadata

Write a release-note-style PR title summarizing the change. The title becomes the release notes entry, so it should be a complete sentence fragment describing what changed in imperative mood.

**PR Title Examples by Type:**
| Type | Example titles |
|------|----------------|
| Bugfix | `Fix Hikvision NVR binary sensors not being detected` |
| | `Fix JSON serialization of time objects in anthropic tool results` |
| | `Fix config flow bug in Tesla Fleet` |
| Dependency | `Bump eheimdigital to 1.5.0` |
| | `Bump python-otbr-api to 2.7.1` |
| New feature | `Add asyncio-level timeout to Backblaze B2 uploads` |
| | `Add Nettleie optimization option` |
| Code quality | `Add exception translations to Teslemetry` |
| | `Improve test coverage of Tesla Fleet` |
| | `Refactor adguard tests to use proper fixtures for mocking` |
| | `Simplify entity init in Proxmox` |

## Step 6: Verify Development Checklist

Check each item from the [development checklist](https://developers.home-assistant.io/docs/development_checklist/):

| Item | How to verify |
|------|---------------|
| External libraries on PyPI | Check manifest.json requirements - all should be PyPI packages |
| Dependencies in requirements_all.txt | Only if dependency declarations changed (the `requirements` field in `manifest.json` or `requirements_all.txt`), run `python -m script.gen_requirements_all` |
| Codeowners updated | If this is a new integration, ensure its `manifest.json` includes a `codeowners` field with one or more GitHub usernames |
| No commented out code | Visually scan the diff for blocks of commented-out code |

**Track results:**
- `NO_COMMENTED_CODE`: true if no blocks of commented-out code found in the diff
- `DEPENDENCIES_CHANGED`: true if the diff changes the `requirements` field in `manifest.json` or changes `requirements_all.txt`
- `REQUIREMENTS_UPDATED`: true if `DEPENDENCIES_CHANGED` is true and requirements_all.txt was regenerated successfully; not applicable if `DEPENDENCIES_CHANGED` is false
- `CHECKLIST_PASSED`: true if all items above pass

## Step 7: Determine Type of Change

Select exactly ONE based on the changes. Mark the selected type with `[x]` and all others with `[ ]` (space):

| Type | Condition |
|------|-----------|
| Dependency upgrade | Only manifest.json/requirements changes |
| Bugfix | Fixes broken behavior, no new features |
| New integration | New folder in components/ |
| New feature | Adds capability to existing integration |
| Deprecation | Adds deprecation warnings for future breaking change |
| Breaking change | Removes or changes existing functionality |
| Code quality | Only refactoring or test additions, no functional change |

**Track results:**
- `CHANGE_TYPE`: the selected type (e.g., "Bugfix", "New feature", "Code quality", etc.)

**Important:** All seven type options must remain in the PR body. Only the selected type gets `[x]`, all others get `[ ]`.

## Step 8: Determine Checkbox States

Based on the verification steps above, determine checkbox states:

| Checkbox | Condition to tick |
|----------|-------------------|
| The code change is tested and works locally | Leave unchecked for the contributor to verify manually (this refers to manual testing, not unit tests) |
| Local tests pass | Tick only if `TESTS_PASSED` is true |
| I understand the code I am submitting and can explain how it works | Leave unchecked for the contributor to review and set manually |
| There is no commented out code | Tick only if `NO_COMMENTED_CODE` is true |
| Development checklist | Tick only if `CHECKLIST_PASSED` is true |
| Perfect PR recommendations | Tick only if the PR affects a single integration or closely related modules, represents one primary type of change, and has a clear, self-contained scope |
| Formatted using Ruff | Tick only if `PREK_PASSED` is true |
| Tests have been added | Tick only if `TESTS_CHANGED` is true AND the changes exercise new or changed functionality (not only cosmetic test changes) |
| Documentation added/updated | Tick if documentation PR created (or not applicable) |
| Manifest file fields filled out | Tick if `PREK_PASSED` is true (or not applicable) |
| Dependencies in requirements_all.txt | Tick only if `DEPENDENCIES_CHANGED` is false, or if `DEPENDENCIES_CHANGED` is true and `REQUIREMENTS_UPDATED` is true |
| Dependency changelog linked | Tick if dependency changelog linked in PR description (or not applicable) |
| Any generated code has been carefully reviewed | Leave unchecked for the contributor to review and set manually |

## Step 9: Breaking Change Section

**If `CHANGE_TYPE` is NOT "Breaking change" or "Deprecation": REMOVE the entire "## Breaking change" section from the PR body (including the heading).**

If `CHANGE_TYPE` IS "Breaking change" or "Deprecation", keep the `## Breaking change` section and describe:
- What breaks
- How users can fix it
- Why it was necessary

## Step 10: Push Branch and Create PR

Push the branch with upstream tracking, and create a PR against `home-assistant/core` with the generated title and body:

```bash
# Create PR (gh pr create pushes the branch automatically)
gh pr create --repo home-assistant/core --base dev \
--draft \
--title "TITLE_HERE" \
--body "$(cat <<'EOF'
BODY_HERE
EOF
)"
```

### PR Body Template

Read the PR template from `.github/PULL_REQUEST_TEMPLATE.md` and use it as the basis for the PR body. **Do not hardcode the template — always read it from the file to stay in sync with upstream changes.**

Use any HTML comments (`<!-- ... -->`) in the template as guidance to understand what to fill in. For the final PR body sent to GitHub, keep the template text intact — do not delete any text from the template unless it explicitly instructs removal (e.g., the breaking change section when not applicable). Then fill in the sections:

1. **Breaking change section**: If the type is NOT "Breaking change" or "Deprecation", remove the entire `## Breaking change` section (heading and body). Otherwise, describe what breaks, how users can fix it, and why.
2. **Proposed change section**: Fill in a description of the change extracted from commit messages.
3. **Type of change**: Check exactly ONE checkbox matching the determined type from Step 7. Leave all others unchecked.
4. **Additional information**: Fill in any related issue numbers if known.
5. **Checklist**: Check boxes based on the conditions in Step 8. Leave manual-verification boxes unchecked for the contributor.

**Important:** Preserve all template structure, options, and link references exactly as they appear in the file — only modify checkbox states and fill in content sections.

## Step 11: Report Result

Provide the user with:
1. **PR URL** - The created pull request link
2. **Verification Summary** - Which checks passed/failed
3. **Unchecked Items** - List any checkboxes left unchecked and why
4. **User Action Required** - Remind user to:
- Review and set manual-verification checkboxes ("I understand the code..." and "Any generated code...") as applicable
- Consider reviewing two other open PRs
- Add any related issue numbers if applicable
19 changes: 6 additions & 13 deletions .claude/skills/github-pr-reviewer/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
---
name: github-pr-reviewer
description: Review a GitHub pull request and provide feedback comments. Use when the user says "review the current PR" or asks to review a specific PR.
description: Reviews GitHub pull requests and provides feedback comments. This is the top skill to use for reviewing Pull Requests from GitHub.
---

# Review GitHub Pull Request

## Preparation:
- Check if the local commit matches the last one in the PR. If not, checkout the PR locally using 'gh pr checkout'.
- CRITICAL: If 'gh pr checkout' fails for ANY reason, you MUST immediately STOP.
- Do NOT attempt any workarounds.
- Do NOT proceed with the review.
- ALERT about the failure and WAIT for instructions.
- This is a hard requirement - no exceptions.

## Follow these steps:
1. Use 'gh pr view' to get the PR details and description.
2. Use 'gh pr diff' to see all the changes in the PR.
Expand All @@ -35,12 +27,13 @@ description: Review a GitHub pull request and provide feedback comments. Use whe
- No need to highlight things that are already good.

## Output format:
- List specific comments for each file/line that needs attention
- List specific comments for each file/line that needs attention.
- In the end, summarize with an overall assessment (approve, request changes, or comment) and bullet point list of changes suggested, if any.
- Example output:
```
Overall assessment: request changes.
- [CRITICAL] Memory leak in homeassistant/components/sensor/my_sensor.py:143
- [PROBLEM] Inefficient algorithm in homeassistant/helpers/data_processing.py:87
- [SUGGESTION] Improve variable naming in homeassistant/helpers/config_validation.py:45
- [CRITICAL] sensor.py:143 - Memory leak
- [PROBLEM] data_processing.py:87 - Inefficient algorithm
- [SUGGESTION] test_init.py:45 - Improve x variable name
```
- Make sure to include the file and line number when possible in the bullet points.
43 changes: 43 additions & 0 deletions .claude/skills/ha-integration-knowledge/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
name: ha-integration-knowledge
description: Everything you need to know to build, test and review Home Assistant Integrations. If you're looking at an integration, you must use this as your primary reference.
---

## File Locations
- **Integration code**: `./homeassistant/components/<integration_domain>/`
- **Integration tests**: `./tests/components/<integration_domain>/`

## General guidelines

- When looking for examples, prefer integrations with the platinum or gold quality scale level first.
- Polling intervals are NOT user-configurable. Never add scan_interval, update_interval, or polling frequency options to config flows or config entries.
- Do NOT allow users to set config entry names in config flows. Names are automatically generated or can be customized later in UI. Exception: helper integrations may allow custom names.
- For entity actions and entity services, avoid requesting redundant defensive checks for fields already enforced by Home Assistant validation schemas and entity filters; only request extra guards when values bypass validation or are transformed unsafely.
- When validation guarantees a key is present, prefer direct dictionary indexing (`data["key"]`) over `.get("key")` so invalid assumptions fail fast.
- Integrations should be thin wrappers. Protocol parsing, device state machines, or other domain logic belong in a separate PyPI library, not in the integration itself. If unsure, ask before inlining.

The following platforms have extra guidelines:
- **Diagnostics**: [`platform-diagnostics.md`](platform-diagnostics.md) for diagnostic data collection
- **Repairs**: [`platform-repairs.md`](platform-repairs.md) for user-actionable repair issues


## Integration Quality Scale

- When validating the quality scale rules, check them at https://developers.home-assistant.io/docs/core/integration-quality-scale/rules
- When implementing or reviewing an integration, always consider the quality scale rules, since they promote best practices.

Template scale file: `./script/scaffold/templates/integration/integration/quality_scale.yaml`

### How Rules Apply
1. **Check `manifest.json`**: Look for `"quality_scale"` key to determine integration level
2. **Bronze Rules**: Always required for any integration with quality scale
3. **Higher Tier Rules**: Only apply if integration targets that tier or higher
4. **Rule Status**: Check `quality_scale.yaml` in integration folder for:
- `done`: Rule implemented
- `exempt`: Rule doesn't apply (with reason in comment)
- `todo`: Rule needs implementation


## Testing Requirements

- Tests should avoid interacting or mocking internal integration details. For more info, see https://developers.home-assistant.io/docs/development_testing/#writing-tests-for-integrations
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Integration Diagnostics

Platform exists as `homeassistant/components/<domain>/diagnostics.py`.

- **Required**: Implement diagnostic data collection
- **Security**: Never expose passwords, tokens, or sensitive coordinates
21 changes: 21 additions & 0 deletions .claude/skills/ha-integration-knowledge/platform-repairs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Repairs platform

Platform exists as `homeassistant/components/<domain>/repairs.py`.

- **Actionable Issues Required**: All repair issues must be actionable for end users
- **Issue Content Requirements**:
- Clearly explain what is happening
- Provide specific steps users need to take to resolve the issue
- Use friendly, helpful language
- Include relevant context (device names, error details, etc.)
- **String Content Must Include**:
- What the problem is
- Why it matters
- Exact steps to resolve (numbered list when multiple steps)
- What to expect after following the steps
- **Avoid Vague Instructions**: Don't just say "update firmware" - provide specific steps
- **Severity Guidelines**:
- `CRITICAL`: Reserved for extreme scenarios only
- `ERROR`: Requires immediate user attention
- `WARNING`: Indicates future potential breakage
- Only create issues for problems users can potentially resolve
Loading
Loading