Update from upstream#1
Merged
Merged
Conversation
Remove 13 unused functions from helpers.py (~374 lines) and their corresponding tests (~514 lines). Remove unused parameters from 3 config_flow_options.py functions. Add vulture to dev dependencies for ongoing dead code detection.
Rebuilds frontend bundles from span-card to fix double millisecond conversion on statistics timestamps that caused 1d/1w/1M chart horizons to show no data.
Compute an MD5 hash of span-panel.js and append it as a query parameter to the module_url. This ensures browsers fetch the new JS whenever the file content changes, fixing stale-cache issues after HACS updates.
- Add snapshot None guard in websocket topology handler - Fix changelog to show correct span-panel-api version (2.4.2) - Add graph horizon service strings to translations
Include always-on (battery + router) composite icon and SoC text label adornment for shedding priority indicators.
The _frontend_file_hash function uses synchronous file I/O which triggers a blocking call warning in HA. Run it via async_add_executor_job instead.
In async tests, async_create_task mock was returning the coroutine without consuming it. Schedule as a task or close the coroutine to prevent RuntimeWarning about unawaited coroutines.
Change the never priority icon from mdi:shield-check to mdi:battery so all battery-related shedding states share a consistent visual family differentiated by companion elements.
Rebuilt from span-card 5adfb49: connectedCallback and visibilitychange handling for panel and card navigation.
deps(deps): bump the ha-core group with 3 updates
# Conflicts: # pyproject.toml
Picks up span-card 4491c9c — guards the customElements.define for span-error-banner to prevent the cross-bundle collision that left <span-panel> un-upgraded (blank sidebar view) when the Lovelace card bundle was loaded into the page before the panel bundle.
Picks up span-card 783a8ff — removes _recoverIfNeeded retry, _onVisibilityChange handlers, and the location.reload() module listener. All were defending against symptoms of the root cause fixed in efd1fb0 / span-card 4491c9c (span-error-banner cross-bundle registration collision). Dead code; both bundles shrink slightly.
Updates the requirements on [homeassistant](https://github.com/home-assistant/core), [homeassistant-stubs](https://github.com/KapJI/homeassistant-stubs) and [pytest-homeassistant-custom-component](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component) to permit the latest version. Updates `homeassistant` from 2026.4.3 to 2026.4.4 - [Release notes](https://github.com/home-assistant/core/releases) - [Commits](home-assistant/core@2026.4.3...2026.4.4) Updates `homeassistant-stubs` from 2026.4.3 to 2026.4.4 - [Release notes](https://github.com/KapJI/homeassistant-stubs/releases) - [Commits](KapJI/homeassistant-stubs@2026.4.3...2026.4.4) Updates `pytest-homeassistant-custom-component` to 0.13.325 - [Release notes](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component/releases) - [Changelog](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component/blob/master/CHANGELOG.md) - [Commits](MatthewFlamm/pytest-homeassistant-custom-component@0.13.324...0.13.325) --- updated-dependencies: - dependency-name: homeassistant dependency-version: 2026.4.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: ha-core - dependency-name: homeassistant-stubs dependency-version: 2026.4.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: ha-core - dependency-name: pytest-homeassistant-custom-component dependency-version: 0.13.325 dependency-type: direct:production dependency-group: ha-core ... Signed-off-by: dependabot[bot] <support@github.com>
deps(deps): bump the ha-core group with 3 updates
Updates the requirements on [mypy](https://github.com/python/mypy), [pyright](https://github.com/RobertCraigie/pyright-python), [ruff](https://github.com/astral-sh/ruff), [prek](https://github.com/j178/prek), [pytest](https://github.com/pytest-dev/pytest) and [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version. Updates `mypy` from 1.20.1 to 1.20.2 - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](python/mypy@v1.20.1...v1.20.2) Updates `pyright` from 1.1.408 to 1.1.409 - [Release notes](https://github.com/RobertCraigie/pyright-python/releases) - [Commits](RobertCraigie/pyright-python@v1.1.408...v1.1.409) Updates `ruff` from 0.15.10 to 0.15.12 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](astral-sh/ruff@0.15.10...0.15.12) Updates `prek` to 0.3.11 - [Release notes](https://github.com/j178/prek/releases) - [Changelog](https://github.com/j178/prek/blob/master/CHANGELOG.md) - [Commits](j178/prek@v0.3.9...v0.3.11) Updates `pytest` to 9.0.3 - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](pytest-dev/pytest@7.0.0...9.0.3) Updates `pytest-asyncio` to 1.3.0 - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](pytest-dev/pytest-asyncio@v0.21.0...v1.3.0) --- updated-dependencies: - dependency-name: mypy dependency-version: 1.20.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies - dependency-name: pyright dependency-version: 1.1.409 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies - dependency-name: ruff dependency-version: 0.15.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-dependencies - dependency-name: prek dependency-version: 0.3.11 dependency-type: direct:development dependency-group: dev-dependencies - dependency-name: pytest dependency-version: 9.0.3 dependency-type: direct:production dependency-group: dev-dependencies - dependency-name: pytest-asyncio dependency-version: 1.3.0 dependency-type: direct:production dependency-group: dev-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
…istration When the integration reloaded and the panel reconnected within ~1 second, async_set_updated_data() -> async_update_listeners() could fire synchronously the instant the coordinator listener was registered inside super().async_added_to_hass(), before async_get_last_extra_data() had a chance to restore _energy_offset from persistent storage. The first _process_raw_value() call then ran with offset=0, reported the raw panel counter to HA, and the statistics engine treated the value drop as a counter reset - permanently inflating cumulative energy totals by the raw counter value for every affected circuit. Fix: fetch and apply the stored dip state before calling super(), so the offset is always in place before any listener can fire. Adds a regression test that captures _energy_offset at the exact moment async_add_listener is called and asserts it equals the stored offset, not 0.
…lue_fn returns None Binary sensors whose value function returns None while the panel is online were incorrectly marked unavailable. The panel legitimately reports UNKNOWN for door state when the door has not been operated recently; the correct HA representation is the unknown state (available=True, is_on=None), not unavailable (available=False). Affects door state, grid-islandable, and BESS connected sensors. Root cause present since v1.2.0; exposed persistently by a firmware change that now holds door=UNKNOWN as the steady-state between events.
Release/v2.0.7
…s-057fb39fbb deps(deps): bump the dev-dependencies group with 6 updates
Picks up MQTT reconnect self-healing (paho client rebuild + CA refetch so firmware-driven certificate rotations no longer wedge the integration) and the 2.6.3 fix that threads the configured panel port through the client factory.
bump span-panel-api to 2.6.4 and start 2.0.8 changelog
Updates the requirements on [homeassistant](https://github.com/home-assistant/core), [homeassistant-stubs](https://github.com/KapJI/homeassistant-stubs) and [pytest-homeassistant-custom-component](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component) to permit the latest version. Updates `homeassistant` from 2026.4.4 to 2026.5.4 - [Release notes](https://github.com/home-assistant/core/releases) - [Commits](home-assistant/core@2026.4.4...2026.5.4) Updates `homeassistant-stubs` from 2026.4.4 to 2026.5.4 - [Release notes](https://github.com/KapJI/homeassistant-stubs/releases) - [Commits](KapJI/homeassistant-stubs@2026.4.4...2026.5.4) Updates `pytest-homeassistant-custom-component` to 0.13.333 - [Release notes](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component/releases) - [Changelog](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component/blob/master/CHANGELOG.md) - [Commits](MatthewFlamm/pytest-homeassistant-custom-component@0.13.325...0.13.333) --- updated-dependencies: - dependency-name: homeassistant dependency-version: 2026.5.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: ha-core - dependency-name: homeassistant-stubs dependency-version: 2026.5.4 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: ha-core - dependency-name: pytest-homeassistant-custom-component dependency-version: 0.13.333 dependency-type: direct:production dependency-group: ha-core ... Signed-off-by: dependabot[bot] <support@github.com>
deps(deps): bump the ha-core group with 3 updates
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6 to 7. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](codecov/codecov-action@v6...v7) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
…cov/codecov-action-7 ci(deps): bump codecov/codecov-action from 6 to 7
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v6...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
…ons/checkout-7 ci(deps): bump actions/checkout from 6 to 7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.