Add prompt markers to chat transcript scrollbar#326088
Conversation
📬 CODENOTIFYThe following users are being notified based on files changed in this PR: @benibenjMatched files:
|
There was a problem hiding this comment.
Pull request overview
This PR aims to add an experimental prompt-only marker rail to the Chat View transcript scrollbar (fixes #326087), letting users scan/navigate long sessions by their own prompts. It introduces a new ChatScrollbarPromptMarkerController, three experimental settings (chat.scrollbarPromptMarkers.enabled / .maximumMarkers / .clickBehavior), prompt-marker descriptor/downsampling logic shared with prompt navigation, plus component fixtures and unit tests.
Unfortunately, the branch appears to be built on a stale base: alongside the feature, the diff reverts a substantial amount of unrelated, recently-merged chat work. Several of these removals delete view-model members and widget methods that unchanged files still reference, so the branch will not compile as-is.
Changes:
- Adds the prompt-marker controller, settings, descriptor/downsampling logic, fixtures, and tests for the new feature.
- Reverts unrelated recent work (e.g.
isTerminalCommand,getElementTop,UserToggleResizescroll-anchoring,getSelectedModelRequestOptions, turn-status-pills fixtures,chatEditingSession/checkpoint-timeline changes, and a large block of CSS), which breaks compilation of unchanged consumers. - A new fixture host omits a required
getVisiblePromptRowIdoverride, causing a runtime crash when rendered.
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
chat/browser/widget/chatScrollbarPromptMarkerController.ts |
New controller rendering the prompt-marker rail (core feature). |
chat/browser/actions/chatPromptNavigationActions.ts |
Adds prompt-marker descriptor, downsampling, and click-behavior logic. |
chat/common/constants.ts |
Adds the three experimental settings + click-behavior enum. |
chat/common/model/chatViewModel.ts |
Removes isTerminalCommand/requestTimestamp — breaks unchanged consumers. |
chat/browser/widget/chatListWidget.ts |
Wires the controller but also removes getElementTop, UserToggleResize, and getSelectedModelRequestOptions still used elsewhere. |
chat/browser/widget/media/chat.css |
Adds marker styles; also deletes unrelated recent CSS. |
test/browser/componentFixtures/chat/chatScrollbarPromptMarkers.fixture.ts |
New fixture; host missing getVisiblePromptRowId override → runtime crash. |
test/browser/componentFixtures/chat/chatWidget.fixture.ts |
Adds marker fixture cases; reverts turn-status-pills fixture support. |
chat/test/browser/.../chatPromptNavigationActions.test.ts, .../chatScrollbarPromptMarkerController.test.ts |
Unit tests for the new descriptor/controller logic. |
ea3de40 to
26acf0b
Compare
26acf0b to
e87eda8
Compare
|
Superseded by #326137. I moved the live fork branch to |
Closes #326087
This PR adds experimental user prompt markers to the Chat View transcript scrollbar to make long chat sessions easier to scan and navigate.
What changed
Settings
This PR introduces three experimental chat settings:
chat.scrollbarPromptMarkers.enabledfalsechat.scrollbarPromptMarkers.maximumMarkers302chat.scrollbarPromptMarkers.clickBehaviorrevealAndFocusrevealAndFocus,revealHow to test
chat.scrollbarPromptMarkers.enabledchat.scrollbarPromptMarkers.clickBehaviorchanges click behavior as expectedchat.scrollbarPromptMarkers.maximumMarkersValidation
npm run transpile-clientsrc/vs/workbench/contrib/chat/test/browser/actions/chatPromptNavigationActions.test.tssrc/vs/workbench/contrib/chat/test/browser/widget/chatScrollbarPromptMarkerController.test.tsNotes
chat.scrollbarPromptMarkers.maximumMarkers