Skip to content

Add a bottom-origin virtualizing chat layout #1054

Description

@karkarl

Problem

The current Reactor ItemsView uses WinUI StackLayout, which has no supported reverse or bottom-origin mode. Initial chat positioning relies on a one-time StartBringItemIntoView request and can race the virtualized layout lifecycle. In-place streaming follow also needs stronger user-intent and operation-correlation handling.

Proposed work

  • Implement a custom bottom-origin VirtualizingLayout compatible with ItemsView and the AnnotatedScrollBar controller binding.
  • Preserve stable keyed item virtualization, historical prepend behavior, and user scroll-away intent.
  • Harden initial and streaming tail-follow behavior using supported WinUI completion/lifecycle signals.
  • Avoid height/extent calculations, ChangeView, UpdateLayout, VerticalAnchorRatio, and timer-based settling.

Acceptance criteria

  • Chat opens at the latest history item in every host.
  • Streaming stays at the tail only while the user remains in follow mode.
  • Scrolling away or using the annotated scrollbar never freezes the UI or is overridden.
  • Annotated scrollbar remains full-height and controller-bound.
  • Automated direct-Reactor UI coverage validates initial positioning, streaming follow, scroll-away, and annotated scrollbar navigation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low-risk cleanup, docs, polish, ergonomics, or speculative feature.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions