Commit Graph

29 Commits

Author SHA1 Message Date
slhx agent 6f2bed3529 test(js): lock selectorless runtime contract
Add an explicit runtime guard for root-scoped DOM walks and against selector APIs, preserving the no selector/no hidden client framework boundary.

req: pitch/002

req: runtime/001

req: target_policy/001
2026-06-01 23:53:35 +02:00
slhx agent c69eb9932c fix(js): tolerate malformed bootstrap state
Report malformed data-slhx-st with slhx:state-error and continue binding the root with an empty atom store instead of letting state decode failures stop handlers, navigation, or push.

req: state/004

req: state/006

req: runtime/001
2026-06-01 21:35:49 +02:00
slhx agent 56f4db88c4 fix(js): keep standard sse same-origin
Require non-empty data-slhx-sse values at build time and have the standard runtime reject cross-origin EventSource URLs with slhx:sse-error instead of opening an implicit external stream.

req: push/006

req: diagnostics/002
2026-06-01 21:07:14 +02:00
slhx agent e5f332e78a fix(js): clear interval handles when polling stops
Keep data-slhx-every timers separate from debounce/throttle timers and delete the interval handle when a polling element leaves the document, so reinserted elements can start polling again without leaking stale timer state.

req: convention/005
2026-06-01 20:28:11 +02:00
slhx agent 4295e93da7 fix(js): release parallel pending state
When data-slhx-policy=parallel runs overlapping requests against one target, release pending UI bookkeeping for each completed request instead of only the last pending handle.

req: convention/006

req: convention/007

req: convention/008
2026-06-01 20:24:43 +02:00
slhx agent e6486c1b35 fix(js): release superseded latest pending state
When data-slhx-policy=latest aborts an in-flight request, release that request's pending UI bookkeeping before starting the replacement request so pending classes, indicators, and disabled controls do not leak.

req: convention/006

req: convention/007
2026-06-01 20:20:26 +02:00
slhx agent 31b812f557 fix(js): preserve pending indicator state
Track pending class and indicator state with small reference counts so overlapping requests do not hide indicators early or strip a class that existed before the request.

req: convention/007

req: convention/008
2026-06-01 20:16:19 +02:00
slhx agent 8e39d6c4ac fix(js): restore disabled controls after pending
Remember each control's pre-request disabled state and keep a small pending count so data-slhx-disable-while-pending does not accidentally enable controls that were disabled before the request.

req: convention/007
2026-06-01 20:12:29 +02:00
slhx agent 28d1856dd7 fix(js): reload stale popstate partials
When back/forward navigation receives an incompatible or unusable partial response, reload the current URL instead of leaving the previous UI stale.

req: page_swap/005

req: page_swap/006

req: runtime/004
2026-06-01 20:08:17 +02:00
slhx agent 8d1bdaec08 fix(js): keep form-owner lookup root scoped
Resolve controls with a form= attribute inside the current slhx root instead of using document-global id lookup, preserving multi-root isolation for direct handle dispatch.

req: runtime/001

req: convention/004
2026-06-01 20:02:05 +02:00
slhx agent d3fc1a745a fix(js): remove runtime selector traversal
Replace runtime querySelector/closest/matches traversal with explicit element walks and generated-id predicates, preserving existing runtime convention coverage.

req: runtime/001

req: target_policy/001

req: target_policy/002
2026-05-26 01:18:21 +02:00
slhx agent e5c7872fa6 test(js): cover generated target policy
Cover that runtime updates use generated slot/resource ids and do not expose response-side retargeting or CSS fragment selection conventions.

req: target_policy/001

req: target_policy/002
2026-05-25 23:12:32 +02:00
slhx agent 01df0bdaa6 test(js): cover multipart request shape
Cover multipart runtime request construction so file-upload forms keep FormData, omit File values from URL encoding, and only mark URLSearchParams bodies as urlencoded.

req: multipart/003
2026-05-25 23:10:19 +02:00
slhx agent 9d499d712b test(js): cover native nav escape hatches
Cover page-swap guards that preserve native browser navigation for modified clicks, non-primary buttons, downloads, blank targets, cross-origin links, and prevented events.

req: page_swap/007

req: failure/006
2026-05-25 23:07:47 +02:00
slhx agent 9811c69231 test(js): cover sse root dispatch
Cover data-slhx-sse EventSource setup, slhx/message event handling, root-scoped EffectBatch application, and SSE error emission.

req: push/001

req: push/003

req: runtime/001
2026-05-25 23:03:40 +02:00
slhx agent d72524e501 test(js): cover interval dispatch
Cover data-slhx-every runtime behavior: root scanning, duplicate timer avoidance, interval dispatch, and cleanup when elements leave the document.

req: convention/005
2026-05-25 23:01:06 +02:00
slhx agent f02b4de1ad test(js): cover pending conventions
Cover pending-class, indicator visibility, and disable-while-pending runtime conventions around request execution.

req: convention/007

req: convention/008
2026-05-25 22:57:22 +02:00
slhx agent 77b6aba336 test(js): cover confirm dispatch guard
Cover data-slhx-confirm as a runtime convention boundary: confirmation happens before handler dispatch continues.

req: convention/004
2026-05-25 22:55:11 +02:00
slhx agent 227337caa4 fix(js): normalize request policies
Honor only documented request concurrency policies and fall back to default behavior for unknown data-slhx-policy values.

req: convention/006
2026-05-25 22:52:23 +02:00
slhx agent 644d13e629 fix(js): preserve same-origin credentials
Send interaction and page-swap fetches with same-origin credentials so cookies/session/CSRF context stay available to integration-layer policy without broad CORS behavior.

req: auth/005
2026-05-25 22:49:06 +02:00
slhx agent 88c339c5c3 test(js): cover fingerprint mismatch fallback
Assert the browser runtime refuses stale partial/effect updates when deployment fingerprints mismatch and falls back to reload instead of applying stale ids.

req: abi/003

req: abi/004

req: runtime/004
2026-05-25 22:42:19 +02:00
slhx agent 63b559edb8 fix(runtime): make form defaults post declaratively
req: form/002

req: examples/005

req: convention/004
2026-05-11 08:55:08 +02:00
slhx agent 5c1dc853d8 fix(runtime): support native user interactions
req: examples/005

req: form/002

req: convention/004

req: dx/008
2026-05-11 08:26:13 +02:00
slhx agent 2db7ed7a3c feat(runtime): make techdemo interactions declarative
req: examples/005

req: htmx_equivalents/002

req: dx/008

req: form/002
2026-05-11 08:11:06 +02:00
slhx agent 816552e735 feat(runtime): support slhx drag drops
req: htmx_equivalents/002

req: dx/008

req: list/003

req: examples/001
2026-05-11 07:59:32 +02:00
slhx agent e1265e37f1 fix(runtime): handle clicked form submitters
req: convention/004
2026-05-11 07:28:34 +02:00
slhx agent 79414fbb39 feat(runtime): lower generated runtime ids
req: wire/001

req: ts/001
2026-05-10 23:04:45 +02:00
slhx agent 9e0342951c Improve page swap fallback 2026-05-10 22:36:51 +02:00
slhx agent c4e02db5f8 chore(checkpoint): save current v0 build state 2026-05-10 20:51:22 +02:00