Commit Graph

51 Commits

Author SHA1 Message Date
slhx agent 998e15758a docs(examples): hide batch internals from UI copy
Replace beginner-facing EffectBatch/slot-effect wording with generated update language while keeping wire-batch types in tests and low-level APIs.

req: dx/006

req: examples/003
2026-06-02 03:40:12 +02:00
slhx agent 417bc45d1f docs(examples): describe generated command path
Keep example READMEs aligned with the generated-resource, tuple-composed IntoEffect authoring path instead of lower-level handle/EffectBatch wording.

req: dx/006

req: examples/003
2026-06-02 03:28:53 +02:00
slhx agent 15809c86a6 feat(build): add lower-aware put helper
Generate ui::put(slot, view) for lower-aware slot HTML updates and move examples/docs/contracts to that ergonomic path instead of hand-composing slot.html(render(...)).

req: dx/006

req: component/003

req: runtime/001

req: examples/003
2026-06-02 02:59:29 +02:00
slhx agent 4673580a71 test(techdemo): use handle field constant
Remove the last literal __h wire spelling from techdemo E2E tests, including the unknown-handle negative case.

req: dx/003

req: examples/003
2026-06-02 02:17:04 +02:00
slhx agent fa00128c9b fix(examples): keep test updates lower-aware
Move canonical example test helpers and docs off direct slot render shortcuts so even test-only slot updates use generated lower-aware HTML paths.

req: component/003

req: runtime/001

req: examples/003
2026-06-02 01:59:25 +02:00
slhx agent 732e65008e fix(examples): use lower-aware slot html updates
Move canonical examples and docs off direct RenderSlotExt render shortcuts so slot updates use generated render/lowering before HTML replacement, preserving runtime metadata for follow-up interactions.

req: component/003

req: runtime/001

req: dx/006

req: examples/003
2026-06-02 01:48:10 +02:00
slhx agent 743f79c6d6 fix(examples): lower slot render updates
Use generated lower-aware render paths before slot HTML updates so example fragments carry runtime ids for follow-up interactions such as browser drag/drop.

req: component/003

req: runtime/001

req: examples/003
2026-06-02 01:41:42 +02:00
slhx agent 7e57366b89 fix(techdemo): keep work ids typed
Complete the InteractionForm::parse migration for techdemo work updates so typed ids stay typed instead of being reparsed inside the helper.

req: form/004

req: dx/003

req: examples/003
2026-06-02 00:42:14 +02:00
slhx agent 1e53a6f7df feat(axum): parse typed interaction values
Add InteractionForm::parse for common typed field extraction and use it in example interaction handlers to avoid repeated string parsing plumbing.

req: form/004

req: dx/003

req: examples/003
2026-06-02 00:31:32 +02:00
slhx agent df4b4cc649 feat(axum): add interaction registry alias
Add an interactions()/on() registration path and move canonical examples off explicit register_handle naming while keeping low-level registry types available underneath.

req: axum_integration/003

req: ceremony/001

req: dx/003

req: examples/003
2026-06-02 00:24:32 +02:00
slhx agent 42ede63361 feat(axum): add concise interaction request dispatch
Wrap extracted interaction forms in an InteractionRequest with a concise dispatch path, add a handlers() helper, and move canonical examples off direct HandlerRegistry/InteractionForm plumbing.

req: axum_integration/003

req: ceremony/001

req: dx/003

req: examples/003
2026-06-02 00:19:38 +02:00
slhx agent 7b7cb7da15 test(browser): avoid selector scripts in e2e
Pass WebDriver-found elements into browser E2E helper scripts and build the probe island with DOM APIs, keeping test-only JavaScript from reintroducing querySelector or unchecked HTML insertion.

req: runtime/001

req: examples/005
2026-06-02 00:11:55 +02:00
slhx agent 9dd32c3165 docs(techdemo): describe generated handle fields
Keep the techdemo README aligned with the checked generated-handle path instead of implying handwritten numeric __h ids.

req: dx/003

req: examples/003
2026-06-02 00:10:15 +02:00
slhx agent e9bc145b22 test(techdemo): build e2e posts from handles
Keep valid techdemo E2E interactions on generated Handle values plus the axum handle-field constant, leaving only the unknown-id negative case as raw wire input.

req: dx/003

req: examples/003
2026-06-02 00:06:53 +02:00
slhx agent 353f2111e9 test(examples): avoid literal handle ids
Remove the last handwritten __h input from techdemo markup, switch E2E posts to generated handles, and extend example contracts to catch literal handle fields in templates.

req: dx/003

req: ceremony/002

req: examples/003
2026-06-02 00:02:11 +02:00
slhx agent fd5d48d59a refactor(examples): use slot render helpers
Use the slhx RenderSlotExt path for board updates so examples no longer manually compose SafeHtml before slot replacement.

req: dx/006

req: component/003
2026-06-01 23:46:59 +02:00
slhx agent 4e47b470a7 feat(axum): add safe html page composition
Add a SafeHtml PageRequest path for shell/partial composition and migrate examples so rendered hemplate fragments stay typed through the transport boundary instead of round-tripping through unchecked strings.

req: axum_integration/001

req: html_safety/001

req: html_safety/002
2026-06-01 23:45:52 +02:00
slhx agent a287d87e38 refactor(examples): inline simple board rendering
Remove one-line render_board wrappers now that generated render(view) is the concise composition helper, keeping board updates explicit without extra local bridge functions.

req: component/003

req: dx/006
2026-06-01 23:38:48 +02:00
slhx agent 0d4a643759 feat(build): add concise render helper
Generate render(view) as the short page/fragment composition helper while keeping render_html(view) as an explicit compatibility alias, then move examples to the leaner happy path.

req: component/003

req: dx/006

req: view/001
2026-06-01 23:09:34 +02:00
slhx agent a8d4604da8 test(techdemo): shorten generated resource paths
Import scoped generated handles and slots in techdemo tests so assertions read as local resources instead of fully-qualified generated paths.

req: component/003

req: dx/006
2026-06-01 23:03:34 +02:00
slhx agent edd804a505 refactor(techdemo): use generated render helpers throughout
Route shell, architecture, inspector, hero, activity, and live-feed rendering through generated render_html helpers, removing the last local render_template bridge from the techdemo page composition path.

req: component/003

req: view/001

req: html_safety/002
2026-06-01 22:50:01 +02:00
slhx agent e9c717844d refactor(techdemo): shorten generated resource paths
Import scoped generated modules at the page boundary so handlers and tests read as local slots/forms/handles/classes without hiding ownership or adding framework machinery.

req: component/003

req: dx/006
2026-06-01 22:39:52 +02:00
slhx agent 4d79dd4dba feat(build): generate render helpers
Generate root and component render_html helpers that render hemplate views through the same lowering table, letting callers update composed views without manual render_template/lower_html/SafeHtml plumbing.

req: component/003

req: view/001

req: html_safety/002
2026-06-01 22:15:58 +02:00
slhx agent 4319dea171 refactor(techdemo): scope card handles to partials
Move board card and lane actions onto their reusable partial templates, register the scoped generated handles directly, and remove hidden shell-level handle anchors and manual handle fields from the rendered view data.

req: component/003

req: view/001

req: examples/001
2026-06-01 21:58:40 +02:00
slhx agent d732c921c2 fix(techdemo): rebootstrap inserted islands
Keep opaque island widgets live when slhx swaps or later DOM insertion adds a new island, and tear down the listener when an island leaves the document.

req: interop/001

req: examples/001
2026-06-01 19:57:39 +02:00
slhx agent 9d3f70e9fe feat(techdemo): add opaque island bridge
Add a canvas leaf-widget island to the techdemo that receives server snapshots through Effect::event/CustomEvent while keeping slhx core and runtime semantics unchanged.

req: interop/001

req: examples/001

req: examples/005
2026-05-26 07:29:51 +02:00
slhx agent e20d356c1d docs(examples): mark page shell html boundaries
Document that remaining SafeHtml use in examples is limited to full-page shell composition of already-rendered hemplate fragments, while effect payloads use render helpers.

req: html_safety/002

req: view/001
2026-05-26 01:34:05 +02:00
slhx agent 5972785c3c feat(slhx): prefer render methods for views
Move view rendering onto Slot::render and KeyedSlot append/prepend/replace extension methods, leaving explicit text/html methods for non-view escape hatches.

req: codegen/002

req: view/001
2026-05-26 01:31:58 +02:00
slhx agent a8bd7dfdf7 test(examples): use shared slhx render helper
Remove remaining example-local render_html wrappers in favor of slhx::render_html so public examples share the hemplate render_into effect boundary.

req: view/001

req: html_safety/002
2026-05-26 01:10:57 +02:00
slhx agent 5845930cd3 test(techdemo): render slots from hemplate views
Migrate techdemo effect paths and tests from explicit SafeHtml/html payload plumbing to RenderSlotExt view helpers.

req: view/001

req: html_safety/002
2026-05-26 01:03:58 +02:00
slhx agent 62316d5f1e test(examples): render hemplate views into buffers
Use hemplate render_into in public examples and example tests instead of the string-returning render helper, preserving SafeHtml wrapping only at the explicit effect boundary.

req: view/001

req: html_safety/002
2026-05-26 00:46:13 +02:00
slhx agent 062c184e42 feat(core): format generated resources for templates
Implement Display for generated slots, keyed slots, atoms, and forms so public examples can pass typed resources directly to hemplate dynamic attributes and tests instead of extracting raw numeric ids.

req: public_api/001

req: public_api/002
2026-05-26 00:39:47 +02:00
slhx agent a421865852 feat(core): format handles for templates
Implement Display for generated Handle<T> values and migrate example view data to carry handles directly instead of raw handle id numbers for dynamic handle attributes.

req: public_api/001

req: public_api/002
2026-05-26 00:30:23 +02:00
slhx agent bc8534a768 feat(axum): register checked handles
Add HandlerRegistry::register_handle for generated Handle<T> values and migrate examples away from passing raw numeric handle ids at registration sites.

req: ceremony/004

req: public_api/001
2026-05-26 00:26:42 +02:00
slhx agent 5364135c5e feat(build): type generated event constants
Generate EventName constants for data-slhx-on metadata and exercise them through typed event emission in techdemo.

req: codegen/006
2026-05-26 00:09:07 +02:00
slhx agent 0b6ad64d98 feat(derive): expose checked form resource constants
Have #[slhx::form] emit an associated FORM resource so checked form handlers can be called with TodoInput::FORM-style values instead of generated_resource.typed::<T>() noise.

req: form/001

req: form/004

req: form/006

req: codegen/004
2026-05-26 00:03:47 +02:00
slhx agent d67478fe36 test(techdemo): exercise checked form handler path
Add techdemo coverage for #[slhx::form] plus #[slhx::handler] on the generated launch_work form, and ignore the internal __h hidden handle field in generated form metadata.

req: form/001

req: form/004

req: form/006

req: derive_handler/003
2026-05-25 23:57:08 +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 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 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 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 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 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