LearnNewsExamplesServices
Frontmatter
id9630
titleGrid: Implement Main-Thread Addon Hover Synchronization
stateClosed
labels
enhancementaiperformancegrid
assigneestobiu
createdAtApr 2, 2026, 11:27 AM
updatedAtApr 2, 2026, 11:57 AM
githubUrlhttps://github.com/neomjs/neo/issues/9630
authortobiu
commentsCount1
parentIssue9626
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtApr 2, 2026, 11:57 AM

Grid: Implement Main-Thread Addon Hover Synchronization

Closedenhancementaiperformancegrid
tobiu
tobiu commented on Apr 2, 2026, 11:27 AM

This is an architecture sub-task for Epic #9626.

Problem Description

The transition to a multi-body grid architecture means that a single logical row is now split across up to three physical grid bodies (Start, Center, End). Native SCSS :hover states only apply to the DOM nodes within a single grid body, resulting in disconnected highlighting when a user hovers over a segmented row.

To maintain perfect GPU scrolling performance and eliminate CSS bundle bloat, we need a hyper-optimized Main-Thread mechanism to synchronize these hover states.

Proposed Solution

Introduce the Neo.main.addon.GridRowHoverSync addon to systematically delegate native pointer events across multiple grid bodies with zero layout thrashing.

  1. Native Hit-Testing: The Addon completely avoids computationally expensive mousemove coordination. It relies purely on the browser's native mouseover / mouseout event propagation. It perfectly complements pointer-events: none virtualization by letting the Browser GPU handle the lifecycle natively when a scroll buffer terminates.
  2. relatedTarget Bailout: The Addon diffs the e.relatedTarget dynamically. If the pointer navigates within the boundaries of an identical data-record-id, it bypasses DOM mutations entirely, resulting in exactly zero unnecessary class toggles.
  3. Dynamic Toggle Base: The Addon automatically unregisters itself via GridContainer.hasLockedColumns to ensure pristine 0-JS overhead when developers configure a traditional single-body Grid layout, gracefully defaulting to legacy SCSS native behavior.
tobiu added the enhancement label on Apr 2, 2026, 11:27 AM
tobiu added the ai label on Apr 2, 2026, 11:27 AM
tobiu added the performance label on Apr 2, 2026, 11:27 AM
tobiu added the grid label on Apr 2, 2026, 11:27 AM
tobiu added parent issue #9626 on Apr 2, 2026, 11:28 AM
tobiu referenced in commit e831999 - "feat: Optimized Multi-Body Grid RowHoverSync Addon (#9630)" on Apr 2, 2026, 11:57 AM
tobiu
tobiu Apr 2, 2026, 11:57 AM

Development is complete. Hover sync has been stabilized by aggressively removing .neo-hover artifact classes natively, moving to a fully event-driven workflow (using resumeHover with timeout()), and documenting the architecture following the 'Anchor & Echo' Knowledge Base Enhancement Strategy. Changes have been pushed to dev.

tobiu assigned to @tobiu on Apr 2, 2026, 11:57 AM
tobiu closed this issue on Apr 2, 2026, 11:57 AM
tobiu referenced in commit 22e2ac7 - "refactor: Alphabetize GridRowHoverSync methods and rename ambiguous ScrollManager variables (#9630)" on Apr 2, 2026, 12:02 PM
tobiu referenced in commit 88a1563 - "refactor: apply let me = this convention to ScrollManager (#9630)" on Apr 2, 2026, 12:05 PM