General:
- 63b7ffd Introduce new UI design; upgrade to Vue 3 tech stack
- 0bd7ea9 Refine new ui; contrasts, legibility, logo in nightly, reduced margins on mobile (#3318)
- 3df9569 Add unknown vehicle status to new design (#3332)
- 8af991d Mqtt: support encrypted connections (#3292)
- c456cf3 Vehicle: read odometer only once upon connect (#3309)
- aad8166 Target Charge: fix timezones (#3382) (#3386)
Charger:
- 64caa9b Add Dadapower charging station (#3141)
- 635f47d Add Pracht AlphaXT (#3226)
- f4e42ad Add SMA EV Charger (#3300)
- 7d1ab12 Alphatec: fix status decoding
- 1ea8528 Kostal Piko: add battery to template (#3343)
- 23d84af Kostal Piko: consider sign in battery meter (#3346)
- 523e241 Bender: support legacy register set (#3171)
- c384e29 HardyBarth ECB1: fix start/stop and add meter caching (#3351)
- 6a6aac1 HardyBarth Salia: pause once to make station react to further commands
Meter:
- acbd5c4 Add CarloGavazzi ET340
- 95b5b5f Add DSMR meter (#3284)
- 1ba3c5d Add Tapo meter and config template (#3287)
- a7f9f8b FritzDect: align with other socket implementations (#3349)
- f327b5b MBMD: fix rs485 device models not recognized
- ee8d3db Tasmota: enable multi-relay devices (#3368)
- 1aaa80e Mbmd: support non-Sunspec meters using ModbusTCP (#3354)
Vehicle:
- 7c4f16e Renault: use fixed api keys if keyStore is not accessible (#3406)
- 21c6fff VW ID: handle api errors
- ce53643 Nissan: use OAuth2 for code exchange and token refresh (#3302)
Breaking changes: