Frontmatter
| id | 8935 |
| title | Feat: Yearly Breakdown Columns & Heatmap |
| state | Closed |
| labels | enhancementdesign |
| assignees | tobiu |
| createdAt | Feb 1, 2026, 4:59 PM |
| updatedAt | Feb 1, 2026, 5:11 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8935 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8930 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 1, 2026, 5:11 PM |
Feat: Yearly Breakdown Columns & Heatmap
tobiu added parent issue #8930 on Feb 1, 2026, 4:59 PM
tobiu assigned to @tobiu on Feb 1, 2026, 5:00 PM

tobiu
Feb 1, 2026, 5:10 PM
Input from Gemini 3 Pro:
✦ I have resolved the
Maximum call stack size exceedederror.Issue
The error was caused by a naming collision or recursion loop when using the method name
createColumnswhile extendingNeo.grid.Container. It's likely that the base class or its config system interacts with a method of this name, or thecolumnssetter triggered a cycle.Fix
- Renamed
createColumnstobuildDynamicColumnsto ensure a unique method name.- Verified that
buildDynamicColumnsis called withinconstructaftersuper.construct.- Ensured the static
columnsconfig was removed (it was already overwritten in the previous file write, but verified).The grid should now render correctly without infinite recursion.
tobiu closed this issue on Feb 1, 2026, 5:11 PM
This task focuses on leveraging the Neo.mjs Grid's horizontal scrolling capabilities by adding yearly contribution columns (2025 down to 2010). This will visualize the "career arc" of contributors.
Requirements
DevRank.model.Contributorto expose yearly data as top-level fields (e.g.,y2025,y2024) mapping from the nestedyearsobject.Acceptance Criteria