aaif-goose / aaif-goose/goose

lazy-load chat messages from the end instead of rendering all from start

Aberta
#11,622 2 comentários 0 reações 1 responsável Reivindicada por @Abhijay007 Ver no GitHub
Linguagem predominante
Rust
Estrelas
54.2k
Forks
6.2k
Merge médio
3d 2h
PRs com merge (30d)
262

Descrição

**What problem would this solve?**

When opening a long chat session, all messages are rendered from first to last,
then the app auto-scrolls to the bottom. On long sessions this causes sluggish
initial load and scrolling from excessive DOM nodes, and in extreme cases the
renderer can freeze (see #11557).

This affects users who keep long-running sessions with dozens or hundreds of
messages — a common pattern when working on complex tasks.

**What would a good outcome look like?**

On session open, only the last N messages are rendered (newest first). Older
messages are loaded on scroll-to-top or via a "Load older" button. The load
is smooth, scroll position is preserved when prepending, and short sessions
(≤ N messages) are unaffected — all messages show as before.

**Possible approaches**

- Show only the last ~50 messages initially
- IntersectionObserver on a top sentinel detects scroll-to-top and loads 30 more
- "Load older" and "Load all" buttons for manual control
- Cmd/Ctrl+F triggers full message load for search
- New streaming messages append naturally to the visible window

**Additional context**

There was an attempted fix in PR #11578 that was closed because it lacked a
tracking issue. The implementation only modified
`ui/desktop/src/components/ProgressiveMessageList.tsx` and did not touch
`BaseChat.tsx` or `chatSessionStore`.

Related issue: #11557 describes a renderer hang in long sessions; lazy-loading
old messages is one of the mitigations suggested there.

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.