Full changelog for Home Assistant 2026.10
These are all the changes included in the Home Assistant 2026.10 release. For a summary in a more readable format Release notes blog for this release.
All changes
- Bump python-duco-connectivity to 0.12.0 (@ronaldvdmeer - #180327)
- Bump version to 2026.10.0dev0 (@frenck - #180331)
- Add
PARALLEL_UPDATESconstants to Nice G.O. (@IceBotYT - #180342) - Proxmox refactor to use UPTIME sensor (@erwindouna - #169704)
- Add diagnostics to libreNMS (@mib1185 - #180303)
- Bump aioaquarite to 0.9.0 (@fdebrus - #180335)
- Update pytest-socket to 0.8.1 (@renovatebot - #180363)
- Remove the Sofar serial number sensor (@darkrain-nl - #180371)
- Bump sofar-modbus to 0.6.0 (@darkrain-nl - #180375)
- Use device class selector for KNX (@jbouwh - #180289)
- Add tests of some edge cases related to child devices (@emontnemery - #179970)
- Enhance androidtv.adb_command to return response data (@tronikos - #166945)
- Add RTC sync and IV curve scan buttons for Sofar inverters (@darkrain-nl - #180392)
- Add Z-Wave JS WebSocket command to get network neighbors (@MindFreeze - #179363)
- Add reconfigure flow to NeoPool (@svasek - #180332)
- Add icons, state translations and enum mapping for OpenEVSE status sensor (@firstof9 - #180329)
- Refactor Frontier Silicon tests (@joostlek - #180264)
- Always call Entity.add_to_platform_abort when entity fails to add (@emontnemery - #179509)
- Match UniFi discovery against every address a console announces (@RaHehl - #180343)
- Bump neopool-modbus to 4.6.0 (@svasek - #180428)
- MELCloud Home silver quality scale (@erwindouna - #173588)
- Fix Portainer tests hanging on real event listener (@TheJulianJES - #180464)
- Add travel time config entities for WAGO blind controls to Matter (@agners - #180406)
- Bump aiomelcloudhome to 0.2.2 (@erwindouna - #180434)
- Use device class selectors for template (@jbouwh - #180326)
- Bump dawidd6/action-download-artifact from 23 to 24 (@dependabot - #180475)
- Bump github/codeql-action/analyze from 4.37.7 to 4.37.8 (@dependabot - #180477)
- Bump aiomelcloudhome 0.2.3 (@erwindouna - #180473)
- Bump github/codeql-action/init from 4.37.7 to 4.37.8 (@dependabot - #180474)
- Update ruff (@renovatebot - #180466)
- Add generic flow result type to Data Entry Flow Manager Views (@iluvdata - #180013)
- Add myself to codeowners of iotawatt (@agners - #180509)
- Add codeowner to Remember The Milk (@MartinHjelmare - #180513)
- Add hardware-conditional buzzer and LED select entities to Peblar (@syphernl - #169313)
- Bump lyngdorf to 1.11.0 (@fishloa - #180528)
- Add RFID token management services to Peblar integration (@syphernl - #169189)
- Central OAuth error handling (@zweckj - #180394)
- Add hardware-conditional entities to Peblar integration (@syphernl - #169188)
- Bump aiomodernforms to 0.3.1 (@wonderslug - #180523)
- Report the original error when removing an entity fails (@frenck - #180481)
- Report every SwitchBot Cloud lock state (@frenck - #180448)
- Keep a finished template render out of work scheduled during it (@frenck - #180510)
- Add SolarEdge Modbus integration (@frenck - #180508)
- Add zeroconf discovery to SolarEdge Modbus (@frenck - #180569)
- Add app discovery to Model Context Protocol (@balloob - #180378)
- Add a regression test for the Lyngdorf media player position (@fishloa - #180530)
- Split user flow init and data submission in Paperless-ngx tests (@fvgarrel - #180586)
- Add switch to enable/disable Hue MotionAware zones (@marcelveldt - #177415)
- Validate the target of a service description registered in code (@frenck - #180556)
- Add silver IQS to Mikrotik (@chemelli74 - #176725)
- Add DNS response code sensor to Gatus integration (@TN-1 - #178662)
- Mark Vistapool docs-installation-parameters and stale-devices as done (@fdebrus - #180550)
- Update infrared-protocols to 9.1.0 (@renovatebot - #180582)
- Improve Monzo API errors, icon, and test coverage (@JakeMartin-ICL - #180320)
- Add initial update platform to Proxmox (@CoMPaTech - #167620)
- Add diagnostics to SolarEdge Modbus (@frenck - #180599)
- Migrate Lyngdorf core to the lyngdorf 2.0 API (@fishloa - #180529)
- Remove the vendor status sensor from SolarEdge Modbus (@frenck - #180607)
- Update Mealie minimum to 3.2 (@andrew-codechimp - #180609)
- Add MQTT token pairing to Victron GX (@tomer-w - #180590)
- Add Besen sensor platform (@moryoav - #180585)
- Remove stale xfail in hdmi_cec switch status test (@Kjubikstronk - #180532)
- Manage the Peblar autocharge vehicle list (@frenck - #180606)
- Add meter support to SolarEdge Modbus (@frenck - #180572)
- Add serial support to SolarEdge Modbus (@frenck - #180580)
- Use Home Assistant’s shared aiohttp session in Lyngdorf (@fishloa - #180620)
- Add DHCP discovery to the Imou integration (@Imou-OpenPlatform - #180083)
- Add support for priority to SMTP integration (@tr4nt0r - #180358)
- Deprecate Google Wifi uptime sensor (@EReaso - #177525)
- Add select entities for Sofar charger mode and EPS mode (@darkrain-nl - #180385)
- Raise Sofar to the silver quality scale (@darkrain-nl - #180292)
- Add Persang Infrared integration (@Dr-Blank - #178107)
- Bump google-maps-routing to 0.11.0 (@silamon - #180622)
- Migrate the Lyngdorf number platform to the lyngdorf 2.0 API (@fishloa - #180627)
- Add water_heater platform to Plugwise (@bouwew - #177480)
- Add ventilation quickmode switches to ViCare (@lackas - #179430)
- Add Priority Status sensor to Lyric integration (@clutch2sft - #177065)
- Add serial number to Roborock devices (@ximex - #180465)
- Add Tailscale connected to control binary sensor (@AlfonsoDehesa - #179506)
- Include contributor reviewed 2 PRs in ha merge queue skill (@silamon - #180631)
- Add DALI line status diagnostic sensor to lunatone (@MoonDevLT - #179706)
- Add 100% coverage to coordinator in Fritz (@chemelli74 - #180647)
- Add 100% coverage to sensor in Fritz (@chemelli74 - #180646)
- Split the Elgato user flow init from its data (@frenck - #180654)
- Split the Peblar user flow init from its data (@frenck - #180653)
- Split the Twente Milieu user flow init from its data (@frenck - #180645)
- Split the Tailwind user flow init from its data (@frenck - #180648)
- Split the Tailscale user flow init from its data (@frenck - #180649)
- Split the SolarEdge user flow init from its data (@frenck - #180650)
- Split the Season user flow init from its data (@frenck - #180651)
- Split the PVOutput user flow init from its data (@frenck - #180652)
- Split the Whois user flow init from its data (@frenck - #180643)
- Split the AdGuard Home user flow init from its data (@frenck - #180639)
- Split the WLED user flow init from its data (@frenck - #180641)
- Mark Vistapool entities unavailable while the push connection is down (@fdebrus - #180551)
- Bump google cloud dependencies (@silamon - #180625)
- Split the Samsung SyncThru user flow init from its data (@frenck - #180661)
- Split The Things Network user flow init from its data (@frenck - #180660)
- Split the Syncthing user flow init from its data (@frenck - #180662)
- Split the Soma user flow init from its data (@frenck - #180664)
- Split the StarLine user flow init from its data (@frenck - #180663)
- Split the Smarla user flow init from its data (@frenck - #180665)
- Split the SleepIQ user flow init from its data (@frenck - #180666)
- Split the SkyBell user flow init from its data (@frenck - #180674)
- Split the 17TRACK user flow init from its data (@frenck - #180675)
- Split the ROVA user flow init from its data (@frenck - #180676)
- Split the Slack user flow init from its data (@frenck - #180673)
- Split the ROMY user flow init from its data (@frenck - #180680)
- Add battery support to SolarEdge Modbus (@frenck - #180657)
- Split the Redgtech user flow init from its data (@frenck - #180681)
- Add reconfigure and reauth flows for CentriConnect (@gresrun - #180215)
- Split the PoolSense user flow init from its data (@frenck - #180685)
- Split the Pterodactyl user flow init from its data (@frenck - #180684)
- Split the Pushover user flow init from its data (@frenck - #180682)
- Split the Pushbullet user flow init from its data (@frenck - #180683)
- Add binary sensors to SolarEdge Modbus (@frenck - #180687)
- Add number entities to SolarEdge Modbus (@frenck - #180691)
- Add state_class to UniFi device temperature sensor (@bob-laz - #180688)
- Add options flow to MCP Server integration (@balloob - #180629)
- Fix Roborock dock cleaning brush entity support (@allenporter - #180709)
- Bump aioaquarite to 0.9.2 (@fdebrus - #180695)
- Add per-zone global override switch to nobo_hub (@oyvindwe - #177772)
- Split the Vilfo user flow init from its data (@frenck - #180656)
- Split the Vera user flow init from its data (@frenck - #180658)
- Authorize a Peblar charge session (@frenck - #180678)
- Fix CI (@silamon - #180715)
- Bump elgato to 6.0.0 (@frenck - #180714)
- Add Airly quality scale file (@bieniu - #177552)
- Split the MotionMount user flow init from its data (@frenck - #180730)
- Split the Nightscout user flow init from its data (@frenck - #180729)
- Split the NMBS user flow init from its data (@frenck - #180728)
- Split the NZBGet user flow init from its data (@frenck - #180727)
- Split the OSO Energy user flow init from its data (@frenck - #180726)
- Split the OwnTracks user flow init from its data (@frenck - #180725)
- Split the Plaato user flow init from its data (@frenck - #180724)
- Split the Met Office user flow init from its data (@frenck - #180734)
- Add Duco bypass target temperature controls (@ronaldvdmeer - #176820)
- Add bronze quality scale to DNS IP (@gjohansson-ST - #177481)
- Move the Elgato color temperature range out of the light entity (@frenck - #180719)
- Add Elgato power-on behavior select (@frenck - #180721)
- Add generic 10-key LED candle remote to LED Infrared (@tr4nt0r - #178041)
- Bump elgato to 6.1.0 (@frenck - #180733)
- Add Elgato power-on number entities (@frenck - #180720)
- Split the LiteJet user flow init from its data (@frenck - #180738)
- Split the Meteoclimatic user flow init from its data (@frenck - #180736)
- Split the Last.fm user flow init from its data (@frenck - #180739)
- Split the Iskra user flow init from its data (@frenck - #180741)
- Split the Kaleidescape user flow init from its data (@frenck - #180740)
- Split the HKO user flow init from its data (@frenck - #180742)
- Split the Goal Zero user flow init from its data (@frenck - #180743)
- Split the Dynalite user flow init from its data (@frenck - #180749)
- Split the Dune HD user flow init from its data (@frenck - #180750)
- Split the Freedompro user flow init from its data (@frenck - #180745)
- Split the eGauge user flow init from its data (@frenck - #180747)
- Split the Honeywell user flow init from its data (@frenck - #180755)
- Split the Deluge user flow init from its data (@frenck - #180752)
- Split the D-Link user flow init from its data (@frenck - #180751)
- Add Elgato Wi-Fi signal sensors (@frenck - #180758)
- Split the Discord user flow init from its data (@frenck - #180756)
- Split the Canary user flow init from its data (@frenck - #180754)
- Split the ISS user flow init from its data (@frenck - #180753)
- Split the EDL21 user flow init from its data (@frenck - #180748)
- Split the Electra Smart user flow init from its data (@frenck - #180757)
- Split the Litter-Robot user flow init from its data (@frenck - #180737)
- Split the Met Eireann user flow init from its data (@frenck - #180780)
- Split the Moehlenhoff Alpha2 user flow init from its data (@frenck - #180778)
- Split the AsusWRT user flow init from its data (@frenck - #180782)
- Split the Azure Data Explorer user flow init from its data (@frenck - #180769)
- Split the Sky Remote user flow init from its data (@frenck - #180772)
- Split the AEMET user flow init from its data (@frenck - #180768)
- Split the Amber Electric user flow init from its data (@frenck - #180766)
- Split the AnthemAV user flow init from its data (@frenck - #180765)
- Split the Airzone user flow init from its data (@frenck - #180767)
- Split the Telegram bot user flow init from its data (@frenck - #180771)
- Split the SensorPush Cloud user flow init from its data (@frenck - #180774)
- Split the Shopping List user flow init from its data (@frenck - #180773)
- Split the QNAP QSW user flow init from its data (@frenck - #180775)
- Split the Pi-hole user flow init from its data (@frenck - #180776)
- Split the Panasonic Viera user flow init from its data (@frenck - #180777)
- Split the Android TV user flow init from its data (@frenck - #180783)
- Split the Lutron Caseta user flow init from its data (@frenck - #180784)
- Split the Media Extractor user flow init from its data (@frenck - #180781)
- Split the LCN user flow init from its data (@frenck - #180810)
- Drop the inert prefilled data from an Energenie flow test (@frenck - #180811)
- Split the Awair user flow init from its data (@frenck - #180809)
- Split the Crownstone user flow init from its data (@frenck - #180806)
- Split the Huawei LTE user flow init from its data (@frenck - #180800)
- Split the Azure Event Hub user flow init from its data (@frenck - #180798)
- Split the Color Extractor user flow init from its data (@frenck - #180799)
- Split the Smart Meter Texas user flow init from its data (@frenck - #180797)
- Split the Agent DVR user flow init from its data (@frenck - #180796)
- Split the Emulated Roku user flow init from its data (@frenck - #180793)
- Split the Airzone Cloud user flow init from its data (@frenck - #180795)
- Split the Environment Canada user flow init from its data (@frenck - #180792)
- Split the JVC Projector user flow init from its data (@frenck - #180788)
- Split the Blue Current user flow init from its data (@frenck - #180794)
- Split the HVV Departures user flow init from its data (@frenck - #180790)
- Split the Israel Rail user flow init from its data (@frenck - #180789)
- Split the LG Netcast user flow init from its data (@frenck - #180787)
- Split the FAA Delays user flow init from its data (@frenck - #180791)
- Follow the Peblar charging session as it changes (@frenck - #180744)
- Split the APsystems user flow init from its data (@frenck - #180763)
- Split the Brunt user flow init from its data (@frenck - #180761)
- Split the Atag user flow init from its data (@frenck - #180762)
- Split the Hive user flow init from its data (@frenck - #180760)
- Bump homematicip to 2.16.0 (@lackas - #180805)
- Split the APCUPSd user flow init from its data (@frenck - #180764)
- Migrate Lyngdorf diagnostics to the lyngdorf 2.0 API (@fishloa - #180705)
- Split the Daikin user flow init from its data (@frenck - #180808)
- Migrate the Lyngdorf remote platform to the lyngdorf 2.0 API (@fishloa - #180633)
- Migrate the Lyngdorf sensor platform to the lyngdorf 2.0 API (@fishloa - #180704)
- Migrate the Lyngdorf select platform to the lyngdorf 2.0 API (@fishloa - #180703)
- Continue the flow these config flow tests already opened (@frenck - #180823)
- Add Sunsynk integration (@jamesridgway - #180593)
- Add pool light scheduling to Vistapool (@fdebrus - #180686)
- Migrate SMTP integration to aiosmtplib (@tr4nt0r - #180707)
- Split the FireServiceRota user flow init from its data (@frenck - #180746)
- Split the Minecraft Server user flow init from its data (@frenck - #180779)
- Install firmware and customization updates on Peblar (@frenck - #180581)
- Remove Teslemetry passenger seat belt binary sensor (@Bre77 - #180467)
- Add select entities to SolarEdge Modbus (@frenck - #180698)
- Vistapool entity device class (@fdebrus - #180679)
- Split the TOLO Sauna user flow init from its data (@frenck - #180659)
- Add calendar platform to Apple iCloud (@FezVrasta - #180735)
- Add KACO Modbus integration (@g4bri3lDev - #180812)
- Add option to require an admin user for the MCP server endpoint (@balloob - #180713)
- Add Daylight Saving Time switch to Frontier Silicon integration (@ashh87 - #180462)
- Collapse ViCare coordinators to one per gateway (@lackas - #176163)
- Migrate the Lyngdorf media player to the lyngdorf 2.0 API (@fishloa - #180618)
- Add switch entities to SolarEdge Modbus (@frenck - #180826)
- Switchbot Cloud: Add new supported devices[Lock Ultra Max] (@XiaoLing-git - #180486)
- Allow Apple TV pairing PIN to accept leading zeroes (@sankalpsthakur - #179258)
- Bump protobuf to latest v6 (to prepare v7 bump) (@silamon - #180626)
- Create one light entity per Modern Forms Gen4 light fixture (@wonderslug - #180524)
- Bump google-cloud-pubsub to 2.39.2 (@silamon - #180623)
- Stop exposing sleep timers and adaptive learning on Modern Forms Gen4 fans (@wonderslug - #180525)
- Use JSON fixture helpers in tests (@joostlek - #180832)
- Migrate nextbus to config entry runtime data (@mstu01 - #177452)
- Add color temperature support for Modern Forms Gen4 light fixtures (@wonderslug - #180526)
- Use JSON fixture helpers in tests (5/6) (@joostlek - #180838)
- Declare PARALLEL_UPDATES on the iCloud calendar platform (@FezVrasta - #180839)
- Use async_create_background_task for the songpal notification listener (@noron12234 - #178000)
- Use BaseException instead of bare except in rainforest_raven (@nithesh259 - #176562)
- Use JSON fixture helpers in tests (6/6) (@joostlek - #180840)
- Use JSON fixture helpers in tests (4/6) (@joostlek - #180836)
- Use JSON fixture helpers in tests (2/6) (@joostlek - #180833)
- Add a restart button to Modern Forms (@wonderslug - #180527)
- Stop reporting max_volume in Lyngdorf diagnostics (@fishloa - #180828)
- Use JSON fixture helpers in tests (3/6) (@joostlek - #180835)
- Iterate the unit conversion tables instead of parametrizing each row (@balloob - #180460)
- Update pipdeptree to 4.2.2 (@frenck - #180346)
- Add a switch entity for the Sofar remote on/off control (@darkrain-nl - #180383)
- Use positional row access in recorder history queries (@frenck - #175532)
- Add pylint checker to use json helpers (@joostlek - #180829)
- Added AC support for Samsung Infrared (@elax46 - #173692)
- Add diagnostics support for Sofar (@darkrain-nl - #180854)
- Bump lyngdorf to 2.1.0 (@fishloa - #180834)
- Bump elgato to 6.1.1 (@frenck - #180852)
- Fix swallowed exceptions in action handlers for Pushover (@mstu01 - #177416)
- Add first device info for Vivotek integration (@HarlemSquirrel - #171587)
- Add entry type to Proxmox (@erwindouna - #180858)
- Add an Elgato firmware update entity (@frenck - #180786)
- Enable strict typing for Sofar (@darkrain-nl - #180857)
- Bump peblar to 2.0.0 (@frenck - #180859)
- Pick up SolarEdge Modbus meters and batteries wired in or out later (@frenck - #180830)
- Remove homeassistant auth legacy mode (@gjohansson-ST - #175613)
- Bump aioaquarite to 0.11.0 (@fdebrus - #180863)
- Add a reconfigure flow to the Sofar integration (@darkrain-nl - #180856)
- Update pnpm to 11.23.0 (@renovatebot - #180882)
- Use core
varhunit constant for Fronius (@farmio - #180890) - Bump sofar-modbus to 0.7.0 (@darkrain-nl - #180894)
- Use NEWEST_FIRST replay for Matter BLE commissioning (@cryptomilk - #176822)
- Bump python-duco-connectivity to 0.13.1 (@ronaldvdmeer - #180896)
- Rest: Move common platform setup code into entity.py (@iluvdata - #179868)
- Add pylint checker to ensure flow menus have backing step handlers (@emontnemery - #174796)
- Add atmospheres (atm) as a pressure unit (@Bre77 - #178708)
- Add swing mode support to LG Infrared AC climate (@Dr-Blank - #177191)
- Set stable device name in lunatone (@zweckj - #180915)
- Bump sofar-modbus to 0.7.1 (@darkrain-nl - #180907)
- Add switch platform to LG Infrared (@Dr-Blank - #180843)
- Use reactive power device class for iotawatt VAR sensors (@agners - #180913)
- Bump neopool-modbus to 4.6.2 (@svasek - #180908)
- Deprecate Configurator integration (@MartinHjelmare - #180912)
- Update pylint rule for async_get_device_diagnostics (@emontnemery - #179966)
- Bump pyprobeplus to 2.1.0 (@pantherale0 - #180921)
- Add kPa as a valid unit of measurement for pressure in weather entity (@RussellAult - #165519)
- Use registry fixtures in tests (1/8) (@joostlek - #180919)
- Use registry fixtures in tests (6/8) (@joostlek - #180928)
- Use registry fixtures in tests (8/8) (@joostlek - #180931)
- Use registry fixtures in tests (3/8) (@joostlek - #180923)
- Use registry fixtures in tests (4/8) (@joostlek - #180924)
- Use registry fixtures in tests (2/8) (@joostlek - #180920)
- Use registry fixtures in tests (7/8) (@joostlek - #180930)
- Use registry fixtures in tests (5/8) (@joostlek - #180926)
- Bump sofar-modbus to 0.8.0 (@darkrain-nl - #180935)
- Add player reports for Nintendo Parental Controls (@pantherale0 - #180937)
- Add Zonneplan integration (@erwindouna - #180722)
- Bump tesla-fleet-api to 1.12.1 (@Bre77 - #180911)
- Add missing quality scale ProxmoxVE (@erwindouna - #178429)
- refactor(
metoffice): usedt_util.nowinweather.py(@robotsnh - #180902) - Improve code quality of hr_energy_qube (@MattieGit - #178280)
- Bump grpcio to 1.83.1 and protobuf to v7 (@silamon - #180614)
- Remove Subaru unique_id migration for HA<=2022.10 (@jpettitt - #180944)
- Bump ha-iotawattpy to 0.3.0 (@agners - #180969)
- Bump PySwitchbot to 2.7.0 (@Onero-testdev - #180978)
- Update pnpm to 11.24.0 (@renovatebot - #180974)
- Bump python-duco-connectivity to 0.14.0 (@ronaldvdmeer - #180964)
- Fix Mysensors device id tracking (@MartinHjelmare - #180959)
- Add diagnostics to Zonneplan (@erwindouna - #180954)
- Delegate Duco bypass target policy to the library (@ronaldvdmeer - #180980)
- Populate Satel Integra model and firmware (@Tommatheussen - #180962)
- Improve device registry storage tests (@emontnemery - #180984)
- Add reauthentication flow to the Imou integration (@Imou-OpenPlatform - #180975)
- Make Subaru buttons and locks coordinator-backed (@jpettitt - #180946)
- Add panel information to diagnostics for Satel Integra (@Tommatheussen - #180987)
- Keep Duco filter time pollable after missing result (@ronaldvdmeer - #180985)
- Add reauth flow to Zonneplan (@erwindouna - #180951)
- Start Imou reauthentication when the cloud rejects the credentials (@Imou-OpenPlatform - #180989)
- Add MySensors config entry runtime_data (@MartinHjelmare - #180993)
- Add AC buttons to LG Infrared (@Dr-Blank - #180842)
- Close the Firestore clients when the Vistapool auth is done (@fdebrus - #180866)
- Add reconfigure flow to Zonneplan (@erwindouna - #180991)
- Add select platform to LG Infrared (@Dr-Blank - #180844)
- Add home_assistant_light_color_mode pylint checker (@emontnemery - #180922)
- Handle no_devices_found centrally (@zweckj - #180268)
- Update currently playing media id in Openhome (@kylegordon - #180869)
- Add data description to Airly config flow (@bieniu - #181008)
- Add device_trackers state attribute to zone entity states (@emontnemery - #181001)
- Add recovery path to the Airly config flow tests (@bieniu - #181011)
- Finish recorder purge without an extra cycle on partial statistics batches (@frenck - #175511)
- Bump python-duco-connectivity to 0.15.0 (@ronaldvdmeer - #181013)
- Deduplicate entity trigger and condition tests (@emontnemery - #180943)
- Bump androidtvremote2 to 0.3.2 (@tronikos - #181017)
- Add Flexit binary sensors and change default baud rate (@troelde - #180952)
- Raise ServiceValidationError for missing code in arming actions for Satel Integra (@Tommatheussen - #180996)
- Improve entity condition tests (@emontnemery - #180938)
- Promote TechnoVE integration to platinum quality scale (@Moustachauve - #179455)
- Refactor tests into more reusable fixtures (@karwosts - #181006)
- Add event status to calendar events (@1358 - #179312)
- Continue central error handling for OAuth (@zweckj - #180588)
- Add message field to Music Assistant play announcement action (@marcelveldt - #179034)
- Update uv to 0.12.6 (@renovatebot - #181047)
- Add Miele door binary sensor on coffee systems (@aturri - #180731)
- Set Midea test coverage done in quality scale (@rokam - #180879)
- Filter cancelled events out of remote_calendar (@1358 - #180949)
- Use async_config_entry_first_refresh in Subaru setup (@jpettitt - #181015)
- Change range for getting all columns in Google Sheets (@luca-angemi - #181007)
- Fix swallowed exceptions in roomba action handlers (@jasondillingham - #181042)
- Update default timeout to 60s in SMTP integration (@tr4nt0r - #181035)
- Add Steinway Lyngdorf SSDP manufacturer to lyngdorf discovery (@moths - #181032)
- Bump github/codeql-action/analyze from 4.37.8 to 4.37.9 (@dependabot - #181052)
- Sentence casing and string fixes for Nintendo Parental Controls (@pantherale0 - #181030)
- Start Imou reauthentication when an entity action rejects the credentials (@Imou-OpenPlatform - #181005)
- Get the stiebel_eltron Modbus unit from the modbus integration (@balloobbot - #180200)
- Media selector to retain metadata for presentation (@karwosts - #180454)
- Deprecate unused helper function cover.is_closed (@emontnemery - #164741)
- Complete Subaru config flow error tests to CREATE_ENTRY (@jpettitt - #181033)
- Update Rachio zone state after commands (@kingces95 - #179614)
- Use dhcp discovery to update midea device IP (@rokam - #180955)
- Improve error handling in file_upload (@emontnemery - #181078)
- Use @pytest.mark.usefixtures() in Plugwise test code (@bouwew - #181095)
- Fire a Lutron single press when the button reports only a release (@rqi14 - #181094)
- Upgrade homelink package version to remove pyOpenSSL dep (@rjones-gentex - #181092)
- Expose Zooz ZSE43 vibration sensor as vibration, not tampering (@AlCalzone - #181003)
- Update Lutron light state without waiting for the controller (@rqi14 - #181086)
- Deprecate modbus get_hub in favour of async_get_unit (@balloobbot - #179933)
- Type the lookin UDP manager with a HassKey (@David-Wu1119 - #181098)
- Bump github/codeql-action from 4.37.8 to 4.37.9 (@dependabot - #181053)
- Bump uiprotect to 16.7.0 (@RaHehl - #181114)
- Bump wyoming version (@synesthesiam - #181112)
- Enable strict typing in collection_image (@karwosts - #181118)
- Raise NeoPool quality scale to platinum (@svasek - #181103)
- Remove unused hass.data[DOMAIN] from remote_calendar (@David-Wu1119 - #181121)
- Centrally handle ImplementationUnavailableError (@zweckj - #180253)
- Add coroutines to MELCloud Home’s coordinator (@erwindouna - #181110)
- Use sentence-style capitalization for built-in integration names (@frenck - #181139)
- Deprecate passing a target to homeassistant.reload_config_entry (@emontnemery - #181142)
- Add reconfigure flow for Midea (@rokam - #180878)
- Bump wh-python to 2026.9.3 (@barryvdh - #181065)
- Bump uiprotect to 16.8.0 (@RaHehl - #181153)
- Fix HomeKit power control for Daikin zone climates (@barneyonline - #178408)
- Update infrared-protocols to 10.0.0 (@renovatebot - #181164)
- Add missing husqvarna_automower error keys (@romeovan - #181150)
- Rename services module in ihc (@epenet - #181155)
- Use discovery result in Midea for reconfigure flow (@rokam - #181167)
- Bump sofar-modbus to 0.9.0 (@darkrain-nl - #181162)
- Add button platform to Persang Infrared (@Dr-Blank - #181161)
- Refactor picnic tests (@joostlek - #181165)
- Align service registration method in services module (@epenet - #181151)
- Remove unnecessary async def in service registration (@epenet - #181156)
- Rename services module in switchbot_cloud (@epenet - #181152)
- Add the Sofar fault sensors (@darkrain-nl - #180905)
- Add Imou diagnostics for config entries (@Imou-OpenPlatform - #181132)
- Add lock switch to Midea (@chemelli74 - #181184)
- Handle already_in_progress centrally (@zweckj - #181147)
- Handle single_instance_allowed centrally (@zweckj - #181143)
- Fix ZeroDivisionError for inverse unit conversions in recorder statistics (@TowyTowy - #176320)
- Add Sofar service actions for the paired-register controls (@darkrain-nl - #180892)
- Add Sofar settings sensors for the paired-register controls (@darkrain-nl - #181197)
- Add the Sofar active power limit binary sensor (@darkrain-nl - #181198)
- Remove leftover modbus.restart action metadata (@epenet - #181202)
- Bump hdate to 1.2.2 (@amitfin - #181189)
- Drop translations from the Sofar coordinator errors (@darkrain-nl - #181221)
- Polish sensor code MELCloud Home (@erwindouna - #181217)
- Rename service registration method in google_assistant and shopping_list (@epenet - #181172)
- Update ruff (@renovatebot - #181252)
- Update uv to 0.12.7 (@renovatebot - #181253)
- WeHeat - Diagnostics (@barryvdh - #181262)
- Add the air outlet, DHW and indoor unit sensors to WeHeat (@barryvdh - #181265)
- Bump sofar-modbus to 0.9.1 (@darkrain-nl - #181274)
- Fix Synology DSM backup share step losing its input (@frenck - #181271)
- Render Jewish Calendar events with the library translations (@amitfin - #181226)
- Add Imou collection point select entity (@Imou-OpenPlatform - #181251)
- Bump opower to 0.21.0 (@tronikos - #181277)
- Bump hatasmota to 0.10.2 (@jziolkowski - #181236)
- Bump pycoolmasternet-async to 0.2.6 (@jameskoziol - #181290)
- Add zeroconf discovery to Velux integration (@wollew - #181284)
- Add Tuya two-channel energy meter sensors and numbers (@keranm - #178415)
- Allow non-admins to subscribe to conditions over the websocket (@MindFreeze - #175123)
- Resolve StrEnum, IntEnum, and IntFlag members in template container output (@Markus98 - #175529)
- Add local Powerwall control for Teslemetry energy sites (@Bre77 - #176969)
- Bump pyHik to 0.4.6 (@ptarjan - #181330)
- Fix Teslemetry energy-site setup crash on encrypted RSA key (@Bre77 - #181348)
- Split Teslemetry local-control abort into two reasons (@Bre77 - #181319)
- Leave Powerwall gateway host blank when discovery fails (@Bre77 - #181336)
- Update coverage to 7.16.0 (@renovatebot - #181349)
- Add state class selector (@jbouwh - #180667)
- Added sleep timer for air purifier to LG ThinQ. (@LG-ThinQ-Integration - #180881)
- Update Liebherr integration to cloud push (@mettolen - #179009)
- Make file_upload handle cancellations better (@emontnemery - #181163)
- Bump rapt-ble to 2.0.0 (@sairon - #181064)
- Add HassClimateSetFanMode intent for climate entities (@synesthesiam - #181310)
- Bump specialized-turbo to 0.8.3 (@JamieMagee - #181343)
- Use the asyncio client in Google Assistant SDK and raise it to platinum (@tronikos - #180939)
- Add Matter Boolean State Configuration alarm switches (@wardmatter - #173233)
- Migrate KNX telegram trigger to the trigger platform (@farmio - #181146)
- Bump Dropbox to platinum quality (@bdr99 - #181044)
- Add app_id attribute to webostv media player (@darkrain-nl - #181385)
- Set
PARALLEL_UPDATESto0for the Airly sensor platform (@bieniu - #181288) - Add support for Thread Integration to Display Icons for Homey TBRs (@wardmatter - #181395)
- Bump tesla-fleet-api to 1.12.4 (@Bre77 - #181410)
- Update zeroconf to 0.151.3 (@renovatebot - #181412)
- Update pylint (@renovatebot - #181418)
- Remove the lyngdorf 1.11 compatibility scaffolding (@fishloa - #180855)
- Bump teslemetry-stream to 0.13.1 (@Bre77 - #181411)
- Bump python-otbr-api to 3.0.0 (@LorbusChris - #181368)
- Update pnpm to 11.25.0 (@renovatebot - #181413)
- Use Opower’s import/export registers for grid statistics (@tronikos - #181286)
- Bump lyngdorf to 2.2.0 (@fishloa - #181415)
- Update govee lights local library to version 3.0.1 (@Galorhallen - #181204)
- Add switch platform to flow-it (@albertogeniola - #181386)
- Bump homevolt to 0.7.0 (@Danielhiversen - #181455)
- victron_gx: Bump victron-mqtt to 2026.9.2 (@tomer-w - #181452)
- Homevolt error handling (@Danielhiversen - #181463)
- Fix small issues in Google Weather (@tronikos - #181483)
- Bump python-google-weather-api to 0.0.7 (@tronikos - #181482)
- Bump python-google-drive-api to 0.2.0 (@tronikos - #181477)
- Make Google Drive backup listing resilient to unreadable metadata (@tronikos - #181478)
- Fix OpenAI prompt caching (@Shulyaka - #181472)
- Bump pysenz to 1.1.2 (@astrandb - #181435)
- Fix delayed Duco bypass target updates (@ronaldvdmeer - #181367)
- victron_gx: Map Victron timestamp sensor device class (@tomer-w - #181501)
- Drop redundant token error handling (@zweckj - #181079)
- Fix flaky test in sonos (@zweckj - #181506)
- Refactor tuya CZ/KG sensor descriptions (@epenet - #181504)
- Trim cached orjson fragments kept by registries (@emontnemery - #181240)
- Add Circuit Breaker (ZNJDQ) Fixture in Tuya integration (@tmunzer - #181509)
- Type the dlna_dms domain data with a HassKey (@David-Wu1119 - #181100)
- Type the dlna_dmr domain data with a HassKey (@David-Wu1119 - #181101)
- Use PressureConverter for Teslemetry TPMS streaming conversion (@Bre77 - #181508)
- Add switch platform to Tuya ZNJDQ (circuit breaker) (@tmunzer - #181517)
- Handle errors in easyEnergy price actions (@klaasnicolaas - #181434)
- Add specific gravity velocity sensor to rapt_ble (@sairon - #181518)
- Fix easyEnergy price period count sensor semantics (@klaasnicolaas - #181431)
- Make EnergyZero electricity sensor semantics interval-neutral (@klaasnicolaas - #181492)
- Speed up orjson buffer trimming (@emontnemery - #181522)
- Add Homevolt battery mode select (@Danielhiversen - #181465)
- Add sensor platform to Tuya ZNJDQ (circuit breaker) (@tmunzer - #181520)
- Add select platform to Tuya ZNJDQ (circuit breaker) (@tmunzer - #181531)
- Bump modbus-connection to 4.11.0 (@balloob - #181533)
- Fix swallowed exceptions in action handlers for NETGEAR LTE (@mstu01 - #181539)
- Bump tuya-device-handlers to 0.0.28 (@huangrenwei79 - #181525)
- Add quality scale file for Coolmaster (@dougrathbone - #178361)
- Bump modbus-connection to 4.11.1 (@balloob - #181544)
- Handle reconfigure_successful centrally (@zweckj - #180723)
- Add cooling status/information sensors to Weheat (@barryvdh - #181278)
- Fix lingering tasks in insteon properties and config tests (@Markus98 - #181555)
- Update zizmor (@renovatebot - #181494)
- Handle reauth_successful centrally (@zweckj - #181154)
- Add binary_sensor platform to NeoPool (@svasek - #180393)
- Fix swallowed exceptions in action handlers for ColorExtractor (@mstu01 - #181537)
- Fix swallowed exceptions in action handlers for Huawei LTE (@mstu01 - #181538)
- Report the Weheat cooling start conditions (@barryvdh - #181287)
- Fix llama.cpp streaming capability reporting (@rlrghb - #179886)
- Add ScorpionTrack last reported sensor (@Herbertmt978 - #178755)
- Describe Z-Wave JS triggers for the automation editor (@raman325 - #181129)
- Bump vizaio to 0.7.0 (@raman325 - #181568)
- Bump pyblackbird to 0.10 (@koolsb - #181565)
- Set easyEnergy quality scale to platinum (@klaasnicolaas - #181378)
- Protect mutable allowed_context_keys attribute in Selector classes (@jbouwh - #181449)
- Bump aioskybell to 23.12.0 (@JamieMagee - #181587)
- Bump nhc to 0.8.1 for Niko Home Control (@VandeurenGlenn - #181584)
- Add configurable EnergyZero electricity price interval (@klaasnicolaas - #181530)
- Add missing LitterHopper statuses to Whisker hopper status sensor (@matthewhadley - #181342)
- Bump energyzero to 5.1.0 (@klaasnicolaas - #181597)
- Add unit_of_measurement to climate and water_heater in ESPHome integration (@jhenkens - #168747)
- Return an error response when a REST API service call fails (@balloob - #181590)
- Always ensure a new image when shuffling (@karwosts - #181564)
- Type the private_ble_device coordinator with a HassKey (@David-Wu1119 - #181099)
- Update uv to 0.12.8 (@renovatebot - #181614)
- Add Litter-Robot 5 night light (@Legendberg - #174508)
- Expose UniFi Protect smart detection event source (@wi-adam - #179508)
- Register Subaru unlock_specific_door action in async_setup (@jpettitt - #181014)
- Fix swallowed exceptions in pi_hole action handlers (@hktitof - #181574)
- Add User-Agent to SMTP integration (@tr4nt0r - #181607)
- Add ScorpionTrack heading sensor (@Herbertmt978 - #181601)
- Add Tuya electricity meter fixtures (@huangrenwei79 - #181616)
- Fix cloud support package snapshots with verbose logging (@JamieMagee - #181399)
- Bump sofar-modbus to 0.10.0 (@darkrain-nl - #181624)
- Type the nmap_tracker device registry with a HassKey (@David-Wu1119 - #181102)
- Type the xiaomi_aqara multicast listener with a HassKey (@David-Wu1119 - #181123)
- Track meteo_france alert departments with a HassKey (@David-Wu1119 - #179062)
- Bump iseo-argo-ble to 0.9.8 (@FezVrasta - #181619)
- Add address masks to Sofar diagnostics (@darkrain-nl - #181628)
- Bump pysma 1.1.8 (@erwindouna - #181622)
- Fix stale Duco end times for continuous ventilation states (@ronaldvdmeer - #181529)
- Tolerate unloading a never-loaded config entry in EntityComponent (@honzup - #176594)
- Add Steinway & Lyngdorf virtual integration (@fishloa - #181432)
- Fix delayed Duco node updates after ventilation changes (@ronaldvdmeer - #181528)
- Gate Teslemetry polling-only vehicle entities behind vehicle metadata (@Bre77 - #181351)
- Move service registration in modbus async_setup (@epenet - #181273)
- Update pnpm to 12.2.1 (@renovatebot - #181419)
- Add
is_onstate toLunatoneLineBroadcastLightof lunatone (@MoonDevLT - #180897) - Bump whirlpool-sixth-sense to 2.0.3 (@abmantis - #180700)
- Add timedelta_string template function similar to time_since/time_until/relative_time (@cnotin - #169773)
- Fix todo item triggers after config entry reload (@romeovan - #181255)
- Add Tuya EV charger (qccdz) fixture (@o-borovets - #181453)
- Add number platform to Tuya qccdz (EV charger) (@o-borovets - #181641)
- Add select platform to Tuya qccdz (EV charger) (@o-borovets - #181642)
- Trim cached orjson fragments kept by non core containers (@emontnemery - #181511)
- Add sensor platform to Tuya qccdz (EV charger) (@o-borovets - #181640)
- Promote Homevolt exception translations (@Danielhiversen - #181651)
- Bump gh-aw to 0.88.2 (@zweckj - #181646)
- Bump aiosmtplib to 5.1.3 (@tr4nt0r - #181637)
- Add raw data to whirlpool’s diagnostics (@abmantis - #181650)
- Bump pyscorpiontrack to 0.1.2 (@Herbertmt978 - #181623)
- Bump pyrate-limiter to 4.5.0 (@tr4nt0r - #181638)
- Bump TP-Link Omada client to 1.5.10 (@rubempoli - #181495)
- Add Reolink sub channel support (@starkillerOG - #181570)
- Add integration for my-PV devices (@rrooggiieerr - #169872)
- Add support for Reply-To to SMTP integration (@tr4nt0r - #181040)
- Add UniFi Protect key fob (USL-FOB) support (@sbesh91 - #175630)
- Add diagnostic subsystem sensors to Duco (@ronaldvdmeer - #174577)
- Fix whirlpool initial availability (@abmantis - #181655)
- Type the ios registration data with a HassKey (@David-Wu1119 - #181122)
- Add number platform to Homevolt (@Danielhiversen - #181652)
- Add ScorpionTrack diagnostics (@Herbertmt978 - #181656)
- Add first / last / next / previous actions (@karwosts - #181050)
- Raise HomeAssistantError from Openhome action handlers (@bazwilliams - #181645)
- Add SwitchBot Lock Ultra Max support (@Onero-testdev - #180483)
- Allow removing a Sofar battery pack that is no longer wired (@darkrain-nl - #181283)
- Add to-do list platform to Apple iCloud (@FezVrasta - #181058)
- Bump WattWächter Plus to gold quality scale (@smartcircuits - #176783)
- Willow (Plant With Willow) integration with Home Assistant (@PaxPrz - #177366)
- Remove user-configurable polling interval from UpCloud (@KingLizard1020 - #181327)
- Bump aiowatttime to 2024.6.0 (@JamieMagee - #181580)
- Add a Wi-Fi signal strength sensor to Roomba (@jasondillingham - #181215)
- Raise lyngdorf to platinum (@fishloa - #180968)
- Add reconfigure flow to Jellyfin (@Xitee1 - #181521)
- Add charging switch to NexBlue integration (@nexblue-maintainer - #180372)
- Raise Imou to the silver quality scale (@Imou-OpenPlatform - #180999)
- Add all-in electricity price sensors to EnergyZero (@klaasnicolaas - #181602)
- Add set_client_name action to TP-Link Omada (@Mattheinrichs - #181450)
- Prevent making device unreachable (@emontnemery - #181208)
- Fix Z-Wave value updated trigger callback (@MartinHjelmare - #181691)
- Update uv to 0.12.9 (@renovatebot - #181696)
- Bump pyschlage to 2026.9.0 (@dknowles2 - #181701)
- Bump pydrawise to 2026.9.0 (@dknowles2 - #181702)
- Migrate tests away from tts.async_get_media_source_audio (@balloob - #181700)
- Add pump switch for Midea dehumidifiers (@mattrossman - #181257)
- Expose the Modbus connections over a websocket API (@balloobbot - #179937)
- Add GPT-6 Astra support (@Shulyaka - #181693)
- Update Govee local api to 3.1.0 (@Galorhallen - #181688)
- Add configurable HomeKit types for valve entities (@louwii17 - #177407)
- Bump caldav to 3.3.0a1 (@JamieMagee - #181600)
- Bump xiaomi-ble to 1.16.1 (@kmod-midori - #181713)
- Fix Reolink sub_channel in ptz_speed capability check (@starkillerOG - #181675)
- Bump gspread to 6.2.1 (@JamieMagee - #181692)
- Bump sofar-modbus to 0.11.1 (@darkrain-nl - #181663)
- Replace device_id tuple with string in rfxtrx (@elupus - #181436)
- Use snapshot_platform in airzone (@epenet - #181725)
- Fix flakey test for vesync (@zweckj - #181737)
- Switch gh-aw to permissions instead of token (@zweckj - #181736)
- Add support for GPT-Image-2.5 (@Shulyaka - #181735)
- Use snapshot_platform in abode (@epenet - #181732)
- Use library min/max kelvin in Tuya lights (@epenet - #181720)
- Support number entities for HomeKit valve durations (@louwii17 - #177410)
- Adjust homekit to not access DeviceEntry.config_entries (@emontnemery - #181744)
- Update translation for
Availability templatetoAvailability(@Petro31 - #181740) - Align IQS rules status for Mikrotik (@chemelli74 - #181742)
- Parameterize Duco discovery flow tests (@ronaldvdmeer - #181677)
- Adjust renault to not access DeviceEntry.config_entries (@emontnemery - #181727)
- Use get_device_and_config_entry_for_domain in zwave_js (@emontnemery - #180120)
- Use snapshot_platform in airzone_cloud (@epenet - #181728)
- Adjust hassio to not access DeviceEntry.config_entries (@emontnemery - #181739)
- Bump tuya-device-handlers to 0.0.29 (@huangrenwei79 - #181756)
- Exempt discovery and repair-issues for Mikrotik (@chemelli74 - #181752)
- Adjust lcn to not access DeviceEntry.config_entries (@emontnemery - #181724)
- Bump habluetooth to 7.0.0 (@FezVrasta - #181759)
- Cover the Sofar restored-total seeding guards (@darkrain-nl - #181662)
- Adjust shelly to not access DeviceEntry.config_entries (@emontnemery - #181765)
- Adjust velbus to not access DeviceEntry.config_entries (@emontnemery - #181743)
- Met office quality scale Bronze (@TCWORLD - #176330)
- Adjust monzo to not access DeviceEntry.config_entries (@emontnemery - #181751)
- Use Tibber device IDs for Data API entities (@Niek - #177527)
- Remove the name trie from the default conversation agent (@synesthesiam - #181776)
- Enable strict-typing for Midea (@chemelli74 - #181775)
- Centrally handle reconfigure successful for subentries (@zweckj - #181225)
- Bump poolsense to 0.1.0 (@JamieMagee - #181787)
- Fix battery_charging for Husqvarna Automower (@Thomas55555 - #181678)
- Update pnpm to 12.3.1 (@renovatebot - #181812)
- Use OpenAPI 3.1.0 format for Anthropic JSON schemas (@Shulyaka - #181803)
- Use snapshot_platform helper in advantage_air climate tests (@epenet - #181815)
- Use snapshot_platform helper in anthemav media player tests (@epenet - #181817)
- Use snapshot_platform helper in aemet weather tests (@epenet - #181816)
- Bump hyponcloud to 1.0.2 (@jcisio - #181772)
- Use snapshot_platform helper in atag climate tests (@epenet - #181823)
- Use attribute enums in integration tests (@epenet - #181824)
- Add Z-Wave JS node status, configuration parameter, and value conditions (@raman325 - #181133)
- Align IQS rules status for Midea (@chemelli74 - #181799)
- Fix atag climate snapshot (@justanotherariel - #181832)
- Bump iseo-argo-ble to 0.9.10 (@FezVrasta - #181828)
- Fix Flexit unit ID range (@troelde - #181788)
- Fix zwave_js condition._async_resolve_nodes (@emontnemery - #181841)
- Bump openai to 3.10.0 (@Shulyaka - #181779)
- Discover newly shared ScorpionTrack vehicles (@Herbertmt978 - #181659)
- Add air alert levels to Ukraine Alarm (@alexeytokar - #181558)
- Defer the next ViCare refresh to the API quota reset (@lackas - #181634)
- Add Besen charging current control (@moryoav - #180617)
- Add parent device name part to generated entity IDs (@arturpragacz - #179996)
- Fix Yoto card slot sensor name (@piitaya - #181844)
- Avoid duplicates when using HassShoppingListAddItem to modify shopping list (@AlCalzone - #179726)
- Add Button platform to my-PV integration (@rrooggiieerr - #181835)
- Add Bitvis Power Hub integration (@MandusBorjesson - #165457)
- Bump aioesphomeapi to 46.4.0 (@bdraco - #181856)
- Add support for ESPHome device-initiated connections (@bdraco - #180961)
- Use snapshot_platform helper in avea light tests (@epenet - #181822)
- Use snapshot_platform helper in adax climate tests (@epenet - #181820)
- Add property is_composite_device to DeviceEntry base class (@emontnemery - #181780)
- Wolflink: Add quality scale (@EnjoyingM - #174502)
- Add coroutines to Zonneplan’s coordinator (@erwindouna - #181106)
- Add outdoor temperature to MELCloud Home (@erwindouna - #181216)
- Improve error handling in Airly integration (@bieniu - #181718)
- Add Midea Water Heater platform (@rokam - #180693)
- Mark Hikvision binary sensors unavailable when the event stream drops (@ptarjan - #180225)
- Add Hikvision event platform for smart event detection targets (@ptarjan - #180841)
- Move service registration to async_setup in modbus (@epenet - #181845)
- Log device availability transitions in Midea (@chemelli74 - #181785)
- Add action exceptions to Midea (@chemelli74 - #181778)
- Bump pyimouapi to 1.4.0 (@Imou-OpenPlatform - #181707)
- Add charging mode select to Silla Prism (@ebaschiera - #181424)
- Add
RepairsFlowContexttoRepairsFlow(@iluvdata - #180942) - Update pnpm to 12.3.2 (@renovatebot - #181905)
- Update ruff (@renovatebot - #181906)
- Add missing Miele coffee system programs (@PrzemyslawKlys - #181171)
- Share Duco coordinator update test helper (@ronaldvdmeer - #181781)
- Consolidate Duco capability recovery tests (@ronaldvdmeer - #181916)
- Move telegram_bot services to dedicated services module (@epenet - #181917)
- Fix missing re-export in telegram_bot (@epenet - #181920)
- Raise error on deprecated Libre Hardware Monitor version (@Sab44 - #181928)
- Adjust search to not access DeviceEntry.config_entries (@emontnemery - #181888)
- Fix stop service in modbus (@epenet - #181915)
- Bump zhong-hong-hvac to 1.0.21 (@crhan - #181896)
- Refactor reolink util get_device_uid_and_ch (@emontnemery - #181922)
- Allow Nest fan mode when HVAC mode is off (@allenporter - #181911)
- Give ZhongHong a coordinator for polling and availability (@crhan - #181897)
- Add idle state and stop action to lawn mower entity (@piitaya - #181188)
- Adjust logbook to not access DeviceEntry.config_entries (@emontnemery - #181891)
- Add real-time updates for Roborock wet/dry vacuums (@piitaya - #180493)
- Adjust lg_netcast to not access DeviceEntry.config_entries (@emontnemery - #181726)
- Adjust unifiprotect to not access DeviceEntry.config_entries (@emontnemery - #181766)
- Adjust service helper to not access DeviceEntry.config_entries (@emontnemery - #181887)
- Add Flexit sensor entities (@troelde - #181882)
- Teach helpers returning device and config entry for domain about children (@emontnemery - #181923)
- Adjust hue to not access DeviceEntry.config_entries (@emontnemery - #181932)
- Expose full price validity range in EnergyZero service response (@klaasnicolaas - #181851)
- Add stop action to MQTT lawn mower (@piitaya - #181192)
- Make file_upload handle cancellations better (@emontnemery - #181711)
- Fix HomeKit cover direction when moved from outside HomeKit (@kmifka - #180889)
- Add Bluetooth control for Teslemetry vehicles (@Bre77 - #176296)
- Add endpoint device tree benchmark snapshots for multi-endpoint Z-Wave devices (@MartinHjelmare - #180435)
- Rejseplan api 2 0 (@Jawar19 - #152200)
- Handle transient transport errors in tesla_fleet setup (@asjoyner - #180218)
- Add Smartthings soundmode using networkaudio (@barryvdh - #168698)
- Ignore core authorization errors in translation checks (@JakeMartin-ICL - #180817)
- Fix reauth flow possibly pointing to different UniFi site (@robinsiep - #180936)
- Bump demetriek to 1.4.1 (@joostlek - #181873)
- Add Lametric model (@joostlek - #181980)
- Avoid accessing DeviceEntry.config_entries in tests (@emontnemery - #181945)
- Bump aioesphomeapi to 46.4.1 (@bdraco - #181996)
- Add system sensors to libreNMS (@mib1185 - #180300)
- Add re-auth and re-configure flow to libreNMS (@mib1185 - #180301)
- Add new sensor for fyta (@dontinelli - #180328)
- Allow multiple media directories for collection_image (@karwosts - #180337)
- Update uv to 0.12.10 (@renovatebot - #182003)
- Resolve the HomematicIP tilt channel by type instead of by position (@lackas - #180807)
- Add Besen status sensors (@moryoav - #180887)
- Bump sqlparse from 0.5.5 to 0.6.0 (@dependabot - #181966)
- Bump asyncssh from 2.21.0 to 2.23.1 (@dependabot - #181967)
- Bump h2 from 4.3.0 to 4.4.1 (@dependabot - #181968)
- Bump mcp from 1.26.0 to 1.28.1 (@dependabot - #181970)
- Update pnpm to 12.3.4 (@renovatebot - #182002)
- Bump qingping-ble to 1.1.6 (@cp296944 - #182009)
- Bump python-duco-connectivity to 0.16.0 (@ronaldvdmeer - #181934)
- Use OpenAPI 3.1.0 format for OpenAI JSON schemas (@Shulyaka - #181992)
- Migrate SAJ to a coordinator (@joostlek - #174437)
- Guard KNX climate fan_mode against out-of-range step values (@hktitof - #182007)
- Disconnect Bluetooth link on unexpected pairing-task exception in Teslemetry (@Bre77 - #181989)
- Subscribe Withings webhooks after Home Assistant has started (@frenck - #182017)
- Fix UniFi Protect doorbell messages expiring after 60 seconds (@RaHehl - #182008)
- Bump py-madvr2 to 1.9.1 (@JamieMagee - #181793)
- Assert retry_after propagation in teslemetry coordinator retry tests (@Bre77 - #181721)
- Bump probatio to 0.12.0 (@frenck - #182052)
- Skip the PS4 state write until the entity is added (@frenck - #182058)
- Require admin for the synology_dsm reboot and shutdown actions (@frenck - #182050)
- Bound Teslemetry Bluetooth disconnect timeout on unload (@Bre77 - #181988)
- Remove unshared ScorpionTrack vehicles automatically (@Herbertmt978 - #181852)
- Treat a running ViCare compressor as heating unless it cools (@frenck - #182026)
- Add Hob appliance type to Home Connect event sensors (@vcanuel - #182039)
- Update Yardian icons and string translations (@aeon-matrix - #180201)
- Preserve float precision in Powerwall charge sensor (@crt - #181991)
- Remove unused broken player fixture in squeezebox tests (@Anai-Guo - #181946)
- Bump python-kuma to 0.5.3 (@tr4nt0r - #182070)
- Include YAML hubs in the Modbus connections list (@balloob - #182024)
- Deprecate DeviceEnty.config_entries (@emontnemery - #181949)
- Fail schema validation for state conditions which do not support duration (@emontnemery - #174083)
- Require admin for the script/config websocket command (@frenck - #182046)
- Guard against out-of-spec values from Matter devices (@frenck - #182034)
- Handle Starlink alerts the dish does not report (@armin-azar - #181687)
- Bump neopool-modbus to 4.7.0 (@svasek - #182035)
- Reword Teslemetry config flow strings (@Bre77 - #182065)
- Move HTTP views into their own module in HTML5 integration (@tr4nt0r - #181889)
- Add a maximum volume sensor to Lyngdorf (@fishloa - #181800)
- Add device_id support for MCP Server (@Shulyaka - #182057)
- Allow to configure the FRITZ!Smarthome integration with an URL (@mib1185 - #179839)
- Bump nextdns to 5.1.0 (@bieniu - #182099)
- Add price type and interval options to EnergyZero energy price action (@klaasnicolaas - #181683)
- Bump aiolibrenms to 0.0.4 (@mib1185 - #182097)
- Bump probatio to 0.12.1 (@frenck - #182101)
- Remove deprecated openai_conversation services (@Shulyaka - #181750)
- Fix swallowed exceptions in mochad action handlers (@hktitof - #181869)
- Bump earn-e-p1 to 0.3.0 (@Miggets7 - #182104)
- Add L2 and L3 voltage and current sensors to EARN-E P1 Meter (@Miggets7 - #181833)
- Update Airly to Bronze (@bieniu - #181024)
- Update IQS rules list for Airly (@bieniu - #181924)
- Add quality scale file for vizio declaring platinum (@raman325 - #180066)
- Advertise required tool parameters in MCP Server (@balloob - #182105)
- Use probatio directly in tests, scripts and pylint plugins (@frenck - #182113)
- Remove myself from Midea codeowners (@caibinqing - #182114)
- Use probatio directly in core, auth, helpers and util (@frenck - #182107)
- Use probatio directly in all integrations (@frenck - #182112)
- Ban voluptuous imports in favour of probatio (@frenck - #182120)
- Bump env-canada to 0.20.0 (@michaeldavie - #182115)
- Bump victron-mqtt to 2026.9.4 (@tomer-w - #182128)
- Bump python-duco-connectivity to 0.17.0 (@ronaldvdmeer - #182118)
- Bump python-roborock to 7.7.1 (@lboue - #182134)
- Add Roborock Q10 position, zone cleaning, and goto support (@hmmbob - #177780)
- Bump modbus-connection to 4.12.0 (@balloob - #182149)
- Bump midea-local to 12.0.0 (@rokam - #182144)
- Bump total_connect_cline to 2026.9 (@austinmroczek - #182142)
- Midea: Add AC water pump running binary sensor (@peterdey - #182064)
- Add Tuya ksdjml video peephole camera category (@srescio - #182145)
- Bump Besen to 0.4.2 to support additional BS20 hardware variants (@moryoav - #180886)
- Suggest close matches for unknown YAML configuration keys (@frenck - #182124)
- Abort Teslemetry Bluetooth vehicle setup when no Bluetooth is available (@Bre77 - #182068)
- Add switch support for Tuya WG2 alarm panel (Duosmart C30) (@ChayoteJarocho - #165835)
- Require admin for the mqtt.publish and mqtt.dump actions (@frenck - #182045)
- Simplify generation of Tuya electricity sensor descriptions (@epenet - #181919)
- Match the known address first in Yale Access Bluetooth discovery (@frenck - #182018)
- Bump pnpm/action-setup from 6.0.10 to 6.1.0 (@dependabot - #182155)
- Add additional Tuya phase power sensors (@huangrenwei79 - #181549)
- Remove myself as wake_on_lan codeowner (@ntilley905 - #182153)
- Fix K‑series that need encrypted pairing in SamsungTV (@chemelli74 - #180619)
- Fix blocking client creation in twilio integration (@rasadregmi - #182157)
- Handle ConfigEntry errors in integration async_migrate_entry (@gjohansson-ST - #175349)
- Revert “Add Tuya ksdjml video peephole camera category” (@epenet - #182163)
- Add comment in core_files for telegram integration (@epenet - #182159)
- Type the twilio integration with a HassKey (@epenet - #182158)
- Improve search test coverage of synthetic device handling (@emontnemery - #182166)
- Improve logbook test coverage of synthetic device handling (@emontnemery - #182165)
- Improve hue test coverage of synthetic device handling (@emontnemery - #182164)
- LibreNMS reached silver on the IQS (@mib1185 - #182098)
- Move service registration to async_setup in lifx (@epenet - #181196)
- Move service registration to async_setup in zha (@epenet - #181186)
- Add SwitchBot Universal Remote Control battery sensor (@Onero-testdev - #174101)
- Add AirGradient measurement interval number (@samuelbles07 - #180319)
- Add energy site reconfigure flow to Teslemetry (@Bre77 - #181335)
- Add explicit device creation for DALI lines of lunatone (@MoonDevLT - #180895)
- Add Besen charger display temperature unit select (@moryoav - #180888)
- Add Tuya sfkzq water valve test fixture (@syl-craft - #182169)
- Move remaining lifx actions to services module (@epenet - #182172)
- Handle gone next flow in improv_ble provisioning (@balloob - #182147)
- Add TP-Link Omada controller device and update support (@rubempoli - #181993)
- Include disabled entities in search/related when requested (@shbatm - #178024)
- Bump aiocomelit to 3.0.0 (@chemelli74 - #182193)
- Drop “unsupported” suffix in Tuya device info (@epenet - #182171)
- Name the two ZhongHong fan speeds the climate component does not (@crhan - #182075)
- Add glass break device class for binary_sensor (@catellie - #181332)
- Re-read a ZhongHong unit shortly after commanding it (@crhan - #182074)
- Add date to response for IMAP fetch service call (@noantiq - #181604)
- Fix race in conversation test_todo_add_item_fr (@epenet - #182205)
- Move imap service registration to services module (@epenet - #182207)
- Unifi common data coordinator (@Kane610 - #181910)
- Bump modbus-connection to 4.12.1 (@balloob - #182181)
- Bump aiopowerwall to 0.3.2 (@Bre77 - #182180)
- Add number platform to NeoPool (@svasek - #180415)
- Fix lengthy docstring as followup to #175349 (@gjohansson-ST - #182215)
- Fix changes in Xbox API error response (@tr4nt0r - #182100)
- Replace pyipp with aioipp in the IPP integration (@brianegge - #182191)
- Fix Fibaro FGD212 dimmers not detected as dimmable lights (@rwijbenga - #181233)
- Add a
storage free spacesensor for the Shelly Camera (@bieniu - #182192) - Add Matter electrical power measurement frequency power factor (@lboue - #182177)
- Bump deebot-client to 18.6.0 (@Markus98 - #181918)
- Bump sofar-modbus to 0.13.0 (@darkrain-nl - #182218)
- Bump cryptography to 50.0.1, pyOpenSSL to 26.4.0 and thinqconnect to 1.0.14 (@Markus98 - #176676)
- Add new sensors and controls to JVC Projector integration (@kernelpanic85 - #181471)
- openevse: Update quality_scale (@c00w - #181248)
- Fix HTTP error code 409 in Pterodactyl by avoiding reading of utilization data if server is suspended (@elmurato - #181682)
- bosch_shc: add child lock switch entities (@mosandlt - #181423)
- Split Assist pipeline models and runtime state (@synesthesiam - #182214)
- Fix youtube stream playlist items and stop early to avoid paginating entire playlists (@Hugo1380 - #181321)
- Add config flow to Discogs integration (@zackwag - #180531)
- Bump asyncsleepiq to 1.7.2 (@derekcentrico - #182224)
- Add OpenEVSE select platform with override state entity (@firstof9 - #181302)
- Clear stale Freebox app token when registration fails (fixes #153988) (@avercoutere - #180699)
- Check custom integration requirements against Home Assistant in hassfest (@frenck - #181913)
- Energyflip API update V3->V4 (@DieEneSchrodinger - #179723)
- Bump victron-mqtt to 2026.9.5 (@tomer-w - #182245)
- Add De Dietrich integration (@DaanVervacke - #181516)
- Separate Assist pipeline controller and processor (@synesthesiam - #182219)
- Bump bleak-retry-connector to 4.7.1 (@bdraco - #182251)
- Bump tesla-fleet-api to 1.13.0 (@Bre77 - #182260)
- Bump aioautomower to 3.0.0 (@Thomas55555 - #182237)
- Bump sofar-modbus to 0.14.0 (@darkrain-nl - #182232)
- Type the motion_blinds multicast listener with a HassKey (@David-Wu1119 - #182233)
- Expose active Hue scene applied to grouped lights (@sliekens - #151883)
- Bump lunatone-rest-api-client to 0.10.1 (@MoonDevLT - #182300)
- Refactor command_line notify to async subprocess (@MartinHjelmare - #182282)
- scrape: fix unit_of_measurement field hardcoded to temperature units (@pallemannen - #181361)
- Split trigger helper (@abmantis - #182238)
- Add brianegge as code owner of the ipp integration (@brianegge - #182308)
- Bump aioshelly to 13.33.0 (@bieniu - #182312)
- Only offer Braava mop behavior where the robot reports it (@BrentRector - #179349)
- New integration: INDI Allsky (@TN-1 - #179123)
- Retry Smarty coordinator update after transient failure (@marcodutto - #182309)
- Fix PJLink service errors breaking automation continue_on_error (@hktitof - #182186)
- Add Axle Energy integration (@Herbertmt978 - #181960)
- Normalize empty LLM intent targets (@NewFuture - #179527)
- Do not log the received Foursquare push secret (@frenck - #182281)
- Bump PlexAPI to 4.18.2 (@JamieMagee - #181783)
- Use the Shelly Camera
snapshotendpoint to get a still image from the camera (@bieniu - #182139) - Bump python-hotspring to 3.0.0 (@Moustachauve - #182268)
- Bump python-duco-connectivity to 0.18.0 (@ronaldvdmeer - #182276)
- Don’t blow up in select services when there are no options (@emontnemery - #182313)
- bosch_shc: create cover entities for micromodule shutters and blinds (@mosandlt - #181416)
- Use Vizio state extended capability detection (@raman325 - #181569)
- Add reconfigure flow to collection_image (@karwosts - #182108)
- Bump pytradfri to 14.0.0 (@JamieMagee - #182250)
- Bump propcache to 0.5.4 (@bdraco - #182344)
- Fix missing f-string prefix in local_todo error message (@David-Wu1119 - #182361)
- Add my-PV reauth flow (@rrooggiieerr - #181674)
- Do not log the tracked location in NWS (@frenck - #182350)
- Remove workarounds for copilot skills (@abmantis - #182353)
- Fix missing f-string prefix in local_calendar error message (@David-Wu1119 - #182360)
- Fix missing f-string prefix in prowl error message (@David-Wu1119 - #182362)
- Fix missing f-string prefix in egauge error message (@David-Wu1119 - #182359)
- Update pnpm to 12.4.0 (@renovatebot - #182357)
- Do not log IBANs and account numbers in FinTS (@frenck - #182342)
- Update uv to 0.12.11 (@renovatebot - #182355)
- Bump voip-utils (@synesthesiam - #182339)
- Bump aioaxlevpp to 0.1.1 (@Herbertmt978 - #182336)
- Write the backup store with private=True so the backup password is not world-readable (@dbl-0 - #182259)
- Bump yarl to 1.25.1 (@bdraco - #182345)
- Do not log the Start.ca API key (@frenck - #182279)
- Bump aioipp to 0.19.3 and log IPP parse errors at warning level (@brianegge - #182334)
- Bump teslemetry-stream to 0.13.2 (@Bre77 - #182311)
- Add missing stabilized binary sensor description for Xiaomi BLE scales (@rasadregmi - #182328)
- KNX: Validate entity_category for read-only platforms (@farmio - #182141)
- Do not log the Xiaomi router password (@frenck - #182370)
- Bump neopool-modbus to 4.8.0 (@svasek - #182349)
- Add second Salda Smarty code owner (@marcodutto - #182379)
- Add async_retry_migration to Config Entries (@gjohansson-ST - #182054)
- Bump PySwitchbot to 2.9.0 (@zerzhang - #182303)
- Add therm (thm) as a native UnitOfEnergy unit (@virtitnerd - #179953)
- Add event platform to isy994 integration (@shbatm - #169782)
- Fix Glances to use dedicated httpx client with longer timeout and surface API error messages (@serl - #169689)
- Bump homematicip to 2.17.0 (@lackas - #182383)
- Bump lunatone-rest-api-client to 0.10.2 (@MoonDevLT - #182384)
- migrate volkszaehler to config flow (@StefanSchoof - #169500)
- Fix flaky FinTS account identifier logging test (@frenck - #182376)
- Add RGBICWW Light Bars support to switchbot (@Onero-testdev - #176485)
- Bump besen to 0.4.5 (@moryoav - #182194)
- Add page count sensors to IPP integration (@brianegge - #165570)
- Declare Subaru integration at bronze quality scale (@jpettitt - #178638)
- Bump solarman quality scale to silver (@Yves-Xu - #181836)
- Prevent removing the owner user (@agners - #182398)
- Bump github/codeql-action/analyze from 4.37.9 to 4.38.0 (@dependabot - #182372)
- Bump aiounifi to v96 (@jimstrang - #182415)
- Cleanup deprecated touchline YAML configuration (@mnordseth - #182331)
- Add notify entity to LaMetric (@joostlek - #181971)
- Move constants to const module in all core entity component integrations (@epenet - #182211)
- Bump aioindiallsky to V0.1.2 (@TN-1 - #182366)
- Update zizmor (@renovatebot - #182367)
- Bump github/codeql-action/init from 4.37.9 to 4.38.0 (@dependabot - #182371)
- Add climate platform to template integration (@Petro31 - #173033)
- Update infrared-protocols to 10.1.0 (@renovatebot - #182356)
- Add limit to usage prediction common control (@bgoncal - #182341)
- Fix typo in codeowner handle (@tr4nt0r - #182445)
- Exempt devices scale item for collection_image (@karwosts - #182444)
- Update uv to 0.12.12 (@renovatebot - #182447)
- Honor rate limit retry hint in Tesla Fleet vehicle coordinator (@Bre77 - #181661)
- Mark the Sofar integration as platinum quality scale (@darkrain-nl - #182291)
- Update IQS rules status for Midea (@chemelli74 - #181773)
- Use relative paths in configuration error messages (@emontnemery - #182427)
- Simplify Airly data update coordinator (@bieniu - #181938)
- Make LinkPlay followers mirror and control the group leader (@MagicMicky - #175589)
- Add Matter mock closure_roof_window fixture for Closure/ClosurePanel devices (@lboue - #182127)
- Improve tests of YAML config annotations (@emontnemery - #182457)
- Add Matter mock_closure_covering_lift fixture for Closure/ClosurePanel devices (@lboue - #182133)
- Remove the diagnostic entity category for Brother sensors (@bieniu - #182425)
- Gatus: Add icon translations for sensors (@TN-1 - #182475)
- Add iZone manual host entry to the user config flow (@Swamp-Ig - #178805)
- Bump fressnapftracker to 0.3.1 (@eifinger - #182495)
- Bump aiopowerwall to 0.4.0 (@Bre77 - #182454)
- Bump specialized-turbo to 0.8.4 (@JamieMagee - #182443)
- Bump samsungtvws to 3.0.6 (@chemelli74 - #182440)
- Bump librouteros to 4.2.2 (@chemelli74 - #182439)
- Bump teslemetry-stream to 1.0.1 (@Bre77 - #182368)
- Update python-slugify to 9.0.0 (@renovatebot - #182358)
- Add coordinator.py to RESTful component (@iluvdata - #178114)
- Bump pydanfossair to 1.0.0 (@madsvonqualen - #182277)
- Move ai_task service registration to services module (@epenet - #182462)
- Move assist_satellite service registration to services module (@epenet - #182463)
- Contain the download directory in telegram_bot.download_file (@frenck - #182460)
- Move valve service registration to services module (@epenet - #182459)
- Service exceptions for collection_image (@karwosts - #182442)
- Add salt setting to Midea (@chemelli74 - #182436)
- Improve testing for Midea (@chemelli74 - #182437)
- Cleanup climate and sensor in Midea (@chemelli74 - #182483)
- Change logging to debug in dnsip (@gjohansson-ST - #182502)
- Do not log the Telegram bot token (@frenck - #182452)
- Add AI switch to Midea (@chemelli74 - #182433)
- Keep existing HEOS group members when joining a player (@smitec11 - #182515)
- Split user flow init and data submission in heos config flow tests (@smitec11 - #182519)
- Add time remaining sensors to Midea (@chemelli74 - #182435)
- Add Gree Infrared integration (@Dr-Blank - #177189)
- Share async shell command core in command_line utils (@MartinHjelmare - #182352)
- Bump intents and add test (@synesthesiam - #182499)
- Add ToolResult type to the LLM API (@balloob - #182487)
- Translate Onkyo setup exceptions (@joshmcrty - #182532)
- Update uv to 0.12.13 (@renovatebot - #182553)
- Update ruff (@renovatebot - #182537)
- Update pnpm to 12.4.1 (@renovatebot - #182536)
- Add state_class to Monzo sensor descriptions (@luca-angemi - #182501)
- Add missing entity category in Midea (@chemelli74 - #182414)
- Add codeowner for Volkszaehler integration (@StefanSchoof - #182503)
- Fix division by zero error when calculating volume used percentage (@ogruendel - #182428)
- Split user flow init and data submission in met config flow tests (@smitec11 - #182522)
- Bump mitsubishi-comfort to 0.6.0 (@nikolairahimi - #182517)
- Bump cookidoo-api to 0.18.4 and persist the OAuth2 tokens (@FezVrasta - #181382)
- Reolink check if stream is supported (@starkillerOG - #182567)
- Add UniFi UPS battery telemetry (@jimstrang - #182423)
- Unifi/reconfiguration (@robinsiep - #182201)
- Bump home-assistant/builder/actions/build-image from 2026.06.0 to 2026.09.0 (@dependabot - #182558)
- Use ToolResult in anthropic (@balloob - #182542)
- Fix Yeelight ambilight failing to update while its color mode is not reported (@frenck - #182587)
- Split user flow init and data submission in ipp config flow tests (@smitec11 - #182589)
- Fix Hue MotionAware entities for zones covering the whole home (@frenck - #182586)
- Keep Brother counters and wear parts as diagnostic (@piitaya - #182591)
- Use ToolResult in ovhcloud_ai_endpoints (@balloob - #182550)
- Bump besen to 0.4.6 (@moryoav - #182520)
- Bump pysnooz to 0.10.0 (@JamieMagee - #182225)
- Add virtual integration Onida Infrared (@Dr-Blank - #182575)
- Add door warning to Midea (@chemelli74 - #182579)
- Add reconfigure flow to Mikrotik (@chemelli74 - #181763)
- Raise an error when the Kodi notification fails (@smitec11 - #182592)
- Import probatio directly instead of aliasing it as vol (@joostlek - #182595)
- Enumerate UniFi Protect entities from the public API and add switches to the API-key-only mode (@RaHehl - #181169)
- Bump besen to 0.4.7 (@moryoav - #182596)
- Clarify Axle Energy API error messages (@Herbertmt978 - #182569)
- Use ToolResult in litellm (@balloob - #182546)
- Use ToolResult in openai_conversation (@balloob - #182544)
- Use ToolResult in cloud (@balloob - #182543)
- Use ToolResult in todo (@balloob - #182540)
- Use ToolResult in google_generative_ai_conversation (@balloob - #182545)
- Use ToolResult in mcp (@balloob - #182541)
- Use ToolResult in open_router (@balloob - #182549)
- Use ToolResult in ollama (@balloob - #182548)
- Serve SVG media as attachments (@frenck - #182095)
- Use ToolResult in llama_cpp (@balloob - #182547)
- Use ToolResult in calendar (@balloob - #182539)
- Use ToolResult in the LLM helper, llm and homeassistant (@balloob - #182538)
- Bump debugpy to 1.8.22 (@frenck - #182603)
- Fix filter time moving average walking its whole window on every sample (@frenck - #182600)
- Type UniFi Protect entities against the public device model (@RaHehl - #182617)
- Move cover service registration to services module (@epenet - #182562)
- Move tts service registration to services module (@epenet - #182561)
- Move button service registration to services module (@epenet - #182563)
- Move scene service registration to services module (@epenet - #182564)
- Move lawn mower service registration to services module (@epenet - #182566)
- Move switch service registration to services module (@epenet - #182565)
- Use mock client in Airly tests (@bieniu - #182485)
- Cache English fallback translations for all components in a non-English batch (@MindFreeze - #182578)
- Read the Sofar meter counters from meter_energy (@darkrain-nl - #181729)
- Support attaching media from TTS sources in ntfy integration (@tr4nt0r - #182140)
- Retry Denon AVR setup on any receiver request error (@balloob - #182613)
- Move websocket registration to async_setup in HTML5 integration (@tr4nt0r - #181859)
- Bump aioharmony to 1.0.10 (@bdraco - #182642)
- Update pystiebeleltron to 0.8.0 (@ThyMYthOS - #182618)
- Deprecate ToolResultContent.tool_result (@balloob - #182551)
- Bump env-canada to 0.20.3 (@michaeldavie - #182650)
- Add codeowner to SMTP integration (@tr4nt0r - #182638)
- Mark disconnected UniFi Protect sirens and relays unavailable (@RaHehl - #182635)
- Bump midea-local to 12.1.0 (@rokam - #182624)
- Bump open-garage to 0.3.1 (@ziptbm - #182626)
- Upgrade to quality scale: silver (@karwosts - #182510)
- Gatus: Mark entity translations as complete (@TN-1 - #182479)
- Assert the translation metadata in the kodi notify error test (@smitec11 - #182605)
- Add groups configuration for CodeQL action (@silamon - #182418)
- Bump diematic-modbus to 0.8.0 (@DaanVervacke - #182597)
- Add sensoroverride to ViCare ventilation reason options (@misterboe - #182378)
- Use glass break device class in HomematicIP Cloud (@catellie - #182240)
- Remove hardcoded tool name from GetLiveContext prompt (@HariomGupta0 - #182111)
- Add the Current consumption attribute to the D-Link smart power plug integration (@matejpramnik - #182038)
- test(ecobee): use timezone-aware now in switch tests (@eseverson - #181987)
- Add image file to testingconfig (@tr4nt0r - #181959)
- Fix iCloud device tracker stale location by requesting an active locate on each poll (@radzio - #181731)
- Use bulk edit API to delete OurGroceries items (@ljmerza - #182402)
- Config entry integration methods returns None (@gjohansson-ST - #182429)
- Add required_domains to the cover open/close intents (@sappafrancesco - #181892)
- Stop forcing the Blink refresh on every poll (@Dextheking1 - #182639)
- Isolate CI-only hassfest tooling from the HA wheel index (@klaasnicolaas - #181782)
- Add required_domains to the cover open/close intents (@sappafrancesco - #181892)
- Update IQS to gold for Midea (@chemelli74 - #182580)
- Preserve Ring listener credentials during reauth and reconfigure (@thomasgregg - #182033)
- Update ical to 14.2.0 (@renovatebot - #182658)
- Reset Tesla Fleet energy history interval after rate limit backoff (@Bre77 - #182453)
- Use glass break device class in SimpliSafe (@catellie - #182241)
- Add hot water push functionality to opentherm_gw (@mvn23 - #182299)
- Use glass break device class in Z-Wave JS (@catellie - #182243)
- Fix Matter fan and light dividing by zero on out-of-spec device ranges (@frenck - #182645)
- Add delay_on and delay_off when configuring a binary sensor template helpers (@Petro31 - #181203)
- Resolve integration brand images before brand images (@joostlek - #182217)
- Bump anyio from 4.13.0 to 4.14.2 (@dependabot - #182665)
- Add brightness_pct beside brightness in the LLM live context (@jdavidbush - #182571)
- Expose listed emulated_hue entities when expose_by_default is off (@hktitof - #182129)
- Add MPPT entities for Fronius inverters with more than 4 modules (@farmio - #182305)
- Use glass break device class in Hive (@catellie - #182239)
- Handle unavailable UniFi configuration endpoint (@Kane610 - #182574)
- Track devolo Home Network Wi-Fi clients via the entity registry (@Shutgun - #182327)
- Suppress the placeholder water temperature on Flo valves without the sensor (@ajplotkin - #182004)
- Reuse an existing Supervisor system user instead of creating a duplicate (@agners - #182304)
- alexa_devices: ensure consistent naming (@jamesonuk - #182673)
- Bring every Vistapool module above 95% test coverage (@fdebrus - #182482)
- Fix thumbnails of Kodi PVR channels (@ksooo - #181947)
- Use batch device status updates in Imou coordinator (@Imou-OpenPlatform - #182471)
- Handle unrecognized Cync color modes without invalid fallback (@azuttre - #181081)
- Migrate the UniFi Protect sense sensors to the public API (@RaHehl - #182662)
- Add siren support to the UniFi Protect API key only mode (@RaHehl - #182610)
- Fix Ring switch setup crash on unknown doorbell chime type (@rasadregmi - #182375)
- Add instance ID to mobile_app get_config response (@bgoncal - #182644)
- Bump uiprotect to 16.12.0 (@RaHehl - #182670)
- Allow image_upload in the media selector config (@parkghost - #180452)
- alexa_devices: add person details to voice event (@jamesonuk - #182410)
- alexa_devices: remove stale values from known entities (@jamesonuk - #182401)
- Migrate GitHub Actions updates from Dependabot to Renovate (@frenck - #182668)
- Drop UniFi Protect helpers that uiprotect 16.12.0 now provides (@RaHehl - #182688)
- Bump pySmartThings to 4.0.3 (@joostlek - #182690)
- Bump nyt_games to 1.0.0 (@joostlek - #182689)
- Add tool metadata to the LLM API (@balloob - #182614)
- Add a common base class for Tuya entity descriptions (@epenet - #182283)
- Type the KNX UI entity configurations of the flat platforms (@farmio - #182067)
- Add diagnostics to Greencell integration (@BrzezowskiGC - #182178)
- Add precipitation forecast service to Environment Canada (@michaeldavie - #182135)
- Log a warning when a delayed voice command fails (@synesthesiam - #182492)
- Bump uiprotect to 16.13.0 (@RaHehl - #182725)
- Update awalsh128/cache-apt-pkgs-action digest to 2c09a5e (@renovatebot - #182742)
- Update @playwright/test to 1.63.0 (@renovatebot - #182743)
- Remove
Subscribed to Xbox Game Passbinary sensor from Xbox integration (@tr4nt0r - #182734) - Set tool metadata in humidifier (@balloob - #182703)
- Fix strict schema for structured output in openai_conversation (@Shulyaka - #182723)
- Bump knx-telegram-store to 0.14.0 (@martinhoefling - #182758)
- Set up all Hive platforms so unload and services stay consistent (@tomwilkie - #182765)
- async_listen and async_listen_once now errors if used with run_immediately (@gjohansson-ST - #182763)
- Bump brother to 6.2.0 (@bieniu - #182755)
- Bump aiomealie to 2.1.1 (@andrew-codechimp - #182749)
- Update subaru integration codeowners (@G-Two - #182732)
- Raise HomeAssistantError when a LIFX Cloud scene fails to activate (@hktitof - #182756)
- Fix swallowed exceptions in ifttt action handlers (@rasadregmi - #182747)
- Add binary sensors to NexBlue integration (@nexblue-maintainer - #182572)
- Add UniFi Protect numbers to the API key only mode (@RaHehl - #182726)
- New: Threema Integration (@LukasQ - #165993)
- Add a new integration for Theben Conexa smartmeter gateway (@mdluhosch - #174407)
- Use OpenAPI 3.1.0 format for ovhcloud_ai_endpoints (@Shulyaka - #182770)
- Add reauthentication to Monarch Money (@bradleyseanf - #182773)
- Use OpenAPI 3.1.0 format for MCP Server JSON schemas (@Shulyaka - #182767)
- Enable credential autofill for Monarch Money (@bradleyseanf - #182772)
- Normalize test fixtures for irm_kmi (@YP30 - #182692)
- Use OpenAPI 3.1.0 format for Ollama JSON schemas (@Shulyaka - #182761)
- Fix templated Mealie mealplan ID handling (@elp3dr0 - #182615)
- Mark Monzo as Platinum quality (@JakeMartin-ICL - #180813)
- Preserve native code interpreter items in openai_conversation (@Shulyaka - #182715)
- Carry the remote tool metadata in mcp (@balloob - #182712)
- Use
safety_identifierinstead of deprecateduserparameter for openai_conversation (@Shulyaka - #182695) - Fix remote calendar downloading and parsing its feed twice at setup (@frenck - #182630)
- Set tool metadata in climate (@balloob - #182701)
- bosch_shc: add presence simulation switch entity (@mosandlt - #182335)
- Add stale device removal to Mikrotik (@chemelli74 - #181760)
- Remove deprecated hass arg from service methods (@gjohansson-ST - #182760)
- Fix duplicate ID3 tag when tagging TTS audio (@bboe - #182800)
- Add additional DPT type values to KNX strings.json (@philippwaller - #182736)
- Update coverage to 7.16.1 (@renovatebot - #182806)
- Update astral-sh/setup-uv action to v8.3.2 (@renovatebot - #182807)
- Bump aiomealie to 2.1.2 (@andrew-codechimp - #182783)
- Raise an error when a myStrom plug action fails (@hktitof - #182782)
- Bump monarchmoneycommunity to 1.6.0 (@bradleyseanf - #182778)
- Write standard ID3 frames for TTS tags (@bboe - #182819)
- Omit ffmpeg encoder metadata from converted TTS audio (@bboe - #182833)
- Bump subarulink to 0.7.21 (@G-Two - #182733)
- Add additional image entities to Xbox integration (@tr4nt0r - #182775)
- Move select service registration to services module (@epenet - #182830)
- Bump opower to 0.22.1 (@tronikos - #182834)
- Don’t write coarser Opower statistics over finer ones (@tronikos - #182831)
- Fix ServiceValidationError import in eurotronic_cometblue tests (@epenet - #182828)
- Unpin setuptools and disable the linode and tank_utility integrations (@frenck - #182842)
- Add Tuya 20-channel meter fixture (@huangrenwei79 - #182848)
- Add field IDs to the bug report form (@timmo001 - #182854)
- Set tool metadata in light (@balloob - #182705)
- Update awalsh128/cache-apt-pkgs-action action to v1.6.3 (@renovatebot - #182812)
- Move update service registration to services module (@epenet - #182826)
- Move humidifier service registration to services module (@epenet - #182825)
- Move datetime service registration to services module (@epenet - #182822)
- Move remote service registration to services module (@epenet - #182818)
- Move number service registration to services module (@epenet - #182820)
- Move fan service registration to services module (@epenet - #182817)
- Move alarm_control_panel service registration to services module (@epenet - #182816)
- Move text service registration to services module (@epenet - #182824)
- Move date service registration to services module (@epenet - #182821)
- Move lock service registration to services module (@epenet - #182815)
- bosch_shc: rename Smart Plug routing switch to “Range extension” (@mosandlt - #182836)
- Move time service registration to services module (@epenet - #182823)
- Paj GPS dependecy upgrade to 0.4.1 (@skipperro - #182751)
- Set tool metadata in lawn_mower (@balloob - #182704)
- Set tool metadata in media_player (@balloob - #182707)
- Adjust lg_thinq energy polling schedule to mitigate server load (@LG-ThinQ-Integration - #182810)
- Fix irm_kmi serving stale data indefinitely after API errors (@YP30 - #182795)
- Bump async-upnp-client to 0.48.2 (@ssltg - #182573)
- Type the common part of KNX UI entity configurations (@farmio - #182728)
- Set tool metadata in fan (@balloob - #182702)
- Gatus: Disable diagnostic sensors by default (@TN-1 - #182476)
- Add sensor platform to INDI Allsky integration (@TN-1 - #182326)
- Prepare the breakup of the coordinator in LibreNMS (@mib1185 - #182388)
- Handle service device in diagnostics for Alexa Devices (@chemelli74 - #182788)
- Add cover speeds for SwitchBot curtains (@joostlek - #182416)
- Offer retry when Teslemetry Powerwall approval window expires (@Bre77 - #181334)
- bosch_shc: add whole-home open doors/windows summary sensor (@mosandlt - #182869)
- Use the hassio-provided Supervisor user for Unix socket auth (@agners - #182302)
- bosch_shc: add alarm bypass switch entities (@mosandlt - #182246)
- bosch_shc: add thermostat valve position entity (@mosandlt - #182249)
- Fix Portainer image update entity turning unknown after a container recreate (@frenck - #182648)
- Bump asyncssh to 2.24.0 (@frenck - #182889)
- Update codecov/codecov-action action to v7.1.0 (@renovatebot - #182896)
- Update uv to 0.12.14 (@renovatebot - #182895)
- Update unidiff to 1.0.1 (@renovatebot - #182894)
- Fix SleepIQ bed dedup removing real beds that share a sleeper (@derekcentrico - #182267)
- Update SQLAlchemy to 2.0.53 (@renovatebot - #182893)
- Include child devices when targeting a labelled parent device (@arturpragacz - #182664)
- Bump openrgb-python to 0.3.7 (@TRusselo - #182885)
- Use OpenAPI 3.1.0 format for llama_cpp (@Shulyaka - #182906)
- Bump gcal-sync to 9.2.0 (@ihralle - #182899)
- Enhance Liebherr integration with optimistic state updates for controls (@mettolen - #181603)
- Migrate LIFX to the lifx-async library (@Djelibeybi - #177944)
- Fix irm_kmi failing setup when language option is “none” (@YP30 - #182790)
- Bump uiprotect to 16.14.0 (@RaHehl - #182866)
- Bump boschshcpy to 0.6.10 (@mosandlt - #182872)
- Cleanup deprecated wake-on-lan for SamsungTV (@chemelli74 - #182771)
- bosch_shc: add Motion Detector 2 pet immunity switch entity (@mosandlt - #182924)
- Use OpenAPI 3.1.0 format for litellm (@Shulyaka - #182926)
- Log the table name in the Sisyphus sleep and wakeup messages (@David-Wu1119 - #182929)
- Remove stray placeholder from the Snoo unexpected exception log (@David-Wu1119 - #182930)
- Remove stray placeholder from the Homeworks unexpected exception log (@David-Wu1119 - #182931)
- indi_allsky: Refine sensor name (@TN-1 - #182932)
- Move keba service registration to services module (@epenet - #182208)
- Update pnpm to 12.4.2 (@renovatebot - #182959)
- Update SQLAlchemy to 2.0.54 (@renovatebot - #182960)
- Add select platform to Hot Spring (@Moustachauve - #182554)
- Bump plugwise to v1.14.7 (@bouwew - #182936)
- Update docker/build-push-action action to v7.4.0 (@renovatebot - #182962)
- Update IQS to gold for Mikrotik (@chemelli74 - #182785)
- Bump aioflo to 2026.9.4 (@BradKollmyer - #182953)
- Update uv to 0.12.15 (@renovatebot - #182961)
- Use radon device class for Aranet sensors (@parkerbxyz - #182952)
- Update Anthropic tests (@Shulyaka - #182940)
- Bump habluetooth to 7.1.2 (@bdraco - #182915)
- Bump Anthropic to 0.125.0 (@Shulyaka - #182976)
- bump pyfritzhome to 0.6.21 (@mib1185 - #182978)
- Use common string references for Low and High in Hot Spring (@Moustachauve - #183000)
- Update ruff (@renovatebot - #183020)
- Update codecov/codecov-action action to v7.1.1 (@renovatebot - #183019)
- Combine nested async with statements in timeout tests (@balloobbot - #183026)
- Move Broadlink to the asynchronous python-broadlink library (@DAB-LABS - #182999)
- Bump denon-rs232 to 4.2.3 (@balloobbot - #183025)
- Bump aioindiallsky to 0.1.3 (@TN-1 - #183017)
- Request Tuya QR code when the user confirms reauth (@balloobbot - #183035)
- Update syrupy to 6.1.1 (@renovatebot - #183023)
- Run mypy once for all enum_identity_compare cases (@balloob - #180461)
- Wait for background tasks in Pterodactyl binary sensor tests (@Markus98 - #183044)
- Bump teslemetry-stream to 1.0.2 (@Bre77 - #183038)
- Bump python-hotspring to 3.0.1 (@Moustachauve - #183024)
- Update docker/setup-buildx-action action to v4.4.1 (@renovatebot - #183022)
- Modify MariaDB versions and update comments (@silamon - #182942)
- Add bluetooth API to subscribe to every advertisement of a device (@bdraco - #182916)
- Refactor Duco polling to use the info overview (@ronaldvdmeer - #182087)
- Treat unknown homematicip_cloud device types as devices (@lackas - #182394)
- Add CodSpeed performance benchmarks for core hot paths (@frenck - #175143)
- Skip PR template check in Copilot review for dependency bot PRs (@Markus98 - #183049)
- Hoist Hikvision entity availability to the base entity (@ptarjan - #182306)
- Move VeSync display, child lock and auto off switches to Configuration (@ryan-ronnander - #183016)
- Report the running VeSync purifier fan level in preset modes (@ryan-ronnander - #183014)
- Add Thread support to LIFX integration via lifx-async bump (@Djelibeybi - #183009)
- Fix KNX telegram history timezone (@philippwaller - #183052)
- Add support for the Broadlink RM5 Plus (@DAB-LABS - #183058)
- Collect both gateway macs for Plugwise (@bouwew - #183030)
- bosch_shc: add Twinguard nightly promise (Heartbeat) switch entity (@mosandlt - #182874)
- Hand Fronius Modbus coordinators found by a re-scan to all platforms (@farmio - #181402)
- bosch_shc: add Thermostat Gen2 humidity warning switch entity (@mosandlt - #182875)
- fix(remote_calendar): provide diagnostics for entries that failed setup (@eseverson - #182958)
- Add API key reconfiguration to OpenAI Conversation (@bexelbie - #182798)
- Add maximum charging current number to Silla Prism (@ebaschiera - #182505)
- bosch_shc: add Smart Plug energy saving mode switch entity (@mosandlt - #182873)
- Set tool metadata in todo (@balloob - #182711)
- Set tool metadata in calendar (@balloob - #182710)
- Set tool metadata in assist_satellite (@balloob - #182708)
- Set tool metadata in vacuum (@balloob - #182706)
- Set tool metadata in intent_script (@balloob - #182709)
- Preserve recorder oldest timestamp across session recovery (@KingLizard1020 - #181615)
- Remove event entities for unsupported AQM devices for Alexa Devices (@jamesonuk - #174449)
- Add support for new NextDNS settings (@bieniu - #182102)
- Set tool metadata in the LLM helper, llm, homeassistant and intent (@balloob - #182700)
- Update recorder database versions for MariaDB 13.0 (@balloobbot - #183037)
- Set tool metadata in script (@balloob - #182713)
- Add new sensor to the Brother integration (@bieniu - #182799)
- Fix LIFX effect action defaults and clamp values above zero (@Djelibeybi - #182923)
- Drop Sofar meter sensors a model denies from the registry (@darkrain-nl - #182633)
- Tune the Sofar link from what its own polls measure (@darkrain-nl - #182229)
- Let Renovate bump the latest MariaDB LTS tested in CI (@frenck - #183064)
- Add Celsius temperature support to Hot Spring (@Moustachauve - #183068)
- Log the discovered device in the Philips TV zeroconf flow (@David-Wu1119 - #183060)
- Keep Home Connect temperature unavailable until its unit is known (@Niek - #182851)
- Add Matter BatChargeState to mock_battery_storage test fixture (@lboue - #183040)
- Bump sofar-modbus to 0.15.0 (@darkrain-nl - #183081)
- Bump homematicip to 2.18.0 (@lackas - #183053)
- Python roborock 7.9.0 (@lboue - #183051)
- Normalize line endings in test_enum_identity_compare.py (@darkrain-nl - #183089)
- Use atmospheric pressure device class for WeatherFlow station pressure (@ehn - #182996)
- Bump pysillaprism to 0.2.1 (@ebaschiera - #183093)
- Geosphere austria add advance warnings sensors (@a7rk - #178474)
- Update uv to 0.12.16 (@renovatebot - #183079)
- Update actions/checkout action to v7.0.1 (@renovatebot - #183078)
- Bump pyezvizapi to 1.0.5.0 (@sq9fk - #183034)
- Skip request stitching for ElevenLabs eleven_v3_conversational model (@frenck - #183055)
- Deduplicate TodoListEntity item updates on state writes (@allenporter - #182741)
- Fix proxmox snapshot button sending name instead of snapname (@Glockner00 - #183042)
- Add bosch_shc Motion Detector 2 tamper protection switch entity (@mosandlt - #183061)
- Let a Fronius power limit revert when Home Assistant stops (@farmio - #181388)
- Add water usage and temperature sensors for Tuya sfkzq devices (@syl-craft - #183047)
- Add voltage sensor support to PAJ GPS (@skipperro - #182992)
- Add node identify switches to Duco (@ronaldvdmeer - #182173)
- Add service action foundation and device time to NeoPool (@svasek - #182110)
- bosch_shc: add Motion Detector 2 automatic sensitivity switch entity (@mosandlt - #182937)
- bosch_shc: add Smoke Detector II intrusion-alarm switch entity (@mosandlt - #182787)
- Reduce UniFi polling for empty handlers (@Kane610 - #182880)
- Add Besen reauthentication flow (@moryoav - #182599)
- Add time platform to NeoPool (@svasek - #182432)
- Stream energy history totals in Teslemetry (@Bre77 - #182529)
- Fix Renovate types-* stub updates never being picked up (@frenck - #183116)
- Limit Renovate uv and pnpm updates to one PR per week (@frenck - #183120)
- Add number platform to my-PV integration (@rrooggiieerr - #182179)
- Mark Besen action exceptions as implemented (@moryoav - #183123)
- Update pnpm to 12.5.0 (@renovatebot - #183126)
- Bump arcam_fmj to 3.0.0 (@kernelpanic85 - #182956)
- Add common base entity to OpenEVSE (@firstof9 - #183108)
- Bump pyweatherflowudp to 1.6.2 (@ehn - #183121)
- Refactor bosch_shc ShutterContactSensor to entity-description pattern (@mosandlt - #183115)
- bosch_shc: add Thermostat silent mode switch entity (@mosandlt - #183062)
- bosch_shc: add Door/Window Contact II Plus vibration detection switch entity (@mosandlt - #183063)
- Set WeatherFlow display precision from sensor resolution (@ehn - #183106)
- Update uv to 0.12.17 (@renovatebot - #183133)
- Use atmospheric pressure device class for WeatherFlow vapor pressure (@ehn - #183110)
- Bump aioshelly to 13.34.0 (@bieniu - #183140)
- Bump google-genai to 2.25.0 (@IvanLH - #183157)
- Bump uiprotect to 16.16.1 (@RaHehl - #183147)
- Update CodSpeedHQ/action action to v5.2.1 (@renovatebot - #183168)
- Update astral-sh/setup-uv action to v10.1.0 (@renovatebot - #183164)
- Update github/codeql-action action to v4.38.1 (@renovatebot - #183151)
- Update types stubs (@renovatebot - #183152)
- Bump aioesphomeapi to 46.6.0 (@tronikos - #183150)
- Update hadolint/hadolint Docker tag to v2.15.1 (@renovatebot - #182813)
- Use the Sofar integration name in docstrings (@darkrain-nl - #183180)
- Remove the leftover Sofar serial number entity on upgrade (@darkrain-nl - #183179)
- Add a binary sensor platform to the Brother integration (@bieniu - #183084)
- Support PKCE S256 in OAuth server (@allenporter - #181957)
- Require an integration on an LLM tool (@balloob - #182714)
- Fix ProgettiHWSW integration for 16 relay/input boards (@gaspa85 - #182629)
- Fix schema for open_router (@Shulyaka - #182920)
- Add the Sofar library loggers to the manifest (@darkrain-nl - #183197)
- Assert the climate tool metadata (@balloob - #182805)
- Update python-slugify to 9.1.0 (@renovatebot - #183161)
- Bump smart-meter-texas to 0.5.6 (@grahamwetzler - #183203)
- Bump sofar-modbus to 0.15.1 (@darkrain-nl - #183205)
- Add tarrif and sustainability sensors to Zonneplan (@erwindouna - #183204)
- Bump panasonic-viera to 0.4.6 (@jerome-pouiller - #183194)
- Add Matter door lock one-touch locking switch (@mmmspatz - #183153)
- Add @jamesonuk as codeowner for Alexa Devices (@chemelli74 - #183214)
- husqvarna_automower_ble: Support the LawnMowerActivity.IDLE (@alistair23 - #183142)
- Keep configured hostname on Shelly zeroconf discovery (@chemelli74 - #183221)
- Rediscover moved Teslemetry Powerwall gateways through the cloud (@Bre77 - #182188)
- bosch_shc: bump boschshcpy to 0.6.13 (@mosandlt - #183219)
- Add UniFi Protect sensors to the API key only mode (@RaHehl - #182748)
- Remove deprecated
reasoning.encrypted_contentfor OpenAI (@Shulyaka - #182801) - Stop logging the webhook ID in mobile_app pending updates (@frenck - #182684)
- bosch_shc: add event platform (Motion Detector motion event) (@mosandlt - #183139)
- Read Teslemetry Powerwall authorized clients locally when paired (@Bre77 - #182528)
- Bump pyzonneplan to 0.1.3 (@erwindouna - #183215)
- Allow integration of the Shelly BLU TRV via a device other than the BLU Gateway (@bieniu - #182422)
- bosch_shc: add Micromodule Relay swap-inputs/outputs switch entities (@mosandlt - #183107)
- indi_allsky: Add remaining exposure data sensors and night binary sensor (@TN-1 - #182966)
- Remove support for Anthropic retired models (@Shulyaka - #182979)
- Keep Sofar diagnostics downloadable when the inverter is unreachable (@darkrain-nl - #183218)
- Cleanup is_hostname in Shelly (@chemelli74 - #183233)
- Add option to expose all LLM APIs in the MCP server (@balloob - #183054)
- Add dedicated media search and play LLM tools (@balloob - #183192)
- Bump momonga to 0.7.0 (@tayuki - #183254)
- Fix swallowed exceptions in prosegur action handlers (@fr33mang - #183247)
- Always add thinking effort for newer Anthropic models (@Shulyaka - #183236)
- Add standby switch to MELCloud Home (@erwindouna - #183237)
- Bump pyportainer to 1.0.46 (@erwindouna - #183229)
- Fix update listener deprecation warning in Shelly (@chemelli74 - #183212)
- Add user_id to assist pipelines (@felixschndr - #182750)
- Bump sofar-modbus to 0.16.0 (@darkrain-nl - #183261)
- Reject PKCE authorization codes in LinkUserView (@allenporter - #183213)
- Remove redundant Sofar None checks (@darkrain-nl - #183263)
- Let Renovate keep the PostgreSQL versions tested in CI up to date (@frenck - #183128)
- Add UniFi Protect events to the API key only mode (@RaHehl - #183230)
- Bump uiprotect to 17.0.0 (@RaHehl - #183178)
- Extend the Renovate allowlist with test tooling and pre-commit hooks (@frenck - #183132)
- Drop unused device info from ZHA entity references (@frenck - #183267)
- Add idle state to Husqvarna Automower (@Thomas55555 - #183227)
- Close the SMA session when the config flow fails to read the device info (@erwindouna - #183287)
- Disconnect tellduslive discovery signals on unload (@frenck - #183281)
- Disconnect roon media player signal on unload (@frenck - #183276)
- Disconnect wiffi entity signals on unload (@frenck - #183280)
- Disconnect keenetic_ndms2 router signal on unload (@frenck - #183279)
- Disconnect plaato webhook signal on unload (@frenck - #183277)
- Load the Silicon Labs flasher only when needed (@frenck - #183283)
- Close the SMA session when unloading the config entry (@erwindouna - #183286)
- Disconnect zwave_me light signals on unload (@frenck - #183278)
- Bump sofar-modbus to 0.17.0 (@darkrain-nl - #183282)
- Remove media player group state listener when entity is removed (@frenck - #183273)
- Remove demo event bus listener when entity is removed (@frenck - #183270)
- Reduce memory used by automation and script traces (@frenck - #183260)
- bosch_shc: add Camera Eyes camera light switch entity (@mosandlt - #183228)
- Remove entity platform from registry when unloading a config entry (@frenck - #183268)
- Add a reauth flow to the Airly integration (@bieniu - #182797)
- Disconnect netatmo public weather signal on unload (@frenck - #183275)
- Cancel nordpool listener update timer on unload (@frenck - #183304)
- Remove YAML import from PicoTTS integration (@tr4nt0r - #183300)
- Map Jellyfin search filter classes to item types (@balloob - #183252)
- Unload tellduslive platforms on config entry unload (@frenck - #183302)
- Only import Plex and Spotify in Sonos when they are set up (@frenck - #183285)
- Cancel statistics scheduled update when the sensor is removed (@frenck - #183326)
- Unsubscribe person from device trackers when it is removed (@frenck - #183319)
- Use freezer in Portainer tests (@erwindouna - #183301)
- Add test for non-uniform temperature steps in Liebherr integration (@mettolen - #183308)
- Remove songpal stop listener when the entity is removed (@frenck - #183323)
- Cancel nest media cleanup timer when unloading entry (@frenck - #183274)
- Cancel otp sensor update timer when the entity is removed (@frenck - #183320)
- Skip the API call delay in Waze tests (@erwindouna - #183316)
- Cancel running timer when the timer entity is removed (@frenck - #183325)
- Disconnect geo_json_events entity signals when the entity is removed (@frenck - #183322)
- Use child devices for Tuya multi-channel valves (@epenet - #182835)
- Remove cast stop listener when the entity is torn down (@frenck - #183321)
- Only discover SMA devices whose hostname contains a serial number (@erwindouna - #183299)
- Bump python-roborock to 7.12.0 (@lboue - #183340)
- Fix Duco controls not returning after node rediscovery (@ronaldvdmeer - #183294)
- Only import MQTT in Fully Kiosk once it is set up (@frenck - #183289)
- Bump peblar to 2.1.0 (@frenck - #183339)
- Fix Duco box entities missing after incomplete updates (@ronaldvdmeer - #183351)
- Bump pyoverkiz to 2.1.2 (@iMicknl - #183355)
- Guard for unnecessary translations and fix offenders (@zweckj - #183292)
- Bump Insteon dependencies (@connorgallopo - #183367)
- Remove the media class filter from the media search LLM tool (@balloob - #183344)
- Update onvif_parsers to 2.5.0 (@jterrace - #183363)
- Bump samsung-exlink to 1.1.2 (@balloobbot - #183347)
- Use fixed SMA scan interval (@erwindouna - #183378)
- Mark searchable Music Assistant media items with can_search (@balloob - #183376)
- Let the media search LLM tool search inside a result (@balloob - #183380)
- Update pipdeptree to 4.2.5 (@renovatebot - #183390)
- Update license-expression to 30.4.4 (@renovatebot - #183389)
- Update prek to 0.5.3 (@renovatebot - #183402)
- Update tqdm to 4.70.1 (@renovatebot - #183404)
- Update PyGithub to 2.10.0 (@renovatebot - #183403)
- Move water_heater service registration to services module (@epenet - #183409)
- Move siren service registration to services module (@epenet - #183411)
- Move climate service registration to services module (@epenet - #183410)
- Move weather service registration to services module (@epenet - #183405)
- Bump yoto-api to 4.4.2 (@piitaya - #183418)
- Move notify service registration to services module (@epenet - #183415)
- Fix Jellyfin search results and support search inside artists (@balloob - #183393)
- Use live remote domain for the cloud remote UI URL (@balloob - #183284)
- Move image_processing service registration to services module (@epenet - #183407)
- Move image service registration to services module (@epenet - #183406)
- Improve search inside Squeezebox browse results (@balloob - #183394)
- Move media_player service registration to services module (@epenet - #183416)
- Match ESPHome media player features to native API commands (@balloob - #183397)
- Do not expose search on ESPHome media players (@balloob - #183396)
- Return matching folders from local media search (@balloob - #183388)
- Limit and rank Radio Browser search results (@balloob - #183387)
- Fix Overkiz heat recovery ventilation crash without ventilation mode state (@iMicknl - #183382)
- Remove unused SMA constants (@erwindouna - #183422)
- Move vacuum service registration to services module (@epenet - #183417)
- Bump pyrainbird from 6.5.0 to 6.6.0 (@pavandave - #183391)
- Add Matter multi-endpoint device topology benchmark test (@MartinHjelmare - #183427)
- Bump modbus-connection to 4.12.3 (@balloob - #183426)
- Bump solaredged to 0.2.4 (@frenck - #183429)
- Extract camera stream image helpers into helper module (@epenet - #183428)
- Share attr property objects across entity classes (@frenck - #183259)
- Only import MQTT in MySensors once it is set up (@frenck - #183290)
- Expose Ring last recording timestamp (@thomasgregg - #181480)
- Extract todo entity and item model into entity module (@epenet - #183432)
- Remove deprecated entity_id template variable from camera filenames (@epenet - #183439)
- Add default support to object selector fields (@nokside - #179810)
- Extract conversation config intent parsing into util module (@epenet - #183434)
- Add exception translations to EnergyID (@Molier - #183437)
- Bump energieleser to 0.1.7 (@AjinkyaGokhale - #183444)
- Remove SolarEdge Local integration (@frenck - #183446)
- Move todo service registration to services module (@epenet - #183441)
- Refactor Z-Wave multi endpoint device benchmark snapshot (@MartinHjelmare - #183442)
- Perform sync when device list changes in Alexa Devices (@jamesonuk - #183478)
- Bump uiprotect to 17.5.0 (@RaHehl - #183476)
- Bump ouman-eh-800-api to 1.1.0 (@Markus98 - #183461)
- Remove Travis-CI integration (@frenck - #183474)
- Remove Sigfox integration (@frenck - #183477)
- Remove Dublin Bus integration (@frenck - #183481)
- Move camera service registration to services module (@epenet - #183438)
- Remove Orange and Rockland Utility (ORU) integration (@frenck - #183483)
- Add Osram Infrared integration (@freeDom- - #173250)
- Revert “Add user_id to assist pipelines” (@balloob - #183484)
- Use numbered list for review skill summary (@abmantis - #183488)
- Add UniFi Protect relay input binary sensors (@igoraugustynski - #179905)
- Bump tuya-device-handlers to 0.0.31 (@epenet - #183440)
- Bump victron-ble-ha-parser to v0.8.0 (@rajlaud - #183492)
- Adjust CI to always include dependent integrations (@epenet - #182182)
- Bump solaredged to 0.3.0 (@frenck - #183445)
- Only import MQTT in Axis once it is set up (@frenck - #183288)
- Bump probatio to 0.12.3 (@frenck - #183510)
- Sanitize Sonos diagnostics (@jjlawren - #183486)
- Reject and report an area set on a device’s main entity (@arturpragacz - #182458)
- Update nibe to 2.25.0 (@elupus - #183512)
- Update IQS to Silver for Airly integration (@bieniu - #183324)
- Promote Besen to Silver quality (@moryoav - #183162)
- Bump python-slugify to 9.1.2 (@rafaelborja - #183399)
- Use freezer in Portainer new endpoint test (@erwindouna - #183334)
- Add O General virtual integration (@Dr-Blank - #183090)
- Update SMA host from DHCP discovery (@erwindouna - #183335)
- Fix intelliclima fan turn on behaviour (@dvdinth - #183187)
- Abort Harmony options flow when the entry is not loaded (@frenck - #182622)
- Remove Zestimate integration (@frenck - #183507)
- Bump solaredged to 0.4.0 (@frenck - #183515)
- Bump onvif-zeep-async to 4.3.0 (@bdraco - #183519)
- Speed up hassfest dependencies plugin (@erwindouna - #183500)
- Remove Melnor RainCloud integration (@frenck - #183505)
- Report SolarEdge storage that only the DER block knows about (@frenck - #183516)
- Fix ONVIF setup being cancelled by a snapshot that never completes (@frenck - #182628)
- Fix Modbus entities holding up Home Assistant startup while their device is unreachable (@frenck - #182621)
- Put the control blocks in the SolarEdge Modbus diagnostics (@frenck - #183508)
- Cache hassfest strings schema (@erwindouna - #183501)
- Add Austroflamm virtual integration (@frenck - #183520)
- Add HETA virtual integration (@frenck - #183523)
- Add EcoSpar virtual integration (@frenck - #183521)
- Add HAAS+SOHN virtual integration (@frenck - #183522)
- Update astral-sh/setup-uv action to v10.2.0 (@renovatebot - #183528)
- Respect nature from library (@elupus - #183513)
- Fix SFTP Storage removed-directory debug log (@David-Wu1119 - #183530)
- Do not cache Matter device info forever (@frenck - #183341)
- Add repair issue for unsupported go2rtc server version (@BilalAtique - #183171)
- Fix Teslemetry tonneau cover for streaming Cybertrucks (@Bre77 - #183430)
- Remove Etherscan integration (@frenck - #183509)
- Add next_name_part to registry entries (@arturpragacz - #181551)
- Fix Teslemetry streaming binary sensors restoring unknown as off (@Bre77 - #183451)
- Fix Reolink reconfigure and reauth for a device that moved to its other network interface (@frenck - #182641)
- Bump python-aidot to 0.3.58 (@s1eedz - #183392)
- Add diagnostics to Rain Bird (@pavandave - #183057)
- Fix friendly names for empty entity name overrides (@piitaya - #181576)
- Update pre-commit hook cdce8p/python-typing-update to v0.8.1 (@renovatebot - #183401)
- Fix entity registry next name part test (@arturpragacz - #183544)
- Fix Teslemetry cabin overheat protection temperature for streaming vehicles (@Bre77 - #183420)
- Retry Teslemetry setup on connection errors (@Bre77 - #183449)
- Add KNX dashboard status translations (@philippwaller - #183056)
- Add diagnostics for Besen (@moryoav - #183327)
- Bump tesla-fleet-api to 1.17.0 and aiopowerwall to 0.4.1 (@Bre77 - #183541)
- Construct a DeviceInfo object in openrgb (@epenet - #183561)
- Update coverage to 7.16.2 (@renovatebot - #183546)
- Update github/codeql-action action to v4.38.2 (@renovatebot - #183547)
- Update prek to 0.5.4 (@renovatebot - #183548)
- Update ruff (@renovatebot - #183549)
- Update uv to 0.12.20 (@renovatebot - #183551)
- Update zeroconf to 0.151.5 (@renovatebot - #183552)
- Update dawidd6/action-download-artifact action to v26 (@renovatebot - #183554)
- Fix InfluxDB dropping a batch when a string field contains a line break (@frenck - #182640)
- Update pylint-per-file-ignores to 4.0.0 (@renovatebot - #183555)
- Update url-normalize to 3.0.1 (@renovatebot - #183550)
- Fix flaky CI unit test in steam_online integration (@jbouwh - #183564)
- Refactor MQTT climate and water heater setpoint handling (@jbouwh - #183539)
- Pass config_entry_id directly when updating an MQTT device (@epenet - #183558)
- Remove pre-commit python-typing-update hook (@cdce8p - #183563)
- Construct a DeviceInfo object in flux_led (@epenet - #183560)
- Reset MQTT climate single or range setpoints when the other is set (@jbouwh - #183540)
- Bump yoto-api to 4.5.0 (@piitaya - #183568)
- Remove De Dietrich integration (@DaanVervacke - #183545)
- Handle Yoto status request errors (@piitaya - #183570)
- Pass hw_version to the DeviceInfo constructor in aprilaire (@epenet - #183576)
- Set the sma sensor name once instead of in a name property (@epenet - #183577)
- Allow users to update their own name and picture (@frenck - #183368)
- Build the switchbot connections before constructing the DeviceInfo (@epenet - #183578)
- Construct the isy994 DeviceInfo once manufacturer and model are known (@epenet - #183581)
- Log the fetched device name in airq (@epenet - #183580)
- Use logical CPUs for pytest workers in CI (@erwindouna - #183566)
- remove 2^32 spikes from enphase_envoy daily production and consumption values (@catsmanac - #183498)
- Construct DeviceInfo with keyword arguments in bluetooth (@epenet - #183575)
- Bump pyportainer to 1.0.47 (@erwindouna - #183582)
- Skip Teslemetry streaming setup for polling vehicles (@Bre77 - #183455)
- Fix Portainer prune images until description (@erwindouna - #183584)
- Extract calendar validators and dict factories into helper module (@epenet - #183433)
- Extract light param processing into helper module (@epenet - #183435)
- Move conversation service registration to services module (@epenet - #183447)
- Fix Teslemetry target temperature for right-hand drive streaming vehicles (@Bre77 - #183421)
- Move calendar service registration to services module (@epenet - #183589)
- Notice a SolarEdge Modbus control block that only answers later (@frenck - #183365)
- Offer the Peblar Custom Solar smart charging mode (@frenck - #183359)
- Bump pyzonneplan to 0.2.0 (@erwindouna - #183592)
- Fix Teslemetry third-row seat heaters on Model X without a third row (@Bre77 - #183473)
- Add esphome/get_device_capabilities websocket command (@MindFreeze - #180135)
- Move light service registration to services module (@epenet - #183591)
- Fix flaky test_get_image_rotated (@epenet - #183598)
- Add myself to ESPHome codeowners (@arturpragacz - #183597)
- Drop unused restore state snapshots from memory (@frenck - #183342)
- Add Tuya indexed phase sensors as child devices (@huangrenwei79 - #182161)
- Make the device class slot enum order deterministic (@tbrasser - #182764)
- Raise SolarEdge Modbus to the platinum quality scale (@frenck - #183357)
- Add Tuya switch platform support for category hwsb (@alainmic - #183499)
- Add UniFi Protect binary sensors to the API key only mode (@RaHehl - #182661)
- AQM tests in Alexa Devices (@jamesonuk - #182678)
- Translate Teslemetry command connection errors (@Bre77 - #183457)
- Only create the Teslemetry battery level sensor for sites with a battery (@Bre77 - #183454)
- Use the energy site timezone in the Teslemetry tariff calendar (@Bre77 - #183456)
- Fix Teslemetry streaming media player state while driving (@Bre77 - #183452)
- Recover Teslemetry Powerwall energy-site setup failures in-flow (@Bre77 - #181644)
- Bump probatio to 0.12.4 (@frenck - #183607)
- Let Renovate update pydantic, including its pin in CONSTRAINT_BASE (@frenck - #183135)
- Only update astroid on its own for patch releases in Renovate (@frenck - #183306)
- Fix myUplink select platform failing on decimal enum values (@frenck - #182602)
- Disconnect homekit reload dispatcher when start did not finish (@frenck - #183303)
- Use config entry auth for Yoto (@piitaya - #183569)
- chore(inkbird): bump inkbird-ble to 1.7.1 (@wangwillian0 - #183527)
- Accept the map tiles access token in a header (@bramkragten - #183611)
- Replace getattr lookups in Sofar with typed accessors (@darkrain-nl - #183295)
- Add started and restart count sensors to Portainer containers (@erwindouna - #183225)
- Add update stack button to Portainer (@erwindouna - #183231)
- Add binary platform to Zonneplan (@erwindouna - #183217)
- Add out of memory binary sensor to Portainer (@erwindouna - #183224)
- Handle Zonneplan rate limit and API errors (@erwindouna - #183594)
- Bump energyid-webhooks to 0.0.16 (@Molier - #183443)
- Remove YAML import in OpenEVSE (@firstof9 - #183379)
- Handle Anthropic stop reasons (@Shulyaka - #183384)
- Give intent match failures a message instead of a repr (@synesthesiam - #182343)
- Add diagnostics to KACO Modbus (@g4bri3lDev - #181771)
- Bump serialx to 1.11.0 (@puddly - #183625)
- bosch_shc: add Smoke Detector alarm event entity (@mosandlt - #183232)
- Keep discovery flows the user is configuring when a device goes quiet (@bdraco - #183181)
- bosch_shc: add Outdoor Camera Gen2 privacy-mode switch entity (@mosandlt - #183138)
- Add a fan platform for the HomematicIP ventilation actuator (@lackas - #183091)
- bosch_shc: add number platform (Micromodule Relay pulse length) (@mosandlt - #183136)
- Fix Minecraft Server config flow for Legacy Java Edition servers (@elmurato - #181948)
- fix: victron forecast local day (@AndyTempel - #183001)
- Include device id in the conversation intent cache key (@synesthesiam - #183628)
- Update add-on state from Supervisor state change events (@agners - #180015)
- Bump PyViCare to 2.63.0 (@lackas - #183644)
- Bump uiprotect to 17.6.0 (@RaHehl - #183642)
- Write the HomematicIP Cloud config dump in the executor (@David-Wu1119 - #183623)
- Close Anthropic connection on service cancellation (@Shulyaka - #183640)
- Bump zha and zha-quirks to 2.3.0 (@puddly - #183665)
- Don’t log reconnect errors while a device reboots after OTA (@chemelli74 - #183664)
- indi_allsky: Add dynamic hardware sensors and host CPU temperature (@TN-1 - #182989)
- smarttub: add diagnostics support (@mdz - #182809)
- Bump tesla-fleet-api to 1.17.1 (@Bre77 - #183672)
- Translate MELCloud Home zone climate name (@erwindouna - #183647)
- Add month-to-date usage sensors to Zonneplan (@erwindouna - #183216)
- Add ‘select_image’ action to collection_image (@karwosts - #183317)
- Return METHOD_NOT_FOUND for unsupported MCP methods in mcp_server (@allenporter - #183350)
- Add Run Program Buttons in Rainbird (@pavandave - #183013)
- Restore Ness Alarm default scan interval to 60 seconds (@bastreck - #183101)
- Process dnd updates as push requests in Alexa Devices (@jamesonuk - #178244)
- Add new Vitesy integration (@chemelli74 - #181865)
- Split user flow init and data submission in bluetooth config flow tests (@tr4nt0r - #183656)
- Split user flow init and data submission in energenie_power_sockets config flow tests (@tr4nt0r - #183658)
- Reuse pytest counts cache across requirement changes (@erwindouna - #183572)
- Split user flow init and data submission in ambient_station config flow tests (@tr4nt0r - #183654)
- Split user flow init and data submission in airvisual config flow tests (@tr4nt0r - #183653)
- Split user flow init and data submission in cert_expiry config flow tests (@tr4nt0r - #183657)
- Fix alert not firing when the watched entity is already in the alert … (@smessmer - #181218)
- Tell Copilot expired YAML import removal isn’t breaking (@erwindouna - #183680)
- Bump pyeconet to 0.3.1 (@JamieMagee - #183633)
- Add latest release downloads sensor to GitHub (@moryoav - #183679)
- bump bosch-alarm-mode2 to v0.4.11 (@sanjay900 - #183674)
- Remove Splunk YAML import (@Bre77 - #183678)
- Fix flaky proxmoxve new node test (@epenet - #183683)
- Fix race when registering Prometheus metrics (@epenet - #183608)
- Skip subscribe cooldowns in slow MQTT tests (@erwindouna - #183684)
- Fix flaky ista_ecotrend statistics import test (@epenet - #183685)
- Redact serial numbers and tokens in Teslemetry diagnostics (@Bre77 - #183471)
- Fix flaky folder_watcher event entity test (@epenet - #183686)
- bosch_shc: add Shutter Contact II bypass timeout number (@mosandlt - #183638)
- Log MELCloud Home telemetry unavailability once (@erwindouna - #183649)
- Extend script continue_on_error suppression when calling actions (@emontnemery - #168685)
- Bump simplepush to 3.8.0 (@tymm - #183596)
- Generate stream test frames as uint8 (@erwindouna - #183689)
- Mark generic_thermostat as frozen (@emontnemery - #183690)
- Wait for the recording thread in Assist saved audio test (@erwindouna - #183692)
- Set up only the demo sensor platform in negative state test (@erwindouna - #183688)
- Skip real-time transitions in Snooz tests (@erwindouna - #183691)
- Bump tesla-fleet-api to 1.17.2 (@Bre77 - #183694)
- Document legacy Tuya unique_id format (@epenet - #183695)
- Add WAN3 latency sensors to UniFi Network (@sdelmas - #183620)
- Include parent device in computed entity name (@arturpragacz - #183610)
- Update pydantic to 2.13.5 (@renovatebot - #183668)
- Add binary_sensor platform to Vitesy (@chemelli74 - #183700)
- Remove unused logger from Fast.com (@erwindouna - #183705)
- Remove unused logger from Tado entity (@erwindouna - #183706)
- Catch invalid address lookup responses in waze_travel_time (@eifinger - #183703)
- Skip state change wait in emulated_hue cover tests (@erwindouna - #183687)
- Fix Teslemetry cruise follow distance on unknown values (@Bre77 - #183472)
- Fix Teslemetry windows cover going unknown after restart (@Bre77 - #183468)
- Ignore non smarthome capabile device during discovery in FRITZ!SmartHome (@mib1185 - #183708)
- Bump aiovitesy to 1.3.0 (@chemelli74 - #183704)
- Fix flaky SwitchBot device initialization test (@erwindouna - #183709)
- Update pyotp to 2.10.0 (@tr4nt0r - #183667)
- Handle MELCloud Home climate action errors (@erwindouna - #183646)
- Build the ViCare fan attributes per entity (@lackas - #183567)
- Use price_at in Zonneplan price sensors (@erwindouna - #183593)
- Require the location scope for Teslemetry location sensors (@Bre77 - #183467)
- Fix JVC Projector diagnostic entities showing unavailable (@kernelpanic85 - #183526)
- Fire UniFi Protect vehicle events for line crossings (@RaHehl - #183372)
- Fix error in webhook reconfiguration flow when cloudhook already exists (@tr4nt0r - #183183)
- Log the number of xdist workers in pytest runs (@erwindouna - #183682)
- Add button platform to Vitesy (@chemelli74 - #183707)
- bosch_shc: add Smart Plug energy-saving power threshold number (@mosandlt - #183699)
- Remove legacy Teslemetry energy sensors (@Bre77 - #183043)
- Bump python-aidot to 0.3.59 (@s1eedz - #183677)
- Use probatio.EnsureList for cv.ensure_list (@frenck - #183635)
- Fix Teslemetry climate keeper preset for polling vehicles (@Bre77 - #183681)
- Split user flow init and data submission in OwnTone (forked_daapd) config flow tests (@tr4nt0r - #183716)
- Fix Teslemetry tariff periods ending on Monday (@Bre77 - #183465)
- Report unexposed entities as an error in HassGetState (@synesthesiam - #183627)
- Add select platform to Vitesy (@chemelli74 - #183697)
- Fix Tile timestamps shifted by the local UTC offset (@BilalAtique - #183639)
- Bump pyweatherflowudp to 1.6.3 (@ehn - #183671)
- Handle invalid JSON response in Waze Travel Time (@chemelli74 - #183660)
- Add repair issue for unknown station in WAQI (@chemelli74 - #182612)
- Add B1 oven sensors to Midea (@qfina - #183537)
- smarttub: correct stale quality_scale.yaml entries (@mdz - #183669)
- Fix flaky WeMo update lock tests (@erwindouna - #183713)
- Add UniFi Protect selects to the API key only mode (@RaHehl - #182744)
- Fix missing media player for a new console added at runtime (@scardus - #182883)
- indi_allsky: Add image platform for keogram and star trail images (@TN-1 - #182970)
- Split user flow init and data submission in guardian config flow tests (@tr4nt0r - #183727)
- Fix flaky nest test_remove_stale_media (@epenet - #183728)
- Revert “Handle invalid JSON response in Waze Travel Time” (@erwindouna - #183724)
- Split user flow init and data submission in gpsd config flow tests (@tr4nt0r - #183725)
- bosch_shc: add select platform (Outdoor Siren sound level) (@mosandlt - #183117)
- bosch_shc: add Outdoor Camera Gen2 ambient light switch (@mosandlt - #183632)
- Use probatio.EnsureList directly across integrations (@frenck - #183641)
- Make Wyoming STT duplex for early exit (@synesthesiam - #181985)
- Mark Besen reconfiguration flow as exempt (@moryoav - #183626)
- Use the library’s string and pack component maps in Sofar (@darkrain-nl - #183624)
- Share one calendar event fetch between listeners on the same range (@frenck - #182013)
- Use typed writes for the Sofar charger mode and remote switch (@darkrain-nl - #183622)
- Use tcp sensor available flag to reflect connection errors (@fopina - #169772)
- Shorten shutdown timeout in executor interrupt test (@erwindouna - #183693)
- Suppress repeated Splunk send-failure logs during sustained outages (@Bre77 - #181806)
- Add map, segment, and clean_segments support for Roborock Q7 (@erka - #176496)
- bosch_shc: add Outdoor Camera Gen2 front light switch (@mosandlt - #183631)
- Use OpenAPI 3.1.0 format for cloud (@Shulyaka - #182768)
- Do not mutate generated zeroconf matchers in async_get_zeroconf (@frenck - #183330)
- Split user flow init and data submission in freebox config flow tests (@tr4nt0r - #183722)
- Retry WorldTidesInfo setup when the API is unreachable (@pathob - #183532)
- Add basic support for events driven from zha (@elupus - #183109)
- Recover lost sessions in route_b_smart_meter (@tayuki - #183291)
- Report who was shown in to charge on a Peblar (@frenck - #183364)
- fix missing double quote JSON structure (@XHyperDEVX - #183143)
- Mark Besen repair issues as exempt (@moryoav - #183733)
- Use probatio.Port for the port validator (@frenck - #183737)
- Split user flow init and data submission in ipma config flow tests (@tr4nt0r - #183739)
- Use probatio.Port directly across integrations (@frenck - #183741)
- Keep Tuya channel entities on the main device (@epenet - #183734)
- Split user flow init and data submission in iqvia config flow tests (@tr4nt0r - #183745)
- Promote Besen to Platinum quality (@moryoav - #183742)
- Split user flow init and data submission in launch_library config flow tests (@tr4nt0r - #183746)
- Add water heater platform to MELCloud Home (@erwindouna - #183235)
- Split user flow init and data submission in icloud config flow tests (@tr4nt0r - #183738)
- Keep WeatherFlow last lightning strike values across restarts (@ehn - #183124)
- Do not run templated commands in shell for command_line (@MartinHjelmare - #183702)
- Bump intents (@synesthesiam - #183751)
- Bump aiomelcloudhome to 0.2.4 (@erwindouna - #183755)
- Add entity lifecycle callback async_prepare_to_add_to_hass (@emontnemery - #182156)
- Split user flow init and data submission in notion config flow tests (@tr4nt0r - #183756)
- Update energieleser codeowners (@amitkio - #183731)
- Cancel coordinator refresh timer on Home Assistant shutdown (@chemelli74 - #183659)
- Add KNX LLM API exposing telegram store, project and DPT tools (@martinhoefling - #178029)
- Add ZHA valve platform (@puddly - #183740)
- Bump uiprotect to 17.7.0 (@RaHehl - #183766)
- Keep notify entity component when reloading legacy platforms (@frenck - #183269)
- Fix Alexa AdjustRangeValue for a fully closed cover or valve (@BilalAtique - #183595)
- Add entity key to MELCloud Home unique IDs (@erwindouna - #183757)
- Add operation status sensor to MELCloud Home (@erwindouna - #183770)
- Add HVAC action to MELCloud Home ATW zones (@erwindouna - #183771)
- Update knx-frontend to 2026.9.29.213422 (@farmio - #183764)
- Keep secret values out of configuration error messages (@frenck - #183760)
- Update frontend to 20260930.0 (@bramkragten - #183769)
- Add select platform to my-PV integration (@rrooggiieerr - #182330)
- Handle unknown or unloaded accounts in Immich media source (@balloob - #183395)
- Add reauthentication to Axle Energy (@Herbertmt978 - #182389)
- Use probatio key-group validators for the cv helpers (@frenck - #183753)
- Use HvacPower as the climate state for Teslemetry streaming vehicles (@Bre77 - #183718)
- Report omitted Tesla Fleet energy history fields as zero (@Bre77 - #183729)
- Fix Teslemetry cabin overheat protection temperature in Fahrenheit (@Bre77 - #183730)
- Add switch platform to my-PV integration (@rrooggiieerr - #182364)
- Adjust energy to not override Entity.add_to_platform_xxx methods (@emontnemery - #183775)
- Fix OpenDisplay connecting to every discovered device on startup (@g4bri3lDev - #178239)
- Add Sensor platform to my-PV integration (@rrooggiieerr - #181761)
- Fix race when subscribing to a wild card topic while waiting for MQTT unsubscribe (@jbouwh - #183354)
- Remove unreachable shutdown guards from Fritz coordinator (@chemelli74 - #183773)
- Bump aioamazondevices to 16.3.1 (@chemelli74 - #183791)
- Mark CONF_API_TOKEN as secret in config flow schemas (@frenck - #183785)
- Add ZHA IR platform (@puddly - #183749)
- Clean up Z-Wave JS conditions (@arturpragacz - #183782)
- Fix availability for Receiver+Emitter infrared consumer entities (@abmantis - #183784)
- Don’t forget command line ignored shell repair issues (@MartinHjelmare - #183765)
- Log when Google Generative AI STT returns no text (@nikosavola - #180389)
- Read ViCare entity values in the executor (@lackas - #181379)
- Fix NUT sensors failing on variables reported as (null) (@frenck - #182598)
- Update PyJWT to 2.15.1 (@renovatebot - #182659)
- Reload Transmission on config options changing (@andrew-codechimp - #182847)
- Fix 500 instead of 401 when reverse DNS lookup fails to decode (@bailleul-dev - #182919)
- Fall back to the MAC address when a Bravia television reports no CID (@smitec11 - #182949)
- Add plate count for KM7999 (@sylvainblot - #182993)
- Fix Philips TV state on TVs where screenstate is always off (@JustSamuel - #183207)
- Match track titles in a Squeezebox search inside a genre (@balloob - #183423)
- Add KNX panel translation keys for future frontend adoption (@philippwaller - #183479)
- Reload retrying Music Assistant entry when the server is rediscovered (@CaputoDavide93 - #183579)
- Fix Supervisor connection leak when leaving an app’s log page (@jeffothy - #183772)
- Do not fail Teslemetry energy coordinators when Home Assistant stops (@Bre77 - #183828)
- Match SMA DHCP MAC updates on serial (@erwindouna - #183845)
- Bump imgw-pib to 2.5.3 (@bieniu - #183847)
- Bump aioshelly to 13.34.1 (@chemelli74 - #183855)
- Bump aioacaia to 0.2.2 (@zweckj - #183858)
- Dont expose irrelevant myuplink entities (@astrandb - #183869)
- issue_schema: Add optional short_title translations (@wendevlin - #183883)
- Keep the ESPHome Z-Wave home ID current after a home ID change (@MindFreeze - #183886)
- Update probatio to 0.12.5 (@frenck - #183887)
- Sentence-cased strings for my-PV integration (@rrooggiieerr - #183894)
- Bump renault-api to 0.5.14 (@epenet - #183902)
- Fix proxy camera crop breaking after a small frame (@PilaScat - #183798)
- Don’t trigger reauth on connection errors for Mikrotik (@chemelli74 - #183904)
- Resolve the probatio codec import before the event loop (@frenck - #183909)
- Bump av to 19.0.0 (@clairernovotny - #183912)
- Handle unsupported devices for the my-PV integration (@rrooggiieerr - #183920)
- Allow the none reasoning effort for GPT-6 Luna (@Matos182 - #183922)
- Bump pywaze to 1.2.3 and close Waze clients on unload (@eifinger - #183923)
- Bump pymiele to 0.6.3 (@astrandb - #183936)
- Fix race condition in miele switches (@astrandb - #183942)
- Add missing values and fix milk ratio option entity values_translation_key (@Diegorro98 - #183969)
- Fix OpenDisplay upload_image timeout with image and camera entities (@zweckj - #183974)
- indi_allsky: Simplify and fix keogram and startrail fetching (@TN-1 - #183987)
- Update probatio to 0.13.0 (@frenck - #184006)
- Check only_supervisor against the Supervisor user provided by hassio (@agners - #184041)
- Don’t create water heater entity when no temp sensor for my-PV integration (@rrooggiieerr - #184042)
- Bump radios to 1.0.0 (@frenck - #184059)
- Fix AirGradient VOC and NOx learning offset units (@samuelbles07 - #180305)
- Bump lifx-async to 7.6.4 (@Djelibeybi - #183788)
- Bump lifx-async to 7.6.5 (@Djelibeybi - #184063)
- Bump pynina to 1.0.3 (@DeerMaximum - #184067)
- Upgrade pydroplet to v2.5.0 (@sarahseidman - #184087)
- Bump my-pv to 0.0.10 (@rrooggiieerr - #184088)
- Improve Droplet connection handling (@sarahseidman - #184092)
- Bump opower to 0.22.2 (@tronikos - #184115)
- Non numeric sensors in nibe broken (@elupus - #184116)
- Swap optimistic MQTT climate setpoints on HVAC mode change (@jbouwh - #184122)
- Ensure template results are converted to string before validating against a list of strings. (@Petro31 - #184123)
- Handle error while getting wan status in FRITZ!Box Tools (@mib1185 - #184133)
- Fix Hue temperature sensor crash on None value (@gering - #184148)
- Bump aiovodafone to 3.3.5 (@chemelli74 - #184207)
- bosch_shc: bump boschshcpy to 0.6.15 (@mosandlt - #184220)
- Improve Alexa debug logging (@jbouwh - #184241)
- Filter removed LLM APIs when reconfiguring OVHcloud AI Endpoints (@Crocmagnon - #184249)
- Correct OAuth discovery metadata for public clients (@hunterjm - #184254)
- Fix Hanna sensors showing readings from another device (@SridharNeti - #184258)
- Bump python-hotspring to 3.1.0 (@Moustachauve - #184271)
- Send thinking level for Gemma 4 models in Google Generative AI (@tronikos - #184275)
- Exclude the empty backup_restore fixture from check-json (@epenet - #184289)
- Stop asking a SolarEdge inverter about blocks it never answers (@frenck - #184290)
- Bump midea-local to 12.2.0 (@chemelli74 - #184301)
- Update frontend to 20260930.1 (@bramkragten - #184308)
- Bump yoto-api to 4.5.1 (@piitaya - #184323)
- Keep Portainer entities known on endpoint timeout (@erwindouna - #184325)
- Fix certain device variants failing during setup of lunatone (@MoonDevLT - #182396)
- Fix lutron_caseta warm dim level and transition not sent to bridge (@cb2206 - #182995)
- Fix PostgreSQL prerelease version detection in recorder (@DragonWork - #183146)
- Avoid reserved time fields in InfluxDB writes (@SeoFood - #183743)
- Report read-only climate entities as such to Google Assistant (@RReverser - #183820)
- Handle removed issue in repairs ignore_issue websocket command (@costajohnt - #183934)
- Retry ViCare setup while no device is online (@lackas - #184027)
- denonavr: keep Telnet connected when a zone’s entity is removed (@TheEvilCoder42 - #184147)
- Fix Netatmo schedule select depending on room features order (@Tagliax - #184179)
- Preserve UniFi UPS sensors during temporary telemetry gaps (@jimstrang - #184231)
- Update knx-frontend to 2026.10.5.160528 (@farmio - #184338)
- Bump renault-api to 0.5.15 (@nicolaait - #184339)
- Bump wled to 1.0.0 (@frenck - #184352)
- Bump holidays to 0.105 (@gjohansson-ST - #184356)
- Bump holidays to 0.106 (@gjohansson-ST - #184358)
- airthings_ble refresh firmware version (@LaStrada - #184378)
- Update aiohttp to 3.14.4 (@renovatebot - #184382)
- Update uv to 0.12.23 (@renovatebot - #184384)
- Update ical to 14.3.0 (@renovatebot - #184385)
- Fix MikroTik switch discovery for wifi interfaces (@theorician - #181694)
- Clarify Teslemetry Bluetooth key enrolment (@Bre77 - #184189)
- Always disconnect Teslemetry Bluetooth after a failed pairing step (@Bre77 - #184190)
- Make Teslemetry Bluetooth onboarding messages actionable (@Bre77 - #184216)
- Re-evaluate subscribed conditions on state changes (@piitaya - #184335)
- Improve ProxmoxVE node offline handling (@CoMPaTech - #184374)
- Bump teslemetry-stream to 1.2.0 (@Bre77 - #184181)
- Bump tesla-fleet-api to 1.17.3 (@Bre77 - #184394)
- Show a clear error when a WLED device doesn’t respond like one (@frenck - #184397)
- Only let WLED discovery change the host after the device answers on it (@frenck - #184411)
- Don’t remove the WLED stop listener twice on unload (@frenck - #184412)
- Fix maintenance typo in rehlko (@frenck - #184413)
- Only offer WLED firmware updates the device can install (@frenck - #184415)
- Remove battery device class from enphase envoy reserve_soc (@catsmanac - #184418)
- Add the WLED current sensors once the device reports a current (@frenck - #184435)
- Follow the WLED color mode from the light’s color (@frenck - #184478)
- Fix the SSL option description in the Transmission config flow (@frenck - #184509)
- Send the ESPHome imported state when the entity is created after subscribing (@frenck - #184510)
- Check Music Assistant player configs before forwarding the platforms (@frenck - #184520)
- Explain why Teslemetry Bluetooth pairing failed (@Bre77 - #184172)
- Fix quadratic time in the statistics average characteristics (@frenck - #184522)
- Report unknown for out of spec Matter air quality values (@frenck - #184528)
- Fall back to all button values for SmartThings buttons that don’t report them (@frenck - #184530)
- Bump wled to 1.1.0 (@frenck - #184532)
- Mux H.265 streams and recordings as hvc1 again (@frenck - #184537)
- Retry Sense setup when the monitor is not available yet (@frenck - #184539)
- Fix the API key instructions link in the OpenAI Conversation config flow (@frenck - #184541)
- Handle Liebherr timeouts during setup and the device scan (@frenck - #184542)
- Retry EcoNet setup when logging in fails with a connection error (@frenck - #184544)
- Don’t let a Hue button without a device abort the event platform (@frenck - #184546)
- Start polling HomeKit Controller BLE accessories after a reload (@frenck - #184547)
- Load the stored camera orientation as an Orientation (@frenck - #184551)
- Accept Matrix room IDs without a server name (@frenck - #184556)
- Hide Teslemetry vehicles without Bluetooth command support (@Bre77 - #184223)
- Pass the Hunter Douglas PowerView shade model as a string (@frenck - #184560)
- Resolve a pre-migration composite source device for Bluetooth scanners (@frenck - #184568)
- Wait for a fresh Teslemetry advertisement before connecting over Bluetooth (@Bre77 - #184193)
- Fix Teslemetry vehicle flow abort when no vehicle supports Bluetooth (@frenck - #184521)
- Stop the UPnP notify server when unloading the config entry (@frenck - #184515)
- Hide the LLM API picker when all MCP server LLM APIs are exposed (@balloob - #184516)
- Skip Jellyfin sessions that report the server as their device (@frenck - #184518)
- Stop refreshing Nest WebRTC streams that can’t be extended (@frenck - #184525)
- Consider next name part when unprefixing entity name (@arturpragacz - #184526)
- Separate streamed assistant messages in the Assist pipeline TTS input (@frenck - #184535)
- Fix color and white control of WLED lights with warm and cold white (@frenck - #184536)
- Remove the ElevenLabs update listener when the entry is unloaded (@frenck - #184552)
- Don’t write the Cast entity state while it is being removed (@frenck - #184553)
- Pass the Genius Hub switch override duration in seconds (@frenck - #184554)
- Connect LG ThinQ MQTT before forwarding the platforms (@frenck - #184555)
- Round the Songpal volume level instead of truncating it (@frenck - #184558)
- Always create the APC UPS Daemon battery transfer sensors (@frenck - #184559)
- Show a connection error for an unsupported DSMR serial port URL (@frenck - #184561)
- Accept form posts from Traccar Client in the Traccar webhook (@frenck - #184562)
- Bump intents to 2026.10.6 (@synesthesiam - #184563)
- Apply the parse mode to Telegram media group captions (@frenck - #184566)
- Set up Tractive trackers that have no position yet (@frenck - #184567)
- Explain how to pair a Nanoleaf Skylight in the link step (@frenck - #184569)
- Quote the credentials in the Freebox camera stream URL (@frenck - #184572)
- Keep a TTS stream available once its message is set (@frenck - #184574)
- Wait for the ESPHome assist satellite platform before finishing setup (@frenck - #184575)
- Pass the Freebox home node firmware version as a string (@frenck - #184577)
- Handle errors in the periodic Freebox update (@frenck - #184578)
- Keep the Lutron Caséta bridge connected on an unmapped button number (@frenck - #184579)
- Create an Apple TV entry for a device that was ignored before (@frenck - #184580)
- Don’t parse the Pushsafer response just to log it (@frenck - #184581)
- Show a connection error when the Automower BLE device info can’t be read (@frenck - #184585)
- Clarify that the trigger behavior repair only applies to triggers (@frenck - #184586)
- Allow the GoodWe export limit up to the inverter’s rated power (@frenck - #184587)
- Raise a translated error when an Apple TV command fails (@frenck - #184588)
- Add Hisense AC (0x138C/0x3601) to Matter dry and fan mode device lists (@frenck - #184589)
- Do not set a unique ID for MCP OAuth config entries (@balloob - #184594)
- Fix the HomeWorks light address description (@frenck - #184614)
- Bump uiprotect to 20.2.1 (@RaHehl - #184208)
- Bump uiprotect to 23.0.0 (@RaHehl - #184233)
- Bump my-pv version (@rrooggiieerr - #184517)
- Send the preset mode when turning on an ESPHome fan (@frenck - #184557)
- Don’t end the ESPHome voice audio stream on an empty frame (@frenck - #184583)
- Convert the ZHA Inovelli LED effect when running the action (@frenck - #184612)
- Use the local day of the last Habitica cron for the calendars (@frenck - #184613)
- Refresh motionEye after changing a switch (@frenck - #184616)
- Raise a Home Assistant error when sending Tuya commands fails (@frenck - #184621)
- Default the LaMetric message icon like notify does (@frenck - #184624)
- Keep updating collection helper entities after an entity ID change (@frenck - #184631)
- Clear Teslemetry route entities when navigation ends (@Bre77 - #184638)
- Turn off timed out Tractive LED and buzzer switches (@frenck - #184644)
- Handle stream errors while waiting for UniFi Protect playback (@RaHehl - #184650)
- Bump uiprotect to 23.0.1 (@RaHehl - #184655)
- Add repair flow for Renault Kamereon account changes (@epenet - #184661)
- Update frontend to 20260930.2 (@bramkragten - #184662)
- Bump my-pv to 0.0.12 (@rrooggiieerr - #184670)
- Fix Hue setup failing when devices share a Zigbee MAC (@frenck - #184672)
- Bump zinvolt to 1.0.1 (@joostlek - #184673)
- Close the WiZ bulb when a different device is found at its IP (@frenck - #184674)
- Use the same MAC address in the ONVIF config flow as the device (@frenck - #184675)
- Only offer discovered Denon devices that serve the receiver API (@frenck - #184679)
- Avoid using zigbee macs as network macs in hue (@joostlek - #175083)
- Fix telegram_bot test patching httpx2 on the rc branch (@frenck - #184711)
- Fix managed app configuration resetting existing options (@AlCalzone - #182441)
- Add tempora to license exceptions (@epenet - #183971)
- Use a radio list for the Teslemetry local vehicle subentry (@Bre77 - #184171)
- bump alexa_devices to 16.3.2 (@jamesonuk - #184703)
- Fix EARN-E P1 listener stopping while another entry sets up (@Miggets7 - #182289)
- Fix Teslemetry HW4 mileage sensors not created for streaming vehicles (@Bre77 - #184632)
- Abort the config flow if the Shelly device is not supported (@bieniu - #184668)
- Revert PR 183342 (@emontnemery - #184717)