UX-09 review: short start-up timeout, latch rows pinned in shadow, plainer rows
checks / unit (pull_request) Successful in 8m50s
infra-pin / fresh (pull_request) Successful in 1s

The Supervisor questions for the Details link are asked together with a
3 s budget instead of one after the other at 10 s each, so a hung
Supervisor cannot hold control start for 20 s. In shadow mode the
circulating and site-direction latches are pinned to keep their own red
row that says how they clear. Plainer inverter and battery wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-27 04:45:06 +02:00
co-authored by Claude Opus 5.5
parent 00e3ee9de8
commit 63dee6db1e
4 changed files with 51 additions and 16 deletions
+6 -1
View File
@@ -213,10 +213,11 @@ class _Resp:
class _Session:
def __init__(self, answers):
self.answers, self.asked = answers, []
self.answers, self.asked, self.timeouts = answers, [], []
def get(self, url, **kw):
self.asked.append((url, kw.get("headers", {}).get("Authorization")))
self.timeouts.append(kw.get("timeout"))
return _Resp(self.answers[url])
@@ -236,6 +237,10 @@ check("...and a Supervisor that does not answer costs the link, never the "
"start",
asyncio.run(docs_link_facts(_down, "tok")) == {
"slug": None, "ha_version": None})
check("...and each question has a short timeout, so a Supervisor that hangs "
f"delays control start by seconds, not minutes ({_ok.timeouts})",
len(_ok.timeouts) == 2
and all(isinstance(t, (int, float)) and 0 < t <= 3 for t in _ok.timeouts))
# Shadow mode (UX-09): nothing the add-on decides reaches the inverter, so no
# text may say a command was sent or that the battery is giving power.