host/engine: visible error/retry state for failed fetches + retry on network failure
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 30s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 30s
Two engine fixes in web/orchestration.sx (rebuilt into the WASM bytecode) plus the blog CSS that surfaces them. 1. Retry on NETWORK failure, not just HTTP errors. The fetch error/catch path (the real offline / DNS / connection-refused case) previously dispatched sx:requestError and stopped — only a non-ok HTTP response with an empty body ever reached handle-retry. So "no connection" never recovered. Now the catch path calls handle-retry too, so an sx-retry element actually self-heals when the connection returns (the cap bounds the backoff interval, not the attempt count — it retries forever). 2. Visible failure state. On any failed/aborted fetch the engine adds an `.sx-error` class to the element (cleared, with the retry backoff reset, on the next success). Without it a stuck retry loop is invisible — the picker just sits "Loading…". The blog shell ships CSS so the relate picker shows "Connection problem — retrying…" / "offline, retrying…" on .sx-error. Platform-wide: any sx-get/sx-post element benefits, not just the picker. Tests: relate-picker.spec.js gains a 6th case — abort relate-options, assert .sx-error appears, un-abort, assert it clears and the picker repopulates (proving the retry loop is live). 6/6 browser + 272/272 conformance. WASM web stack rebuilt (orchestration.sxbc + the static hs-* copies refreshed by the same build). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -951,7 +951,26 @@
|
||||
"hs-keywords",
|
||||
"hs-keyword?",
|
||||
"hs-tokenize",
|
||||
"hs-tokenize-template"
|
||||
"hs-tokenize-template",
|
||||
"hs-stream-type-map",
|
||||
"hs-stream",
|
||||
"hs-stream-skip-ws!",
|
||||
"hs-stream-current",
|
||||
"hs-stream-match",
|
||||
"hs-stream-match-type",
|
||||
"hs-stream-match-any",
|
||||
"hs-stream-match-any-op",
|
||||
"hs-stream-peek",
|
||||
"hs-stream-consume-until",
|
||||
"hs-stream-consume-until-ws",
|
||||
"hs-stream-push-follow!",
|
||||
"hs-stream-pop-follow!",
|
||||
"hs-stream-push-follows!",
|
||||
"hs-stream-pop-follows!",
|
||||
"hs-stream-clear-follows!",
|
||||
"hs-stream-restore-follows!",
|
||||
"hs-stream-last-match",
|
||||
"hs-stream-last-ws"
|
||||
]
|
||||
},
|
||||
"hs-parser": {
|
||||
@@ -989,6 +1008,8 @@
|
||||
"hs-each",
|
||||
"meta",
|
||||
"hs-on-every",
|
||||
"hs-throttle!",
|
||||
"hs-debounce!",
|
||||
"_hs-on-caller",
|
||||
"hs-on",
|
||||
"hs-on-every",
|
||||
@@ -1067,6 +1088,7 @@
|
||||
"hs-eq-ignore-case",
|
||||
"hs-starts-with?",
|
||||
"hs-ends-with?",
|
||||
"hs-attr-watch!",
|
||||
"hs-scoped-set!",
|
||||
"hs-scoped-get",
|
||||
"hs-precedes?",
|
||||
@@ -1156,8 +1178,6 @@
|
||||
"hs-token-value",
|
||||
"hs-token-op?",
|
||||
"hs-try-json-parse",
|
||||
"hs-socket-normalise-url",
|
||||
"hs-socket-bind-name!",
|
||||
"hs-socket-resolve-rpc!",
|
||||
"hs-socket-register!"
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user