Commit Graph

510 Commits

Author SHA1 Message Date
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 f6bfde3675 test(axum): preserve csrf fields
Cover the integration boundary for CSRF-style hidden fields: InteractionForm keeps arbitrary form fields available to app/auth extractors instead of dropping them during dispatch parsing.

req: auth/004
2026-05-25 22:45:37 +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 756f5a50cb test(techdemo): assert generated event constant
Prove data-slhx-on event discovery reaches an example generated API by asserting the techdemo issue-lane drop event constant.

req: codegen/006
2026-05-25 22:38:50 +02:00
slhx agent 102e3247bc fix(derive): keep components incremental
Let #[slhx::component] preserve inline modules when generated symbols are absent, while still enforcing handler completeness when slhx.syms exists.

req: component/005

req: test/002
2026-05-25 22:33:56 +02:00
slhx agent d223a1d215 feat(derive): check component handlers
Make #[slhx::component] compare generated handle symbols with inline #[slhx::handler] functions and fail when a required handler implementation is missing.

req: component/005

req: check/002

req: test/003
2026-05-25 22:30:07 +02:00
slhx agent abe39ec750 feat(build): generate event constants
Discover data-slhx-on event names from hemplate Surface inputs and emit generated events modules plus symbol rows without adding runtime trigger semantics.

req: codegen/006
2026-05-25 22:24:50 +02:00
slhx agent d25361d34d feat(derive): check generated handler params
Emit handle_param facts for handled data-* attributes and reject handlers that omit generated param arguments. Cover the generated param boundary with unit and compile-fail tests.

req: derive_handler/001

req: test/003
2026-05-25 22:17:08 +02:00
slhx agent 6d9d5e4c4e fix(derive): reject form type impostors
Tighten generated form-handler validation so only actual Form paths satisfy form handles; names like CreateForm no longer bypass the slhx::Form<_> requirement. Cover with unit and compile-fail tests.

req: form/004

req: form/006

req: test/003
2026-05-25 22:10:19 +02:00
slhx agent 00af1017cc docs(requirements): clarify surface generation contract
Align test/002 with the implemented checked boundary: #[slhx::surface] now requires generated slhx.generated.rs while #[slhx::component] remains available for incremental module-local testing.

req: test/002
2026-05-25 22:06:46 +02:00
slhx agent da5dccd417 refactor(kanban): render test board payload with hemplate
Replace the Kanban generated-slot unit test's inline raw HTML board payload with a hemplate-rendered view and DOM-aware assertion.

req: html_safety/002

req: view/001

req: test/005
2026-05-25 22:04:28 +02:00
slhx agent bce6341e69 refactor(techdemo): render test metric with hemplate
Replace the techdemo generated-slot test's inline raw HTML payload with a hemplate partial-rendered view.

req: html_safety/002

req: view/001
2026-05-25 22:01:17 +02:00
slhx agent 5bcae0a075 refactor(v0): render keyed row with hemplate
Move the v0 keyed todo row effect payload from Rust format! HTML into a hemplate partial and require the generated slot append to carry an HTML payload.

req: html_safety/002

req: view/001
2026-05-25 21:58:18 +02:00
slhx agent 58e96162d4 refactor(v0): render shell with hemplate
Move the v0 page shell from a Rust format! raw HTML string into a hemplate AppShell view and cover the rendered document structure with scraper.

req: html_safety/002

req: view/001

req: test/005
2026-05-25 21:54:04 +02:00
slhx agent f8d46e1a40 refactor(v0): render page swap with hemplate
Move the v0 docs/page-swap partial and EffectBatch content payload from raw HTML strings into hemplate views, with scraper assertions for rendered structure.

req: html_safety/002

req: view/001

req: test/005
2026-05-25 21:49:13 +02:00
slhx agent bd35347fa2 refactor(kanban): render board cards with hemplate
Move Kanban board/column/card rendering from Rust raw HTML assembly into hemplate partial views. Keep handler effects returning generated slot payloads and cover rendered structure with scraper.

req: html_safety/002

req: view/001

req: test/005
2026-05-25 21:45:25 +02:00
slhx agent c655d877ca refactor(v0): render todos with hemplate
Move the v0 todo-list payload from Rust raw HTML formatting into a hemplate partial/view and cover both populated and empty rendered structure with scraper.

req: html_safety/002

req: view/001

req: test/005
2026-05-25 21:42:08 +02:00
slhx agent 3b61451858 refactor(kanban): compose page with hemplate
Replace board page placeholder string replacement for options/board content with a hemplate page view and partial-rendered options. Cover page structure with DOM-aware scraper assertions.

req: html_safety/002

req: view/001

req: test/005
2026-05-25 21:38:36 +02:00
slhx agent d76682e98f refactor(kanban): render presence with hemplate
Move the kanban SSE presence fragment from Rust raw HTML formatting into a hemplate partial/view and cover the rendered structure with scraper.

req: html_safety/002

req: view/001

req: test/005
2026-05-25 21:34:53 +02:00
slhx agent 59b0c8ccc4 test(derive): cover surface inline requirement
Add compile-fail coverage for #[slhx::surface] on non-inline modules so the generated surface boundary stays explicit.

req: codegen/001

req: test/003
2026-05-25 21:30:18 +02:00
slhx agent 87a19fd923 fix(derive): require generated handler symbols
Make #[slhx::handler] fail when slhx.syms is missing instead of silently skipping generated handle checks. Add compile-fail coverage with an actionable build.rs hint.

req: build/003

req: test/003
2026-05-25 21:26:48 +02:00
slhx agent dca26511cc feat(derive): require form parameter for form handles
Emit handle-form facts from slhx-build and have #[slhx::handler] reject generated form handlers that do not accept slhx::Form<_>. Cover the boundary with compile-fail fixtures.

req: form/004

req: form/006

req: test/003
2026-05-25 21:23:37 +02:00
slhx agent 3ea596a218 fix(derive): fail missing surface generation
Make #[slhx::surface] report a compile-time error when slhx.generated.rs is absent instead of silently expanding to an empty module. Add compile-fail coverage for the missing generated include path.

req: build/004

req: test/003
2026-05-25 21:20:18 +02:00
slhx agent a6db4699f7 test(derive): cover missing generated resource
Add compile-fail coverage for generated APIs: a surface include that exposes only one class must reject references to absent generated class names during cargo check.

req: codegen/001

req: style/002

req: test/003
2026-05-25 21:16:24 +02:00
slhx agent b7055f225a test(derive): cover handler compile failures
Add a fixture-backed compile-fail test for generated slhx handler contracts: unknown handles and invalid handler shape fail during cargo check with actionable diagnostics.

req: derive_handler/001

req: test/003
2026-05-25 21:14:16 +02:00
slhx agent 6f93c7d935 refactor(techdemo): compose page with hemplate views
Move the techdemo page shell and remaining board/inspector/hero boundaries to hemplate-owned views instead of Rust raw HTML or placeholder replacement. Keep rendered HTML assertions DOM-aware with scraper.

req: html_safety/002

req: view/001

req: test/005
2026-05-25 21:09:39 +02:00
slhx agent fee9762069 feat(style): generate checked class tokens
Add a boring CSS/SCSS class-token surface: slhx-build discovers static class tokens from hemplate/templates/stylesheets and emits generated CssClass constants. Add CssClasses for hemplate +class/view data and migrate techdemo dynamic/effect fragments toward hemplate-owned views with DOM-aware assertions.

req: style/001

req: style/002

req: style/003

req: html_safety/002

req: view/001

req: test/005
2026-05-25 20:48:31 +02:00
slhx agent 9ceea7de94 build(test): benchmark safe concurrency ramps
req: test/004
2026-05-11 10:31:19 +02:00
slhx agent 7a2c5ecae0 build(test): cap verification concurrency
req: test/004
2026-05-11 10:27:09 +02:00
slhx agent ebe7f58905 test(examples): guard browser e2e product path
req: examples/005

req: convention/002
2026-05-11 10:27:09 +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 0de4c82a16 test(examples): forbid authored browser javascript
req: examples/005
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 ad8806c187 feat(techdemo): render issues with hemplate partials
req: examples/001

req: dx/008

req: list/003

req: form/002
2026-05-11 07:53:51 +02:00
slhx agent 5a29161148 polish(techdemo): make demo customer-ready
req: examples/001

req: dx/008

req: form/002
2026-05-11 07:38:29 +02:00
slhx agent e840802721 test(techdemo): add typed browser e2e
req: examples/001

req: dx/008

req: form/002

req: page_swap/002

req: push/003
2026-05-11 07:28:34 +02:00
slhx agent e1265e37f1 fix(runtime): handle clicked form submitters
req: convention/004
2026-05-11 07:28:34 +02:00
slhx agent bdd50d7595 test(techdemo): add full product e2e coverage
req: examples/001

req: dx/008

req: form/002

req: page_swap/002

req: push/003
2026-05-11 07:13:17 +02:00
slhx agent e788c31688 feat(examples): add flagship techdemo
req: examples/001

req: dx/008

req: form/002

req: page_swap/002

req: push/003
2026-05-11 00:06:42 +02:00
slhx agent 713c6bb087 feat(examples): add browser kanban demo
req: examples/001

req: form/002

req: list/003

req: push/003
2026-05-10 23:58:09 +02:00
slhx agent 13f948cc7a feat(examples): serve v0 browser demo
req: examples/001

req: v0_scope/003

req: push/001

req: page_swap/002
2026-05-10 23:53:33 +02:00
slhx agent 61da7a7b24 feat(derive): reject empty handlers
req: derive_handler/001
2026-05-10 23:38:29 +02:00
slhx agent 4e971d9597 test(examples): add SSE notification proof
req: examples/001

req: push/001

req: push/003
2026-05-10 23:37:55 +02:00
slhx agent 0a50487a3a feat(build): type generated form handles
req: codegen/003
2026-05-10 23:37:11 +02:00
slhx agent af813edd52 feat(build): inject lowered form handles
req: form/002

req: wire/001
2026-05-10 23:35:46 +02:00