@theia/ai-chat-ui 1.64.0-next.0 → 1.64.0-next.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,6 +49,22 @@ export declare class ChatViewTreeWidget extends TreeWidget {
49
49
  protected _shouldScrollToEnd: boolean;
50
50
  protected isEnabled: boolean;
51
51
  protected chatModelId: string;
52
+ /** Tracks if we are at the bottom for showing the scroll-to-bottom button. */
53
+ protected atBottom: boolean;
54
+ /**
55
+ * Track the visibility of the scroll button with debounce logic. Used to prevent flickering when streaming tokens.
56
+ */
57
+ protected _showScrollButton: boolean;
58
+ /**
59
+ * Timer for debouncing the scroll button activation (prevents flicker on auto-scroll).
60
+ * If user scrolls up, this delays showing the button in case auto-scroll-to-bottom kicks in.
61
+ */
62
+ protected _scrollButtonDebounceTimer?: number;
63
+ /**
64
+ * Debounce period in ms before showing scroll-to-bottom button after scrolling up.
65
+ * Avoids flickering of the button during LLM token streaming.
66
+ */
67
+ protected static readonly SCROLL_BUTTON_GRACE_PERIOD = 100;
52
68
  onScrollLockChange?: (temporaryLocked: boolean) => void;
53
69
  protected lastScrollTop: number;
54
70
  set shouldScrollToEnd(shouldScrollToEnd: boolean);
@@ -57,9 +73,21 @@ export declare class ChatViewTreeWidget extends TreeWidget {
57
73
  protected init(): void;
58
74
  setEnabled(enabled: boolean): void;
59
75
  protected handleScrollEvent(scrollEvent: unknown): void;
76
+ /** Updates the scroll-to-bottom button state and handles debounce. */
77
+ protected updateScrollToBottomButtonState(isAtBottom: boolean): void;
60
78
  protected setTemporaryScrollLock(enabled: boolean): void;
61
79
  protected getCurrentScrollTop(scrollEvent: unknown): number;
80
+ /**
81
+ * Returns true if the scroll position is at the absolute (1px tolerance) bottom of the scroll container.
82
+ * Handles both virtualized and non-virtualized scroll containers.
83
+ * Allows for a tiny floating point epsilon (1px).
84
+ */
85
+ protected isAtAbsoluteBottom(): boolean;
62
86
  protected renderTree(model: TreeModel): React.ReactNode;
87
+ /** Shows the scroll to bottom button if not at the bottom (debounced). */
88
+ protected renderScrollToBottomButton(): React.ReactNode;
89
+ /** Scrolls to the bottom row and updates atBottom state. */
90
+ protected handleScrollToBottomButtonClick(): void;
63
91
  protected renderDisabledMessage(): React.ReactNode;
64
92
  protected renderWelcomeMessage(): React.ReactNode;
65
93
  protected mapRequestToNode(branch: ChatHierarchyBranch): RequestNode;
@@ -84,5 +112,9 @@ export declare class ChatViewTreeWidget extends TreeWidget {
84
112
  protected getChatResponsePartRenderer(content: ChatResponseContent, node: ResponseNode): React.ReactNode;
85
113
  protected handleContextMenu(node: TreeNode | undefined, event: React.MouseEvent<HTMLElement>): void;
86
114
  protected handleSpace(event: KeyboardEvent): boolean;
115
+ /**
116
+ * Ensure atBottom state is correct when content grows (e.g., LLM streaming while scroll lock is enabled).
117
+ */
118
+ protected updateScrollToRow(): void;
87
119
  }
88
120
  //# sourceMappingURL=chat-view-tree-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-view-tree-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-view-tree-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":"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"}
@@ -58,6 +58,12 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
58
58
  this.chatInputs = new Map();
59
59
  this._shouldScrollToEnd = true;
60
60
  this.isEnabled = false;
61
+ /** Tracks if we are at the bottom for showing the scroll-to-bottom button. */
62
+ this.atBottom = true;
63
+ /**
64
+ * Track the visibility of the scroll button with debounce logic. Used to prevent flickering when streaming tokens.
65
+ */
66
+ this._showScrollButton = false;
61
67
  this.lastScrollTop = 0;
62
68
  this.toDisposeOnChatModelChange = new core_1.DisposableCollection();
63
69
  this.id = ChatViewTreeWidget_1.ID;
@@ -94,44 +100,62 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
94
100
  this.update();
95
101
  }
96
102
  handleScrollEvent(scrollEvent) {
97
- // Get current scroll position
98
103
  const currentScrollTop = this.getCurrentScrollTop(scrollEvent);
99
- const isAtBottom = this.isScrolledToBottom();
100
- // Determine scroll direction
101
104
  const isScrollingUp = currentScrollTop < this.lastScrollTop;
102
105
  const isScrollingDown = currentScrollTop > this.lastScrollTop;
103
- // Handle scroll lock logic based on direction and position
104
- // The key insight is that we only enable temporary lock when scrolling UP,
105
- // and only disable it when scrolling DOWN to the bottom. This prevents
106
- // the jitter when users try to scroll up by just a few pixels from the bottom.
107
- if (this.shouldScrollToEnd) {
108
- // Auto-scroll is enabled, check if we need to enable temporary lock
109
- if (isScrollingUp) {
110
- // User is scrolling up and not at bottom - enable temporary lock
106
+ const isAtBottom = this.isScrolledToBottom();
107
+ const isAtAbsoluteBottom = this.isAtAbsoluteBottom();
108
+ // Asymmetric threshold logic to prevent jitter:
109
+ if (this.shouldScrollToEnd && isScrollingUp) {
110
+ if (!isAtAbsoluteBottom) {
111
111
  this.setTemporaryScrollLock(true);
112
112
  }
113
- // Note: We don't disable temporary lock when scrolling down while shouldScrollToEnd is true
114
- // because that would cause jitter. The lock will be disabled when user reaches bottom.
115
113
  }
116
- else {
117
- // Temporary lock is active, check if we should disable it
118
- if (isScrollingDown && isAtBottom) {
119
- // User scrolled back to bottom - disable temporary lock
120
- this.setTemporaryScrollLock(false);
121
- }
122
- // Note: We don't change the lock state when scrolling up while locked,
123
- // as the user is intentionally scrolling away from auto-scroll behavior.
114
+ else if (!this.shouldScrollToEnd && isAtBottom && isScrollingDown) {
115
+ this.setTemporaryScrollLock(false);
124
116
  }
125
- // Update last scroll position for next comparison
117
+ this.updateScrollToBottomButtonState(isAtBottom);
126
118
  this.lastScrollTop = currentScrollTop;
127
119
  }
120
+ /** Updates the scroll-to-bottom button state and handles debounce. */
121
+ updateScrollToBottomButtonState(isAtBottom) {
122
+ const atBottomNow = isAtBottom; // Use isScrolledToBottom for threshold
123
+ if (atBottomNow !== this.atBottom) {
124
+ this.atBottom = atBottomNow;
125
+ if (this.atBottom) {
126
+ // We're at the bottom, hide the button immediately and clear any debounce timer.
127
+ this._showScrollButton = false;
128
+ if (this._scrollButtonDebounceTimer !== undefined) {
129
+ clearTimeout(this._scrollButtonDebounceTimer);
130
+ this._scrollButtonDebounceTimer = undefined;
131
+ }
132
+ this.update();
133
+ }
134
+ else {
135
+ // User scrolled up; delay showing the scroll-to-bottom button.
136
+ if (this._scrollButtonDebounceTimer !== undefined) {
137
+ clearTimeout(this._scrollButtonDebounceTimer);
138
+ }
139
+ this._scrollButtonDebounceTimer = window.setTimeout(() => {
140
+ // Re-check: only show if we're still not at bottom
141
+ if (!this.atBottom) {
142
+ this._showScrollButton = true;
143
+ this.update();
144
+ }
145
+ this._scrollButtonDebounceTimer = undefined;
146
+ }, ChatViewTreeWidget_1.SCROLL_BUTTON_GRACE_PERIOD);
147
+ }
148
+ }
149
+ }
128
150
  setTemporaryScrollLock(enabled) {
129
151
  var _a;
130
152
  // Immediately apply scroll lock changes without delay
131
153
  (_a = this.onScrollLockChange) === null || _a === void 0 ? void 0 : _a.call(this, enabled);
154
+ // Update cached scrollToRow so that outdated values do not cause unwanted scrolling on update()
155
+ this.updateScrollToRow();
132
156
  }
133
157
  getCurrentScrollTop(scrollEvent) {
134
- // For virtualized trees, try to get scroll position from the virtualized view
158
+ // For virtualized trees, use the virtualized view's scroll state (most reliable)
135
159
  if (this.props.virtualized !== false && this.view) {
136
160
  const scrollState = this.getVirtualizedScrollState();
137
161
  if (scrollState !== undefined) {
@@ -152,15 +176,63 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
152
176
  }
153
177
  return 0;
154
178
  }
179
+ /**
180
+ * Returns true if the scroll position is at the absolute (1px tolerance) bottom of the scroll container.
181
+ * Handles both virtualized and non-virtualized scroll containers.
182
+ * Allows for a tiny floating point epsilon (1px).
183
+ */
184
+ isAtAbsoluteBottom() {
185
+ var _a, _b;
186
+ let scrollTop = 0;
187
+ let scrollHeight = 0;
188
+ let clientHeight = 0;
189
+ const EPSILON = 1; // px
190
+ if (this.props.virtualized !== false && this.view) {
191
+ const state = this.getVirtualizedScrollState();
192
+ if (state) {
193
+ scrollTop = state.scrollTop;
194
+ scrollHeight = (_a = state.scrollHeight) !== null && _a !== void 0 ? _a : 0;
195
+ clientHeight = (_b = state.clientHeight) !== null && _b !== void 0 ? _b : 0;
196
+ }
197
+ }
198
+ else if (this.node) {
199
+ scrollTop = this.node.scrollTop;
200
+ scrollHeight = this.node.scrollHeight;
201
+ clientHeight = this.node.clientHeight;
202
+ }
203
+ const diff = Math.abs(scrollTop + clientHeight - scrollHeight);
204
+ return diff <= EPSILON;
205
+ }
155
206
  renderTree(model) {
156
207
  var _a;
157
208
  if (!this.isEnabled) {
158
209
  return this.renderDisabledMessage();
159
210
  }
160
- if (browser_2.CompositeTreeNode.is(model.root) && ((_a = model.root.children) === null || _a === void 0 ? void 0 : _a.length) > 0) {
161
- return super.renderTree(model);
211
+ const tree = browser_2.CompositeTreeNode.is(model.root) && ((_a = model.root.children) === null || _a === void 0 ? void 0 : _a.length) > 0
212
+ ? super.renderTree(model)
213
+ : this.renderWelcomeMessage();
214
+ return React.createElement(React.Fragment, null,
215
+ tree,
216
+ this.renderScrollToBottomButton());
217
+ }
218
+ /** Shows the scroll to bottom button if not at the bottom (debounced). */
219
+ renderScrollToBottomButton() {
220
+ if (!this._showScrollButton) {
221
+ return undefined;
162
222
  }
163
- return this.renderWelcomeMessage();
223
+ // Down-arrow, Theia codicon, fixed overlay on widget
224
+ return React.createElement("button", { className: "theia-ChatTree-ScrollToBottom codicon codicon-arrow-down", title: nls_1.nls.localize('theia/ai/chat-ui/chat-view-tree-widget/scrollToBottom', 'Jump to latest message'), onClick: () => this.handleScrollToBottomButtonClick() });
225
+ }
226
+ /** Scrolls to the bottom row and updates atBottom state. */
227
+ handleScrollToBottomButtonClick() {
228
+ this.scrollToRow = this.rows.size;
229
+ this.atBottom = true;
230
+ this._showScrollButton = false;
231
+ if (this._scrollButtonDebounceTimer !== undefined) {
232
+ clearTimeout(this._scrollButtonDebounceTimer);
233
+ this._scrollButtonDebounceTimer = undefined;
234
+ }
235
+ this.update();
164
236
  }
165
237
  renderDisabledMessage() {
166
238
  var _a, _b, _c;
@@ -245,10 +317,12 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
245
317
  }
246
318
  }
247
319
  getScrollToRow() {
320
+ // Only scroll to end if auto-scroll is enabled (not locked)
248
321
  if (this.shouldScrollToEnd) {
249
322
  return this.rows.size;
250
323
  }
251
- return super.getScrollToRow();
324
+ // When auto-scroll is disabled, don't auto-scroll at all
325
+ return undefined;
252
326
  }
253
327
  async recreateModelTree(chatModel) {
254
328
  if (browser_2.CompositeTreeNode.is(this.model.root)) {
@@ -414,10 +488,23 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
414
488
  // Otherwise, the space key will never be handled by the monaco editor
415
489
  return false;
416
490
  }
491
+ /**
492
+ * Ensure atBottom state is correct when content grows (e.g., LLM streaming while scroll lock is enabled).
493
+ */
494
+ updateScrollToRow() {
495
+ super.updateScrollToRow();
496
+ const isAtBottom = this.isScrolledToBottom();
497
+ this.updateScrollToBottomButtonState(isAtBottom);
498
+ }
417
499
  };
418
500
  exports.ChatViewTreeWidget = ChatViewTreeWidget;
419
501
  ChatViewTreeWidget.ID = 'chat-tree-widget';
420
502
  ChatViewTreeWidget.CONTEXT_MENU = ['chat-tree-context-menu'];
503
+ /**
504
+ * Debounce period in ms before showing scroll-to-bottom button after scrolling up.
505
+ * Avoids flickering of the button during LLM token streaming.
506
+ */
507
+ ChatViewTreeWidget.SCROLL_BUTTON_GRACE_PERIOD = 100;
421
508
  tslib_1.__decorate([
422
509
  (0, inversify_1.inject)(core_1.ContributionProvider),
423
510
  (0, inversify_1.named)(chat_response_part_renderer_1.ChatResponsePartRenderer),
@@ -1 +1 @@
1
- {"version":3,"file":"chat-view-tree-widget.js","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-view-tree-widget.js","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@theia/ai-chat-ui",
3
- "version": "1.64.0-next.0+0dcdcd4d3",
3
+ "version": "1.64.0-next.28+c0fda4c47",
4
4
  "description": "Theia - AI Chat UI Extension",
5
5
  "dependencies": {
6
- "@theia/ai-chat": "1.64.0-next.0+0dcdcd4d3",
7
- "@theia/ai-core": "1.64.0-next.0+0dcdcd4d3",
8
- "@theia/core": "1.64.0-next.0+0dcdcd4d3",
9
- "@theia/editor": "1.64.0-next.0+0dcdcd4d3",
10
- "@theia/editor-preview": "1.64.0-next.0+0dcdcd4d3",
11
- "@theia/filesystem": "1.64.0-next.0+0dcdcd4d3",
12
- "@theia/monaco": "1.64.0-next.0+0dcdcd4d3",
6
+ "@theia/ai-chat": "1.64.0-next.28+c0fda4c47",
7
+ "@theia/ai-core": "1.64.0-next.28+c0fda4c47",
8
+ "@theia/core": "1.64.0-next.28+c0fda4c47",
9
+ "@theia/editor": "1.64.0-next.28+c0fda4c47",
10
+ "@theia/editor-preview": "1.64.0-next.28+c0fda4c47",
11
+ "@theia/filesystem": "1.64.0-next.28+c0fda4c47",
12
+ "@theia/monaco": "1.64.0-next.28+c0fda4c47",
13
13
  "@theia/monaco-editor-core": "1.96.302",
14
- "@theia/workspace": "1.64.0-next.0+0dcdcd4d3",
14
+ "@theia/workspace": "1.64.0-next.28+c0fda4c47",
15
15
  "date-fns": "^4.1.0",
16
16
  "minimatch": "^5.1.0",
17
17
  "tslib": "^2.6.2",
@@ -56,5 +56,5 @@
56
56
  "nyc": {
57
57
  "extends": "../../configs/nyc.json"
58
58
  },
59
- "gitHead": "0dcdcd4d398f4106746d0f701205abdb668383f3"
59
+ "gitHead": "c0fda4c4706fcd4ec1616c8e2f24673352a707d1"
60
60
  }
@@ -93,6 +93,7 @@ export interface ChatWelcomeMessageProvider {
93
93
 
94
94
  @injectable()
95
95
  export class ChatViewTreeWidget extends TreeWidget {
96
+
96
97
  static readonly ID = 'chat-tree-widget';
97
98
  static readonly CONTEXT_MENU = ['chat-tree-context-menu'];
98
99
 
@@ -140,6 +141,23 @@ export class ChatViewTreeWidget extends TreeWidget {
140
141
 
141
142
  protected chatModelId: string;
142
143
 
144
+ /** Tracks if we are at the bottom for showing the scroll-to-bottom button. */
145
+ protected atBottom = true;
146
+ /**
147
+ * Track the visibility of the scroll button with debounce logic. Used to prevent flickering when streaming tokens.
148
+ */
149
+ protected _showScrollButton = false;
150
+ /**
151
+ * Timer for debouncing the scroll button activation (prevents flicker on auto-scroll).
152
+ * If user scrolls up, this delays showing the button in case auto-scroll-to-bottom kicks in.
153
+ */
154
+ protected _scrollButtonDebounceTimer?: number;
155
+ /**
156
+ * Debounce period in ms before showing scroll-to-bottom button after scrolling up.
157
+ * Avoids flickering of the button during LLM token streaming.
158
+ */
159
+ protected static readonly SCROLL_BUTTON_GRACE_PERIOD = 100;
160
+
143
161
  onScrollLockChange?: (temporaryLocked: boolean) => void;
144
162
 
145
163
  protected lastScrollTop = 0;
@@ -202,47 +220,65 @@ export class ChatViewTreeWidget extends TreeWidget {
202
220
  }
203
221
 
204
222
  protected handleScrollEvent(scrollEvent: unknown): void {
205
- // Get current scroll position
206
223
  const currentScrollTop = this.getCurrentScrollTop(scrollEvent);
207
- const isAtBottom = this.isScrolledToBottom();
208
-
209
- // Determine scroll direction
210
224
  const isScrollingUp = currentScrollTop < this.lastScrollTop;
211
225
  const isScrollingDown = currentScrollTop > this.lastScrollTop;
226
+ const isAtBottom = this.isScrolledToBottom();
227
+ const isAtAbsoluteBottom = this.isAtAbsoluteBottom();
212
228
 
213
- // Handle scroll lock logic based on direction and position
214
- // The key insight is that we only enable temporary lock when scrolling UP,
215
- // and only disable it when scrolling DOWN to the bottom. This prevents
216
- // the jitter when users try to scroll up by just a few pixels from the bottom.
217
- if (this.shouldScrollToEnd) {
218
- // Auto-scroll is enabled, check if we need to enable temporary lock
219
- if (isScrollingUp) {
220
- // User is scrolling up and not at bottom - enable temporary lock
229
+ // Asymmetric threshold logic to prevent jitter:
230
+ if (this.shouldScrollToEnd && isScrollingUp) {
231
+ if (!isAtAbsoluteBottom) {
221
232
  this.setTemporaryScrollLock(true);
222
233
  }
223
- // Note: We don't disable temporary lock when scrolling down while shouldScrollToEnd is true
224
- // because that would cause jitter. The lock will be disabled when user reaches bottom.
225
- } else {
226
- // Temporary lock is active, check if we should disable it
227
- if (isScrollingDown && isAtBottom) {
228
- // User scrolled back to bottom - disable temporary lock
229
- this.setTemporaryScrollLock(false);
230
- }
231
- // Note: We don't change the lock state when scrolling up while locked,
232
- // as the user is intentionally scrolling away from auto-scroll behavior.
234
+ } else if (!this.shouldScrollToEnd && isAtBottom && isScrollingDown) {
235
+ this.setTemporaryScrollLock(false);
233
236
  }
234
237
 
235
- // Update last scroll position for next comparison
238
+ this.updateScrollToBottomButtonState(isAtBottom);
239
+
236
240
  this.lastScrollTop = currentScrollTop;
237
241
  }
238
242
 
243
+ /** Updates the scroll-to-bottom button state and handles debounce. */
244
+ protected updateScrollToBottomButtonState(isAtBottom: boolean): void {
245
+ const atBottomNow = isAtBottom; // Use isScrolledToBottom for threshold
246
+ if (atBottomNow !== this.atBottom) {
247
+ this.atBottom = atBottomNow;
248
+ if (this.atBottom) {
249
+ // We're at the bottom, hide the button immediately and clear any debounce timer.
250
+ this._showScrollButton = false;
251
+ if (this._scrollButtonDebounceTimer !== undefined) {
252
+ clearTimeout(this._scrollButtonDebounceTimer);
253
+ this._scrollButtonDebounceTimer = undefined;
254
+ }
255
+ this.update();
256
+ } else {
257
+ // User scrolled up; delay showing the scroll-to-bottom button.
258
+ if (this._scrollButtonDebounceTimer !== undefined) {
259
+ clearTimeout(this._scrollButtonDebounceTimer);
260
+ }
261
+ this._scrollButtonDebounceTimer = window.setTimeout(() => {
262
+ // Re-check: only show if we're still not at bottom
263
+ if (!this.atBottom) {
264
+ this._showScrollButton = true;
265
+ this.update();
266
+ }
267
+ this._scrollButtonDebounceTimer = undefined;
268
+ }, ChatViewTreeWidget.SCROLL_BUTTON_GRACE_PERIOD);
269
+ }
270
+ }
271
+ }
272
+
239
273
  protected setTemporaryScrollLock(enabled: boolean): void {
240
274
  // Immediately apply scroll lock changes without delay
241
275
  this.onScrollLockChange?.(enabled);
276
+ // Update cached scrollToRow so that outdated values do not cause unwanted scrolling on update()
277
+ this.updateScrollToRow();
242
278
  }
243
279
 
244
280
  protected getCurrentScrollTop(scrollEvent: unknown): number {
245
- // For virtualized trees, try to get scroll position from the virtualized view
281
+ // For virtualized trees, use the virtualized view's scroll state (most reliable)
246
282
  if (this.props.virtualized !== false && this.view) {
247
283
  const scrollState = this.getVirtualizedScrollState();
248
284
  if (scrollState !== undefined) {
@@ -267,14 +303,70 @@ export class ChatViewTreeWidget extends TreeWidget {
267
303
  return 0;
268
304
  }
269
305
 
306
+ /**
307
+ * Returns true if the scroll position is at the absolute (1px tolerance) bottom of the scroll container.
308
+ * Handles both virtualized and non-virtualized scroll containers.
309
+ * Allows for a tiny floating point epsilon (1px).
310
+ */
311
+ protected isAtAbsoluteBottom(): boolean {
312
+ let scrollTop: number = 0;
313
+ let scrollHeight: number = 0;
314
+ let clientHeight: number = 0;
315
+ const EPSILON = 1; // px
316
+ if (this.props.virtualized !== false && this.view) {
317
+ const state = this.getVirtualizedScrollState();
318
+ if (state) {
319
+ scrollTop = state.scrollTop;
320
+ scrollHeight = state.scrollHeight ?? 0;
321
+ clientHeight = state.clientHeight ?? 0;
322
+ }
323
+ } else if (this.node) {
324
+ scrollTop = this.node.scrollTop;
325
+ scrollHeight = this.node.scrollHeight;
326
+ clientHeight = this.node.clientHeight;
327
+ }
328
+ const diff = Math.abs(scrollTop + clientHeight - scrollHeight);
329
+ return diff <= EPSILON;
330
+ }
331
+
270
332
  protected override renderTree(model: TreeModel): React.ReactNode {
271
333
  if (!this.isEnabled) {
272
334
  return this.renderDisabledMessage();
273
335
  }
274
- if (CompositeTreeNode.is(model.root) && model.root.children?.length > 0) {
275
- return super.renderTree(model);
336
+
337
+ const tree = CompositeTreeNode.is(model.root) && model.root.children?.length > 0
338
+ ? super.renderTree(model)
339
+ : this.renderWelcomeMessage();
340
+
341
+ return <React.Fragment>
342
+ {tree}
343
+ {this.renderScrollToBottomButton()}
344
+ </React.Fragment>;
345
+ }
346
+
347
+ /** Shows the scroll to bottom button if not at the bottom (debounced). */
348
+ protected renderScrollToBottomButton(): React.ReactNode {
349
+ if (!this._showScrollButton) {
350
+ return undefined;
351
+ }
352
+ // Down-arrow, Theia codicon, fixed overlay on widget
353
+ return <button
354
+ className="theia-ChatTree-ScrollToBottom codicon codicon-arrow-down"
355
+ title={nls.localize('theia/ai/chat-ui/chat-view-tree-widget/scrollToBottom', 'Jump to latest message')}
356
+ onClick={() => this.handleScrollToBottomButtonClick()}
357
+ />;
358
+ }
359
+
360
+ /** Scrolls to the bottom row and updates atBottom state. */
361
+ protected handleScrollToBottomButtonClick(): void {
362
+ this.scrollToRow = this.rows.size;
363
+ this.atBottom = true;
364
+ this._showScrollButton = false;
365
+ if (this._scrollButtonDebounceTimer !== undefined) {
366
+ clearTimeout(this._scrollButtonDebounceTimer);
367
+ this._scrollButtonDebounceTimer = undefined;
276
368
  }
277
- return this.renderWelcomeMessage();
369
+ this.update();
278
370
  }
279
371
 
280
372
  protected renderDisabledMessage(): React.ReactNode {
@@ -309,6 +401,7 @@ export class ChatViewTreeWidget extends TreeWidget {
309
401
  }
310
402
 
311
403
  protected readonly toDisposeOnChatModelChange = new DisposableCollection();
404
+
312
405
  /**
313
406
  * Tracks the ChatModel handed over.
314
407
  * Tracking multiple chat models will result in a weird UI
@@ -316,6 +409,7 @@ export class ChatViewTreeWidget extends TreeWidget {
316
409
  public trackChatModel(chatModel: ChatModel): void {
317
410
  this.toDisposeOnChatModelChange.dispose();
318
411
  this.recreateModelTree(chatModel);
412
+
319
413
  chatModel.getRequests().forEach(request => {
320
414
  if (!request.response.isComplete) {
321
415
  request.response.onDidChange(() => this.scheduleUpdateScrollToRow());
@@ -365,10 +459,12 @@ export class ChatViewTreeWidget extends TreeWidget {
365
459
  }
366
460
 
367
461
  protected override getScrollToRow(): number | undefined {
462
+ // Only scroll to end if auto-scroll is enabled (not locked)
368
463
  if (this.shouldScrollToEnd) {
369
464
  return this.rows.size;
370
465
  }
371
- return super.getScrollToRow();
466
+ // When auto-scroll is disabled, don't auto-scroll at all
467
+ return undefined;
372
468
  }
373
469
 
374
470
  protected async recreateModelTree(chatModel: ChatModel): Promise<void> {
@@ -592,6 +688,16 @@ export class ChatViewTreeWidget extends TreeWidget {
592
688
  // Otherwise, the space key will never be handled by the monaco editor
593
689
  return false;
594
690
  }
691
+
692
+ /**
693
+ * Ensure atBottom state is correct when content grows (e.g., LLM streaming while scroll lock is enabled).
694
+ */
695
+ protected override updateScrollToRow(): void {
696
+ super.updateScrollToRow();
697
+ const isAtBottom = this.isScrolledToBottom();
698
+ this.updateScrollToBottomButtonState(isAtBottom);
699
+ }
700
+
595
701
  }
596
702
 
597
703
  interface WidgetContainerProps {
@@ -1128,3 +1128,31 @@ details[open].collapsible-arguments .collapsible-arguments-summary {
1128
1128
  margin-top: 8px;
1129
1129
  min-height: 40px;
1130
1130
  }
1131
+
1132
+ /* ChatTree scroll-to-bottom floating button */
1133
+ .theia-ChatTree-ScrollToBottom {
1134
+ position: absolute;
1135
+ right: 16px;
1136
+ bottom: 16px;
1137
+ z-index: 10;
1138
+ width: 32px;
1139
+ height: 32px;
1140
+ border-radius: 16px;
1141
+ border: none;
1142
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.10);
1143
+ background: var(--theia-layoutColor3, #ececec);
1144
+ cursor: pointer;
1145
+ display: flex;
1146
+ justify-content: center;
1147
+ align-items: center;
1148
+ font-size: 20px;
1149
+ opacity: 0.7;
1150
+ color: var(--theia-button-background, #007acc);
1151
+ transition: opacity 0.18s, background 0.20s, color 0.20s;
1152
+ }
1153
+
1154
+ .theia-ChatTree-ScrollToBottom:hover {
1155
+ opacity: 1;
1156
+ background: var(--theia-button-background, #007acc);
1157
+ color: var(--theia-button-foreground, #fff);
1158
+ }