Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
188 commits
Select commit Hold shift + click to select a range
d03526f
feat: assign Wiser devices to room areas
andyblac Sep 10, 2026
d0302ee
fix: use gas burner icon for estimated boiler output
andyblac Sep 11, 2026
c548d6e
fix: use gas burner icon for boiler capacity
andyblac Sep 11, 2026
b1436a4
fix: use via_device_id for hot water switch
andyblac Sep 12, 2026
8fc0c31
Merge pull request #701 from andyblac/estimated-boiler-output-icon
asantaga Sep 13, 2026
8b8946e
Merge pull request #704 from andyblac/switch_fix
asantaga Sep 13, 2026
8829641
Merge branch 'master' into dev
asantaga Sep 13, 2026
94812ba
Add UI options for legacy device naming
andyblac Sep 19, 2026
b2416c2
feat: add configurable Wiser schedules sidebar panel
andyblac Sep 12, 2026
81eae1b
fix: detect schedule card resource version from installed bundle
andyblac Sep 12, 2026
5c72837
fix: detect Zigbee card resource version from installed bundle
andyblac Sep 12, 2026
ec23fc3
fix: read explicit card version markers from bundles
andyblac Sep 12, 2026
596e242
build: fetch card release assets by integration release channel
andyblac Sep 12, 2026
42bd37f
Use installed Schedule card version for resources and sidebar
andyblac Sep 12, 2026
f9af5b5
Add Zigbee sidebar and detect installed card version
andyblac Sep 12, 2026
4715215
Keep bundled development cards in full test builds
andyblac Sep 12, 2026
cfc3d38
Consolidate card version detection in frontend registration
andyblac Sep 12, 2026
07c65fc
Avoid Zigbee sidebar route conflicts breaking integration setup
andyblac Sep 12, 2026
873a4aa
test: remove obsolete hardcoded schedule version assertion
andyblac Sep 12, 2026
c05d1d1
Refactor sidebar panels to share lifecycle and settings logic
andyblac Sep 19, 2026
588f49b
Move sidebar visibility settings into UI options
andyblac Sep 19, 2026
61a8fc0
Support evolving sidebar card settings and update Zigbee bundle
andyblac Sep 19, 2026
651d70a
Automate local card builds and enforce published assets for releases
andyblac Sep 19, 2026
4036252
Register custom Wiser Zigbee sidebar icon
andyblac Sep 19, 2026
3c4ad90
Preview stable release packaging on frontend-panels pushes
andyblac Sep 19, 2026
359a231
Document release builds in restored README
andyblac Sep 19, 2026
80ec445
Clean up release workflow and sidebar formatting
andyblac Sep 19, 2026
336a779
Add British English and correct integration translations
andyblac Sep 19, 2026
24ff75c
Merge pull request #700 from andyblac/wiser-room-areas
asantaga Sep 19, 2026
1aee1ed
Merge branch 'frontend-panels' of github.com:andyblac/wiserHomeAssist…
asantaga Sep 19, 2026
ef205f2
documentation for 4.0.0-rc1
asantaga Sep 19, 2026
2ff55bd
documentation for 4.0.0-rc1 pt2
asantaga Sep 19, 2026
4d6e29b
documentation for 4.0.0-rc1 pt2
asantaga Sep 19, 2026
e55031d
Add independent frontend card update entities
andyblac Sep 20, 2026
62e5949
Fix card update refresh retries and prune old cached bundles
andyblac Sep 20, 2026
57db137
Merge pull request #709 from andyblac/frontend-updates
asantaga Sep 20, 2026
c2818e3
Update README.md
asantaga Sep 20, 2026
8876c8f
Count flame runtime from local midnight
andyblac Sep 21, 2026
3cb61ba
Remove bundled frontend card artifacts
andyblac Sep 27, 2026
96accad
Merge pull request #716 from andyblac/remove-old-frontend
asantaga Sep 28, 2026
a23adc8
Merge pull request #715 from andyblac/fix-flame-statistics
asantaga Sep 28, 2026
2d4020c
added contributing text
asantaga Sep 28, 2026
daea9fa
docs: add CONTRIBUTING.md
asantaga Sep 28, 2026
7941444
added contributing.md
asantaga Sep 28, 2026
38149c1
Update publish actions to Node 24 and pin Ubuntu runner
andyblac Sep 21, 2026
e60e656
Select newest published card release for dev builds
andyblac Sep 20, 2026
199cc94
Honor HACS prerelease preference for card updates
andyblac Sep 21, 2026
207471f
Fix circuit state normalization
andyblac Sep 28, 2026
d96552f
Expose OpenTherm room demand attributes
andyblac Sep 28, 2026
97c9e18
Fix light capability entity migration
andyblac Sep 29, 2026
3b8bef5
Keep OpenTherm room attributes available
andyblac Sep 29, 2026
b1646ee
Unify Wiser frontend panels
andyblac Sep 29, 2026
7b72d32
Merge branch 'panel-update' into frontend-release-fix
andyblac Sep 29, 2026
f3dfd44
Fix Wiser panel refresh by separating UI and static routes
andyblac Sep 29, 2026
600ccfe
Discover frontend cards from external registry
andyblac Sep 29, 2026
8afb70a
Add independently updateable frontend registry
andyblac Sep 30, 2026
ccf7fec
Restore default titles for renamed panels
andyblac Sep 30, 2026
bc347f3
Update smart plug state immediately
andyblac Oct 1, 2026
2363db5
Support independently released panel-only bundles
andyblac Oct 1, 2026
01f6539
Format installed frontend registry JSON
andyblac Oct 1, 2026
df8d3f9
Merge pull request #725 from andyblac/switch-fix
asantaga Oct 2, 2026
f4c9759
Merge pull request #724 from andyblac/opentherm-attributes
asantaga Oct 2, 2026
cb393d0
Merge pull request #723 from andyblac/migration-fix
asantaga Oct 2, 2026
cd9b6a8
Merge pull request #721 from andyblac/issue711
asantaga Oct 2, 2026
b852eea
Merge pull request #718 from andyblac/node
asantaga Oct 2, 2026
7b861f7
Allow builds with unavailable frontend bundles
andyblac Oct 2, 2026
8afdaf7
Manage frontend registry in integration
andyblac Oct 2, 2026
b3d426e
Handle current API OpenTherm demand attributes
andyblac Oct 3, 2026
67388c1
fix: hide V2 system sensors on V1 hubs
andyblac Oct 5, 2026
9864276
fix: detect V2 system sensor support
andyblac Oct 5, 2026
6931493
Merge pull request #719 from andyblac/frontend-release-fix
asantaga Oct 7, 2026
a63559b
re introduice equipment
LGO44 Sep 29, 2026
cef31ec
Make equipment sensors optional
andyblac Oct 2, 2026
6fadb08
fix: detect equipment data safely
andyblac Oct 8, 2026
4353115
fix: handle missing equipment energy
andyblac Oct 8, 2026
133f177
fix: translate equipment sensor names
andyblac Oct 8, 2026
8c01c4a
fix: classify equipment power sensors
andyblac Oct 8, 2026
de32c08
fix: exclude live equipment attributes from recorder
andyblac Oct 8, 2026
225af7b
feat: support PowerTag Control equipment sensors
andyblac Oct 8, 2026
f03633d
fix: clarify equipment name attribute
andyblac Oct 8, 2026
477d7e3
fix: handle temporary equipment data loss
andyblac Oct 8, 2026
938d664
fix: retain enabled equipment option during data gaps
andyblac Oct 8, 2026
5ab4540
refactor: clean up equipment attributes
andyblac Oct 8, 2026
3beb8c2
fix: handle missing binary equipment data
andyblac Oct 8, 2026
717652e
fix: fall back to available equipment power
andyblac Oct 8, 2026
76d2782
fix: refresh cached equipment power state
andyblac Oct 8, 2026
c181820
Merge pull request #726 from andyblac/equipments
asantaga Oct 8, 2026
1521306
Merge pull request #727 from andyblac/opentherm-api-check
asantaga Oct 8, 2026
010c24c
fix: detect active OpenTherm installations
andyblac Oct 5, 2026
f97357b
fix: hide inactive OpenTherm entities
andyblac Oct 5, 2026
385f302
fix: clear remembered OpenTherm state when disabled
andyblac Oct 8, 2026
4121d8a
docs: explain OpenTherm availability behaviour
andyblac Oct 8, 2026
6f61362
perf: sync OpenTherm registry on detection changes
andyblac Oct 8, 2026
6c9dfb4
docs: explain OpenTherm detection persistence
andyblac Oct 8, 2026
dfc9d3a
test: cover OpenTherm reload lifecycle
andyblac Oct 8, 2026
bd7c2e8
fix: guard missing OpenTherm system data
andyblac Oct 8, 2026
839ff0f
fix: guard missing OpenTherm circuit data
andyblac Oct 8, 2026
94c0e47
test: complete binary sensor import stubs
andyblac Oct 8, 2026
63b7480
fix: detect PCM support independently
andyblac Oct 8, 2026
16ae1a8
fix: limit V2 entity cleanup to V1 hubs
andyblac Oct 8, 2026
245060d
fix: support future hub generations
andyblac Oct 8, 2026
694cabd
refactor: clean migrated V2 entity IDs
andyblac Oct 8, 2026
71dd088
refactor: share V2 sensor names
andyblac Oct 8, 2026
f6455da
test: cover V2 entity cleanup
andyblac Oct 8, 2026
7c6fa97
test: inspect V2 guards structurally
andyblac Oct 8, 2026
73785c8
fix: detect summer sensor support independently
andyblac Oct 8, 2026
3453bc0
docs: correct PCM sensor description
andyblac Oct 8, 2026
2cf38eb
Merge pull request #729 from andyblac/opentherm-init-fix
andyblac Oct 9, 2026
a05a6ef
Merge pull request #731 from andyblac/V1-summer-comfort
andyblac Oct 9, 2026
3b972ea
fix: preserve devices across room renames
andyblac Oct 5, 2026
2b9110e
fix: stabilize physical entity identities
andyblac Oct 5, 2026
14dfc85
fix: remove deleted Wiser rooms
andyblac Oct 7, 2026
c743a97
Assign new Wiser rooms to Home Assistant areas
andyblac Oct 4, 2026
3bfc322
fix: use compatible parent identifier during migration
andyblac Oct 8, 2026
ed8ef84
fix: find renamed physical devices by stable entities
andyblac Oct 8, 2026
26db842
fix: separate light away switch identities
andyblac Oct 8, 2026
db094e2
fix: confirm room deletion before registry cleanup
andyblac Oct 8, 2026
d77dd9c
fix: preserve user-selected areas during migration
andyblac Oct 8, 2026
09c110c
fix: persist room names without reloading
andyblac Oct 8, 2026
4693a44
fix: stabilize humidity and power sensor identities
andyblac Oct 8, 2026
87f5529
test: recognise stable unique ID helpers
andyblac Oct 8, 2026
982518a
fix: retain duplicate migration records
andyblac Oct 8, 2026
8a92f61
fix: preserve additional device identifiers
andyblac Oct 8, 2026
3eaed59
fix: avoid empty areas during room migration
andyblac Oct 8, 2026
c0090f5
refactor: remove unused room name helper
andyblac Oct 8, 2026
c0252f6
fix: reconstruct historical device names
andyblac Oct 8, 2026
1a1fad6
test: cover room migration orchestration
andyblac Oct 8, 2026
b5bcf86
fix: recover entities from historical device names
andyblac Oct 8, 2026
249735d
fix: clean up the final deleted room safely
andyblac Oct 8, 2026
21e89af
fix: apply legacy naming to room devices
andyblac Oct 8, 2026
adfd962
docs: describe room registry migration
andyblac Oct 8, 2026
e68569d
fix: validate stored room migration state
andyblac Oct 8, 2026
6e86525
fix: reconstruct legacy physical identifiers
andyblac Oct 8, 2026
9f16f79
fix: migrate legacy room entities
andyblac Oct 8, 2026
e82f6bf
fix: preserve device connections during migration
andyblac Oct 8, 2026
573b99c
fix: migrate room window detection entities
andyblac Oct 8, 2026
86933af
fix: remove inactive Wiser rooms
andyblac Oct 8, 2026
0b5dc73
fix: avoid duplicate hub MAC in entity IDs
andyblac Oct 9, 2026
a7fa66f
test: support current setup dependencies
andyblac Oct 9, 2026
b859d9e
fix: refresh system binary sensor states
andyblac Oct 8, 2026
aaaaf8a
test: remove obsolete iTRV helper stub
andyblac Oct 9, 2026
823e134
Merge pull request #730 from andyblac/room-rename-fix
asantaga Oct 11, 2026
7e1ced3
fix: use compatible parent device identifiers
andyblac Oct 8, 2026
453ed6d
fix: select compatible parent device reference
andyblac Oct 8, 2026
58363a3
fix: select compatible parent during device creation
andyblac Oct 11, 2026
dfbce3d
Merge pull request #734 from andyblac/via_device_id
asantaga Oct 11, 2026
726b3c8
Merge pull request #737 from andyblac/Issue736
asantaga Oct 11, 2026
05ec88c
feat: add OpenTherm hot water control
andyblac Oct 11, 2026
e5bf509
fix: avoid blocking light commands during refresh
andyblac Oct 13, 2026
cc2b5c4
fix: retry stale light command confirmation
andyblac Oct 13, 2026
e4553dc
fix: improve smart plug command confirmation
andyblac Oct 13, 2026
afc51ae
fix: cancel obsolete command confirmations
andyblac Oct 13, 2026
80e6148
fix: add passive mode support for UFH rooms
andyblac Oct 13, 2026
1ecf252
feat: expose smoke alarm operating states
andyblac Oct 13, 2026
1cae39a
feat: add EV charger entities
andyblac Oct 13, 2026
34d9401
fix: retain compatibility with released API
andyblac Oct 13, 2026
d463933
fix: use native names for light entities
andyblac Oct 14, 2026
8039170
fix: strip Wiser prefix from light entity names
andyblac Oct 14, 2026
161dfc4
fix: resolve dual relay names from button panel
andyblac Oct 14, 2026
9a4754d
fix: match dual relay channels by node id
andyblac Oct 14, 2026
493cf8c
fix: use embedded device name for light channels
andyblac Oct 14, 2026
ded761d
fix: omit channel name for single-source lights
andyblac Oct 14, 2026
54e7ee3
Merge light control optimisation for Issue666
andyblac Oct 14, 2026
ffcfca8
fix: handle command confirmation refresh errors
andyblac Oct 14, 2026
266a322
feat: add Spanish Hungarian Dutch and Portuguese translations
andyblac Oct 15, 2026
dfd1164
feat: expose smoke alarm report count
andyblac Oct 15, 2026
6b11228
feat: expand Wiser translation support
andyblac Oct 16, 2026
8c670b2
Merge pull request #749 from andyblac/Issue689
asantaga Oct 18, 2026
40a5c3b
Merge pull request #747 from andyblac/translations-support
asantaga Oct 18, 2026
605d5be
Merge pull request #742 from andyblac/Issue641
asantaga Oct 18, 2026
027903c
Merge branch 'Issue666' of github.com:andyblac/wiserHomeAssistantPlat…
asantaga Oct 18, 2026
5cdcf8d
feat: expose smoke alarm operating states
andyblac Oct 13, 2026
82256b3
feat: expose smoke alarm report count
andyblac Oct 15, 2026
7a8840f
Merge branch 'smoke-alarm-support' of github.com:andyblac/wiserHomeAs…
asantaga Oct 18, 2026
730044a
Merge branch 'andyblac-smoke-alarm-support' into dev
asantaga Oct 18, 2026
24a2d26
Merge pull request #745 from andyblac/opentherm-hot-water
asantaga Oct 18, 2026
a9fbf10
feat: add scheduled setpoint sensors for rooms
andyblac Oct 15, 2026
26faeae
Merge pull request #744 from andyblac/smoke-alarm-support
asantaga Oct 18, 2026
aed3c13
Merge pull request #746 from andyblac/Issue738
asantaga Oct 18, 2026
bd87fbc
fix: prepare 4.0.0 release
asantaga Oct 18, 2026
1cb788c
docs: complete 4.0.0 release notes
asantaga Oct 18, 2026
5fde9de
Merge branch 'release-4.0.0' into dev
asantaga Oct 18, 2026
2cd1d93
revert: leave equipment sensors off by default on upgrade
asantaga Oct 18, 2026
f6cbf57
Merge branch 'release-4.0.0' into dev
asantaga Oct 18, 2026
c8066b0
chore: finalise 4.0.0 version and README
asantaga Oct 18, 2026
8eecb7a
docs: describe unified Wiser panel, Controls card and Hub panel
asantaga Oct 18, 2026
d7928d9
fix: report room percentage_demand without OpenTherm
asantaga Oct 18, 2026
71e044f
docs: finalise 4.0.0 breaking changes and changelog
asantaga Oct 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 63 additions & 17 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,72 @@ name: Publish

on:
release:
types:
- published
types: [published]
push:
branches: [test-build]
workflow_dispatch:
inputs:
channel:
description: Card release channel to test (does not publish a release)
type: choice
options: [dev, stable]
default: dev

permissions:
contents: read

jobs:
release_zip_file:
name: Publish Wiser zip file asset
runs-on: ubuntu-latest
package:
name: Build Wiser integration
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: '3.13'
- name: Install test dependencies
run: python -m pip install -r tests/requirements.txt
- name: Test packaging and sidebar integration
run: |
python -m unittest discover -s tests -p test_card_releases.py
python -m unittest discover -s tests -p test_build.py
python -m unittest discover -s tests -p test_card_updates.py
python -m unittest discover -s tests -p test_ui_options.py
python -m unittest discover -s tests -p test_sidebar_icons.py
python -m unittest discover -s tests -p 'test_*sidebar.py'
python -m unittest discover -s tests -p 'test_*version.py'
- name: Build integration with published card releases
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARD_CHANNEL: ${{ github.event_name == 'release' && (github.event.release.prerelease && 'dev' || 'stable') || inputs.channel || 'dev' }}
PANEL_CONFIG_REPOSITORY: ${{ vars.WISER_PANEL_CONFIG_REPOSITORY || 'andyblac/WiserFrontendPanelConfig' }}
run: >-
python scripts/build.py --release
--channel "$CARD_CHANNEL"
--panel-config-repository "$PANEL_CONFIG_REPOSITORY"
- name: Upload release package for inspection
uses: actions/upload-artifact@v7
with:
name: wiser-package
path: |
dist/wiser.zip
dist/card-releases.json
dist/panel-config-release.json
if-no-files-found: error

publish:
name: Attach package to published release
if: github.event_name == 'release'
needs: package
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
- name: 📥 Checkout the repository
uses: actions/checkout@v3.0.2
# Pack the Wiser dir as a zip and upload to the release
- name: 📦 ZIP Wiser Dir
if: ${{ github.event_name == 'release' }}
run: |
cd ${{ github.workspace }}/custom_components/wiser
zip wiser.zip -r ./
- name: 📤 Upload zip to release
uses: softprops/action-gh-release@v0.1.14
if: ${{ github.event_name == 'release' }}
- uses: actions/download-artifact@v8
with:
name: wiser-package
path: dist
- uses: softprops/action-gh-release@v3
with:
files: ${{ github.workspace }}/custom_components/wiser/wiser.zip
files: dist/wiser.zip
fail_on_unmatched_files: true
263 changes: 263 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

166 changes: 166 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
# Contributing

Thanks for helping out with the Wiser Home Assistant integration. Issues, pull
requests, and bug fixes are all welcome and greatly appreciated.

## Before you start

- **Search the [issues](https://github.com/asantaga/wiserHomeAssistantPlatform/issues)
first.** If your problem is already reported, add your details there rather
than opening a duplicate.
- For anything larger than a bug fix, open an issue to discuss the approach
before writing code. It saves everyone a wasted PR.
- Check the [Wiki](https://github.com/asantaga/wiserHomeAssistantPlatform/wiki)
for setup and usage documentation.

## Reporting bugs

Please include:

- The integration version (Settings → Devices & Services → Wiser), and your
Home Assistant version.
- Your hub model (v1 or v2) and firmware version.
- Depending on the bug we may ask for a **diagnostics download** from the integration's device page — it redacts
secrets and captures the hub data we need.
- Relevant log output. Add this to `configuration.yaml`, restart, and reproduce:

```yaml
logger:
default: warning
logs:
custom_components.wiser: debug
aioWiserHeatAPI: debug
```

## Where things live

| What | Where |
| --- | --- |
| Integration source | `custom_components/wiser/` |
| Hub communication | the separate `aioWiserHeatAPI` library, pinned in `manifest.json` |
| Frontend panel/card plumbing | `custom_components/wiser/frontend/` |
| Frontend cards and panels | repositories declared in `custom_components/wiser/frontend/cards.json` |
| Tests | `tests/` |
| Packaging scripts | `scripts/` |

Two things that trip people up:

- If a change is really about how we talk to the hub, it probably belongs in
[aioWiserHeatAPI](https://github.com/msp1974/aioWiserHeatAPI) git repo, not here.
- **Card bundles are not committed to this repository.** They are downloaded
from the card repositories' GitHub releases at build time. Do not add built
`.js` card assets to `custom_components/wiser/frontend/`.
- Follow [Adding Wiser frontend cards and panels](docs/frontend-registry.md) to
register a new frontend repository and test its independent update entity.

## Branching and pull requests

- **Base every PR on `dev`.** All development happens there; `master` only
receives `dev` when we cut a release.
- Name your branch after the issue it fixes, e.g. `issue123`.
- Keep a PR to one logical change. Unrelated fixes are much easier to review as
separate PRs.
- Reference the issue in the PR description (`Fixes #123`).
- Add or update tests for behaviour you change, and add a `CHANGELOG.md` entry
under the unreleased/current heading, matching the existing style (one line,
ending with a link to the issue and/or PR).

Releases are tagged from `master` as `vX.Y.Z` (e.g. `v3.4.20`). Release
candidates are cut from `dev` and tagged `vX.Y.Z-rcN` (e.g. `v4.0.0-rc1`).

## Development setup

Run the integration against a real Home Assistant instance. The quickest route
is a development instance (container or venv) with the integration mounted or
symlinked into place:

```sh
ln -s /path/to/wiserHomeAssistantPlatform/custom_components/wiser \
/path/to/ha-config/custom_components/wiser
```

Restart Home Assistant after each change — Home Assistant does not hot-reload
custom components.

The minimum supported Home Assistant version is declared in `hacs.json`
(currently 2025.5); don't use APIs newer than that without raising the minimum
deliberately.


## Code style

There is no enforced formatter config in this repository, so match the
surrounding code, which follows Home Assistant core conventions:

- `from __future__ import annotations` at the top, type hints on new functions.
- Docstrings on every module, class, and function.
- Import grouping and ordering as in the existing modules.
- New user-visible strings go in `strings.json` and the files under
`translations/`; new icons go in `icons.json`.

## Versioning

The version is set in two places, and both must be changed together:

- `version` in `custom_components/wiser/manifest.json`, which HACS and Home
Assistant read.
- `VERSION` in `custom_components/wiser/const.py`, which the integration reports
itself, for example in the hub sensor's `integration_version` attribute.

The version must stay parseable by HACS and Home Assistant. Use `X.Y.Z` for
releases, `X.Y.Z-rcN` for release candidates, and `X.Y.ZbN` for beta builds on
`dev`. Do not invent suffixes such as `Dev` — HACS and Home Assistant reject
them, and the integration will fail to load with `does not have a valid version
key`.

## Building a package

```sh
# Stable release package
python3 scripts/build.py --release --channel stable

# Prerelease package
python3 scripts/build.py --release --channel dev
```

The build downloads every card and panel declared in
`custom_components/wiser/frontend/cards.json` from its own GitHub repository.
Stable builds use stable frontend releases; prerelease builds use the most
recently published stable or prerelease release. In a running installation,
each frontend update entity follows the HACS **Pre-release** switch for this
integration; without that option it offers stable releases only. See
[Adding frontend cards and panels](docs/frontend-registry.md) for the registry
format and shared panel API.

The output is `dist/wiser.zip`, with `dist/card-releases.json` recording the
frontend artifacts and checksums included. If an individual card or panel
repository is temporarily unavailable, its bundle is omitted and the
integration still builds; its Home Assistant update entity can install it
later. Invalid local development bundles and an invalid bundled registry still
fail the build.

For an integration-only test package that retains the registry but
deliberately omits every card and panel bundle:

```sh
python3 scripts/build.py --channel dev --without-frontend
```

To see which card releases would be selected without downloading card bundles
(the registry metadata is still fetched):

```sh
python3 scripts/fetch_card_releases.py --channel dev --plan
```

The **Publish** GitHub Actions workflow runs the same build and attaches
`wiser.zip` when an integration release is published. Preview runs provide a
downloadable **wiser-package** artifact without publishing a release.

## Licence

By contributing, you agree that your contributions are licensed under the
project's MIT licence (see [LICENSE](LICENSE)).

Thanks again,
Wiser Home Assistant Integration Team
Loading
Loading