What's Changed
General:
- Feat: Add Energy Dashboard virtual device, mappings, and diagnostics by @fxstein in #1790
- Chore: standardize line endings to LF by @fxstein in #1799
- Feat: Infrastructure - Hello World Linting (uv + pre-commit + codespell) (Phase 1) by @fxstein in #1805
- Feat: Unit Test Infrastructure & CI/CD Modernization (Phase 2) by @fxstein in #1807
- Feat: Core Unit Test Framework (Phase 3) by @fxstein in #1809
- Replace Black with Ruff Formatter (Phase A) by @fxstein in #1816
- Phase B: Eliminate Star Imports and Enable Import Sorting by @fxstein in #1817
Growatt:
- Update plugin_growatt.py with GEN4 VPP registers by @brad5505 in #1812 #1810
- Add support for Growatt TL-XHUS hybrid inverters by @shopeonarope in #1814
SolaX:
- Fix: Solax X3 Ultra inverter's missing MPPT3 #1668
- Fix: UnboundLocalError for export phase protection by @ralfna in #1788 #1784
- Fix: PM I2/I3 battery power sign by @fxstein in #1791 #1745
- Fix: ignore zero battery SoC when prior value exists by @fxstein in #1800
- Fix: EPS Yield Total Scaling for Gen 5 by @TCWORLD in #1808 #1797
SolaX EV Charger:
- Fix: allow per-sensor endian override for EV duration by @fxstein in #1795 #1793
- Fix: SolaX HAC model detection by @KIvosak in #1798
- Fix: allow EV charger per-sensor order32 override by @fxstein in #1802 #1801
Solis:
- Add support for Inverters with Serial starting '1053' ie S6-EH3P30K-H
New Contributors
- @ralfna made their first contribution in #1788
- @shopeonarope made their first contribution in #1814
Full Changelog: 2026.01.1...2026.01.2