mirror of
https://github.com/smittix/intercept.git
synced 2026-04-29 17:19:59 -07:00
Instead of rebuilding devicesGroup.innerHTML on every render, mutate existing SVG elements in-place (update transforms, attributes, class names) and only create/remove elements when devices genuinely appear or disappear from the visible set. This eliminates the root cause of both the jitter and the blank-radar regression: hover state can never be disrupted by a render because the DOM elements under the cursor are never destroyed. The isHovered / renderPending / interactionLockUntil state machine and its associated mouseover/mouseout listeners are removed entirely — they are no longer needed. A shared buildSelectRing() helper deduplicates the animated selection ring construction used by renderDevices() and applySelectionToElement(). Closes #143. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>