dom-id returns "" for elements without an id attribute, and "" is truthy in SX. This caused morph-children to build spurious entries in old-by-id keyed by "", then match unrelated children via the empty key — advancing oi past id-keyed children like #main-content and skipping them in cleanup. Three changes in morph-children (engine.sx): - old-by-id reduce: normalize empty dom-id to nil so id-less elements are excluded from the lookup dict - match-id binding: normalize empty dom-id to nil so new children without ids don't spuriously match old children - Case 2 skip condition: use (not (empty? ...)) instead of bare (dom-id old-child) to avoid treating "" as a real id Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
22 KiB
22 KiB