OCaml VM browser: safe equality, thunk trampolining, platform functions, nav pipeline
Core runtime fixes: - Safe equality (=, !=): physical equality for dicts/lambdas/signals, structural only for acyclic types. Prevents infinite loops on circular signal subscriber chains. - contains?: same safe comparison (physical first, structural for simple types) - Thunk trampolining in as_number and to_string: leaked thunks auto-resolve instead of showing <thunk> or erroring "Expected number, got thunk" - Diagnostic first error: shows actual type received Island hydration fixes: - adapter-dom.sx: skip scope-emit for spreads inside islands (was tripling classes) - schedule-idle: wrap callback to absorb requestIdleCallback deadline arg - home-stepper: remove spread-specific highlighting (all tokens same style per step) Platform functions (boot-helpers.sx): - fetch-request: 3-arg interface (config, success-fn, error-fn) with promise chain - build-request-body: form serialization for GET/POST - strip-component-scripts / extract-response-css: SX text processing - Navigation: bind-boost-link, bind-client-route-click via execute-request - Loading state: show-indicator, disable-elements, clear-loading-state - DOM extras: dom-remove, dom-attr-list (name/value pairs), dom-child-list (SX list), dom-is-active-element?, dom-is-input-element?, dom-is-child-of?, dom-on, dom-parse-html-document, dom-body-inner-html, create-script-clone - All remaining stubs: csrf-token, loaded-component-names, observe-intersection, event-source-connect/listen, with-transition, cross-origin?, etc. Navigation pipeline: - browser-push-state/replace-state: accept 1-arg (URL only) or 3-arg - boot.sx: wire popstate listener to handle-popstate - URL updates working via handle-history + pushState fix Morph debugging (WIP): - dom-child-list returns proper SX list (was JS Array) - dom-query accepts optional root element for scoped queries - Navigation fetches and renders SX responses, URL updates, but morph doesn't replace content div (investigating dom-child-list on new elements) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -169,9 +169,7 @@
|
||||
(dom-set-attr sp "class"
|
||||
(str base
|
||||
(cond
|
||||
(and (= step-num cur) is-spread) " opacity-60"
|
||||
(= step-num cur) " bg-amber-100 rounded px-0.5 font-bold text-sm"
|
||||
(and (< step-num cur) is-spread) " opacity-60"
|
||||
(< step-num cur) " font-bold text-xs"
|
||||
:else " opacity-40")))))))
|
||||
(range 0 (min (len spans) (len tokens)))))))))
|
||||
@@ -277,9 +275,7 @@
|
||||
(cls (str (get tok "cls")
|
||||
(cond
|
||||
(= step -1) ""
|
||||
(and (= step cur) is-spread) " opacity-60"
|
||||
(= step cur) " bg-amber-100 rounded px-0.5 font-bold text-sm"
|
||||
(and (< step cur) is-spread) " opacity-60"
|
||||
(< step cur) " font-bold text-xs"
|
||||
:else " opacity-40"))))
|
||||
(span :class cls (get tok "text"))))
|
||||
|
||||
Reference in New Issue
Block a user