0.315.0

google/comprehensive-rust0.315.0Aug 31, 2026by andig

Full Release Notes

## Changelog
### Breaking Changes 🚨
* 8661c66fc75b930c7470f5b0c478f537b9327c9b Curtailment devices: new device class for feed-in limitation (BC) (#32416)
* 0812904b489219bed3f64743de2c144f657401d7 Mqtt: always render preset timeout (BC) (#33084)
### New Features 💫
* 7c0ddf1828e131950c1266ab56086005552a651d Add 1SINQ OneKey heat pump (sgready via MQTT) (#33069)
* 7dd4007cfa5d4496861a728a95aaaf0c0eb3e8e9 Add BYN, UAH, RUB and KZT to currency list (#33259)
* dfad373ab30762049185dbee52af42e3c15e6a05 Add CHINT ECH10K-TH-EU inverter (#32858)
* 36614fea4634c81e412c5e54a88660938ebea6ab Add SENEC.Connect cloud API (#33029)
* bc38df1ed6d80f1459da2becda963189af93f8ea Add Solplanet hybrid inverter (Modbus TCP) (#32888)
* 9a87bd105e1b2db5712a508b02e825378754b6b3 Add StecaCharger (#32990)
* c745672437a928731173bf305e522150a8e6d24d Afore hybrid: add RS485 (#32961)
* 469ccb83ab1ea9b78a5bc7c2e3e590acd7b040c1 EEBus OHPCF: add disablepowerlimiter option (#33071)
* 62cca5e885d8c452d18698497f53804909c48c04 Energy Price Forecast CO2: add regions (#33080)
* f216a440e1e4a36f43a259f4ae0fd6f310e84777 Energy Price Forecast: add api key (#33081)
* 8cf5a44a32eeb679c7a8b24a484036d5fd844ad1 Marstek: add discharge and optimise batterymode (#32571)
* e7ab19d7ca25535087bf73c96e5df9479e6315dc SMA EV Charger: add setup instructions (#32862)
* 7549beaf44f0d326d56e7f5c357cd3c5aaf84a13 Services: add sunspec/read for reading a point value from a device (#33230)
* ea8e2a72c0522f51471891e40ff9f916902e5ada Site: add returnEnergy to aggregated battery state (#33241)
* 887ec9ecd25396bb2fb487a0c1c723cfb348652a Solax X1/X3-HAC: add CurrentLimiter (#33181)
* 8edf92a103e6ff0d90ee3b84ae577a4f83880a88 Sonoff: add switch socket charger (#33058)
* 45f49aac526acc65ff61456cf8aff85b52b7c96e Sungrow: add curtailment (#32976)
* 56eccb08ea92fb1a66ee349c229c15b4c2b0a55d Sungrow: add grid and battery returnenergy (#33129)
* 28bb5ba859d2ece59056dbfd77d37ce0a074fd04 Tariff: add Energy Price Forecast regions and currencies (#33051)
* fb35c0905fc04856fd2d99c1d8aefdb4d49255ed Templates: add ErrNotAvailable default to battery mode switches (#33023)
* 0ae85295dcb2025a3dd216eb97d9d237090655fd Templates: add http service for parameter choices (#32951)
* 63c8265a9b016176b7be27f03d088aeef36767be Templates: add integration provider link (#32008)
* a8c4dfd3722e3ae219102ed56a373665bc3c811a UI Customize: add custom-theme flag for default theme (#33042)
* 37d8aecbb2ff73f28d5780f52e44b0c186cf73ca UI: Add date format preference in user interface settings (#29321)
* a66fa2fa04afa2c7fdb83af4d9d466200b369e40 Youless: add return energy (#33155)
* be4f4b8ce5ec51a5d52c022620307cab73b54765 Zendure SolarFlow 800 Pro: add battery control (#33272)
* f693454502a36cfb64a6d72e7f826e92af9e9e78 openWB Pro: add return energy (#33216)
* fb120252a072cb3d72689526c5e18685bbd33c18 Škoda: add MyŠkoda public api vehicle (#33234)
### Experimental Features 🧪
* 442113e9ea732db48e55733205c6a880bb00b4fb Remote Access: not experimental any more (#33148)
### Other Changes ☀️
* 769a6a1aa545b143c781754efc22ececd0bda233 API: bound jq evaluation on /api/state against unauthenticated DoS (#33028)
* 8905c2777baf2d0045672bd19039d40cdbf7f883 About modal: powered by footer for branded installations, update status badge (#33233)
* e7b694e550176d66694d3e50afc385b7d58327be Afore: remove Modbus TCP option (#32964)
* 13db309c942b6c3ffe0bf1041aa054e0b0a33e79 Battery boost: resume from hold when limit is lowered (#32999)
* 859c9056403dcd2627b3e6e8d35c43612c2e1ce5 Battery control: apply battery mode per battery and only on change (#32967)
* 0d0815963cb819ea61809d022d2fa6d79cf39ed0 Charging plan: show strategy settings without dynamic tariff (#33168)
* 9f70a185011645238de0d7bba1f55ac0e6f76418 Charts: prevent long-press text selection (#33012)
* 7f33bb93174e51ce9a4a58b23556fc4e1bdf2c10 Config UI: hide disabled vehicles from loadpoint default-vehicle dropdown (#33125)
* 1a0a05c9add15dfeb60555872ce049d51825c905 DaheimLaden: improve error handling (#33010)
* 063088c0702e76dca69f6bb96897528211216072 Demo tariffs: increase forecast to 5 days (#33174)
* c28f2ff62319eb3d3b754946c3e8fd7987d2938e Digest auth: reuse challenges across requests (#32842)
* 490f209e57287bb64b87f5f6a6687baac1fd3c5c EEBus: apply the configured failsafe limits consistently (#33288)
* d379b7802e54acb269a1898b040d97b691b70f44 EEBus: clamp the curtailment percent to the documented maximum (#33300)
* 829f11f23ec7ae7ae77c42a6af8864e23ea80f0f EEBus: don't deny pairing while devices are still being configured (#32966)
* eeb2f593bf54f09fd564d6dbdd23fe6a2a5e0122 EEBus: keep pairing requests pending while devices are being configured (#33046)
* 27bbdce298459e0228aaf103935f348935749401 Energyflow: clip collapsed details to remove phantom scroll area (#33229)
* e4e5c2db26acdc0c85d46d3b466df739eb542599 Enovates: verify EMS mode and use actually offered current (#33163)
* 9beca9b22f1ceeaef04e697fa669097a4d63694c Go plugin: keep float parameters typed (#33162)
* eec0a8f46cf964f10e6e5d0d4dd8ab5c325e7213 GoodWe: list ESA series under hybrid template (#32884)
* 2b87fe2b1da173a25e171a08569002a85377e9d0 Grünstromindex: fall back to co2_g_oekostrom when co2_g_standard is null (#33164)
* e24ec1a2c5ec1fb231e348901c9114f7d381ba6d History: keep charge and discharge apart in entity legend sums (#33299)
* a565f2d85048679a8222ee20b57d04f75e6fd8a5 History: show both directions for all entities of a bidirectional section (#33335)
* 6715711d49a290f51e2223afd3bcc262051aa0ce Home Assistant: auto-detect Supervisor instance and token (#33000)
* f193eb199af4840a369d95564c8fab95e1fa8003 Home Assistant: link charge status docs (#33260)
* dbe100b24bceff14b2aaa5c0b05d5a846185747b HomeWizard: support 1p kWh meters (#33293)
* f6e6db9eae5f04fed4d1f1c42a060e5a7db59c37 Issue: remove obsolete number input spinner styles (#33006)
* c314e8e838aaf4c7e45ea22d8ce0e0c03a7388a4 Keep permanent sentinel errors distinguishable (#33194)
* ebe064ad973f5c66a09931f0f3c0a2d656911e4f Loadpoint: disable PV mode when idle integrated device lacks surplus (#33073)
* c1067111e4870212e47db772360378987d015dde Loadpoint: don't reserve surplus when paused by feed-in priority (#33072)
* 31591262487f7da1bd128b24bad98e5b8c1dba3c Loadpoint: ignore charge interruption during phase switch (#33109)
* bf57d398c21c1a74a075459573e570616ed0dbfd Loadpoint: project continuous device min power shortfall into PV disable gate (#33075)
* 72b7e270570241713dbda2c59421acc5d7dcc750 Loadpoint: sync charger phases on vehicle connect (#32962)
* e2c59fc6e156cc259b884f929b538d8573eaa690 Meter (SunSpec): read max AC power from nameplate (#32732)
* c1960b378a70e769adb88165fa5f1fd073bb3d23 Metrics: fall back to power integration when a meter loses its energy register (#33103)
* 24498ad1f6c2d480af555f561de03b664c1d6c37 Modbus templates: share block reads (#32887)
* b305af03e95cb09ce1e4de2771fca172437a5cf8 Nissan: switch to MyNISSAN OneID authentication (#33316)
* af4d14f65c541c1cc9175dede34c4d73986c6b5d OCPP: keep websocket alive between heartbeats (#33099)
* 6b94ac6b01cc9c4999b1d61273148228ecec9fe0 OneKey: make mqtt timeout configurable, default 90s (#33120)
* 8abae0fd6888b3cc8e26a9f9d4426800ad492d43 OpenDTU: tolerate missing radio_stats in energy filter (#33279)
* ba8596be961d6495dde98cb692e19a27d5583ab3 Optimizer chart: day boundaries with weekday at 00:00 (#32894)
* 4cc75b1a45c730d36aa128c8406214c50f78f318 Optimizer: extend horizon to 48h plus end of day (#32893)
* 5960e9fcfc2ab134d0f9612de901d70f54685b26 Optimizer: limit precondition demand to required charging duration (#33137)
* bb6854b1edb9be1898e84479becfef40e67ff4e0 Optimizer: respect session energy limit when vehicle soc is unknown (#32895)
* 8d425d3920afcbad7f4443eb3041a7f600800456 Phases: allow 1p scale-down when the loadpoint never disables (#33214)
* 748d36d1306aef31977691207d4120d6cb98400e Phases: disable instead of scaling down to 1p without sufficient surplus (#32991)
* 4adbf141d616b7238f3baa3ecd454ce6cf34c6ac Provider auth: require authenticated session for OAuth login/logout (#33115)
* d22b67fd183930d3c4654fbd3990dd83feafac01 Reapply "Optimizer: respect session energy limit when vehicle soc is unknown (#32895)"
* fa6f757618556cfad5abffdd16ef8519d5d42d13 Revert "Optimizer: respect session energy limit when vehicle soc is unknown (#32895)"
* 6d276526a6fdc334b3d9514770b8c38fbd431aae Revert "PV: reserve only min power for higher-priority loadpoints starting up" (#32947)
* f7b3f394f3a2ac74daaf22af2355c79579cf04a1 Shelly: no return energy register on gen1 relay and plug meters (#33111)
* 47fd73be3393ed7410d5567ec30b29b6c9b06437 Site: feed the optimizer a trailing percentile solar scale (#32849)
* a578893eddf20cb47a7a0d93f8a0d388c30fbf8f Site: separate measurement from power calculation in update cycle (#32770)
* b15f81a85ac0b369e649f297bdf581b1ceae52c6 Soc: extrapolate from charged energy when vehicle api is unavailable (#33122)
* 41319dfa39b164a11154450e998337dcd32fb3ab SolarMax MAX.STORAGE: drop the whole-kWh energy register (#32986)
* f4b289f745e84e121814c3d35487becac9416043 Sponsor: include device serial in hardware check metadata (#32927)
* 5120f264c6e6aa36b13a08637de6d1994364f9d1 Sungrow: remove coarse energy reading from inverter template (#33321)
* 1b909edd9b1d5ca3082b911aaa93d4c9069483f7 Sunspec: serialize access to a shared device tree (#33014)
* de0bac2bc840b43cb86bf9569c91f6fb20df9fba Sunspec: share block reads across values on the same connection (#33011)
* defe9403de9cd81d29d6c773f93d8e95d9be1c8b Tariff (solar): resample sub-slots along the source curve (#33105)
* 9600fc5b9f2582c62216b5d99dbaeb72a46a5feb Tariff: make Energy Price Forecast cacheable (#33049)
* de3f8995cdf2b8a10745b7221c58031ae3d1764c Templates: support class-local include files (#32871)
* 8ccd72e1412c3a0289d2829a89c821e4bdbd81e2 UI: show inactive phases as dots in phase indicator (#33173)
* cba812d884bab26c34ba0865f616a4c08afa4e06 Vehicle settings: compact rows layout (#33169)
* adfbd057b0c137842eb19eadc7bf3404afa007c8 Vehicle: don't instantiate disabled vehicles (#32919)
* fbbe12a0ec2c898587fe098da7104da29c7da7ca Voltie: only offer phase switching where the power board supports it (#33070)
* d10ea1985e68978573e31a3082928d58cbaa6b80 Zaptec Go 2: disable phase switching with APM active (#33255)
* 80a6231a118c8c7a5cfd8f3a06b8e7d2cee11db0 [BUGFIX] Update url / backup example curl command  (#32984)
* 0be2e0d803551125f9bd175e9654972e75de47db api: let Identify return multiple identities (#32949)
* 1ea9c3dc339b4a7d2b67d2d981c24ed009daef48 fox-ess-h3-smart: remove limitsoc so batterymode is applied (#33325)
* 7d9fe8c997a5c64bb3c8db446e8d4bf6a17a3fd3 my-PV meters: skip TLS verification for local data.jsn requests (#33003)
* f43499ea979282f95bf7bb0857b4b64af17a7c8f pvnode: resample against the preceding interval, not the following one (#33102)
* 1416134c1d85a4ed97ac28ace7d1e130f1ede591 pvnode: revert to end-labelled interval resampling (#33133)
* fd095120d84d1458fd69affc720a88af3f68ed1e warp-ws: use wss when charger URI is https (#33184)
### Bug Fixes 🐞
* e8b547737389eda23666e31ac77b6390ee168452 Cardata: fix retrying failed container setup (#33243)
* 7df861f66ef46f97185b772aa0a92f1e005516b6 DaheimLaden: fix firmware init (#33032)
* 022171ffdeb86a6126818c1d0e9b68c30b727aba Deye 3p hybrid: fix curtailed script for whole-number limits (#33161)
* 48c125e93b1cb4443d3e2a0f0c3fcec48fe1d050 Deye 3p hybrid: fix energy scaling for HV pre-1098 firmware (#33074)
* cc92f3938a9513b370033c271f9dba9452aa3a95 Fix site.pvPower estimation for battery without pv (#32930)
* b3db9e93fea0bd6fdb20ca3767dbb51cff30430a Fix tariff API route not matching co2 (#33166)
* 64d48e58005f67211319db140883c254b1eb2323 Loadpoint: fix config error for disabled loadpoints (#32880)
* b5907192f563fcfca8b62f3e56fc37ef78e29669 SunEnergyXT 500: fix battery control (#32866)
* 9034f453555c4a0e99c2ccf7bd952581bd12e5d8 Tesla Powerwall Fleet: fix template not selectable in ui (#32934)
* 10c646e6685c825ff6940ef529e40d08927cd62f UI: fix blurred energy flow bar labels in Safari (#33144)
* 1defa5f7fc078ef270ed7f4fdd404ae5cf4b530f UI: fix docs links after docs site restructuring (#33160)
* 99d9adb37f8a91d02c2a177acde06d028bb71d56 Zaptec: fix nil pointer panic when Capabilities observation is missing (#33304)
* 20058f6e0d360c0fcccfb69898ad7c584439a406 Zaptec: optional fix for auto-charging (#32996)