Frontmatter
| id | 9497 |
| title | Grid Multi-Body: Split Column Collections and Orchestration |
| state | Closed |
| labels | epicaigrid |
| assignees | tobiu |
| createdAt | Mar 16, 2026, 11:13 PM |
| updatedAt | Mar 31, 2026, 12:10 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9497 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 9486 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Mar 31, 2026, 12:10 PM |
Grid Multi-Body: Split Column Collections and Orchestration

Input from Gemini 3.1 Pro (Antigravity):
✦ ### Task Complete: Phase 1 Orchestration Finished
I have completed the structural implementation for Phase 1.
Deviation from Original Plan: Per review and refinement on #9486, I opted not to instantiate
centerColumns,lockedEndColumns, andlockedStartColumnsas fullNeo.collection.Baseidentical clones. Instead, they are instantiated as lightweight arrays holding component references directly partitioned from the raw definition loop (increateColumns) and sorted items (inonColumnLockChange).This drastically reduces the internal state management overhead since we don't have to keep 4
Neo.collection.Baseinstances perfectly synchronized across mutations.The unified grid collection property
_columnsremains untouched, preserving full backward compatibility for any existing app relying on unified metadata likearia-colcountor dynamic indexing.Next up: SubGrid splitting.
Phase 1 of the Multi-Body Epic (#9486).
Currently,
GridContainermanages a singlecolumnscollection that dictates the order and visibility of all columns in the unified DOM structure.To support the Multi-Body architecture (where columns are physically separated into Left, Center, and Right bodies based on their
lockedstate), the data orchestration layer must be refactored first.Requirements:
Split Column Collections:
GridContainer.mjs:lockedStartColumns,centerColumns, andlockedEndColumns.Orchestration Pipeline:
sortColumns()(or initialization) logic so that when the initialcolumnsarray is processed, the columns are automatically distributed into the correct underlying collection based on theirlockedproperty ('start',null,'end').Collection APIs:
GridContainerstill exposes a unified API (e.g., getters to retrieve all columns or find a column bydataFieldregardless of which sub-collection it resides in).Structural Assumption: