jiebi/CodeConvo huggingface dataset:
Code change:
Does this issue occur when all extensions are disabled?: Yes Version: 1.84.2 (user setup) Commit: Date: 2023-11-09T10:51:52.184Z Electron: 25.9.2 ElectronBuildId: Chromium: 114.0.5735.289 18.15.0 V8: 11.4.183.29-electron.0 OS: WindowsNT x64 10.0. Steps to Reproduce: ! also causes to fail. Related issues: Workarround: call
I cannot reproduce, so you just move views around a bunch until the explorer disappears? Do you have any extension?
Yes, Make Folders appear independently and move Explorer into Folders. I expect view back to Explorer include Folders instead of Explorer eventually disappearing. Explorer disappearing can cause other problems, including but not limited to fail. fail. As I said at the beginning: I can even reproduce it in a completely fresh installation of the macOS version of vscode without any extensions installed. !
Okay so I can see that refresh explorer doesn't work in this case, that's for sure. I cannot get folders to completely disappear
In fact, what disappeared was the label . After the move, Its position is replaced by . The folder tree itself is not affected. As shown in the picture, the MOVIES folder contents can still be browsed, but its label(or button anyway) in activity bar is from to . The view hierarchy relationship changes from: Explorer Folders Open editors timeline outline to: Folders Open editors timeline outline The ability to browse folders itself is not affected, but those commands bound to or target to will be invalid. This is also the root cause of .
It's going to be confusion but "Explorer" is actually the container while "Folders" is what we call the view. So when you move Folders out of the explorer it creates its own container called "Folders" and this is working as intended. is a different root cause, but there's definitely a bug here around refresh and other explorer commands. Thanks for the find!
To verify: the folder view (the file tree structure) somewhere else separate from the explorer view container refresh explorer You should stay on the folder view and not be moved to a different view container. You should also see the refresh properly occur.

Related discussion:
text: import { Codicon } from 'vs/base/common/codicons'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { IEditorResolverService } from 'vs/workbench/services/editor/common/editorResolverService'; <del> import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite'; </del> import { EditorOpenSource } from 'vs/platform/editor/common/editor'; import { ResourceMap } from 'vs/base/common/map'; import { isInputElement } from 'vs/base/browser/ui/list/listWidget';
Code change:
Does this issue occur when all extensions are disabled?: Yes Version: 1.84.2 (user setup) Commit: Date: 2023-11-09T10:51:52.184Z Electron: 25.9.2 ElectronBuildId: Chromium: 114.0.5735.289 18.15.0 V8: 11.4.183.29-electron.0 OS: WindowsNT x64 10.0. Steps to Reproduce: ! also causes to fail. Related issues: Workarround: call
I cannot reproduce, so you just move views around a bunch until the explorer disappears? Do you have any extension?
Yes, Make Folders appear independently and move Explorer into Folders. I expect view back to Explorer include Folders instead of Explorer eventually disappearing. Explorer disappearing can cause other problems, including but not limited to fail. fail. As I said at the beginning: I can even reproduce it in a completely fresh installation of the macOS version of vscode without any extensions installed. !
Okay so I can see that refresh explorer doesn't work in this case, that's for sure. I cannot get folders to completely disappear
In fact, what disappeared was the label . After the move, Its position is replaced by . The folder tree itself is not affected. As shown in the picture, the MOVIES folder contents can still be browsed, but its label(or button anyway) in activity bar is from to . The view hierarchy relationship changes from: Explorer Folders Open editors timeline outline to: Folders Open editors timeline outline The ability to browse folders itself is not affected, but those commands bound to or target to will be invalid. This is also the root cause of .
It's going to be confusion but "Explorer" is actually the container while "Folders" is what we call the view. So when you move Folders out of the explorer it creates its own container called "Folders" and this is working as intended. is a different root cause, but there's definitely a bug here around refresh and other explorer commands. Thanks for the find!
To verify: the folder view (the file tree structure) somewhere else separate from the explorer view container refresh explorer You should stay on the folder view and not be moved to a different view container. You should also see the refresh properly occur.

Related discussion:
text: } async run(accessor: ServicesAccessor): Promise<void> { <del> const paneCompositeService = accessor.get(IPaneCompositePartService); </del> <ins> const viewsService = accessor.get(IViewsService); </ins> const explorerService = accessor.get(IExplorerService); <del> await paneCompositeService.openPaneComposite(VIEWLET_ID, ViewContainerLocation.Sidebar); </del> <ins> await viewsService.openView(VIEW_ID); </ins> await explorerService.refresh(); } });
Code change:
See
I have not seen this before and I suspect an unhealthy CI, the log indicates a successful download to me: Code is here: I am using VS Code test module , so moving to
also indicates a broken stable download. Maybe this was just unlucky timing with us releasing a new version?
cc in case this is CDN related.
We need to bump to 2.3.8:

Related discussion:
text: "@vscode/l10n-dev": "0.0.30", "@vscode/telemetry-extractor": "^1.10.2", "@vscode/test-cli": "^0.0.3", <del> "@vscode/test-electron": "^2.3.5", </del> <ins> "@vscode/test-electron": "^2.3.8", </ins> "@vscode/test-web": "^0.0.42", "@vscode/v8-heap-parser": "^0.1.0", "@vscode/vscode-perf": "^0.0.14",
Code change:
See
I have not seen this before and I suspect an unhealthy CI, the log indicates a successful download to me: Code is here: I am using VS Code test module , so moving to
also indicates a broken stable download. Maybe this was just unlucky timing with us releasing a new version?
cc in case this is CDN related.
We need to bump to 2.3.8:

Related discussion:
text: supports-color "^9.4.0" yargs "^17.7.2" <del> "@vscode/test-electron@^2.3.5": version "2.3.5" resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.3.5.tgz#c472c5bdce1329aeb4762b8aa7a2cbe7aa783aac" integrity sha512-lAW7nQ0HuPqJnGJrtCzEKZCICtRizeP6qNanyCrjmdCOAAWjX3ixiG8RVPwqsYPQBWLPgYuE12qQlwXsOR/2fQ== </del> <ins> "@vscode/test-electron@^2.3.8": version "2.3.8" resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.3.8.tgz#06a7c50b38cfac0ede833905e088d55c61cd12d3" integrity sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg== </ins> dependencies: http-proxy-agent "^4.0.1" https-proxy-agent "^5.0.0"
Code change:
on a line towards the bottom of the view port trigger suggest notice how the details view is always bottom aligned it should be top aligned as long as it isn't taller than the list <img width="1057" alt="image" src=""

Related discussion:
text: } let { top, left } = placement; <del> if (!alignAtTop) { </del> <ins> if (!alignAtTop && height > anchorBox.height) { </ins> top = bottom - height; } const editorDomNode = this._editor.getDomNode();
Code change:
Tree Sticky Scroll uses caching to make sure that it does not have to rerender often. During the animation each frame/scroll has to be rerendered, which causes DOM elements to be removed and reconstructed. This could be improved by reusing the DOM elements and just adapting their heights.

Related discussion:
text: readonly position: number; } <ins> function stickyScrollNodeStateEquals<T, TFilterData>(node1: StickyScrollNode<T, TFilterData>, node2: StickyScrollNode<T, TFilterData>) { return node1.position === node2.position && stickyScrollNodeEquals(node1, node2); } </ins> function stickyScrollNodeEquals<T, TFilterData>(node1: StickyScrollNode<T, TFilterData>, node2: StickyScrollNode<T, TFilterData>) { <del> return node1.position === node2.position && node1.node.element === node2.node.element && </del> <ins> return node1.node.element === node2.node.element && </ins> node1.startIndex === node2.startIndex && node1.height === node2.height && node1.endIndex === node2.endIndex; } <del> class StickyScrollState<T, TFilterData, TRef> extends Disposable { </del> <ins> class StickyScrollState<T, TFilterData, TRef> { </ins> constructor( readonly stickyNodes: StickyScrollNode<T, TFilterData>[] = [] <del> ) { super(); } </del> <ins> ) { } </ins> get count(): number { return this.stickyNodes.length; } equal(state: StickyScrollState<T, TFilterData, TRef>): boolean { <del> return equals(this.stickyNodes, state.stickyNodes, stickyScrollNodeEquals); </del> <ins> return equals(this.stickyNodes, state.stickyNodes, stickyScrollNodeStateEquals); </ins> } lastNodePartiallyVisible(): boolean {
Code change:
Tree Sticky Scroll uses caching to make sure that it does not have to rerender often. During the animation each frame/scroll has to be rerendered, which causes DOM elements to be removed and reconstructed. This could be improved by reusing the DOM elements and just adapting their heights.

Related discussion:
text: return secondLastStickyNode.position + secondLastStickyNode.height !== lastStickyNode.position; } <del> addDisposable(disposable: IDisposable): void { this._register(disposable); </del> <ins> animationStateChanged(previousState: StickyScrollState<T, TFilterData, TRef>): boolean { if (!equals(this.stickyNodes, previousState.stickyNodes, stickyScrollNodeEquals)) { return false; } if (this.count === 0) { return false; } const lastStickyNode = this.stickyNodes[this.count - 1]; const previousLastStickyNode = previousState.stickyNodes[previousState.count - 1]; return lastStickyNode.position !== previousLastStickyNode.position; </ins> } }
Code change:
Tree Sticky Scroll uses caching to make sure that it does not have to rerender often. During the animation each frame/scroll has to be rerendered, which causes DOM elements to be removed and reconstructed. This could be improved by reusing the DOM elements and just adapting their heights.

Related discussion:
text: private readonly _rootDomNode: HTMLElement; private _previousState: StickyScrollState<T, TFilterData, TRef> | undefined; <ins> private _previousElements: HTMLElement[] = []; private _previousStateDisposables: DisposableStore = new DisposableStore(); </ins> private stickyScrollFocus: StickyScrollFocus<T, TFilterData, TRef>; readonly onDidChangeHasFocus: Event<boolean>;
Code change:
Tree Sticky Scroll uses caching to make sure that it does not have to rerender often. During the animation each frame/scroll has to be rerendered, which causes DOM elements to be removed and reconstructed. This could be improved by reusing the DOM elements and just adapting their heights.

Related discussion:
text: private readonly accessibilityProvider: IListAccessibilityProvider<T> | undefined, ) { <del> this._rootDomNode = document.createElement('div'); this._rootDomNode.classList.add('monaco-tree-sticky-container'); </del> <ins> this._rootDomNode = $('.monaco-tree-sticky-container'); </ins> container.appendChild(this._rootDomNode); <ins> const shadow = $('.monaco-tree-sticky-container-shadow'); this._rootDomNode.appendChild(shadow); </ins> this.stickyScrollFocus = new StickyScrollFocus(this._rootDomNode, view); this.onDidChangeHasFocus = this.stickyScrollFocus.onDidChangeHasFocus; this.onContextMenu = this.stickyScrollFocus.onContextMenu;
Code change:
Tree Sticky Scroll uses caching to make sure that it does not have to rerender often. During the animation each frame/scroll has to be rerendered, which causes DOM elements to be removed and reconstructed. This could be improved by reusing the DOM elements and just adapting their heights.

Related discussion:
text: this.setVisible(isVisible); } <del> // Remove previous state this._previousState?.dispose(); this._previousState = state; </del> if (!isVisible) { <ins> this._previousState = undefined; this._previousElements = []; this._previousStateDisposables.clear(); </ins> return; } <del> const elements = Array(state.count); for (let stickyIndex = state.count - 1; stickyIndex >= 0; stickyIndex--) { const stickyNode = state.stickyNodes[stickyIndex]; const { element, disposable } = this.createElement(stickyNode, stickyIndex, state.count); elements[stickyIndex] = element; </del> <ins> const lastStickyNode = state.stickyNodes[state.count - 1]; </ins> <del> this._rootDomNode.appendChild(element); state.addDisposable(disposable); </del> <ins> // If the new state is only a change in the last node's position, update the position of the last element if (this._previousState && state.animationStateChanged(this._previousState)) { this._previousElements[this._previousState.count - 1].style.top = `${lastStickyNode.position}px`; </ins> } <ins> // create new dom elements else { this._previousStateDisposables.clear(); </ins> <del> this.stickyScrollFocus.updateElements(elements, state); </del> <ins> const elements = Array(state.count); for (let stickyIndex = state.count - 1; stickyIndex >= 0; stickyIndex--) { const stickyNode = state.stickyNodes[stickyIndex]; </ins> <del> // Add shadow element to the end of the widget const shadow = $('.monaco-tree-sticky-container-shadow'); this._rootDomNode.appendChild(shadow); state.addDisposable(toDisposable(() => shadow.remove())); </del> <ins> const { element, disposable } = this.createElement(stickyNode, stickyIndex, state.count); elements[stickyIndex] = element; this._rootDomNode.appendChild(element); this._previousStateDisposables.add(disposable); } this.stickyScrollFocus.updateElements(elements, state); this._previousState = state; this._previousElements = elements; } </ins> // Set the height of the widget to the bottom of the last sticky node <del> const lastStickyNode = state.stickyNodes[state.count - 1]; </del> this._rootDomNode.style.height = `${lastStickyNode.position + lastStickyNode.height}px`; }
Code change:
Tree Sticky Scroll uses caching to make sure that it does not have to rerender often. During the animation each frame/scroll has to be rerendered, which causes DOM elements to be removed and reconstructed. This could be improved by reusing the DOM elements and just adapting their heights.

Related discussion:
text: dispose(): void { this.stickyScrollFocus.dispose(); <del> this._previousState?.dispose(); </del> <ins> this._previousStateDisposables.dispose(); </ins> this._rootDomNode.remove(); } }
Code change:
viewing a very long list in the variables viewer will not show all entries. debug variables view handles this with nested groups: <img width="231" alt="image" src=""
verification steps: the notebook variable view with the cell the variable view in the debug sideview check that the children of the variable are accurate

Related discussion:
text: const childNodes: INotebookVariableElement[] = []; if (parent.indexedChildrenCount > variablePageSize) { <del> // TODO: improve handling of large number of children const indexedChildCountLimit = 100000; const limit = Math.min(parent.indexedChildrenCount, indexedChildCountLimit); for (let start = 0; start < limit; start += variablePageSize) { let end = start + variablePageSize; if (end > limit) { end = limit; </del> <ins> const nestedPageSize = Math.floor(Math.max(parent.indexedChildrenCount / variablePageSize, 100)); const indexedChildCountLimit = 1_000_000; let start = parent.indexStart ?? 0; const last = start + Math.min(parent.indexedChildrenCount, indexedChildCountLimit); for (; start < last; start += nestedPageSize) { let end = start + nestedPageSize; if (end > last) { end = last; </ins> } childNodes.push({
Code change:
viewing a very long list in the variables viewer will not show all entries. debug variables view handles this with nested groups: <img width="231" alt="image" src=""
verification steps: the notebook variable view with the cell the variable view in the debug sideview check that the children of the variable are accurate

Related discussion:
text: childNodes.push({ kind: 'variable', notebook: parent.notebook, <del> id: parent.id + `${limit + 1}`, </del> <ins> id: parent.id + `${last + 1}`, </ins> extHostId: parent.extHostId, name: localize('notebook.indexedChildrenLimitReached', "Display limit reached"), value: '',
Code change:
viewing a very long list in the variables viewer will not show all entries. debug variables view handles this with nested groups: <img width="231" alt="image" src=""
verification steps: the notebook variable view with the cell the variable view in the debug sideview check that the children of the variable are accurate

Related discussion:
text: assert.equal(variables[0].extHostId, parent.extHostId, 'ExtHostId should match the parent since we will use it to get the real children'); }); <ins> test('Get children for very large list', async () => { const parent = { kind: 'variable', notebook: notebookModel, id: '1', extHostId: 1, name: 'list', value: '[...]', hasNamedChildren: false, indexedChildrenCount: 1_000_000 } as INotebookVariableElement; results = []; const groups = await dataSource.getChildren(parent); const children = await dataSource.getChildren(groups[99]); assert(children.length === 100, 'We should have a full page of child groups'); assert(!provideVariablesCalled, 'provideVariables should not be called'); assert.equal(children[0].extHostId, parent.extHostId, 'ExtHostId should match the parent since we will use it to get the real children'); }); </ins> test('Cancel while enumerating through children', async () => { const parent = { kind: 'variable', notebook: notebookModel, id: '1', extHostId: 1, name: 'list', value: '[...]', hasNamedChildren: false, indexedChildrenCount: 10 } as INotebookVariableElement; results = [
Code change:
Type: <bBug</bAs I typed into the search input, nothing fancy: See screenshot ! VS Code version: Code - Insiders 1.87.0-insider (, 2024-02-01T09:55:21.613Z) OS version: Darwin x64 23.3.0 Modes: <details<summarySystem Info</summary </details<details<summaryExtensions (60)</summaryExtensionVersion ------ html-snippets0.2.1 tsl-problem-matcher0.6.2 docs-view0.1.0 emojisense0.10.0 github-markdown-preview0.3.0 markdown-checkbox0.4.0 markdown-emoji0.3.0 markdown-footnotes0.1.1 markdown-mermaid1.21.0 markdown-preview-github-styles2.0.3 markdown-yaml-preamble0.1.0 mermaid-markdown-syntax-highlighting1.6.0 esbuild-problem-matchers0.0.3 kusto0.4.4 prettier-vscode10.1.0 auto-close-tag0.5.15 auto-rename-tag0.1.10 codespaces1.16.9 copilot1.156.686 copilot-chat0.13. remotehub0.63. vscode-pull-request-github0.81. cortex-debug1.12.1 debug-tracker-vscode0.0.15 memory-view0.0.25 peripheral-viewer1.4.6 rtos-views0.0.7 vscode-azureresourcegroups0.8.3 vscode-dotnet-runtime2.0.1 debugpy2024.0.0 python2023.25. vscode-pylance2024.1.103 jupyter2024.1. jupyter-keymap1.1.2 jupyter-renderers1.0.17 remote-containers0.339.0 remote-ssh0.108. remote-ssh-edit0.86.0 remote-wsl0.86.0 anycode0.0.72 azure-account0.11.6 azure-repos0.38.0 remote-repositories0.40.0 remote-server1.6. vscode-github-issue-notebooks0.0.130 vscode-markdown-notebook0.0.26 vscode-selfhost-test-provider0.3.25 vscode-speech0.5. vscode-typescript-next5.4. prisma5.9.1 vscode-xml0.26.1 vscode-yaml1.14.0 kuskus-kusto-syntax-highlighting1.2.0 svg-preview2.8.3 rest-book6.2.1 pdf1.2.2 vscode-mdx1.7.0 volar1.8.27 vscode-typescript-vue-plugin1.8.27 markdown-all-in-one3.6.2 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
I believe owns this area, assigning it to her.
Hmm, that usually comes with a faulty install. If you keep getting this, can you try re-installing?
This issue has been closed automatically because it needs more information and has not had recent activity. See also our guidelines. Happy Coding!
The STR needs a GH remote repo. Still broken for me after updating/re-instaling.

Related discussion:
text: } finalMatchedTargets.add(uri); }); <ins> }).catch(err => { // temporary fix for https://github.com/microsoft/vscode/issues/205044: don't show notebook results for remotehub repos. if (err.code === 'ENOENT') { console.warn(`Could not find notebook search results, ignoring notebook results.`); return { limitHit: false, messages: [], }; } else { throw err; } </ins> }); })) ));
Code change:
open normal quick pick () type notice you want symbol search and select the cursor is random, within the word, and doesn't select the previous input anymore

Related discussion:
text: return this.input.selectionEnd === this.input.value.length && this.input.selectionStart === this.input.selectionEnd; } <del> public getSelection(): IRange | null { const selectionStart = this.input.selectionStart; if (selectionStart === null) { return null; } const selectionEnd = this.input.selectionEnd ?? selectionStart; return { start: selectionStart, end: selectionEnd, }; } </del> public enable(): void { this.input.removeAttribute('disabled'); }
Code change:
open normal quick pick () type notice you want symbol search and select the cursor is random, within the word, and doesn't select the previous input anymore

Related discussion:
text: } } <del> // Store the existing selection if there was one. const visibleSelection = visibleQuickAccess?.picker?.valueSelection; </del> // Create a picker for the provider to use with the initial value // and adjust the filtering to exclude the prefix from filtering const disposables = new DisposableStore();
Code change:
open normal quick pick () type notice you want symbol search and select the cursor is random, within the word, and doesn't select the previous input anymore

Related discussion:
text: // on the onDidHide event. picker.show(); <del> // If the previous picker had a selection, we should set that in the new picker. if (visibleSelection) { picker.valueSelection = visibleSelection; } </del> // Pick mode: return with promise if (pick) { return pickPromise?.p;
Code change:
open normal quick pick () type notice you want symbol search and select the cursor is random, within the word, and doesn't select the previous input anymore

Related discussion:
text: return this.ui.keyMods; } <del> get valueSelection() { const selection = this.ui.inputBox.getSelection(); if (!selection) { return undefined; } return [selection.start, selection.end]; } set valueSelection(valueSelection: Readonly<[number, number]> | undefined) { </del> <ins> set valueSelection(valueSelection: Readonly<[number, number]>) { </ins> this._valueSelection = valueSelection; this.valueSelectionUpdated = true; this.update();
Code change:
open normal quick pick () type notice you want symbol search and select the cursor is random, within the word, and doesn't select the previous input anymore

Related discussion:
text: this.update(); } <del> get valueSelection() { const selection = this.ui.inputBox.getSelection(); if (!selection) { return undefined; } return [selection.start, selection.end]; } set valueSelection(valueSelection: Readonly<[number, number]> | undefined) { </del> <ins> set valueSelection(valueSelection: Readonly<[number, number]>) { </ins> this._valueSelection = valueSelection; this.valueSelectionUpdated = true; this.update();
Code change:
open normal quick pick () type notice you want symbol search and select the cursor is random, within the word, and doesn't select the previous input anymore

Related discussion:
text: this.findInput.inputBox.select(range); } <del> getSelection(): IRange | null { return this.findInput.inputBox.getSelection(); } </del> isSelectionAtEnd(): boolean { return this.findInput.inputBox.isSelectionAtEnd(); }