microsoft / microsoft/vscode

Chat: add a per-chat auto-scroll mode with limited streaming preview

Open
#330,811 0 comments 1 reaction 1 assignee Claimed by @justschen View on GitHub
Dominant language
TypeScript
Stars
193k
Forks
42.4k
PR merge metrics
PR metrics pending

Description

## Problem

When an agent streams responses or progress updates, the active chat continuously scrolls to the newest content. This makes it difficult to keep reading an earlier part of a long conversation.

## Proposal

Add a per-chat auto-scroll control, ideally as an icon in the chat toolbar. It should be possible to switch modes at any time:

- **Follow latest**: Current behaviour; the chat follows streamed content automatically.
- **Reading mode**: When a new response starts, reveal only a configurable number of its first lines. Do not scroll further while the response continues streaming. The user decides when to continue by scrolling down manually.

When the user sends a new prompt, the chat should automatically move to the first lines of the next response while still respecting the selected reading mode.

## Suggested details

- Keep the mode local to the current chat session.
- Make the current state visually clear and accessible, including a tooltip and keyboard access.
- Allow the preview size to be configurable, for example 2, 5, or 10 lines.
- Keep a **Jump to latest** action available so users can immediately resume following the stream.

## Motion and streaming behaviour

When **Follow latest** is enabled, scrolling should be smooth and coalesced rather than jumping instantly for every streamed line or token.

- Batch streaming updates before adjusting the scroll position.
- Animate the resulting movement smoothly instead of issuing a scroll jump for each output update.
- Respect the user's reduced-motion preference and provide an option to disable animation.
- In **Reading mode**, do not move the viewport after the configured preview lines have been revealed.

## Why this matters

This gives users situational control: live monitoring while work is in progress, or a stable reading experience for long responses. It is especially helpful for users with low vision, cognitive load concerns, or limited screen space.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.