Change:
Repro: in inline chat: !
Oh it's a scroll shadow: !
We closed this issue because it is a question about using VS Code rather than an issue or feature request. Please search for help on , where the community has already answered thousands of similar questions. You may find their helpful if your question has not already been asked. See also our . Happy Coding!
I blame it your theme. Inline chat isn't doing anything special here, tho we might wanna tweak the min size
The problem here is that the height of the chat widget inside the inline chat isn't correct and doesn't seem to be updated when the answer is streamed in. There is much more than 40% room available so it should show the full response. Also this is Dark Modern; the theme is fine it's the size: !
That's surprising. Notice how it works here until it reaches the max zone height
Must be related to the code block being replied with. But whatever I do I cannot get it to reply like that...
Ok, I can repro in a TS file with . Looks like the tree reports the wrong content height. Overall we measure 94px (for the input and tree) when in fact only the tree is 107px <img width="1272" alt="Screenshot 2024-03-22 at 16 37 16" src=""
Is editor rendering somehow async and should I ask for content height at some later point?

Discussion:
private _onDidChangeHeight = this._register(new Emitter<number>()); readonly onDidChangeHeight = this._onDidChangeHeight.event; <ins> private readonly _onDidChangeContentHeight = new Emitter<void>(); readonly onDidChangeContentHeight: Event<void> = this._onDidChangeContentHeight.event; </ins> private contribs: IChatWidgetContrib[] = []; private tree!: WorkbenchObjectTree<ChatTreeItem>;

} this.previousTreeScrollHeight = this.tree.scrollHeight; <ins> this._onDidChangeContentHeight.fire(); </ins> } private createInput(container: HTMLElement, options?: { renderFollowups: boolean; renderStyle?: 'default' | 'compact' }): void {

}, }); })); <del> this._register(this.inputPart.onDidChangeHeight(() => this.bodyDimension && this.layout(this.bodyDimension.height, this.bodyDimension.width))); </del> <ins> this._register(this.inputPart.onDidChangeHeight(() => { if (this.bodyDimension) { this.layout(this.bodyDimension.height, this.bodyDimension.width); } this._onDidChangeContentHeight.fire(); })); </ins> this._register(this.inputEditor.onDidChangeModelContent(() => this.updateImplicitContextKinds())); this._register(this.chatAgentService.onDidChangeAgents(() => { if (this.viewModel) {

this._onDidChangeHeight.fire(); })); <ins> this._store.add(this.chatWidget.onDidChangeContentHeight(() => { this._onDidChangeHeight.fire(); })); </ins> // context keys this._ctxResponseFocused = CTX_INLINE_CHAT_RESPONSE_FOCUSED.bindTo(this._contextKeyService);

this._store.add(tracker.onDidFocus(() => this._ctxResponseFocused.set(true))); this._ctxInputEditorFocused = CTX_INLINE_CHAT_FOCUSED.bindTo(_contextKeyService); <del> this._chatWidget.inputEditor.onDidFocusEditorWidget(() => this._ctxInputEditorFocused.set(true)); this._chatWidget.inputEditor.onDidBlurEditorWidget(() => this._ctxInputEditorFocused.set(false)); </del> <ins> this._store.add(this._chatWidget.inputEditor.onDidFocusEditorWidget(() => this._ctxInputEditorFocused.set(true))); this._store.add(this._chatWidget.inputEditor.onDidBlurEditorWidget(() => this._ctxInputEditorFocused.set(false))); </ins> const statusMenuId = options.statusMenuId instanceof MenuId ? options.statusMenuId : options.statusMenuId.menu; const statusMenuOptions = options.statusMenuId instanceof MenuId ? undefined : options.statusMenuId.options;