Skip to content

Update from upstream#1

Merged
gdgib merged 507 commits into
haext:mainfrom
SpanPanel:main
Jul 4, 2026
Merged

Update from upstream#1
gdgib merged 507 commits into
haext:mainfrom
SpanPanel:main

Conversation

@gdgib

@gdgib gdgib commented Jul 4, 2026

Copy link
Copy Markdown

No description provided.

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.
cayossarian and others added 28 commits April 20, 2026 12:02
deps(deps): bump the ha-core group with 3 updates
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.
…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
@gdgib gdgib self-assigned this Jul 4, 2026
@gdgib gdgib merged commit 4cf5912 into haext:main Jul 4, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants