Commit Graph

27 Commits

Author SHA1 Message Date
slhx agent bc7e7881b4 feat(build): lower static fragments as safe html
Add a generated static_fragment helper for include_str!-style prototype fragments and use it in the v0 page assembly path so static lowered .heml no longer needs repeated SafeHtml::trusted plumbing.

req: dx/006

req: html_safety/001

req: html_safety/002

req: component/003
2026-06-01 23:57:19 +02:00
slhx agent 117eb57179 feat(core): join safe html fragments
Let already-safe fragments compose without downgrading to String, and use it in the v0 page assembly example to keep rendered and lowered fragments typed at the boundary.

req: html_safety/001

req: html_safety/002

req: component/003
2026-06-01 23:49:20 +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 60eed5f98f feat(build): add concise lower helper
Generate lower(html) as the short static/prototype fragment lowering helper while keeping lower_html(html) as the compatibility alias, then move the v0 page assembly to the leaner path.

req: dx/006

req: component/003
2026-06-01 23:22:32 +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 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 f3706a440e refactor(v0): use generated render helpers
Switch v0 page and payload composition to generated render_html helpers, removing the local render_template bridge while keeping the explicit full-page SafeHtml shell boundary.

req: component/003

req: view/001

req: html_safety/002
2026-06-01 22:32:20 +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 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 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 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 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 4d4f5cd2bc test(examples): assert escaped text exactly
Make v0 and kanban DOM-aware escaped-text checks exact instead of substring-based while preserving the no-rendered-tag assertions.

req: html_safety/002

req: test/005
2026-05-25 23:23:14 +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 355fc99888 test: harden checked boundary coverage
Use DOM-aware rendered-text inspection for the v0 shell marker check and extend unkeyed h-for validation coverage from slots to handles.

req: test/005

req: scope/001
2026-05-25 23:15:54 +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 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 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 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