510 Commits

Author SHA1 Message Date
slhx agent 736f9f3c7e fix(js): isolate startup binding failures
Keep the public runtime API available and report state, binding, and SSE startup errors independently so one startup failure cannot hide the runtime object or other roots.

req: runtime/002
2026-06-05 20:34:08 +02:00
slhx agent 4b83169207 fix(js): expose runtime API before startup
Assign window.hemx before startup side effects so constrained browser contexts can still inspect the runtime and root state even if bootstrap work reports errors.

req: runtime/002
2026-06-05 20:25:58 +02:00
slhx agent ce4c2e086d feat(axum): expose hashed runtime asset path
Generate a SHA-256 content hash for the embedded hemx runtime, expose the hashed path from hemx-axum, serve immutable runtime headers, and update examples to load the hemx-owned path instead of fixed /hemx.js URLs.

req: axum_integration/005
2026-06-05 18:27:38 +02:00
slhx agent c56ec39813 fix(js): tolerate missing File constructor
Guard URL-encoded form serialization so constrained browser contexts without File still submit generated hemx forms instead of throwing before fetch.

req: runtime/002
2026-06-05 17:33:09 +02:00
slhx agent 90dd689ba0 docs(hemx): record final v1 readiness audit
Record the current v1 readiness closure matrix after the final gates and normal-path review, including the release decision for provider recipes and the remaining verification checklist for GOAL_DONE.

req: examples/001

req: diagnostics/001

req: public_api/001

req: runtime/003

req: runtime/004
2026-06-05 10:26:05 +02:00
slhx agent 5ab5846b01 feat(examples): add saas settings page fallback
Make the SaaS tutorial's settings route render a distinct full-page fallback while the enhanced handler still swaps the generated page panel and pushes history. This proves page-swap shape without relying only on the enhanced interaction path.

req: examples/001

req: page_swap/002
2026-06-05 10:19:30 +02:00
slhx agent a428097e0e docs(examples): close saas tutorial boundary
Promote examples/saas from skeleton wording to the canonical tutorial app and record the v1 release decision that local persistence plus provider-explicit recipes is the supported production boundary for CI-friendly docs.

req: examples/001

req: auth/001

req: laws/004

req: public_api/005
2026-06-05 10:06:46 +02:00
slhx agent 78aff362ff docs(recipes): add pwa offline boundary
Document optional PWA/offline support as an adapter boundary: cached shell, domain-command queues, server-canonical replay, conflict/fingerprint behavior, and sync-crate shape without adding a client state graph or service worker to core.

req: canonical_authoring/008

req: runtime/003

req: runtime/004

req: auth/002

req: auth/004

req: failure/004

req: failure/005

req: sync/001

req: sync/007
2026-06-05 10:03:39 +02:00
slhx agent 16cb15fd98 docs(hemx): audit v1 readiness gaps
Add a v1 readiness audit against the active Close when, clarifying satisfied vs remaining gaps and naming the next concrete waypoint before any GOAL_DONE attempt.

req: examples/001

req: public_api/001

req: diagnostics/001

req: runtime/003

req: runtime/004
2026-06-05 10:00:41 +02:00
slhx agent 84b52c75ae docs(examples): add saas tutorial walkthrough
Add the canonical SaaS tutorial walkthrough for the compile-tested examples/saas path, tying templates, typed domain forms, generated effects, error mapping, page/push shape, CSS/islands, tests, and provider recipes into one onboarding flow.

req: examples/001

req: canonical_authoring/001

req: canonical_authoring/002

req: canonical_authoring/003

req: auth/001

req: failure/004

req: page_swap/002

req: push/003

req: public_api/005
2026-06-05 09:56:22 +02:00
slhx agent 107111052d docs(recipes): add observability flags boundary
Document provider-explicit observability, feature flag, A/B, and killswitch boundaries for hemx apps. The recipe keeps metrics providers and rollout controls in app/platform code while handlers return generated effects and the tiny runtime stays provider-free.

req: laws/002

req: laws/004

req: runtime/003

req: runtime/004

req: failure/004

req: examples/001

req: test/001
2026-06-05 09:52:59 +02:00
slhx agent 1fbeeb52b8 docs(hemx): define v1 versioning policy
Add a compact semver and upgrade policy for v1: stable beginner APIs, stable wire/runtime compatibility, advanced escape-hatch tier, breaking-change rules, upgrade-note template, and release checklist.

req: abi/001

req: abi/002

req: abi/003

req: abi/004

req: abi/005

req: public_api/001

req: public_api/002

req: public_api/005

req: runtime/003

req: runtime/004
2026-06-05 09:49:30 +02:00
slhx agent c8c71deb68 docs(hemx): add diagnostics guide
Document the v1 diagnostics story for common template, derive, form, result-handler, and runtime/deploy mistakes. The guide names expected user-facing diagnostics and recurring verification gates without exposing raw ids/selectors as the beginner path.

req: diagnostics/001

req: diagnostics/002

req: diagnostics/003

req: failure/004

req: failure/005

req: public_api/005

req: test/003
2026-06-05 09:46:32 +02:00
slhx agent bf6add03ef docs(recipes): add deploy versioning boundary
Document deployment and version compatibility for hemx apps: release unit, runtime asset caching, rolling deploy policy, fingerprint mismatch behavior, semver buckets, upgrade notes, and deployment checks without adding platform code to core.

req: abi/001

req: abi/002

req: abi/003

req: abi/004

req: abi/005

req: runtime/004

req: failure/005
2026-06-05 09:32:25 +02:00
slhx agent a7012b94c2 docs(recipes): add auth csrf boundary
Document the provider-explicit auth/session and CSRF boundary for the SaaS tutorial. The recipe keeps cookies, sessions, CSRF policy, and rejection behavior in Axum/Tower/app code while hemx handlers continue to receive typed context/forms and return generated effects.

req: laws/002

req: auth/001

req: auth/002

req: auth/003

req: auth/004

req: auth/005

req: failure/004

req: examples/001
2026-06-05 09:30:13 +02:00
slhx agent 2c043d2f96 docs(recipes): add sqlx persistence boundary
Document a provider-explicit SQLx persistence adapter for the SaaS tutorial without adding SQLx to hemx core or the workspace. The recipe keeps auth/session, CSRF, generated helpers, and Result handler mapping as the app boundary.

req: laws/002

req: laws/004

req: auth/001

req: auth/002

req: auth/004

req: examples/001

req: canonical_authoring/002

req: failure/004
2026-06-05 09:27:08 +02:00
slhx agent d37480fb72 feat(examples): derive saas dashboard template
Replace the SaaS tutorial dashboard's hand-written Hemplate implementation with the real hemplate-derived dashboard template. This closes the tutorial skeleton shortcut and keeps the provider-light production app path on generated/derived rendering.

req: examples/001

req: canonical_authoring/001

req: view/001
2026-06-05 09:22:52 +02:00
slhx agent 38cfb263aa feat(examples): add saas tutorial skeleton
Add a compile-tested v1 tutorial skeleton that proves the production-shaped app boundary without provider-heavy scope: auth/session context, CSRF-checked mutation, local persistence adapter, generated form/slot/keyed row/page/push effects, plain CSS, SSE shape, and one explicit metrics island.

req: examples/001

req: auth/001

req: auth/002

req: auth/004

req: form/001

req: failure/004

req: page_swap/002

req: push/003
2026-06-05 09:15:57 +02:00
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 cb92803db4 docs(hemx): document v1 product path
Add the root v1 product/onboarding playbook: normal authoring path, mental model, production boundaries, escape hatches, versioning/deploy compatibility, example hierarchy, and local checks. This is intentionally documentation-only; the production SaaS tutorial app remains future work.

req: pitch/001

req: canonical_authoring/001

req: public_api/005

req: auth/001

req: abi/001
2026-06-05 08:40:40 +02:00
slhx agent 53480dba5a feat(hemx): clarify generated authoring path
Close the fallible handler and example coherence slice: v0 uses typed todo newtypes, Result handler failure mapping, generated form/partial helpers, and page composition; kanban is explicitly marked as an advanced north-star milestone; raw render is isolated behind hemx::advanced::render.

req: canonical_authoring/003

req: failure/004

req: public_api/005

req: examples/004
2026-06-05 08:36:39 +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 eb6086616c refactor(examples): use targets across v0 handlers
Move remaining v0 example updates from raw slot constants/free functions to generated target objects for the partial/swap happy path.

req: dx/006

req: examples/003
2026-06-02 07:44: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 dfd8020617 docs(examples): keep inspector copy target-oriented
Replace remaining beginner-facing wire contract wording in the inspector partial with generated target/effect vocabulary and guard against regressions.

req: dx/006

req: examples/003
2026-06-02 07:30:30 +02:00
slhx agent 795abdbc81 test(examples): guard low-level docs wording
Keep beginner example docs on target objects and tuple IntoEffect responses instead of runtime lowering/application wire vocabulary.

req: dx/006

req: examples/003
2026-06-02 07:27:23 +02:00
slhx agent bd7edfa993 docs(api): point raw shims at targets
Keep compatibility shim docs aligned with generated target objects as the preferred partial/swap authoring API.

req: dx/006
2026-06-02 07:25:21 +02:00
slhx agent 3ab89adf2d feat(style): compose generated class states
Add CssClass/CssClasses with/with_if helpers so nested partial view data can compose generated CSS constants without ad hoc class strings.

req: style/003

req: component/003
2026-06-02 07:24:10 +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 20d1159e39 fix(derive): keep missing-generation diagnostics author-facing
Replace OUT_DIR/path-shaped proc-macro errors with generated slhx file/module language while preserving the build.rs fix hint.

req: dx/005

req: component/004
2026-06-02 03:54:08 +02:00
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 49743c1a67 test(build): guard hidden component aliases
Ensure component-namespaced generated render_html/lower_html aliases stay doc-hidden while the generated command path remains the taught API.

req: dx/006
2026-06-02 03:32:28 +02:00
slhx agent 5d85a32c3c test(examples): guard generated command docs
Prevent canonical example docs from regressing to lower-level generated handle/EffectBatch wording after moving README copy to the generated-resource command path.

req: dx/006

req: examples/003
2026-06-02 03:30:40 +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 9fd614f86d docs(api): hide render compatibility aliases
Keep render_html/lower_html available for explicit compatibility while generated/public docs steer authors to render/lower and generated resource commands.

req: dx/006
2026-06-02 03:18:53 +02:00
slhx agent 73836f3742 feat(api): keep render_html out of prelude
Keep the beginner prelude on the short render helper while leaving render_html/lower_html as explicit compatibility aliases.

req: dx/006
2026-06-02 03:15:29 +02:00
slhx agent a6c88b9226 docs(api): hide raw render extension shims
Keep compatibility helpers available while steering author docs toward generated lower-aware put/append/replace commands.

req: dx/006
2026-06-02 03:12:49 +02:00
slhx agent d7462fd011 docs(req): clarify lower-aware generated commands
Keep dx/006 from implying crate-root helpers should bypass generated lowering; the public facade owns generic render while generated view modules own lower-aware slot commands.

req: dx/006
2026-06-02 03:10:32 +02:00
slhx agent 03b5f0f29b docs(kanban): use generated keyed commands
Keep the north-star kanban sketches aligned with the generated lower-aware append/replace helpers instead of teaching keyed slot extension methods.

req: dx/006

req: codegen/002
2026-06-02 03:07:26 +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 f919b8cb10 docs(kanban): avoid selector wording
Keep the north-star walkthrough selector-free by describing the rejected path as positional DOM lookup instead of naming selector APIs.

req: examples/003

req: runtime/001
2026-06-02 02:43:13 +02:00
slhx agent 4c04f3cc77 docs(kanban): remove selector example
Replace the last querySelector mention in the north-star walkthrough with selector-free prose and extend example docs contracts to forbid selector APIs.

req: examples/003

req: runtime/001
2026-06-02 02:33:06 +02:00
slhx agent 22a6ae7dbb test(examples): forbid literal handle field posts
Extend canonical example contracts to catch raw __h= request bodies in tests and docs, keeping examples on the axum handle-field constant and generated handles.

req: dx/003

req: examples/003
2026-06-02 02:23:49 +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 a1e3085437 docs(kanban): describe delegated runtime attachment
Replace the north-star walkthrough's listener snippet with prose and guard example docs against teaching addEventListener glue.

req: examples/003

req: runtime/001
2026-06-02 01:56:10 +02:00
slhx agent 0ede5eb113 feat(prelude): hide slot render shortcut
Keep the beginner prelude on generated lower-aware render/html paths instead of exposing RenderSlotExt, which can bypass generated runtime metadata.

req: dx/006

req: component/003

req: runtime/001
2026-06-02 01:52:18 +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