What's Changed
- Migrate to aiomqtt (rebased) by @nanomad in #457
- fix(ha): emit retain as JSON boolean in discovery payloads by @nanomad in #459
- fix(command): publish command results with retain=False by @nanomad in #461
- fix(tls): warn on hostname-check bypass regardless of custom CA cert by @nanomad in #462
- fix(extractors): suppress SoC kWh warning spam for non-EV vehicles by @nanomad in #460
- fix(mqtt_publisher): pass tls_insecure=None for non-TLS connections by @csutcliff in #465
- fix(abrp): report which inputs are missing when a push is skipped by @nanomad in #470
- fix(docker): install only the main dependency group in the image by @joszz in #469
- feat(ha): mark charging entities unavailable when charge data goes stale by @nanomad in #471
- fix: log SAIC API timeouts as a short warning by @nanomad in #473
- docs: document observed chargingType values by @nanomad in #472
- fix: also log SAIC retry-later errors as a short warning by @nanomad in #474
- fix: tolerate transient poll failures before marking vehicle offline by @nanomad in #475
- docs: document vehicle and charging data availability by @nanomad in #476
- fix: do not report cable lock state for models that do not provide it by @nanomad in #477
- chore: align with saic-ismart-client-ng 0.10.0 by @nanomad in #479
- chore: align dev dependencies, CI and tooling with saic-ismart-client-ng by @nanomad in #480
- fix: shut down gracefully on SIGTERM by @nanomad in #481
- chore: create a GitHub release in /release and document it by @nanomad in #482
- ci: make Dependabot open PRs against develop by @nanomad in #483
- chore: exclude .claude directory from ruff by @nanomad in #486
- fix: run scheduled charging job on the event loop by @nanomad in #485
- fix: raise a clear error when publishing outside the event loop by @nanomad in #487
- fix: don't hang connect() when the MQTT loop crashes before connecting by @nanomad in #489
- fix: keep references to and log failures of MQTT background tasks by @nanomad in #488
- refactor: extract log_task_failure and log MQTT loop crashes by @nanomad in #490
- fix: exit when the MQTT loop task ends by @nanomad in #491
- fix: flush pending MQTT publishes on shutdown by @nanomad in #492
- fix: prefer RELEASE_VERSION over package metadata for the gateway version by @nanomad in #493
- refactor: use PEP 695 type parameter syntax for __anonymize by @nanomad in #494
- ci: build Arm images on native Arm runners, bump Poetry to 2.5.1 by @nanomad in #496
- ci: test on Python 3.15 (non-blocking) by @nanomad in #495
- ci: make Python 3.15 tests blocking by @nanomad in #497
- chore: ignore local Claude Code state, add shared permissions by @nanomad in #498
- chore: release 0.13.0 by @nanomad in #500
New Contributors
- @csutcliff made their first contribution in #465
- @joszz made their first contribution in #469
Full Changelog: 0.12.0...0.13.0