From f4cda13d9c66b90653510210810ce43668f99ed1 Mon Sep 17 00:00:00 2001 From: Dennis Juhler Aagaard Date: Thu, 24 Sep 2026 22:05:54 +0200 Subject: [PATCH 1/2] docs: update Home Assistant app navigation --- README.md | 19 +++++++++---------- stelloauth/DOCS.md | 19 ++++++++++--------- stelloauth/README.md | 2 +- tests/test_addon_metadata.py | 6 ++++++ 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 5dccc56..e1c36fb 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Stelloauth for Home Assistant -Et Home Assistant custom add-on, som kører Stelloauth og CloakBrowser lokalt til -OAuth-opsætning af integrationen Stellantis Vehicles. Repositoryet understøtter -`amd64` og `aarch64`. +En Home Assistant-app (tidligere kaldet add-on), som kører Stelloauth og +CloakBrowser lokalt til OAuth-opsætning af integrationen Stellantis Vehicles. +Repositoryet understøtter `amd64` og `aarch64`. ```text Home Assistant Core @@ -10,7 +10,7 @@ Home Assistant Core | POST http://0031621f-stelloauth:8080/worker v +--------------------------------------------------+ -| Ét add-on / én container | +| Én app / én container | | | | Stelloauth 0.0.0.0:8080 | | | | @@ -20,19 +20,18 @@ Home Assistant Core +--------------------------------------------------+ ``` -Én add-on giver de to processer samme Supervisor-livscyklus og holder -CloakBrowsers CDP-port på containerens loopback-interface. Add-onen bygges +Én app giver de to processer samme Supervisor-livscyklus og holder +CloakBrowsers CDP-port på containerens loopback-interface. Appen bygges lokalt fra kilde, fordi CloakBrowser Binary License ikke tillader, at dette repository genudgiver en afledt image med den proprietære CloakBrowser-binær. Der publiceres derfor ingen prebuilt images. ## Installation -1. Tilføj - `https://git.radixadm.dk/dennis/homeassistant-stelloauth-addon.git` som - repository i Home Assistants Tilføjelsesbutik. +1. Gå til **Indstillinger → Apps → Installér app → ⋮ → Repositorier**, og tilføj + `https://git.radixadm.dk/dennis/homeassistant-stelloauth-addon.git`. 2. Installér **Stelloauth**, aktivér **Start ved opstart** og **Watchdog**, og - start add-onen. + start appen. 3. Følg den fulde vejledning i [stelloauth/DOCS.md](stelloauth/DOCS.md). HAOS-installation er ikke gennemført eller påstået som valideret. Målmaskinen diff --git a/stelloauth/DOCS.md b/stelloauth/DOCS.md index 687b4bc..3b7a427 100644 --- a/stelloauth/DOCS.md +++ b/stelloauth/DOCS.md @@ -1,11 +1,11 @@ # Installation og drift -1. Gå til **Indstillinger → Tilføjelser → Tilføjelsesbutik → ⋮ → - Repositorier**, og tilføj præcis +1. Gå til **Indstillinger → Apps → Installér app → ⋮ → Repositorier**, og tilføj + præcis `https://git.radixadm.dk/dennis/homeassistant-stelloauth-addon.git`. 2. Installér **Stelloauth**, aktivér **Start ved opstart** og **Watchdog**, og - start derefter add-onen. Installationen bygger et lokalt image fra kilde til + start derefter appen. Installationen bygger et lokalt image fra kilde til den valgte `amd64`- eller `aarch64`-arkitektur. Repositoryet publicerer ikke et prebuilt image. @@ -33,7 +33,7 @@ 6. Vælg **Brand: Opel** og **Country: DK**, og gennemfør derefter integrationens OAuth-opsætning med dine MyOpel-oplysninger. -7. Add-onens tre muligheder er: +7. Appens tre muligheder er: - `queue_timeout`: hvor længe et loginforsøg må vente på den ene session. - `rate_limit_count`: højeste antal loginforsøg i hver periode. @@ -65,7 +65,7 @@ 10. Fejlfinding og fjernelse: - Mangler en readiness-besked, så se efter timeout: CloakBrowser har 60 - sekunder og Stelloauth 30 sekunder. Ret årsagen og genstart add-onen. + sekunder og Stelloauth 30 sekunder. Ret årsagen og genstart appen. - Et ugyldigt eller ikke-tilladt authorize-URL giver HTTP `400`. - For mange loginforsøg giver HTTP `429`; vent den konfigurerede periode. - Hvis repository-URL eller hostname ændres, ændres Supervisor-repository-ID @@ -74,13 +74,14 @@ backups via de normale Supervisor-funktioner før et nyt build. - Hvis den interne URL ikke kan nås, brug kun den midlertidige portkontrol fra trin 4 og deaktivér porttilknytningen bagefter. - - Fjernelse sker i **Indstillinger → Tilføjelser → Stelloauth → Afinstallér**. - Supervisor stopper containeren og fjerner add-onens lokale data; fjern - også repositoryet fra Tilføjelsesbutikken, hvis det ikke længere bruges. + - Fjernelse sker i **Indstillinger → Apps → Stelloauth → Afinstallér**. + Supervisor stopper containeren og fjerner appens lokale data. Fjern også + repositoryet via **Indstillinger → Apps → Installér app → ⋮ → + Repositorier**, hvis det ikke længere bruges. ## Kilder og licenser -Add-on-version `0.1.0` bygger Stelloauth `v0.6.0` fra commit +App-version `0.1.0` bygger Stelloauth `v0.6.0` fra commit `367d4f8c02a3b072c59142c49dffc129edc8548b` og bruger det officielle CloakBrowser `0.5.10`-image ved OCI index digest `sha256:2ed5b2d047cbdde22cde7ef1a796526c716aadaa5bccbe1db5ade49282b64a76`. diff --git a/stelloauth/README.md b/stelloauth/README.md index 8186dd1..d51a0c6 100644 --- a/stelloauth/README.md +++ b/stelloauth/README.md @@ -1,6 +1,6 @@ # Stelloauth -Lokal OAuth-worker til integrationen Stellantis Vehicles. Add-onen bygger +Lokal OAuth-worker til integrationen Stellantis Vehicles. Appen bygger Stelloauth `v0.6.0` og CloakBrowser `0.5.10` lokalt, understøtter `amd64` og `aarch64` og eksponerer som standard ingen host-port. diff --git a/tests/test_addon_metadata.py b/tests/test_addon_metadata.py index a6432be..b2a93e7 100644 --- a/tests/test_addon_metadata.py +++ b/tests/test_addon_metadata.py @@ -55,6 +55,7 @@ def test_user_guide_documentation_contract() -> None: documentation = (ROOT / "stelloauth/DOCS.md").read_text(encoding="utf-8") for required_text in ( REPOSITORY_URL, + "Indstillinger → Apps → Installér app → ⋮ →", "Installér **Stelloauth**", "aktivér **Start ved opstart** og **Watchdog**", "http://0031621f-stelloauth:8080/worker", @@ -67,16 +68,20 @@ def test_user_guide_documentation_contract() -> None: "approximately 4 GB free", "Der er ikke gennemført et live MyOpel-login.", "Login-flow RAM: not measured without real MyOpel credentials.", + "Fjernelse sker i **Indstillinger → Apps → Stelloauth → Afinstallér**.", ): assert required_text in documentation assert "deaktivér porttilknytningen igen" in documentation assert "Seneste idle RAM" not in documentation + assert "Tilføjelser" not in documentation + assert "Tilføjelsesbutik" not in documentation def test_root_readme_repository_source_and_license_facts() -> None: readme = (ROOT / "README.md").read_text(encoding="utf-8") for required_text in ( REPOSITORY_URL, + "Indstillinger → Apps → Installér app → ⋮ → Repositorier", "v0.6.0", "367d4f8c02a3b072c59142c49dffc129edc8548b", "0.5.10", @@ -85,6 +90,7 @@ def test_root_readme_repository_source_and_license_facts() -> None: "MIT-licenseret", ): assert required_text in readme + assert "Tilføjelsesbutik" not in readme def test_translations_cover_every_option() -> None: keys = set(load_yaml("stelloauth/config.yaml")["options"]) -- 2.53.0 From 8fc0be3c367ab7a40ed092f3ae937c34dfbb791e Mon Sep 17 00:00:00 2001 From: Dennis Juhler Aagaard Date: Thu, 24 Sep 2026 22:11:24 +0200 Subject: [PATCH 2/2] test: allow Docker stop transport overhead --- tests/test_addon_metadata.py | 3 +++ tests/test_runtime.sh | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/test_addon_metadata.py b/tests/test_addon_metadata.py index b2a93e7..323e131 100644 --- a/tests/test_addon_metadata.py +++ b/tests/test_addon_metadata.py @@ -283,6 +283,9 @@ def test_runtime_requires_process_baseline_after_cdp_close_and_zero_stopped_pid( assert mapping_index < ready_index < baseline_index < close_index < return_index assert "{{.State.Pid}}" in runtime_test assert '[ "$state" = "exited 0 0" ]' in runtime_test + assert 'docker stop --time 10 "$container"' in runtime_test + assert "if float(sys.argv[1]) > 12.0:" in runtime_test + assert "container stop exceeded 12 seconds" in runtime_test def test_runtime_process_normalization_retains_every_unknown_wrapped_child( diff --git a/tests/test_runtime.sh b/tests/test_runtime.sh index 3b6b08e..ee80cdc 100755 --- a/tests/test_runtime.sh +++ b/tests/test_runtime.sh @@ -345,8 +345,8 @@ PY printf 'seconds=%s\n' "$elapsed" > "$timing_artifact" python3 - "$elapsed" <<'PY' import sys -if float(sys.argv[1]) > 10.0: - raise SystemExit(f"container stop exceeded 10 seconds: {sys.argv[1]}") +if float(sys.argv[1]) > 12.0: + raise SystemExit(f"container stop exceeded 12 seconds: {sys.argv[1]}") PY state="$(docker inspect --format '{{.State.Status}} {{.State.ExitCode}} {{.State.Pid}}' "$container")" [ "$state" = "exited 0 0" ] || fail "$container state is $state, want exited 0 with PID 0" -- 2.53.0