Virtualize chat timeline rows#898
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 30, 2026, 7:11 PM ET / 23:11 UTC. Summary Reproducibility: not applicable. this is a feature/performance PR rather than a reproducible bug report. Source inspection confirms current main and v0.6.12 still render chat rows through VStack, while the linked backlog item defines the desired virtualization behavior without a failing perf threshold. Review metrics: 3 noteworthy metrics.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the ItemsRepeater-based virtual timeline after current checks complete and maintainers are satisfied that large-chat scrolling, follow behavior, history prepend, and session offset restoration remain correct. Do we have a high-confidence way to reproduce the issue? Not applicable; this is a feature/performance PR rather than a reproducible bug report. Source inspection confirms current main and v0.6.12 still render chat rows through VStack, while the linked backlog item defines the desired virtualization behavior without a failing perf threshold. Is this the best way to solve the issue? Yes, with review caveats: an ItemsRepeater-backed FunctionalUI virtual stack matches the existing A2UI virtualization direction and keeps the change localized. The safer merge path is to pair it with completed checks and proof for the scroll-state cases most likely to regress. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 4166e0fd63f8. Label changesLabel changes:
Label justifications:
Evidence reviewedWhat I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
@openclaw-mantis visual task: verify native chat timeline with a large conversation scrolls smoothly and preserves scroll-to-bottom/follow behavior after virtualization. |
|
Added current-head Windows CI proof to the PR body: the native chat timeline mounted 241 rows with ItemsRepeater, vertical StackLayout, bottom scroll offset, and newest row visible. @clawsweeper re-review |
|
Current head ef95d1d has all GitHub Actions Build and Test jobs green, including test, e2e, win-x64, and win-arm64. The PR body includes current-head Windows CI proof: CHAT_TIMELINE_VIRTUALIZATION_PROOF rows=241 itemsRepeater=ItemsRepeater layout=Vertical scrollableHeight=19967.0 verticalOffset=19967.0 newestRowVisible=true. @clawsweeper re-review |
karkarl
left a comment
There was a problem hiding this comment.
Tested locally on ARM64 — the ScrollViewer is out of sync with the virtualized chat rows. After loading a conversation, the scroll position gets stuck in the middle of the chat history rather than anchoring to the latest messages at the bottom. Looks like the viewport offset isn't being reconciled with the virtualization panel's realized item range.
|
Thanks for pushing this forward — the shape is promising, and the 241-row proof is a useful start. I did a maintainer pass against current The main blocker is the interaction with the newly merged FunctionalUI prune pass. Two related scroll/lifecycle issues should be fixed with that:
Suggested path: make virtualized row ownership prune-aware (for example, a virtualized subtree/prefix that is not swept by the root prune until the item leaves the ItemsSource, or explicit row path lifecycle in So: great direction, but requesting changes rather than merging this one today. |
Closes #860.
Adds a FunctionalUI virtual stack backed by WinUI ItemsRepeater and switches the native chat timeline rows to it, preserving existing scroll/follow handling while avoiding a StackPanel with every conversation row realized up front.
Windows CI proof on run 28481294754 mounted the real native chat timeline with 241 rows and reported
CHAT_TIMELINE_VIRTUALIZATION_PROOF rows=241 itemsRepeater=ItemsRepeater layout=Vertical scrollableHeight=19967.0 verticalOffset=19967.0 newestRowVisible=true. The focused source contract test also prevents regressing the production row host back toVStack(2, timelineRows).