Commit306dab29Recorded17 Jul 2026Repositorysigil-web-client

sigil-web-client: v0.15.2

Message

Release keyed reconciliation in patch-children (9dcd0fe, e33f856): child nodes already in place are never detached during a render -- dropped children are removed explicitly and only out-of-place nodes move via insertBefore, so the focused element survives re-renders (detach-blur fired no focusout and silently stranded focus on <body>) and per-render DOM mutations drop from ~110 to a handful on a typical view update.

Requires sigil-wasm-dom >= 0.17.16 for the insert-before/remove-child DOM primitives; the dependency pin moves to ^0.17.16.

Behavior notes: foreign (non-vdom) children of vdom-managed elements now survive renders instead of being wiped and re-added each render, and a first render of an EMPTY view into a never-rendered root no longer clears pre-existing static markup (the first non-empty render still does).

Changed
 package.sgl | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
Diff
package.sglmodified
@@ -14,7 +14,7 @@
14
15
(package
16
name: "sigil-web-client"
17
version: "0.15.1"
+17
version: "0.15.2"
18
sigil: "^0.17"
19
description: "Client-side WASM UI framework for Sigil: react-like browser app rendering"
20
url: "https://codeberg.org/sigil/sigil-web-client"
@@ -34,7 +34,9 @@
34
optimize: 2))
35
36
dependencies: (list
37
(from-git url: "codeberg:sigil/sigil" package: "sigil-wasm-dom" version: "^0.17"))
+37
;; ^0.17.16: keyed reconciliation needs the insert-before/remove-child
+38
;; DOM primitives, first released in 0.17.16.
+39
(from-git url: "codeberg:sigil/sigil" package: "sigil-wasm-dom" version: "^0.17.16"))
40
41
dev-dependencies: (list
42
(from-git url: "codeberg:sigil/sigil" package: "sigil-test" version: "^0.17")