jiebi/CodeConvo huggingface dataset:
Change:
Is there a way to use a codicon instead of an extension PNG? It feels out of place amongst built-in walkthroughs that can use a codicon. <img width="539" alt="CleanShot 2022-10-07 at 14 27 23 src="https://user-"cc since we chatted about this before
Conversation over at

Discussion:
{ "id": "nodejsWelcome", "title": "%walkthroughs.nodejsWelcome.title%", <ins> "icon": "media/nodejsWalkthroughIcon.png", </ins> "description": "%walkthroughs.nodejsWelcome.description%", "when": "false", "steps": [

export interface IWalkthrough { readonly id: string; readonly title: string; <ins> readonly icon?: string; </ins> readonly description: string; readonly steps: IWalkthroughStep[]; readonly featuredFor: string[] | undefined;

type: 'string', description: localize('walkthroughs.title', "Title of walkthrough.") }, <ins> icon: { type: 'string', description: localize('walkthroughs.icon', "Relative path to the icon of the walkthrough. The path is relative to the extension location. If not specified, the icon defaults to the extension icon if available."), }, </ins> description: { type: 'string', description: localize('walkthroughs.description', "Description of walkthrough.")

isFeatured = await this.instantiationService.invokeFunction(a => checkGlobFileExists(a, folders, walkthrough.featuredFor!, token.token)); } <ins> const iconStr = walkthrough.icon ?? extension.icon; </ins> const walkthoughDescriptor: IWalkthrough = { description: walkthrough.description, title: walkthrough.title,

steps, icon: { type: 'image', <del> path: extension.icon ? FileAccess.asBrowserUri(joinPath(extension.extensionLocation, extension.icon)).toString(true) </del> <ins> path: iconStr ? FileAccess.asBrowserUri(joinPath(extension.extensionLocation, iconStr)).toString(true) </ins> : DefaultIconPath }, when: ContextKeyExpr.deserialize(override ?? walkthrough.when) ?? ContextKeyExpr.true(),
Change:
Wasn't sure why we show this link when turning Settings Sync on. Do we need it for some reason? Seems somewhat low-level/technical. If so, maybe it should be after the string e.g. <img width="498" alt="CleanShot 2022-10-07 at 15 43 07 src="https://user-"
Yah, it was in the beginning for users to discover what is happening. But, I agree that it does not has to be user facing.

Discussion:
await this.synchroniseUserDataSyncStoreType(); } <del> this.notificationService.info(localize('sync turned on', "{0} is turned on", `${SYNC_TITLE} [(${localize('show log', "show log")})](command:${SHOW_SYNC_LOG_COMMAND_ID})`)); </del> <ins> this.notificationService.info(localize('sync turned on', "{0} is turned on", SYNC_TITLE)); </ins> } async turnoff(everywhere: boolean): Promise<void> {
Change:
<img width="957" alt="image" src="https://user-"Version info:
I think the issue is this line. From what I understand the regex matches the first word causing split to return 3 element array 0: empty string(cause there is nothing before the first word) 1: the first word 2: rest of the string. However, seems to have the same effect. What am I missing?
nvm got it. It is not the same for strings like 'iterable' and 'iterable -'

Discussion:
case 'extends': case 'param': case 'template': { <del> const body = (convertLinkTags(tag.text, filePathConverter)).split(/^(S+)s*-?s*/); </del> <ins> const body = getTagBody(tag, filePathConverter); </ins> if (body?.length === 3) { const param = body[1]; const doc = body[2];

return label + (text.match(/rn|n/g) ? '  n' + text : ` u2014 ${text}`); } <ins> function getTagBody(tag: Proto.JSDocTagInfo, filePathConverter: IFilePathToResourceConverter): Array<string> | undefined { if (tag.name === 'template') { const parts = tag.text; if (parts && typeof (parts) !== 'string') { const params = parts.filter(p => p.kind === 'typeParameterName').map(p => p.text).join(', '); const docs = parts.filter(p => p.kind === 'text').map(p => convertLinkTags(p.text.replace(/^s*-?s*/, ''), filePathConverter)).join(' '); return params ? ['', params, docs] : undefined; } } return (convertLinkTags(tag.text, filePathConverter)).split(/^(S+)s*-?s*/); } </ins> export function plainWithLinks( parts: readonly Proto.SymbolDisplayPart[] | string, filePathConverter: IFilePathToResourceConverter,
Change:
I can reproduce this in my Stable VS Code 100% of the time. I can not reproduce in VS Code Insiders. Click on the Account icon in the activity bar -nothing happens Open developer tools console and notice exception
Assigning to as well, since and me investigated and it seems like the value in my KeyTar got corrupted and can no longer be JSON parsed. We tried with a fresh user data dir and we could still repro since the same KeyTar is used.
can you run this simple one-liner and tell me if you get a value?: This is using the following open source package: What you should get is something like this: If that returns a value, then I'm shocked that it did because nothing in core sets that (only embedders do this in the web)... could an embedder be writing to this on accident? If it doesn't.... that's also odd since your stacktrace is
I just ran that, and yes I get
verification: this: vscode insiders in to an account/open the account menu It shouldn't throw the error above.

Discussion:
export async function getCurrentAuthenticationSessionInfo(credentialsService: ICredentialsService, productService: IProductService): Promise<AuthenticationSessionInfo | undefined> { const authenticationSessionValue = await credentialsService.getPassword(`${productService.urlProtocol}.login`, 'account'); if (authenticationSessionValue) { <del> const authenticationSessionInfo: AuthenticationSessionInfo = JSON.parse(authenticationSessionValue); if (authenticationSessionInfo && isString(authenticationSessionInfo.id) && isString(authenticationSessionInfo.accessToken) && isString(authenticationSessionInfo.providerId) ) { return authenticationSessionInfo; </del> <ins> try { const authenticationSessionInfo: AuthenticationSessionInfo = JSON.parse(authenticationSessionValue); if (authenticationSessionInfo && isString(authenticationSessionInfo.id) && isString(authenticationSessionInfo.accessToken) && isString(authenticationSessionInfo.providerId) ) { return authenticationSessionInfo; } } catch (e) { // ignore as this is a best effort operation. </ins> } } return undefined;
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/No <!-- 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: OS Version: Steps to Reproduce: Case1: chrome language of zh-CN webworker extensions with zh-CN nls error happened <img width="806" alt="image" src="https://user-"cached key like: , but is , need source code at
how about it?
can you please open a new issue for case 2? We prefer 1 issue per problem. For case 1, yes it seems like we need to be toLowerCaseing that before we read from the bundle cache. Nice catch!
this should be working again in can you give it a try and let me know how it goes?
Verified that in we now use ().toLowerCase()
Sorry, I just saw it. It works

Discussion:
}; } <del> const packageNLSUri = webExtension.packageNLSUris?.get(Language.value()); </del> <ins> const packageNLSUri = webExtension.packageNLSUris?.get(Language.value().toLowerCase()); </ins> if (packageNLSUri || webExtension.fallbackPackageNLSUri) { manifest = packageNLSUri ? await this.translateManifest(manifest, packageNLSUri, webExtension.fallbackPackageNLSUri)
Change:
OS: Win10 Visual Studio Code Version: 1.73.0-insider (user setup) Repro Steps: a .NET core project with the command "". the project in the Visual Studio Code - Insiders. the file. whether there is an "Add Configuration..." button in the file. Actual: There is no "Add Configuration..." button in the file. Suggestion: It would be better to add an "Add Configuration..." button in the file. More Info: This issue doesn't reproduce when open the file in the Visual Studio Code. !
Works fine for me. Are you opening exactly the same folder in both instances? Do you see any errors in the devtools console? (Help Toggle Developer Tools)
This issue still reproduces on my Windows machine, but it doesn't reproduce on Mac. There is no error in the devtools console as below. !
Oh, got it, Windows. Thanks

Discussion:
menu: { id: MenuId.EditorContent, when: ContextKeyExpr.and( <del> ContextKeyExpr.regex(ResourceContextKey.Path.key, /.vscode/launch.json$/), </del> <ins> ContextKeyExpr.regex(ResourceContextKey.Path.key, /.vscode[/]launch.json$/), </ins> ActiveEditorContext.isEqualTo(TEXT_FILE_EDITOR_ID)) } });
Change:
Part of This ends up exacerbating a slow startup, an idle callback will fire among other eventually/idle callbacks. Can the 5000 be removed?
Can you please elaborate how this is impacting perf?
It's a little hard to quantify this, but in the end it probably results in milliseconds of work (how much depends on hardware), potentially before the editor shows/tokenization is done, especially on average/low end hardware. Removing the timeout will just shift that small amount of work to around . There should be a reason code runs this early and this seems like an obvious candidate to push as it's already on an idle callback.
Trying to understand this. I think runWhenIdle runs when the browser/renderer is not doing anything. Why will this run eventually if timeout is removed? May I understand what timeout is meant for here? Does the task runs forcefully after that timeout?
Yep, when it hits the timeout its treated more like a setTimeout. Calling it without the timeout will run it whenever the main thread is not busy.
Ok will remove the timeout

Discussion:
if (!this.localUserConfiguration.hasTasksLoaded) { // Reload local user configuration again to load user tasks <del> this._register(runWhenIdle(() => this.reloadLocalUserConfiguration(), 5000)); </del> <ins> this._register(runWhenIdle(() => this.reloadLocalUserConfiguration())); </ins> } }
Change:
As discussed offline, I'm profiling initial load time, and happened to notice that the ipynb extension is activated as of It doesn't seem like activating should be necessary for the File New File flow to work but I might be missing some additional context.

Discussion:
"diffContentOptions" ], "activationEvents": [ <del> "*" </del> <ins> "onNotebook:jupyter-notebook", "onCommand:ipynb.newUntitledIpynb" </ins> ], "extensionKind": [ "workspace",
Change:
An information disclosure vulnerability exists in VS Code 1.71 and earlier versions. If an attacker is able to run arbitrary scripts inside of a webview (either created by extension or by core VS Code), the attacker could bypass the local resource roots check to read arbitrary files on the user's system The fix is available starting with VS Code 1.71.1. The mitigates this attack by performing input validation on the URL pointing to the repository to be cloned. Only use webviews from extensions that follow proper security measures to block script injection Do not disable VS Code's default security measures in the built-in markdown preview The patch for this can be found at An advisory for this can be found at MSRC details for this can be found at
Hi, just curious about this: The description of the vulnerability ends mid-sentence. I see the same phrasing on the GHSA advisory as well: Can it be revised to be clearer what is the nature of the vulnerability? (And of course: Thanks for finding and fixing it, and for making these advisories! Transparency and security are appreciated!)
Updated
Should the references to 1.71 in fact be 1.72?

Discussion:
import { CancellationToken } from 'vs/base/common/cancellation'; import { isUNC } from 'vs/base/common/extpath'; import { Schemas } from 'vs/base/common/network'; <del> import { sep } from 'vs/base/common/path'; </del> <ins> import { normalize, sep } from 'vs/base/common/path'; </ins> import { URI } from 'vs/base/common/uri'; import { FileOperationError, FileOperationResult, IFileService } from 'vs/platform/files/common/files'; import { ILogService } from 'vs/platform/log/common/log';

return false; } <del> let rootPath = root.fsPath + (root.fsPath.endsWith(sep) ? '' : sep); let resourceFsPath = resource.fsPath; </del> <ins> let resourceFsPath = normalize(resource.fsPath); let rootPath = normalize(root.fsPath + (root.fsPath.endsWith(sep) ? '' : sep)); </ins> if (isUNC(root.fsPath) && isUNC(resource.fsPath)) { rootPath = rootPath.toLowerCase();
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?: No <!-- 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.72.1 and 1.72.0-insider OS Version: Windows_NT x64 10.0. Steps to Reproduce: Run the following code from a VSCode extension: The expected behavior would be that the does not contain an entry for "test" since there was no call to . It appears that modifications to the workspaceConfig are stored in memory but are not reflected in The workaround is to use to prevent modification of the This does not repro if the configuration type is a string or an object. For example:

Discussion:
} }); } <ins> if (Array.isArray(target)) { return deepClone(target); } </ins> return target; }; result = cloneOnWriteProxy(result, key);

testObject.$acceptConfigurationChanged(newConfigData, configEventData); }); <ins> test('get return instance of array value', function () { const testObject = createExtHostConfiguration({ 'far': { 'boo': [] } }); const value: string[] = testObject.getConfiguration().get('far.boo', []); value.push('a'); const actual = testObject.getConfiguration().get('far.boo', []); assert.deepStrictEqual(actual, []); }); </ins> function aWorkspaceFolder(uri: URI, index: number, name: string = ''): IWorkspaceFolder { return new WorkspaceFolder({ uri, name, index }); }
Change:
Type: <bBug</bView the setting called "Git: Branch Protection Prompt" either using the UI Settings or the JSON settings. The description says: I believe this should say something like: VS Code version: Code 1.72.1 (, 2022-10-10T17:22:48.346Z) OS version: WindowsNT x64 10.0. Modes: Sandboxed: No <details<summarySystem Info</summary </details<details<summaryExtensions (1)</summaryExtensionVersion ------ material-icon-theme4.21.0 (2 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --

Discussion:
"config.checkoutType.remote": "Remote branches", "config.branchPrefix": "Prefix used when creating a new branch.", "config.branchProtection": "List of protected branches. By default, a prompt is shown before changes are committed to a protected branch. The prompt can be controlled using the `#git.branchProtectionPrompt#`  setting.", <del> "config.branchProtectionPrompt": "Controls whether a prompt is being before changes are committed to a protected branch.", </del> <ins> "config.branchProtectionPrompt": "Controls whether a prompt is being shown before changes are committed to a protected branch.", </ins> "config.branchProtectionPrompt.alwaysCommit": "Always commit changes to the protected branch.", "config.branchProtectionPrompt.alwaysCommitToNewBranch": "Always commit changes to a new branch.", "config.branchProtectionPrompt.alwaysPrompt": "Always prompt before changes are committed to a protected branch.",
Change:
and trust the workspace to Show Running Extensions from the extensions pane :bug: See that npm extension is activated even though it declares in its , which should disable it in all virtual workspaces !
Virtual workspace check is only considered in Desktop. In web all extensions those are web enabled are enabled irrespective of virtual workspace.
Can I ask why this is the case? The npm extension activates eagerly due to when opening a repository containing a file (e.g. extensions). I don't need this extension and today would need to manually disable it.
Virtual workspace support is only for desktop clients. In web all workspaces are virtual. CC
is right, and I agree it's a bit confusing. The npm extension has a main entry point where it contributes code completions and hovers for the in It uses online services for that, so it also works with virtual workspaces. That said, it should not say but instead just disable the functionality that doesn't work when in a virtual workspace.
What do we want to change? that is observed in the web that the npm extension does not declare ?
I would propose the following changes: extension does not declare , can we make the npm extension activate less eagerly i.e. not on ? Today the npm extension activates whenever we open a VS Code extension repo for e.g., which seems unnecessary. Maybe we could instead activate when a file is opened? (I don't believe we have an activation event for this but perhaps we could introduce one?)
is currently needed to set the context variable that is used to enable/disable the npm explorer.
I don't think we have a work around for the context value, so we need to keep the activation as is.

Discussion:
"onView:npm" ], "capabilities": { <del> "virtualWorkspaces": false, </del> <ins> "virtualWorkspaces": { "supported": "limited", "description": "%virtualWorkspaces%" }, </ins> "untrustedWorkspaces": { "supported": "limited", "description": "%workspaceTrust%"

"description": "Extension to add task support for npm scripts.", "displayName": "NPM support for VS Code", "workspaceTrust": "This extension executes tasks, which require trust to run.", <ins> "virtualWorkspaces": "Functionality that requires running the 'npm' command is not available in virtual workspaces.", </ins> "config.npm.autoDetect": "Controls whether npm scripts should be automatically detected.", "config.npm.runSilent": "Run npm commands with the `--silent` option.", "config.npm.packageManager": "The package manager used to run scripts.",
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?: No -- I'm not sure how to demonstrate the behavior of with all extensions disabled <!-- 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.72.1 OS Version: Windows 10.0. Build Steps to Reproduce: "Create: New Jupyter Notebook" the following in the cell that is created automatically: two more code cells below the first both containing: ! -select the second and third cells. them above the first cell. Expected: Both cells that were moved show a red squiggly complaining that is not defined. Actual: Only the new topmost cell (which was topmost in the dragged selection) shows the error. Just based on that behavior this could easily be an LSP or Pylance bug. However, I have tracked this down to not handling the field in . It always reports that a single cell was moved. So, although the UI shows that both cells moved, the language server still thinks that the cell with no errors is at the bottom of the notebook. I'll create a PR with a fix soon. !

Discussion:
this._spliceNotebookCells(rawEvent.changes, false, result.contentChanges); } else if (rawEvent.kind === notebookCommon.NotebookCellsChangeType.Move) { <del> this._moveCell(rawEvent.index, rawEvent.newIdx, result.contentChanges); </del> <ins> this._moveCells(rawEvent.index, rawEvent.length, rawEvent.newIdx, result.contentChanges); </ins> } else if (rawEvent.kind === notebookCommon.NotebookCellsChangeType.Output) { this._setCellOutputs(rawEvent.index, rawEvent.outputs);

} } <del> private _moveCell(index: number, newIdx: number, bucket: vscode.NotebookDocumentContentChange[]): void { const cells = this._cells.splice(index, 1); </del> <ins> private _moveCells(index: number, length: number, newIdx: number, bucket: vscode.NotebookDocumentContentChange[]): void { const cells = this._cells.splice(index, length); </ins> this._cells.splice(newIdx, 0, ...cells); const changes = [ <del> new RawContentChangeEvent(index, 1, cells.map(c => c.apiCell), []), </del> <ins> new RawContentChangeEvent(index, length, cells.map(c => c.apiCell), []), </ins> new RawContentChangeEvent(newIdx, 0, [], cells) ]; for (const change of changes) {