From 4c04f3cc77cee9084a117ed51a3b80045ca6e35e Mon Sep 17 00:00:00 2001 From: slhx agent Date: Tue, 2 Jun 2026 02:33:06 +0200 Subject: [PATCH] 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 --- examples/kanban.md | 2 +- slhx-test/tests/examples_contract.rs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/kanban.md b/examples/kanban.md index 35507ad..6cfb3b7 100644 --- a/examples/kanban.md +++ b/examples/kanban.md @@ -55,7 +55,7 @@ Notes on keyed scopes: - `h-for="column in &self.columns" h-key="column.id"` — **required** for slhx-addressable nodes inside - `h-for="card in &column.cards" h-key="card.id"` — **required** -- A slot inside a keyed loop is addressed as a generated keyed resource, never `querySelector(".card:nth-child(3)")` +- A slot inside a keyed loop is addressed as a generated keyed resource, never by selector strings or positional DOM targeting - Without `h-key`, slhx rejects the build — no runtime selector fallback --- diff --git a/slhx-test/tests/examples_contract.rs b/slhx-test/tests/examples_contract.rs index fba7621..0fb7c34 100644 --- a/slhx-test/tests/examples_contract.rs +++ b/slhx-test/tests/examples_contract.rs @@ -119,6 +119,8 @@ fn canonical_example_docs_do_not_teach_low_level_plumbing() { "SafeHtml::trusted", ".render(&", "addEventListener(", + "querySelector", + "querySelectorAll", ]; let mut failures = Vec::new(); scan_examples(&examples, &mut |path, text| {