Hauser v0.4.0-beta.5
Pre-releaseRelease identity
| Version | 0.4.0-beta.5 |
| Git tag | v0.4.0-beta.5 (annotated, 83a21c4a) |
| Source commit | 89f9d100b49322814ed9f46a8a2e0f0eaab63e31 |
| Image | ghcr.io/ralleur/hauser@sha256:963564a36c4e6be32d9feded0dd99694200d6454164956f23516c3821d0dc528 |
| Also tagged | :v0.4.0-beta.5 and :0.4.0-beta.5 (same manifest; the Supervisor resolves the unprefixed tag) |
| Platforms | linux/amd64, linux/arm64 |
| Config schema | v3, with the v1 → v3 migration path included |
What changed
Fixed — setup wizard entity discovery (#7)
The wizard mapped only lights, climate, temperature, presence, window and camera
entities. Switches were dropped without a trace: the domain was never mapped, so
room-assigned switches reached neither the generated room configuration nor the
ignored list. Media players were never offered as media targets even though the
runtime already supported them. A room also accepted only one entity per
non-light role, so several switches in the same room collapsed into a single
entry — switches may now appear as often per room as lights do.
Added — vacuums
Vacuums are discovered and exposed as a start / return-to-base control, built
against Home Assistant's documented vacuum service set. See the limitations
below before relying on it.
Installation or update
Back up before changing images. For the App, create a Home Assistant backup that
includes Hauser; for Compose, run ./scripts/backup.sh.
Fresh Compose install:
git clone https://github.com/ralleur/hauser.git
cd hauser
docker compose up -d
Update from v0.4.0-beta.4:
./scripts/backup.sh
git pull
docker compose pull
docker compose up -d
Home Assistant OS App: the App Store offers 0.4.0-beta.5 once the repository is
refreshed; existing installations are offered the update because the manifest
version changed.
Rollback to the previous release by immutable reference:
ghcr.io/ralleur/hauser@sha256:23b67bcb4f28cae691076708c96df3d6a346385bedd7e27088d0848953e119f7
Verification evidence
All results below are from the release preflight and the tag workflow for this
exact commit.
| Check | Result |
|---|---|
| Unit tests | 1120 passed (86 files) |
Typecheck (svelte-check) |
1690 files, 0 errors, 0 warnings |
| Production build, demo build, Pages build | pass |
| Performance budget | pass |
| Container: setup-required start | setup_required=PASS |
| Container: schema migration v1 → v3 | migration_v1_to_v3=PASS |
| Container: backup and restore | backup_restore=PASS |
| Container: invalid config stays fail-closed | invalid_config=PASS |
| Container: failed migration stays fail-closed | invalid_migration=PASS |
| Export privacy and license gate | license_files, media_asset_boundary, private_capability_boundary all PASS |
| Post-publish pull of the exact digest | pass — pulled by digest, container reports healthy, /api/health returns setup_required, UI serves HTTP 200 |
| Published image carries this fix | verified — the served bundle contains the switch/vacuum discovery mapping and the extended entity-role list |
| Image labels | org.opencontainers.image.version=0.4.0-beta.5, revision=89f9d100b49322814ed9f46a8a2e0f0eaab63e31 |
Known limitations
- The vacuum control has never run against physical hardware. It follows the
documented Home Assistantvacuumservice set (start,return_to_base) and
treats thecleaningandreturningstates as active. Real integrations vary
in both service set and reported states across device generations, so treat
this path as unverified and report what you observe. - No external real-home installation has run on this release. The evidence
above is maintainer-operated clean-room and container-contract testing. The
external installation reports received so far (#6, #7) were made against
earlier betas. - Hauser is not an Ingress application and adds no authentication of its own.
- The App supports
amd64andaarch64only.
Security and support
Report vulnerabilities as described in SECURITY.md. Hauser is a
self-hosted hobby project with no service-level agreement and no compatibility
promise beyond the documented paths. Do not expose the port directly to the
internet without an authentication and TLS boundary in front of it.