Commit Graph

40 Commits

Author SHA1 Message Date
slhx agent 8c79ea26bf test(build): close package mutation gate
Exercise every generated form-control variant through public code generation and record all eight deterministic hemx-build shards clean: 1,304 mutants, 1,070 caught and 234 unviable.

req: form/004

req: codegen/005

req: test/021

req: test/022

req: test/023
2026-07-17 12:26:43 +02:00
slhx agent 216465f779 test(build): close residual helper mutants
Prove compact Rust type and vector facts plus default template paths, alias collision suppression, data parameter prefixes, keyed descendants, and absent Cargo roots. Classify only hemplate's infallible surface parser seam.

req: diagnostics/006

req: diagnostics/004

req: codegen/005

req: test/021
2026-07-17 07:59:26 +02:00
slhx agent 14f16cba23 test(build): close Rust fact and surface mutants
Prove recursive and inline Rust struct discovery, ignored non-Rust/out-of-tree files, source/parse failures, atom and handle collision propagation, and missing form-fact defaults; classify only non-injectable directory-entry errors and syn's named-field invariant.

req: diagnostics/006

req: diagnostics/004

req: surface/008

req: test/021
2026-07-17 07:16:43 +02:00
slhx agent 05154a58ed test(build): close target and identifier mutants
Prove first-seen cross-kind generated-target ordering and deduplication, exact identifier/literal/canonical-symbol boundaries, invalid UTF-8 and component names, and resource insertion reuse/collisions; simplify CSS class normalization through the shared Rust identifier validator.

req: codegen/005

req: diagnostics/004

req: diagnostics/005

req: surface/008

req: test/021
2026-07-17 06:58:36 +02:00
slhx agent 31534a538b test(build): close authoring diagnostic mutants
Assert exact selector-target and unknown-attribute InvalidData diagnostics and prove invalid scope IDs fail closed in unkeyed-loop diagnostics.

req: locality/001

req: locality/002

req: htmx_equivalents/003

req: convention/009

req: diagnostics/002

req: test/021
2026-07-17 06:36:15 +02:00
slhx agent a6f287e477 test(build): close value and keyed-scope mutants
Assert every static attribute validator boundary, exact missing/empty/invalid diagnostics, and valid AppBuilder lowering. Prove nested keyed ancestry, sibling/invalid scope rejection, keyed resource lowering, and unkeyed nested resource failures.

req: convention/002

req: convention/003

req: convention/004

req: convention/005

req: convention/006

req: list/005

req: diagnostics/004

req: test/021
2026-07-17 06:31:38 +02:00
slhx agent 4e7d772311 test(build): close placement diagnostic mutants
Assert exact InvalidData diagnostics for navigation, boost, client-module, and SSE misplacement and prove each accepted placement through AppBuilder::run.

req: page_swap/001

req: page_swap/007

req: push/006

req: diagnostics/002

req: test/021
2026-07-17 06:07:04 +02:00
slhx agent a322e519d3 fix(build): fail closed on invalid loop locals
Recognize only one valid Rust identifier bound directly to a self vector field as a template local; reject malformed and non-vector bindings, preserve unknown element locals without fabricated fields, and deduplicate repeated locals.

req: diagnostics/006

req: surface/008

req: test/021
2026-07-17 05:57:29 +02:00
slhx agent 2e39fb17a1 fix(build): recognize exact Hemlate derives
Parse derive paths structurally so qualified Hemlate derives provide template context while similarly named derives fail closed. Prove hyphen/underscore template type mapping, empty and non-UTF-8 paths, Cargo-root lookup, Rust source failures, and derived field facts through the public inspection entry point.

req: diagnostics/006

req: surface/008

req: test/021
2026-07-17 05:45:03 +02:00
slhx agent 185cd18990 test(build): close stylesheet scanner mutants
Prove sorted, deduplicated CSS/SCSS class extraction across starts, compounds, delimiters, invalid candidates, and invalid stylesheet module names; simplify token scanning to one boundary loop and classify only deterministic non-terminating progress mutants.

req: style/001

req: diagnostics/004

req: test/021
2026-07-17 05:37:07 +02:00
slhx agent 4058d05f20 test(build): close app input collection mutants
Traverse inputs once, preserve deterministic HE/ML-before-stylesheet lowering, and prove nested discovery, explicit surfaces, OUT_DIR fallback, missing inputs, invalid UTF-8, permission failures, output failures, and stable collision ordering through AppBuilder::run.

req: build/003

req: build/004

req: build/009

req: diagnostics/004

req: test/021
2026-07-17 05:03:03 +02:00
slhx agent 2ba0be4d24 test(build): lock canonical generated contracts
Hash complete generated Rust, global exports, and symbol manifests across component, keyed, collision, duplicate-class/event, form, and parameter branches; simplify root component exports and remove impossible target-fallback bookkeeping.

req: codegen/005

req: codegen/006

req: build/009

req: test/021
2026-07-17 04:50:36 +02:00
slhx agent 72bce73e52 test(build): close resource extraction mutants
Prove fail-closed slot and handler-parameter diagnostics through AppBuilder, consolidate resource insertion around the stored entry, and lower validated runtime events without redundant fallible identifier conversion.

req: build/004

req: diagnostics/004

req: surface/008

req: test/021
2026-07-17 03:57:29 +02:00
slhx agent b28ffacacb test(build): prove class and form extraction
Assert exact generated symbol records for class, form, field, slot, atom, handle, and event resources; cover invalid and colliding class/form identifiers plus repeated compatible form metadata; and remove a redundant class-token conflict branch already owned by identifier validation.

req: style/001

req: form/001

req: diagnostics/004

req: build/009

req: test/021
2026-07-17 03:49:11 +02:00
slhx agent 9cdc91984a test(build): reject invalid client handler names
Drive AppBuilder through a rooted client module with a non-Rust handler name and assert the exact InvalidData diagnostic, closing the public invalid-value mutation seam.

req: build/004

req: client_local/011

req: diagnostics/004

req: test/021
2026-07-17 03:32:12 +02:00
slhx agent db5e4bf56c test(build): prove stale artifact refresh
Drive AppBuilder through a changed template and prove generated Rust and symbols replace stale handles. Tighten the internal write helper to return only the result its callers use and classify the filesystem-equivalent read-guard mutant.

req: build/009

req: test/021
2026-07-17 03:20:53 +02:00
slhx agent 8a21cad98e test(build): prove public inspection contracts
Exercise file and source diagnostics, generated targets, Hemlate-derived context facts, missing-file propagation, and invalid Rust context through hemx-build's public inspection API; classify only the currently infallible hemplate parser seam.

req: diagnostics/004

req: diagnostics/006

req: surface/008

req: test/021
2026-07-17 03:14:24 +02:00
slhx agent 1a9c090028 test(build): harden convention diagnostics
Exercise malformed static policy, client module/event/state, confirmation, SSE, delay, throttle, and mixed-event values so build-time diagnostics fail closed across the public declarative surface.

req: diagnostics/004

req: convention/006

req: client_local/011
2026-07-17 02:30:06 +02:00
slhx agent 5e555f4d93 test(build): close generated contract mutants
Exercise invalid client contracts through AppBuilder and simplify invariant-only generation paths so the focused build contract mutation set has no unexplained survivors.

req: build/004

req: build/007

req: client_local/011
2026-07-16 22:34:41 +02:00
slhx agent e9ced4e0c1 feat(v1): harden typed runtime boundaries
Elect one canonical EffectBatch codec, remove the parallel postcard API, and strengthen fail-closed host, form, sync, WASM, macro, generated-contract, and test-harness proofs with mutation-driven coverage.

req: wire/008

req: wire/009

req: wire/010

req: push/008

req: client_local/015

req: client_local/016

req: client_local/017

req: client_local/018

req: client_local/019

req: sync/024

req: sync/025

req: sync/026

req: sync/027

req: sync/028

req: sync/029

req: test/020

req: test/021
2026-07-16 22:27:28 +02:00
slhx agent e7211df4c5 fix(forms): support reserved control identifiers
Normalize raw Rust identifiers when matching generated form contracts so reserved HTML control names remain usable.

req: form/004
2026-07-16 10:00:43 +02:00
slhx agent 7eb65d77c8 feat(kanban): prove accessible local reorder
req: client_local/013\nreq: accessibility/002\nreq: accessibility/003\nreq: accessibility/004\nreq: accessibility/006\nreq: milestone/001
2026-07-13 14:29:21 +02:00
slhx agent dd5ea0827f feat(wasm): suppress stale client completions
req: client_local/011\nreq: client_local/012\nreq: operations/003
2026-07-13 13:21:48 +02:00
slhx agent ac525fe572 feat(build): generate client handler bootstrap
req: client_local/001\nreq: client_local/004\nreq: client_local/006\nreq: client_local/007\nreq: client_local/008\nreq: client_local/009\nreq: client_local/010\nreq: client_local/014\nreq: security/002\nreq: security/006\nreq: v1_release/001\nreq: v1_release/008
2026-07-13 13:02:29 +02:00
slhx agent 38eae79a2f feat(wasm): validate client event and state ABI
req: client_local/005\nreq: client_local/006\nreq: client_local/007\nreq: client_local/008\nreq: client_local/009\nreq: client_local/010\nreq: client_local/014
2026-07-13 12:42:31 +02:00
slhx agent 40643e360d feat(wasm): execute client handlers without requests
req: client_local/001\nreq: client_local/004\nreq: client_local/005\nreq: client_local/009\nreq: client_local/010\nreq: client_local/014\nreq: v1_release/001
2026-07-13 12:33:54 +02:00
slhx agent 7db05356ae perf(build): preserve no-op codegen artifacts 2026-07-13 09:38:54 +02:00
slhx agent 65895d8b83 fix(workspace): clear strict lint and test debt 2026-07-13 08:59:48 +02:00
slhx agent d0e7022c86 feat(runtime): add URL-state GET navigation 2026-06-29 18:21:00 +02:00
slhx agent acddea21ee fix(examples): repair html dynamic partial interactions
Preserve data-hemx-revealed through hemx-build and make html_examples lazy/load-more/infinite/search interactions return server-driven partial updates with regression coverage.

req: convention/005

req: htmx_equivalents/002

req: examples/001
2026-06-25 12:56:43 +02:00
slhx agent 329f16aebf fix(build): dispatch slot targets to matching component render/put
req: runtime/005

req: examples/001

req: htmx_equivalents/001
2026-06-23 15:06:08 +02:00
slhx agent cd7f64e5a3 feat(runtime): add tiny trigger timing conventions
Add boring runtime-level trigger timing primitives for delay, revealed, and interval while keeping them as attribute conventions rather than core effects or plugin surfaces. Promote lazy-load, infinite-scroll, progress-bar, value-select, and reset-user-input in examples/html_examples to runnable hemx patterns with exact htmx slugs and generated resources.

req: convention/001

req: convention/003

req: convention/005

req: htmx_equivalents/001

req: htmx_equivalents/002

req: examples/001
2026-06-23 07:51:43 +02:00
slhx agent de6ecd469f fix(runtime): show transport failures in app error outlets
Make failed hemx requests visibly recoverable by updating root-scoped data-hemx-error outlets while preserving fail-closed non-2xx handling and inspectable hemx:error events. The v0 generated-app exemplar now includes a transport error outlet alongside generated field-error targets.

req: runtime/005

req: examples/001

req: canonical_authoring/003
2026-06-22 22:26:33 +02:00
slhx agent 797132647f feat(diagnostics): add compiler-backed heml language service
Add hemx-lsp for stdio LSP diagnostics, completion, and hover while preserving HTML editor tooling for .heml files. Teach hemx-build to expose generated target and derive-known template context facts, including simple h-for locals, so editor help comes from build-owned facts instead of editor-only parsers. Wire VS Code/Cursor and Neovim documentation and extend the Workout exemplar with a real h-for plan loop for end-to-end proof.

req: diag/004

req: diag/005

req: diag/006
2026-06-22 22:06:42 +02:00
slhx agent b8c83fee25 feat(build): surface structured template diagnostics
Add public .heml syntax authority and refactor the unkeyed generated-target error into structured diagnostic data while preserving the human compiler error.

req: diagnostics/001

req: diagnostics/002
2026-06-12 18:11:39 +02:00
slhx agent d2049c559a fix(build): explain missing keyed loop facts
Improve the unkeyed h-for diagnostic so authors see the exact loop, stable h-key shape, generated helper consequence, and why dynamic child data-key is not enough.

req: scope/001

req: diagnostics/002
2026-06-12 14:47:22 +02:00
slhx agent 7be1c9c649 feat(build): make generated page helper canonical
Move canonical examples and docs snippets from raw render/page calls to generated ui::page helpers, hide generated render behind doc(hidden), and let form resources participate in generated target inspection for tests.

req: canonical_authoring/005

req: dx/006

req: codegen/002

req: public_api/002

req: test/001
2026-06-12 07:31:39 +02:00
slhx agent 4a8442c5f9 feat(build): generate page-boundary helper
Expose generated ui::page as the canonical page-boundary rendering helper and move the Workout golden path and docs off beginner-visible ui::render calls.

req: public_api/002

req: codegen/002

req: canonical_authoring/006
2026-06-12 07:18:38 +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 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