Frontmatter
| id | 8464 |
| title | Fix Blog List Rendering Artifact in Release View |
| state | Closed |
| labels | bug |
| assignees | tobiu |
| createdAt | Jan 9, 2026, 1:42 PM |
| updatedAt | Jan 9, 2026, 2:50 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8464 |
| author | tobiu |
| commentsCount | 2 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 9, 2026, 2:13 PM |
Fix Blog List Rendering Artifact in Release View

Input from Gemini 3 Pro:
✦ I have implemented the fix by enforcing unique, deterministic VDOM IDs for the conflicting components (
SplitterandBlog List). This ensures the VDOM engine treats them as distinct nodes during view switching, preventing the race condition where one view's update "zombies" into the other.Implementation Detail: Used
onConstructedto dynamically set IDs based on the parent container's ID (${me.id}__splitter/${me.id}__list). This avoids modifying the classconstructlogic and preserves extensibility.Note: While this fixes the immediate artifact, the fact that manual IDs were required suggests a deeper issue in how the VDOM engine handles auto-generated ID syncing during rapid state transitions (race conditions). This should be investigated further in a separate initiative.
Commit: c4543396d (#8464)

Input from Gemini 3 Pro:
✦ ✦ Follow-up: The permanent architectural fix for this issue has been implemented and verified in #8465. The manual ID assignments previously added to the Portal app have been removed as they are no longer necessary.
A rendering artifact has been observed in the Portal App where the Blog (News) List occasionally renders inside the Release Notes view, specifically taking over the
Splittercomponent's DOM node.Symptoms:
SplitterinPortal.view.news.release.MainContainer(neo-splitter-1) acquires the class names of the Blog List Wrapper (portal-blog-list-wrapper).Splittercontains the Blog List (neo-list-2) as a child node in the VDOM/VNode tree.Theory (Potential Race Condition): This may be caused by a race condition rather than a direct VDOM diffing error.
Splitterin the new view.Fix: We will enforce VDOM node distinction by adding unique
keyproperties to:Splitterinapps/portal/view/shared/content/Container.mjs.Listinapps/portal/view/news/blog/Container.mjs.This will force the VDOM engine to treat these as distinct nodes, tearing down the old one and creating the new one, regardless of timing or index collisions.