mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-12 14:16:28 +03:00
Two regressions surfaced in smoke testing, both traceable to state drift when live-wrap.mjs rewrites the source file and HMR swaps the DOM. 1. Variant outline on the wrong element. The skill rewrite lost the explicit "each variant must be a complete element replacement" rule and dropped the "full element replacement" comments from variants 2 and 3. Models started producing variants with loose sibling children, so live-browser's :first-child selector framed only the first sibling. Restored the rule, made all three comments consistent, and replaced :first-child with pickVariantContent — which skips non-visual tags (style/script/link/meta/template) and falls back to the variant div itself when a model still ships multiple visual children. 2. Loading shader freezes after wrap. The MutationObserver only woke up when new non-original variants arrived, so when the wrapper first appeared via HMR with just the original inside, selectedElement was left dangling on the now-detached pre-wrap node. Scroll-tracking read a zero rect on every frame and collapsed the shader canvas to 0x0. The observer now re-anchors selectedElement to the original's content the moment the wrapper shows up, keeping overlays positioned until real variants land. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>