Commit Graph

21 Commits

Author SHA1 Message Date
slhx agent 3dfb3b684f feat(hemx): reuse todo row partials
Make the canonical v0 todo flow use one TodoRow partial shape for initial list rendering and generated keyed append/replace/remove helpers. Teach hemx-build to treat collection hosts with keyed h-for children as keyed targets, so beginner templates can keep the DRY outer slot + child partial composition.

req: canonical_authoring/002

req: canonical_authoring/003

req: examples/004

req: list/001
2026-06-05 08:56:36 +02:00
slhx agent c33500440e refactor!: rename slhx to hemx
Rename the tracked product identity, crate/package names, Rust paths/macros, generated artifacts, runtime files, public attributes, examples, docs, requirements, and tests from slhx to hemx without compatibility shims.

Verified with cargo run -p hemx-xtask -- test, cargo test -p hemx-derive --test compile_fail, cargo test -p hemx-js, cargo test -p hemx-axum, cargo test -p hemx-v0-examples, cargo check --workspace, redgate list, redgate refs, redgate health --strict, git diff --check, and git grep/ls-files legacy-name audits.

req: misc/001

req: codegen/001

req: component/004

req: runtime/001
2026-06-05 06:52:37 +02:00
slhx agent d4e865ef92 feat(api): streamline generated app authoring
Move the canonical examples toward generated component-root helpers, typed form decoding, async/state handler registration, and derive-driven app/component registry wiring. Tighten requirements and diagnostics for the server-first, selectorless authoring path.

Verified with cargo run -p slhx-xtask -- test, cargo check --workspace, redgate list, redgate refs, redgate health --strict, and git diff --check.

req: canonical/001

req: canonical/003

req: canonical/004

req: dx/002

req: derive_app/001

req: component/003

req: form/004

req: axum_integration/003
2026-06-05 06:33:41 +02:00
slhx agent 339ca769fb feat(build): accept domain ids on keyed targets
Let generated string-keyed targets accept displayable domain ids directly, removing caller-side to_string noise from keyed partial append/replace flows.

req: codegen/002

req: dx/006
2026-06-02 07:34:00 +02:00
slhx agent a138f92b33 feat(build): generate slot target objects
Add generated targets::<slot> wrapper objects so partial swaps read as target.put/append/replace while preserving existing lower-aware commands and IntoEffect wiring.

req: dx/006

req: codegen/001

req: codegen/002

req: component/003
2026-06-02 07:21:23 +02:00
slhx agent ee6045aec5 feat(build): generate keyed view commands
Add lower-aware generated append/prepend/replace helpers for keyed slots, move the v0 keyed todo example off the facade extension trait, and keep beginner examples from importing lower-level render shortcuts.

req: dx/006

req: codegen/002

req: public_api/003

req: examples/003
2026-06-02 03:05:37 +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 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 749ecb1778 refactor(v0): shorten generated resource paths
Import component-scoped generated modules at the example boundary so handlers and tests read as local slots/forms/handles without hiding ownership or adding framework machinery.

req: component/003

req: dx/006
2026-06-01 22:44:19 +02:00
slhx agent 162c117a5a test(v0): use component-scoped generated APIs
Drop the v0 example's global export opt-in and update tests to use component-scoped slots and forms, matching the checked public API path.

req: component/003

req: build/001
2026-05-26 01:38:01 +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 852053fd04 test(v0): render slots from hemplate views
Migrate v0 handlers and tests from explicit SafeHtml/html payload plumbing to RenderSlotExt and RenderKeyedSlotExt view helpers.

req: view/001

req: html_safety/002
2026-05-26 00:58:29 +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 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 1b255e593d test(v0): check auth and wizard form handlers
Annotate the v0 auth and wizard form models with #[slhx::form], make their templates expose checked form fields, and add handler smoke tests over the generated form resources.

req: form/001

req: form/004

req: form/006

req: derive_handler/003
2026-05-25 23:59:24 +02:00
slhx agent 11f710d276 test(v0): exercise checked form handler path
Use #[slhx::form] in the v0 example tests and add a checked form-handler smoke test, with a typed() helper for generated form ids so examples do not rebuild ids by hand.

req: form/001

req: form/004

req: form/006

req: derive_handler/003
2026-05-25 23:52:10 +02:00
slhx agent 9b06bc03df test(v0): render page swap content from hemplate
Exercise the v0 page-swap effect with a renderable hemplate view payload instead of an ad hoc HTML-looking text literal.

req: view/001

req: html_safety/002

req: page_swap/002

req: page_swap/003
2026-05-25 23:21:43 +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 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 3e0ed95490 Build v0 example and SSE slices 2026-05-10 22:26:54 +02:00