jiebi/CodeConvo huggingface dataset:
Change:
The change for went in without a UX discussion. IMHO we should reconsider adding these two actions to all editor context menus. IMHO we need to be more critical with adding things there and have good reasons to do so. <img width="284" alt="image" src="https://user-"
I figured it wasn't a major change since they are already in the context menu during a debug session. Would a Debug submenu help? Or how about only showing them if the user has previously debugged in this workspace?
I see how it might not feel like a major change, but IMHO we should approach this with a different mindset. We have many useful commands, and we can add many of them to the context menu, but just because we have the ability to add them is not IMHO a good enough reason. Adding something to the context menu has two disadvantages: it makes our editor feel bloated (think typical IDE of the early 00s) it detracts from the value of the existing items, since there are so many of them. I think we need to have a good reason to decide to always show something in the context menu, like a very important feature that we feel will differentiate VS Code from other editors, a reaction to a lot of user feedback, an action which would make the product incomplete if it would be missing, etc.
We discussed this in standup and I will likely just remove them when not in a debug session.
From and Keeping the changes so that they will work and appear in the command palette when not in a debug session, but only appear in the editor context menu while debugging

Discussion:
id: RunToCursorAction.ID, label: RunToCursorAction.LABEL, alias: 'Debug: Run to Cursor', <del> precondition: ContextKeyExpr.and(CONTEXT_DEBUGGERS_AVAILABLE, PanelFocusContext.toNegated(), EditorContextKeys.editorTextFocus), </del> <ins> precondition: ContextKeyExpr.and(CONTEXT_IN_DEBUG_MODE, PanelFocusContext.toNegated(), CONTEXT_DEBUG_STATE.isEqualTo('stopped'), EditorContextKeys.editorTextFocus), </ins> contextMenuOpts: { group: 'debug', order: 2

id: SelectionToWatchExpressionsAction.ID, label: SelectionToWatchExpressionsAction.LABEL, alias: 'Debug: Add to Watch', <del> precondition: ContextKeyExpr.and(EditorContextKeys.editorTextFocus), </del> <ins> precondition: ContextKeyExpr.and(CONTEXT_IN_DEBUG_MODE, EditorContextKeys.editorTextFocus), </ins> contextMenuOpts: { group: 'debug', order: 1
Change:
Testing I find the current transition very harsh. Can we instead transition to edit mode once the user clicks on the Replace button? That way the transition will not be so rough. It will be triggered later, and by user pressing a button. Not by typing.
Yeah, the thinking behind this having the switch less often if possible, but I agree with you that current behavior can be very unexpected.

Discussion:
} }; <del> if (this._state.replaceString.length === 0) { return; } </del> if (e.isReplaceRevealed) { updateEditingState();
Change:
Testing The links is: Steps: clone to local create a branch and push create files and "Copy link" open in browser = file does not open
Above was done using desktop client, seems to work when I do it from
+1 on this with: from VS Code Desktop... note, gave me the correct url:
+1 on this with this file generated from VS Code Desktop AND $,#L5
There is double encoding going on in this file link

Discussion:
try { const permalink = getLink(gitAPI, useSelection, getVscodeDevHost(), 'headlink', context, includeRange); if (permalink) { <del> return vscode.env.clipboard.writeText(encodeURI(permalink)); </del> <ins> return vscode.env.clipboard.writeText(permalink); </ins> } } catch (err) { vscode.window.showErrorMessage(err.message);
Change:
Testing Follow steps in but from a branch called . Opening a link puts you on branch.
Above was done using desktop client, seems to work when I do it from

Discussion:
try { const permalink = getLink(gitAPI, useSelection, getVscodeDevHost(), 'headlink', context, includeRange); if (permalink) { <del> return vscode.env.clipboard.writeText(encodeURI(permalink)); </del> <ins> return vscode.env.clipboard.writeText(permalink); </ins> } } catch (err) { vscode.window.showErrorMessage(err.message);
Change:
Presumably related to . Adding breakpoints to lines with gutter icons causes the icon to be stretched and cropped: ! I don't know if related, but I'm using :
The problem is that we set each decoration 's width to be the width of the entire gutter (which is sized to fit potentially multiple decorations, so sets which ends up stretching the decoration to fit the entire gutter instead of just its lane.
Fix looks good, thanks! /verified

Discussion:
const toRender = this._render(visibleStartLineNumber, visibleEndLineNumber, decorationsToRender, this._glyphMarginDecorationLaneCount); const lineHeight = this._lineHeight.toString(); <del> const width = this._glyphMarginWidth.toString(); </del> <ins> const width = (Math.round(this._glyphMarginWidth / this._glyphMarginDecorationLaneCount)).toString(); </ins> const common = '" style="width:' + width + 'px' + ';height:' + lineHeight + 'px;'; const output: string[] = [];
Change:
Testing Disable scrolling output via command Select ! The scrolling setting is enabled, which I didn't expect !
The setting is for the initial rendering of all outputs, whereas the command will change a single cell's output. I'll see if I can clarify that in the description

Discussion:
tags: ['notebookLayout', 'notebookOutputLayout'] }, [NotebookSetting.outputScrolling]: { <del> markdownDescription: nls.localize('notebook.outputScrolling', "Use a scrollable region for notebook output when longer than the limit"), </del> <ins> markdownDescription: nls.localize('notebook.outputScrolling', "Initially render notebook outputs in a scrollable region when longer than the limit"), </ins> type: 'boolean', tags: ['notebookLayout', 'notebookOutputLayout'], default: typeof product.quality === 'string' && product.quality !== 'stable' // only enable as default in insiders
Change:
Testing microsoft/vscode-python Originally posted by in signs only appears next to terminals which are dirty, as they require a relaunch to update the envs. The second has not been interacted with yet, so envs are updated without the need for relaunching it, but it seems that the description is not updated. https://user-
any idea what might be going on?
We automatically accept the env changes in terminals which haven't been interacted with by design. That is why the description for the non-interacted with terminal appears the way it does vs the one that has been interacted with which requires relaunching
I understand that, although the bug here is that we should automatically accept the description changes in such terminals as well.

Discussion:
if (oldPrimary !== newPrimary) { this._onDidChangePrimaryStatus.fire(newPrimary); } <ins> } else { this._statuses.set(status.id, status); // It maybe the case that status hasn't changed, there isn't a good way to check this based on // `ITerminalStatus`, so just fire the event anyway. this._onDidAddStatus.fire(status); </ins> } }
Change:
Testing a notebook with some content the replace widget to replace an existing string enter while focused in the replace box no effect, string should be replaced as it does in a text editor
It's a bad bug, but fixing it is not trivial. Considering it's not regression, I'll fix it next week.

Discussion:
DOM.append(this._notebookEditor.getDomNode(), this.getDomNode()); this._findWidgetFocused = KEYBINDING_CONTEXT_NOTEBOOK_FIND_WIDGET_FOCUSED.bindTo(contextKeyService); this._register(this._findInput.onKeyDown((e) => this._onFindInputKeyDown(e))); <ins> this._register(this._replaceInput.onKeyDown((e) => this._onReplaceInputKeyDown(e))); </ins> this._register(this._state.onFindReplaceStateChange((e) => { this.onInputChanged();

} } <ins> private _onReplaceInputKeyDown(e: IKeyboardEvent): void { if (e.equals(KeyCode.Enter)) { this.replaceOne(); e.preventDefault(); return; } } </ins> protected onInputChanged(): boolean { this._state.change({ searchString: this.inputValue }, false); // this._findModel.research();
Change:
Testing a notebook and add a markdown cell with content at the top the replace widget and find an existing string in the markdown cell focus somewhere else in the notebook, then press ctrl+f to focus the find widget markdown cell is bumped up out of the view !
you found good bugs!

Discussion:
override async show(initialInput?: string, options?: IShowNotebookFindWidgetOptions): Promise<void> { const searchStringUpdate = this._state.searchString !== initialInput; super.show(initialInput, options); <del> this._state.change({ searchString: initialInput ?? '', isRevealed: true }, false); </del> <ins> this._state.change({ searchString: initialInput ?? this._state.searchString, isRevealed: true }, false); </ins> if (typeof options?.matchIndex === 'number') { if (!this._findModel.findMatches.length) {
Change:
Testing a notebook markdown cell in edit mode the find widget with a string that isn't in the markdown cell markdown cell is rendered !

Discussion:
if (cell && cell.cellKind === CellKind.Markup) { const foundContentMatch = contentMatches.find(m => m.cell.handle === cell.handle && m.contentMatches.length > 0); const targetState = foundContentMatch ? CellEditState.Editing : CellEditState.Preview; <del> if (cell.getEditState() !== targetState) { </del> <ins> const currentEditingState = cell.getEditState(); if (currentEditingState === CellEditState.Editing && cell.editStateSource !== 'find') { // it's already in editing mode, we should not update continue; } if (currentEditingState !== targetState) { </ins> cell.updateEditState(targetState, 'find'); } }
Change:
an extension that requires workspace trust to be installed/enabled synced to settings sync on settings sync from a new VS Code instance that doesn't have that extension installed/enabled already :bug: get this modal dialog that doesn't specify which extension requires workspace trust to be installed/enabled (I do not know which extension causes this to repro because the dialog doesn't say) !
since the install is not triggered explicitly by the user, the dialog does not make sense. Do you need anything from the workspace trust side to avoid this dialog, or vice versa, do you provide something to let us know that this is from settings sync?
I assume this is happening on the web client, because in Desktop Settings Sync install extensions on the shared process.

Discussion:
import { Event, EventMultiplexer } from 'vs/base/common/event'; import { <del> ILocalExtension, IGalleryExtension, IExtensionIdentifier, IExtensionsControlManifest, IExtensionGalleryService, InstallOptions, UninstallOptions, InstallVSIXOptions, InstallExtensionResult, ExtensionManagementError, ExtensionManagementErrorCode, Metadata, InstallOperation </del> <ins> ILocalExtension, IGalleryExtension, IExtensionIdentifier, IExtensionsControlManifest, IExtensionGalleryService, InstallOptions, UninstallOptions, InstallVSIXOptions, InstallExtensionResult, ExtensionManagementError, ExtensionManagementErrorCode, Metadata, InstallOperation, EXTENSION_INSTALL_SYNC_CONTEXT </ins> } from 'vs/platform/extensionManagement/common/extensionManagement'; import { DidChangeProfileForServerEvent, DidUninstallExtensionOnServerEvent, IExtensionManagementServer, IExtensionManagementServerService, InstallExtensionOnServerEvent, IWorkbenchExtensionManagementService, UninstallExtensionOnServerEvent } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { ExtensionType, isLanguagePackExtension, IExtensionManifest, getWorkspaceSupportTypeMessage, TargetPlatform } from 'vs/platform/extensions/common/extensions';

servers.push(this.extensionManagementServerService.localExtensionManagementServer); } } <del> await this.checkForWorkspaceTrust(manifest); </del> <ins> if (!installOptions.context?.[EXTENSION_INSTALL_SYNC_CONTEXT]) { await this.checkForWorkspaceTrust(manifest); } </ins> if (!installOptions.donotIncludePackAndDependencies) { await this.checkInstallingExtensionOnWeb(gallery, manifest); }
Change:
Testing microsoft/vscode-python some tests in the test explorer. the play button on one of the tests to run the selected tests. Expected result: The tests stay selected. Actual result: Only one of the tests is selected after.
You ca choose alternate sorting methods here. Ordering by location sounds like what you want: <img width="259" alt="image" src="https://user-"
I think what is talking about is this behavior but please correct me if I'm wrong, thanks! https://user-
Oh, sorry, misread. I think it's sensible that if multiple elements are selected, we don't touch it
Wrong

Discussion:
this.view.ariaLabel = value; } <ins> get selectionSize() { return this.selection.getNodes().length; } </ins> domFocus(): void { this.view.domFocus(); }

return; } <ins> if (this.tree.selectionSize > 1) { return; // don't change a multi-selection #180950 } </ins> // follow running tests, or tests whose state changed. Tests that // complete very fast may not enter the running state at all. if (evt.item.ownComputedState !== TestResultState.Running && !(evt.previousState === TestResultState.Queued && isStateWithResult(evt.item.ownComputedState))) {
Change:
some text in an editor +shift+f and search for that text screen reader will report that the result is on a column that is actual+2 !
pretty sure this is by design, but can answer that
Thinking about it, it seems to not make much sense to start at 2 (although I see this behavior in areas outside of notebooks). do you see why this should be design? If not, I can go ahead and try to make the columns start at 1 like it does in the editor.
Yeah that sounds good to me thanks

Discussion:
const range = match.range(); const matchText = match.text().substr(0, range.endColumn + 150); if (replace) { <del> return nls.localize('replacePreviewResultAria', "'{0}' at column {1} replace {2} with {3}", matchText, range.startColumn + 1, matchString, match.replaceString); </del> <ins> return nls.localize('replacePreviewResultAria', "'{0}' at column {1} replace {2} with {3}", matchText, range.startColumn, matchString, match.replaceString); </ins> } <del> return nls.localize('searchResultAria', "'{0}' at column {1} found {2}", matchText, range.startColumn + 1, matchString); </del> <ins> return nls.localize('searchResultAria', "'{0}' at column {1} found {2}", matchText, range.startColumn, matchString); </ins> } return null; }

if (editorWidget) { // Ensure that the editor widget is binded. If if is, then this should return immediately. // Otherwise, it will bind the widget. <del> await elemParent.bindNotebookEditorWidget(editorWidget); </del> <ins> elemParent.bindNotebookEditorWidget(editorWidget); </ins> await elemParent.updateMatchesForEditorWidget(); const matchIndex = oldParentMatches.findIndex(e => e.id() === element.id());

if (!this.tree.getFocus().includes(match) || !this.tree.getSelection().includes(match)) { this.tree.setSelection([match], getSelectionKeyboardEvent()); <ins> this.tree.setFocus([match]); </ins> } }
Change:
Noticed how readonly files indicate that move is possible, but I would have only expected drop feedback when doing copy. !
PR:
What are some verification steps for this issue? On Windows, I made a file read-only, and I was able to drag and drop it without any issues.
open the repo and try to drag and drop a file of the folder.

Discussion:
return false; } <ins> if (!isCopy && items.every((source) => source.isReadonly)) { return false; // Cannot move readonly items unless we copy } </ins> if (items.some((source) => { if (source.isRoot && target instanceof ExplorerItem && !target.isRoot) { return true; // Root folder can not be moved to a non root file stat.
Change:
This scenario is flaky due to a timing issue between walkthroughs being registered and check for first open. I can repro this occasionally.
I think this should be on the May milestone?
Verification Steps: VS Code with a clean profile that the Setup walkthrough launches on startup. <img width="766" alt="image" src=""
Didn't work for me Mac OS !
I can repro this on the mac. Works as expected on windows.

Discussion:
} })); <del> this._register(this.gettingStartedService.onDidAddBuiltInWalkthrough(rerender)); </del> <ins> this._register(this.gettingStartedService.onDidAddBuiltInWalkthrough(() => { rerender(); const someStepsComplete = this.gettingStartedCategories.some(category => category.steps.find(s => s.done)); if (!this.productService.openToWelcomeMainPage && !someStepsComplete && !this.hasScrolledToFirstCategory) { const firstSessionDateString = this.storageService.get(firstSessionDateStorageKey, StorageScope.APPLICATION) || new Date().toUTCString(); const daysSinceFirstSession = ((+new Date()) - (+new Date(firstSessionDateString))) / 1000 / 60 / 60 / 24; const fistContentBehaviour = daysSinceFirstSession < 1 ? 'openToFirstCategory' : 'index'; if (fistContentBehaviour === 'openToFirstCategory') { const first = this.gettingStartedCategories.filter(c => !c.when || this.contextService.contextMatchesRules(c.when))[0]; this.hasScrolledToFirstCategory = true; if (first) { this.currentWalkthrough = first; this.editorInput.selectedCategory = this.currentWalkthrough?.id; this.buildCategorySlide(this.editorInput.selectedCategory, undefined); this.setSlide('details'); return; } } } })); </ins> this._register(this.gettingStartedService.onDidAddWalkthrough(rerender)); this._register(this.gettingStartedService.onDidRemoveWalkthrough(rerender));

} } <del> const someStepsComplete = this.gettingStartedCategories.some(category => category.steps.find(s => s.done)); </del> if (this.editorInput.showTelemetryNotice && this.productService.openToWelcomeMainPage) { const telemetryNotice = $('p.telemetry-notice'); this.buildTelemetryFooter(telemetryNotice); footer.appendChild(telemetryNotice); <del> } else if (!this.productService.openToWelcomeMainPage && !someStepsComplete && !this.hasScrolledToFirstCategory) { const firstSessionDateString = this.storageService.get(firstSessionDateStorageKey, StorageScope.APPLICATION) || new Date().toUTCString(); const daysSinceFirstSession = ((+new Date()) - (+new Date(firstSessionDateString))) / 1000 / 60 / 60 / 24; const fistContentBehaviour = daysSinceFirstSession < 1 ? 'openToFirstCategory' : 'index'; if (fistContentBehaviour === 'openToFirstCategory') { const first = this.gettingStartedCategories.filter(c => !c.when || this.contextService.contextMatchesRules(c.when))[0]; this.hasScrolledToFirstCategory = true; if (first) { this.currentWalkthrough = first; this.editorInput.selectedCategory = this.currentWalkthrough?.id; this.buildCategorySlide(this.editorInput.selectedCategory, undefined); this.setSlide('details'); return; } } </del> } this.setSlide('categories'); }
Change:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.77.3 () OS Version: 10.0. Steps to Reproduce: the file the file containing a with a attribute and attempt to use URL autocompletion (as with the attribute of elements) to set its value to . The same issue occurs with a element (and there may be others I'm unaware of).
I don't see any smart suggestions, only word-based, when I type in here , is that how it's supposed to work?

Discussion:
"dependencies": { "@vscode/l10n": "^0.0.14", "vscode-css-languageservice": "^6.2.6", <del> "vscode-html-languageservice": "^5.0.5", </del> <ins> "vscode-html-languageservice": "^5.0.6", </ins> "vscode-languageserver": "^8.2.0-next.1", "vscode-languageserver-textdocument": "^1.0.8", "vscode-uri": "^3.0.7"

resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae" integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w== <del> "@vscode/l10n@^0.0.13": version "0.0.13" resolved "https://registry.yarnpkg.com/@vscode/l10n/-/l10n-0.0.13.tgz#f51ff130b8c98f189476c5f812d214b8efb09590" integrity sha512-A3uY356uOU9nGa+TQIT/i3ziWUgJjVMUrGGXSrtRiTwklyCFjGVWIOHoEIHbJpiyhDkJd9kvIWUOfXK1IkK8XQ== </del> "@vscode/l10n@^0.0.14": version "0.0.14" resolved "https://registry.yarnpkg.com/@vscode/l10n/-/l10n-0.0.14.tgz#431e5814c35c3cb11ee21873bc70a4b0fbf90fcf"

vscode-languageserver-types "^3.17.3" vscode-uri "^3.0.7" <del> vscode-html-languageservice@^5.0.5: version "5.0.5" resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-5.0.5.tgz#3c7c7fdcea8f93914dfd8762a40dbfbe770e2243" integrity sha512-7788ZT+I7/UhFoI4+bzaAiGGZEW7X39kTeuytLtw6jJA6W7ez85bWKYoFDcwrPNmywj3n/IkU9Op9asaje44jg== </del> <ins> vscode-html-languageservice@^5.0.6: version "5.0.6" resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-5.0.6.tgz#e7a7f78e9f98d0f5341c5518dd9305e3cc438bb6" integrity sha512-gCixNg6fjPO7+kwSMBAVXcwDRHdjz1WOyNfI0n5Wx0J7dfHG8ggb3zD1FI8E2daTZrwS1cooOiSoc1Xxph4qRQ== </ins> dependencies: <del> "@vscode/l10n" "^0.0.13" </del> <ins> "@vscode/l10n" "^0.0.14" </ins> vscode-languageserver-textdocument "^1.0.8" vscode-languageserver-types "^3.17.3" vscode-uri "^3.0.7"
Change:
WT completed feature request: issue:
PR
To verify, for each value of , run the following: Verify the "overlined" text has an overline and " normal" does not.
With gpuAcceleration "off", I don't see an overline <img width="437" alt="image" src=""
Good find, I didn't update
After adding the styles, depending on the font it can still be cut off unfortunately due to the cell size in the dom renderer being strict. Captured that issue in
When verifying again, if you don't see an overline, inspect the DOM and verify shows on the children of
Not working still.
the remaining problem is tracked in
Not working on Latest Insiders.

Discussion:
} .xterm-dim { <del> opacity: 0.5; </del> <ins> /* Dim should not apply to background, so the opacity of the foreground color is applied * explicitly in the generated class and reset to 1 here */ opacity: 1 !important; </ins> } .xterm-underline-1 {

text-decoration: dashed underline; } <ins> .xterm-overline { text-decoration: overline; } .xterm-overline.xterm-underline-1 { text-decoration: overline underline; } .xterm-overline.xterm-underline-2 { text-decoration: overline double underline; } .xterm-overline.xterm-underline-3 { text-decoration: overline wavy underline; } .xterm-overline.xterm-underline-4 { text-decoration: overline dotted underline; } .xterm-overline.xterm-underline-5 { text-decoration: overline dashed underline; } </ins> .xterm-strikethrough { text-decoration: line-through; }

position: absolute; } <del> .xterm-decoration-overview-ruler { </del> <ins> .xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer { </ins> z-index: 7; <ins> } .xterm-decoration-overview-ruler { z-index: 8; </ins> position: absolute; top: 0; right: 0;
Change:
As noted by a tunnel something somewhat data intensive. Run a big notebook, or sometimes just opening a large workspace is enough the tunnel will become unresponsive

Discussion:
*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <ins> use bytes::Buf; </ins> use tokio::{ io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, BufReader}, pin,

return Ok(None); } <del> let msg = src[U32_SIZE..].to_vec(); src.resize(0, 0); </del> <ins> let msg = src[U32_SIZE..required_len].to_vec(); src.advance(required_len); </ins> Ok(Some(msg)) } }