Use dom-on for event handlers; add CI config and stepper Playwright test
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 1m5s

- web/orchestration.sx, web/signals.sx: dom-listen → dom-on (trampoline
  wrapper that resolves TCO thunks from Lambda event handlers)
- .gitea/: CI workflow and Dockerfile for automated test runs
- tests/playwright/stepper.spec.js: stepper widget smoke test
- Remove stale artdag .pyc file

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-25 00:19:35 +00:00
parent 7d7de86034
commit 0fce6934cb
8 changed files with 259 additions and 9 deletions

View File

@@ -1107,7 +1107,7 @@
(mark-processed! el (str "on:" event-name))
;; Parse body as SX, bind handler that evaluates it
(let ((exprs (sx-parse body)))
(dom-listen el event-name
(dom-on el event-name
(fn (e)
(let ((handler-env (env-extend (dict))))
(env-bind! handler-env "event" e)
@@ -1211,7 +1211,7 @@
(mark-processed! el "emit")
(let ((event-name (dom-get-attr el "data-sx-emit")))
(when event-name
(dom-listen el "click"
(dom-on el "click"
(fn (e)
(let ((detail-json (dom-get-attr el "data-sx-emit-detail"))
(detail (if detail-json (json-parse detail-json) (dict))))

View File

@@ -425,7 +425,7 @@
(define on-event :effects [io]
(fn (el (event-name :as string) (handler :as lambda))
(dom-listen el event-name handler)))
(dom-on el event-name handler)))
;; Convenience: create an effect that listens for a DOM event on an
;; element and writes the event detail (or a transformed value) into
@@ -436,7 +436,7 @@
(define bridge-event :effects [mutation io]
(fn (el (event-name :as string) (target-signal :as signal) transform-fn)
(effect (fn ()
(let ((remove (dom-listen el event-name
(let ((remove (dom-on el event-name
(fn (e)
(let ((detail (event-detail e))
(new-val (if transform-fn