What's Changed
- Run blocking MQTT connect() in the executor [Dirk Moeller]
- Handle transient CVS user-vins 50038 error as empty status [Dirk Moeller]
- Use Home Assistant's shared SSL context for the MQTT connection [Dirk Moeller]
- Minor translation adjustements [chmtc94]
- Update some french translations [chmtc94]
- Return a list from get_user_info so the config flow can't KeyError [Dirk Moeller]
- Raise CommunicationError on an empty vehicle-list response [Dirk Moeller]
- Fail setup with ConfigEntryNotReady when the vehicle list can't be fetched [Dirk Moeller]
- Don't block the paho network thread in MQTT callbacks [Dirk Moeller]
- Re-raise MQTT auth failure so Home Assistant's reauth flow triggers [Dirk Moeller]
- Log swallowed exceptions instead of silently discarding them [Dirk Moeller]
- Raise ConfigException from new_otp instead of a bare Exception [Dirk Moeller]
- Preserve exception context with "from e" [Dirk Moeller]
- Set PARALLEL_UPDATES on all entity platforms [Dirk Moeller]
- Add frontend to manifest dependencies so setup can't KeyError on frontend_extra_module_url [Dirk Moeller]
- Keep last vehicle data on an empty status response [Dirk Moeller]
- Trigger reauth via the coordinator's own config entry [Dirk Moeller]
- Reuse async_shutdown for the setup-failure cleanup path [Dirk Moeller]
- Updated vehicle removal message and instructions [chmtc94]
- Update French translations and add vehicle removal issue translations [chmtc94]
- Fix misspelled identifiers ComunicationError and consuption [Dirk Moeller]
- Guard get_user_info against empty API response [Dirk Moeller]
- Fully tear down MQTT, tasks and session on unload [Dirk Moeller]
- Clean up entry state when the first refresh fails [Dirk Moeller]
- Run coordinator first refresh before forwarding platforms [Dirk Moeller]
- Replace rate_limit release tasks with a sliding-window deque [Dirk Moeller]
- Emphasize entity and statistics deletion in vehicle_removed issue [Dirk Moeller]
- Allow deleting a vehicle that is no longer on the account [Dirk Moeller]
- Detect an unpaired vehicle without a restart [Dirk Moeller]
- Add device_tracker state attribute translations for de, it and fr [Dirk Moeller]
- Fix privacy binary sensor and log private mode once [Dirk Moeller]
- Add position attributes to device_tracker entity [Dirk Moeller]
- Migrate existing per-vehicle settings into the "vehicles" sub-node [Dirk Moeller]
- Bump the config entry version only on stable releases [Dirk Moeller]
- Prune stored config for vehicles removed from the account [Dirk Moeller]
- Stagger periodic polls across multiple vehicles [Dirk Moeller]
- Quieten the routine last-trip log line [Dirk Moeller]
- Updated Finnish translation [Jesse Mäkinen]
- Add Italian translations for driver and passenger seatbelt sensors [Dirk Moeller]
- Add binary sensors for the driver and front passenger seatbelts [Dirk Moeller]
- Add Italian translation for driving behavior sensor [Dirk Moeller]
- Add Italian translations for additional door sensors [Dirk Moeller]
- Add binary sensors for "open/closed" status for doors [Dirk Moeller]
- Add driving behavior sensor [Dirk Moeller]
- Improve vehicle picture download failure log message [Dirk Moeller]
- Fix custom refresh interval handling [Dirk Moeller]
- Fix updatedAt timezone comparison and swallowed update errors [Dirk Moeller]
- Enhance oauth_remote description in French translation [chmtc94]
- Update French translations for Stellantis vehicles [chmtc94]
- Fix syntax errors in sensor.py if statements [chmtc94]
- Add None checks for sensor attributes during charging [chmtc94]
- Fix config entry migration skipping steps [Dirk Moeller]
- fix typo [Dirk Moeller]
- Clean up StellantisLastChargeSensor initialization [chmtc94]
- Fix syntax error in sensor.py attribute definition [chmtc94]
- Add mileage attribute and improve attribute handling [chmtc94]
- Fix: improve engine status check and avoid fetching last trip data during startup phase after a restart of Home Assistant [Dirk Moeller]
- do_async gained a wait=False option so callers can fire-and-forget instead of blocking on the future's result [Dirk Moeller]
- Fix: enhance MQTT subscription error handling and logging [Dirk Moeller]
- Fix: improve get_vehicle_last_trip method to handle errors (no trips found) and pagination as well as improved timestamp formatting [Dirk Moeller]
- Fix: improve error handling in make_http_request method and enhance logging [Dirk Moeller]
- Update translated strings for command_status codes 300 and 901 [Dirk Moeller]
- Fix: update import statements from Cryptodome to Crypto for consistency (PyCryptodome vs PyCryptodomex) [Dirk Moeller]
- Refactor _async_update_data to improve timestamp comparison and data acceptance logic [Dirk Moeller]
- Fix: No longer ignore result_code "901" (vehicle asleep) and correct related translations [Dirk Moeller]
- Fix: Only refresh the MQTT token if it is actually due for renewal or a refresh is forced (to conserve the rate limit). [Dirk Moeller]
- fix button name in vehicle card yaml: start_charge -> charge_start [Valentin Heidelberger]
- Support custom self-hosted login-service URL for remote OAuth [Robert Chmielowiec]
Full Changelog: 2026.7.2...2026.9.1
Support the project
The latest heroes who believe in this project 👇
🏆 MONTHLY BEERS
Harald
🥈 10 BEERS
Rüdiger
Andrea Donno
Fabian
🥉 5 BEERS
Someone
Dieter
SA Energy
and other heroes
⭐ 3 BEERS
Hubert
Someone
Mark
and other heroes
⭐ 2 BEERS
Liam
Kristian
Dave
and other heroes
⭐ 1 BEERS
Someone
lmz
Someone
and other heroes