Skip to content

Hauser v0.4.0-beta.5

Pre-release
Pre-release

Choose a tag to compare

@ralleur ralleur released this 16 Aug 19:29
· 65 commits to main since this release

Release 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 Assistant vacuum service set (start, return_to_base) and
    treats the cleaning and returning states 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 amd64 and aarch64 only.

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.