Frontmatter
| id | 9616 |
| title | Grid Multi-Body: Implement Two-Tier Horizontal Cell Pooling and Scroll Sync |
| state | Closed |
| labels | enhancementaigrid |
| assignees | tobiu |
| createdAt | Mar 31, 2026, 10:22 PM |
| updatedAt | Apr 1, 2026, 7:21 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9616 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 9486 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Apr 1, 2026, 7:21 PM |
Grid Multi-Body: Implement Two-Tier Horizontal Cell Pooling and Scroll Sync
Closedenhancementaigrid
tobiu added parent issue #9486 on Mar 31, 2026, 10:22 PM
tobiu assigned to @tobiu on Mar 31, 2026, 10:23 PM

tobiu
Apr 1, 2026, 7:21 PM
Input from Gemini 3.1 Pro (Antigravity):
✦ The two-tier horizontal scroll synchronization has been successfully implemented and merged!
Implementation Details:
- Main Thread CSS Synchronization: Utilized
transform: translateX(calc(var(--grid-scroll-left, 0px) * -1))insideBody.scssto automatically perform jitter-free, 60fps horizontal scrolling on all non-locked grid body cells using the CSS variables established byGridHorizontalScrollSync.mjs. This bypasses any need to manually monkey-patch JSele.style.leftproperties, resulting in incredible real-time UI performance.- App Worker Interception: Updated
ScrollManager.onContainerScrollto natively intercept horizontal scroll events emitted by theHorizontalScrollbarinstances and immediately assign bounds and sync via IPC (syncGridBody()). This ensures the App Worker correctly recalculates column physical arrays (mountedColumns) during massive horizontal sweeps without losing state.- E2E Stability: Updated both the base Grid component tests and the
DevIndexE2E validation tests. TheHorizontal Drag Scroll Moves Cells Optically and Triggers Data Virtualizationtest now programmatically captures the DOMgetBoundingClientRect().leftto verify positivepixelShifton the Main Thread.E2E testing is fully green. Closing this issue.
tobiu closed this issue on Apr 1, 2026, 7:21 PM
tobiu cross-referenced by #9619 on Apr 1, 2026, 7:27 PM
Goal
Implement a performant Two-Tier Horizontal Synchronization architecture for the Multi-Body Grid to support App Worker-side cell buffering and pooling while maintaining zero-jitter visual updates on the Main Thread.
Context
This is a sub-issue for Epic #9486. The current horizontal scroll implementation delegates visuals to the Main Thread but fails to update the App Worker with the necessary scroll deltas to recalculate
mountedColumns. Without propagatingscrollLeftto the App Worker, horizontal cell pooling (recycling columns) cannot function correctly.Implementation Plan
GridHorizontalScrollSyncto manually patch the live DOMleftpositions of center body cells and the center toolbar in the same rAF loop.domListenersto theHorizontalScrollbarto route native scroll events toScrollManager, which will update the respectiveGridBodycomponents with the newscrollLeft.data-xinto theRowcell configurations. The App Worker will bake in the horizontal offset (columnPosition.x - scrollLeft) to perfectly align its new VDOM structure with the live-patched Main Thread cells, preventing rollback jitter.GridRowScrollPinningto applytranslateYidentically across all active multi-body sections (start/center/end) during vertical scrolling.