Question: shellLaunchConfig.args = windowsShellArgs ? combinedShellArgs.join(' ') : combinedShellArgs; if (task.command.presentation && task.command.presentation.echo) { if (needsFolderQualification && workspaceFolder) { <del> shellLaunchConfig.initialText = taskShellIntegrationStartSequence + formatMessageForTerminal(nls.localize({ </del> <ins> shellLaunchConfig.initialText = this.taskShellIntegrationStartSequence + formatMessageForTerminal(nls.localize({ </ins> key: 'task.executingInFolder', comment: ['The workspace folder the task is running in', 'The task command line or label'] <del> }, 'Executing task in folder {0}: {1}', workspaceFolder.name, commandLine), { excludeLeadingNewLine: true }) + taskShellIntegrationOutputSequence; </del> <ins> }, 'Executing task in folder {0}: {1}', workspaceFolder.name, commandLine), { excludeLeadingNewLine: true }) + this.taskShellIntegrationOutputSequence; </ins> } else { <del> shellLaunchConfig.initialText = taskShellIntegrationStartSequence + formatMessageForTerminal(nls.localize({ </del> <ins> shellLaunchConfig.initialText = this.taskShellIntegrationStartSequence + formatMessageForTerminal(nls.localize({ </ins> key: 'task.executing', comment: ['The task command line or label'] <del> }, 'Executing task: {0}', commandLine), { excludeLeadingNewLine: true }) + taskShellIntegrationOutputSequence; </del> <ins> }, 'Executing task: {0}', commandLine), { excludeLeadingNewLine: true }) + this.taskShellIntegrationOutputSequence; </ins> } } else { <del> shellLaunchConfig.initialText = taskShellIntegrationStartSequence + taskShellIntegrationOutputSequence; </del> <ins> shellLaunchConfig.initialText = this.taskShellIntegrationStartSequence + this.taskShellIntegrationOutputSequence; </ins> } } else { const commandExecutable = (task.command.runtime !== RuntimeType.CustomExecution) ? CommandString.value(command) : undefined;

VS Code Version: insiders/from sources Task terminals don't respect setting so decorations cannot be disabled.
thanks for creating this issue. I remember noticing this then got distracted by some other issue
we're separating the task decorations from terminal decorations (shell integration), so will have a setting
Verified that works


Question: return normalizeLink(vscode.Uri.parse(link).with({ scheme: vscode.env.uriScheme }).toString()); } <ins> // Support file:// links if (isOfScheme(Schemes.file, link)) { // Ensure link is relative by prepending `/` so that it uses the <base> element URI // when resolving the absolute URL return normalizeLink('/' + link.replace(/^file:/, 'file')); } </ins> // If original link doesn't look like a url with a scheme, assume it must be a link to a file in workspace if (!/^[a-z-]+:/i.test(link)) { // Use a fake scheme for parsing

<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.51.1 OS Version: on both Fedora 32 and Linux Mint 20 Steps to Reproduce: clone issuesvscode1400markdownPreviewRootRelativeImg . doesn't display in ! <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes This issue had already occurred in past: In the latest insiders vs-code build - it's not fixed as well.
I took a look at this and found that the issue is that the resource vscode-webview-resource uri is invalid, is missing before I was looking how to fix it but I can't find the place where the gets mapped to a can you give me some code pointers?
here is my quick and dirty fix for this issue:
Start by looking in the markdown link normalizer I believe this is passed the raw image links and tries to transform them into url that VS Code can render in the preview
Thanks and after spending some more time looking at this I think I found a proper fix for it


Question: ?? element.separator?.id ?? element.separator?.label ?? ''; <del> } </del> <ins> }, </ins> }, alwaysConsumeMouseWheel: true }

<!-- 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.88.0-insider OS Version: MacOs Steps to Reproduce: In the python and python debugger extension we use the QuickPick, we add an option to accept the value in the input. It was working in stable, but in insiders it doesn't work. Steps: a picker some text in the input box, make sure that it match with one option at first. enter, to select the text in the input box. last value that appeared in the list is the one that is selected. You can check the implementation . I was debugging the code a little bit, and found that in stable when you press enter, the function is called. But in insider when you press enter instead of call that function, the function is called.
Verification: Install Python extension Open a python workspace with no Open the debug pane and click the "create a file" Choose Python Debugger Choose Django Type ONLY 'b' and notice that "Browse Files" becomes the active item Type then, 'z' and notice that the list is empty hit ENTER and notice that the gets created with "bz" in the
The fix fully resolves as well!
Resolves my issue as well.


Question: }), true); }); <ins> test('isUriComponents', function () { assert.ok(isUriComponents(URI.file('a'))); assert.ok(isUriComponents(URI.file('a').toJSON())); assert.ok(isUriComponents(URI.file(''))); assert.ok(isUriComponents(URI.file('').toJSON())); assert.strictEqual(isUriComponents(1), false); assert.strictEqual(isUriComponents(true), false); assert.strictEqual(isUriComponents("true"), false); assert.strictEqual(isUriComponents({}), false); assert.strictEqual(isUriComponents({ scheme: '' }), true); // valid components but INVALID uri assert.strictEqual(isUriComponents({ scheme: 'fo' }), true); assert.strictEqual(isUriComponents({ scheme: 'fo', path: '/p' }), true); assert.strictEqual(isUriComponents({ path: '/p' }), false); }); test('from, from(strict), revive', function () { assert.throws(() => URI.from({ scheme: '' }, true)); assert.strictEqual(URI.from({ scheme: '' }).scheme, 'file'); assert.strictEqual(URI.revive({ scheme: '' }).scheme, ''); }); </ins> test('Unable to open '%A0.txt': URI malformed #76506, part 2', function () { assert.strictEqual(URI.parse('file://some/%.txt').toString(), 'file://some/%25.txt'); assert.strictEqual(URI.parse('file://some/%A0.txt').toString(), 'file://some/%25A0.txt');

Following test throws: I found this while investigating At that point the editor component is quite broken because of a lot of errors being thrown. Notice how not even a tab shows for the editor: <img width="1058" alt="image" src="https://user-"
that should already throw because at least a scheme is needed. It doesn't because was designed to be the runtime counter part of which never produces such output so some IPC deserialisation cost can be saved.
, that works for me and will also throw when we get bad objects into such as the from
Yeah, my plan is to add an argument like we have in other URI-places. It will default to true and only IPC should be relaxed
Not doing that because it actually already exists as . I believe the adoption/migration task is to use instead of whenever getting uri components from storage or esp from command arguments. Tho, there is one special case for which is that it automatically uses when the scheme is missing. We could make that configurable but a check for might make this obsolete
Closing this after and the ask to use when creating uri from "untrusted" sources
I will see to adopt , I forgot we had it


Question: } getFileBasedRecommendations(): IExtensionRecommendation[] { <del> return Object.keys(this._fileBasedRecommendations) .sort((a, b) => { if (this._fileBasedRecommendations[a].recommendedTime === this._fileBasedRecommendations[b].recommendedTime) { if (!product.extensionImportantTips || caseInsensitiveGet(product.extensionImportantTips, a)) { return -1; } if (caseInsensitiveGet(product.extensionImportantTips, b)) { return 1; } </del> <ins> return [...this.getRestoredRecommendationsByReason(ExtensionRecommendationReason.File), ...Object.keys(this._fileBasedRecommendations).sort((a, b) => { if (this._fileBasedRecommendations[a].recommendedTime === this._fileBasedRecommendations[b].recommendedTime) { if (!product.extensionImportantTips || caseInsensitiveGet(product.extensionImportantTips, a)) { return -1; </ins> } <del> return this._fileBasedRecommendations[a].recommendedTime > this._fileBasedRecommendations[b].recommendedTime ? -1 : 1; }).map(extensionId => (<IExtensionRecommendation>{ extensionId, sources: this._fileBasedRecommendations[extensionId].sources })); </del> <ins> if (caseInsensitiveGet(product.extensionImportantTips, b)) { return 1; } } return this._fileBasedRecommendations[a].recommendedTime > this._fileBasedRecommendations[b].recommendedTime ? -1 : 1; })] .map(extensionId => (<IExtensionRecommendation>{ extensionId, sources: this._fileBasedRecommendations[extensionId] ? this._fileBasedRecommendations[extensionId].sources : this._sessionRestoredRecommendations[extensionId.toLowerCase()] ? this._sessionRestoredRecommendations[extensionId.toLowerCase()].sources : [] })); </ins> } getOtherRecommendations(): TPromise<IExtensionRecommendation[]> {

Issue Type: <bBug</bOpen extension recommendations Click on one In the editor, click the ignore recommendation button Note that the extension is removed from the recommended extension list as expected Click on the undo button in the editor Note that the recommended extension is not placed back in the list. VS Code version: Code - Insiders 1.25.0-insider (, 2018-06-26T05:18:23.085Z) OS version: WindowsNT x64 10.0. <details<summarySystem Info</summary </details<details<summaryExtensions (15)</summaryExtensionVersion ------ html-snippets0.2.1 jshint0.10.19 vscode-eslint1.4.12 tslint1.0.33 vscode-great-icons2.1.35 vscode-gutter-preview0.12.2 vscode-azureappservice0.8.1 vscode-cosmosdb0.7.2 azure-account0.4.1 csharp1.15.2 vs-keybindings0.2.0 team1.136.0 debugger-for-chrome4.7.0 addDocComments0.0.8 cordova-tools1.4.0 </details<!-- generated by issue reporter --! Testing:
Note: this only applies to non-workspace recommendations. Will look into
Closed with


Question: run: () => { sendTelemetry('accept'); this.telemetryService.getTelemetryInfo().then(info => { <del> this.openerService.open(URI.parse(`${this.productService.cesSurveyUrl}?o=${encodeURIComponent(platform)}&v=${encodeURIComponent(this.productService.version)}&m=${encodeURIComponent(info.machineId)}`)); </del> <ins> let surveyUrl = `${this.productService.cesSurveyUrl}?o=${encodeURIComponent(platform)}&v=${encodeURIComponent(this.productService.version)}&m=${encodeURIComponent(info.machineId)}`; const usedParams = this.productService.surveys ?.filter(surveyData => surveyData.surveyId && surveyData.languageId) // Counts provided by contrib/surveys/browser/languageSurveys .filter(surveyData => this.storageService.getNumber(`${surveyData.surveyId}.editedCount`, StorageScope.GLOBAL, 0) > 0) .map(surveyData => `${encodeURIComponent(surveyData.languageId)}Lang=1`) .join('&'); if (usedParams) { surveyUrl += `&${usedParams}`; } this.openerService.open(URI.parse(surveyUrl)); </ins> this.skipSurvey(); }); }

If the knows which languages a user tried in their first day, it could unlock more specific questions to further improve the language onboarding experience. How though. tracks the edited count for languages that run surveys; which are the languages we care most about right now. Only issue is that the storage key isn't exported, so the doesn't know about it. any general thoughts on the idea, and best practices on how to make the storage keys known to the ces survey code; so they can be read and attached as params to the survey URL?
The CES code already has access to the same . Can't you copy the maps the surveys to storage service keys over to CES and read them from there?
Sure, was mainly worried that this creates some copy/pasta. Will take that approach for an initial pull request draft and gather feedback.
No worries. We can also extract the common code to a new file, sibling to those two.
are there verification steps for this?
Sorry that they are so complex and time-intensive. I can also verify that I see survey responses from insiders that include the language data. a fresh VS Code Insiders instance , ensure that you are in the treatment group a Java file and save it. VS Code open for 1 hour to trigger the new-user survey popup and click to open the survey that the URL it opened contains
Ok, see you in an hour!
The treatment service does not seem to like me, for some reason. Unmarking as verified for someone else to give it a shot. Note that you need to repeatedly open VS Code windows with new user-data-dir's until you get into the treatment.
Also attempted this but no survey after an hour. Confirmed I did get an initial
when the experiment enables the survey you should also get a event? Did that work?
Testing again
Worked! [redacted]&javaLang=1


Question: original: 'Terminal', mnemonicTitle: localize({ key: 'mTerminal', comment: ['&& denotes a mnemonic'] }, "&&Terminal") }, <del> order: 7, when: ContextKeyExpr.has('terminalProcessSupported') </del> <ins> order: 7 </ins> }); MenuRegistry.appendMenuItem(MenuId.MenubarMainMenu, {

In the recent Edit Sessions UX study we ran, we saw several participants searching in vain for the terminal item in the compact menu on , sometimes for minutes: ! Could we consider bringing it back? I'm guessing we intentionally suppressed it because terminals can't run in the web, but participants were simply confused that it wasn't there without connecting its absence to the fact that was a browser application. Additionally, RemoteHub contributes a welcome view for the terminal which is one of the primary ways we explain that users must continue working elsewhere to run or debug code, and the fact that the terminal is completely suppressed means one less opportunity for users to organically learn the limitations of through our welcome views. ! cc
Yes that is why it was removed. It doesn't do much but if it helps reduce confusion I guess it's worth it?
Not against the idea of having the terminal menu in web but in its current form it's useless and doesn't allow me to actually show a terminal pane, it just deadends all over https://user-
Reverting in
when I enable the menu again and fix up the terminal command, the run/customize task items give this on the scripts/code-web sample-folder: <img width="1229" alt="image" src="https://user-"That does actually run, not sure what it's doing exactly though. Is that a custom execution task running in the web worker ext host? If so you might need a context key on those menu items to only show them when a custom execution task is registered?
Unless I'm missing something, I believe only registered tasks will show there - if they're running when you select them, then I don't think there's an issue.
I think there's a built-in fake task when running code-web is what I mean, when run in actual then running it might do nothing. In that case it should hide similar to how we're changing the behavior of New Terminal depending on whether extension contributed profiles exist


Question: <ins> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ 'use strict'; // import * as assert from 'assert'; import { fuzzyContiguousFilter, matchesFuzzy2, matchesFuzzy3, matchesFuzzy4, matchesFuzzy5, fuzzyMatchAndScore } from 'vs/base/common/filters'; const data = <{ label: string }[]>require.__$__nodeRequire(require.toUrl('./filters.perf.data.json')); const patterns = ['cci', 'ida', 'pos', 'CCI', 'enbled', 'callback', 'gGame']; const _enablePerf = true; function perfSuite(name: string, callback: (this: Mocha.ISuiteCallbackContext) => void) { if (_enablePerf) { suite(name, callback); } } perfSuite('Performance - fuzzyMatch', function () { console.log(`Matching ${data.length} items against ${patterns.length} patterns...`); function perfTest(name: string, match: (pattern: string, word: string) => any) { test(name, function () { const t1 = Date.now(); let count = 0; for (const pattern of patterns) { for (const item of data) { if (item.label) { count += 1; match(pattern, item.label); } } } console.log(name, Date.now() - t1, `${(count / (Date.now() - t1)).toPrecision(6)}/ms`); }); } perfTest('fuzzyContiguousFilter', fuzzyContiguousFilter); perfTest('matchesFuzzy2', matchesFuzzy2); perfTest('matchesFuzzy3', matchesFuzzy3); perfTest('matchesFuzzy4', matchesFuzzy4); perfTest('matchesFuzzy5', matchesFuzzy5); perfTest('fuzzyMatchAndScore', fuzzyMatchAndScore); }); </ins>


Question: { "name": "code-oss-dev", "version": "1.84.0", <del> "distro": "7df09ac7212a2c85067c0e2ef8c1ec89686483d2", </del> <ins> "distro": "7c11ebfa20a4556137f851c95af40923aae11a3d", </ins> "author": { "name": "Microsoft Corporation" },

I wonder if this could be a 18 issue? //cc
Yes , this is addressed in Node v20 and we have also backported the fix to Electron in However, we haven't backported the fix to but we can.


Question: } updateCommentThread(commentThread: languages.CommentThread<T>) { <del> if (this._commentThread !== commentThread) { dispose(this._commentThreadDisposables); } </del> this._commentThread = commentThread; <ins> dispose(this._commentThreadDisposables); </ins> this._commentThreadDisposables = []; this._bindCommentThreadListeners();

have an eager comments controller extension (see below) open a notebook create a new cell leak warnings are printed
This seems to be rooted at  It looks like a new is created without always disposing the old one. The looks highly suspicious. <img width="1586" alt="Screenshot 2022-10-26 at 14 09 41" src="https://user-"
Suggesting to tackle this for October because after a short while VS Code was crawling due to excessive listening
thanks for good reproduce. The comment thread equality check is wrong, it's an oversight during refactoring iirc. I pushed a fix for this memory leak. Though with it fixed, I found there are issues with "Editing" state of comment thread for cells (focus issue), will look into this next week.
Thanks


Question: "editorGutter.addedBackground": "#2ea043", "editorGutter.deletedBackground": "#f85149", "editorGutter.modifiedBackground": "#0078d4", <del> "editorInlayHint.background": "#8b949e33", "editorInlayHint.foreground": "#8b949e", "editorInlayHint.typeBackground": "#8b949e33", "editorInlayHint.typeForeground": "#8b949e", </del> <ins> "editorInlayHint.background": "#8b949e1b", "editorInlayHint.typeBackground": "#8b949e1b", </ins> "editorLineNumber.activeForeground": "#cccccc", "editorLineNumber.foreground": "#6e7681", "editorOverviewRuler.border": "#010409",

I heavily use and love inlay hints but find their current styling too prominent for "hints" and think it harms readability and other editor features that use highlighting of words such as "highlight occurrences." Try finding highlighted occurrence of : Current: <img width="1779" alt="Screenshot 2023-06-29 at 11 51 00" src=""With less prominent hints: <img width="1779" alt="Screenshot 2023-06-29 at 11 47 31" src=""I think in the latter screenshot, inlay hints are less prominent but still as useful, as they are literally "hints" and don't need to be so prominent. If not as default, having a setting to tweak the background & color of hints would be great.
I think I've read a similar issue recently (should have the inlay-hint label).
Can be configured via and leaving it up to to tweak this further.
Updatde the default light/dark themes in to make these more subtle. Still want to keep the backgrounds since these could otherwise be confused with the ghost text in Copilot, comments in some themes, etc. <img width="422" alt="CleanShot 2023-06-29 at 11 23 35 src=""<img width="430" alt="CleanShot 2023-06-29 at 11 22 43 src=""


Question: *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; <del> import { Emitter } from 'vs/base/common/event'; </del> <ins> import { Emitter, Event } from 'vs/base/common/event'; </ins> import { DisposableStore } from 'vs/base/common/lifecycle'; import { ResourceMap } from 'vs/base/common/map'; import { waitForState } from 'vs/base/common/observable';

There are some parts in notebook land that depend on . This service and its provider are deprecated and should be removed. As of today the following dependencies must be cleaned up first: , , The should be used instead, it will allow you to know if a agent per location exists or not


Question: commandsToSkipShell: string[]; cwd: string; confirmOnExit: boolean; <ins> env: { linux: { [key: string]: string }; osx: { [key: string]: string }; windows: { [key: string]: string }; }; </ins> } export interface ITerminalConfigHelper {

VSCode Version: 1.7.1 OS Version: Win 10 Pro Add an option to set environment variables before starting the terminal. Something like: Or maybe you want to split variable and value something like: Obviously the same goes for Linux and Mac
I'm curious what your use case is for wanting this in VS Code but not in Windows?
Here are some use cases (first two from personal experience): Different paths to libs per workbench Test your application with different languages/translations. It would also have made a much better work-around for You just don't want to set set the right vars every time you open a terminal.
! how should i fix this problem
If you are asking because I mentioned in my previous comment, I have no idea about that issue. That one is not my bug report. I just ran into that issue when I was searching around if the request I wanted to submit was not a dup.
Its not hard to see in the Python context an app needing a specific PYTHON_PATH, and other languages needing class paths/library paths. My thoughts here is that the tasks may be the workaround - a task can have associated env vars - and a make/rake/grunt/gulp/fabfile or something could be used to set it all up for your project.
I would love to see that too. For me it's about setting workspace env variables to be used with node gyp. Like OPENCV location
How does one configure this on the Insiders build?
It will be in the next build of Insiders, you will be able to use the new settings:
I can confirm that it works great for me, i now use it in almost all my projects Thanks!
UPDATE Again: Just found :man_facepalming: ! UPDATE: DOH! I just realized . God I love this editor! Amazing job. Is there any way to make this project specific? I am using this now for GOPATH but would love if it changed to the current working directory, which the integrated terminal seems to be aware of when it starts up. Maybe there is a variable I could set the envs to that contains the same value used by the starting terminal.
Anything in is already specific to the root folder that is open in VS Code. This is called the Workspace settings.
how to specify the GOPATH env variable inside the integrated terminal to be the same as the one inside your ?


Question: commandsToSkipShell: string[]; cwd: string; confirmOnExit: boolean; <ins> env: { linux: { [key: string]: string }; osx: { [key: string]: string }; windows: { [key: string]: string }; }; </ins> } export interface ITerminalConfigHelper {

I am trying this on 1.17.1 and does not seem to work:
Thanks but in my case the following is what I'm after, but doesn't seem to be working. The use of the variable seems to work fine because it stops the underlined errors in code related to gopath, but the env var on the terminal still is bork. I'm mostly good because I also setup an install task that works. Now if I could only get that to like the libraries do correctly so things would compile automatically on changes (which I realize many would not like). ! By the way, here is an (old) task that works. But, it is interesting that everyone has different variable names for the same thing (workspaceFolder v.s. workspaceRoot): !
You are using in the env var for the which doesnt get resolved. Should we add resolution of such variables when using the setting? For vs see
Resolving variables in the setting is tracked in
After upgrading from 1.17 to 1.18, the setting doesn't work anymore (OS Version: OSX High Sierra) version 1.18: <img width="1064" alt="screen shot 2017-11-15 at 10 12 25" src="https://user-"version 1.17: <img width="442" alt="screen shot 2017-11-15 at 10 16 13" src="https://user-"
Just tried on my Mac, it works as expected. One thing to keep in mind is that the env vars will not affect terminals that were created before the env vars were to the setting. Can you create a new terminal and check there?
it was indeed on a new terminal after the env was . I've retried it on two high sierra machines recently.
I tried on a co-worker's high sierra machine. Works there as well. Can you try on our Insiders? Can you try with extensions disabled?


Question: __vsc_prompt_cmd_original() { __vsc_status="$?" <ins> builtin local cmd </ins> __vsc_restore_exit_code "${__vsc_status}" # Evaluate the original PROMPT_COMMAND similarly to how bash would normally # See https://unix.stackexchange.com/a/672843 for technique <del> builtin local cmd </del> for cmd in "${__vsc_original_prompt_command[@]}"; do eval "${cmd:-}" done

Type: <bBug</bThe issue shows up if I have a custom PS1 prompt that looks at the exit code of the previous command (using ). Here's a minimal configuration in the .bashrc file on my remote Linux host: Expected results: When I run in a terminal outside vscode or disable automatic script injection in the integrated terminal, I get this: Actual results: when I enable integrated terminal shell injection, I instead see this output running the same commands: That is, the exit code is now always 0. I tried manually injecting the scripts using the command from ; no change in behavior. Looking at the script that gets loaded (.../server/out/vs/workbench/contrib/terminal/browser/media/shellIntegration-), I see these lines: As an experiment, I tried moving the call later and opening a new terminal, which fixed the issue for me: So it looks like the step that clobbers the exit code is the step. Remote OS: RHEL 8.10, bash 4.4.20 VS Code version: Code 1.91.0 (, 2024-07-01T18:52:22.949Z) OS version: WindowsNT x64 10.0. Modes: Remote OS version: Linux x64 4.18.0-553.5.1.el810.x8664 Remote OS version: Linux x64 4.18.0-553.5.1.el810.x8664 Remote OS version: Linux x64 4.18.0-553.5.1.el810.x86_64 <details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
In VS Code version 1.92.0, I still see this issue. In this version I now see that the method calls instead of just , but running this after the function still clobbers out the return code to zero. says this about running :


Question:
}); });  suite('image-caching', () => {   suite.only('image-caching', () => {  const input = '![](img.png) [](no-img.png) ![](http://example.org/img.png) ![](img.png) ![](./img2.png)'; test('Extracts all images', async () => { const engine = createNewMarkdownEngine();  assert.deepStrictEqual((await engine.render(input)), { html: '
' + ' ' + ' ' + ' ' + ' ' + '' + '
n' , containingImages: [{ src: 'img.png' }, { src: 'http://example.org/img.png' }, { src: 'img.png' }, { src: './img2.png' }], });   const result = await engine.render(input); assert.deepStrictEqual(result.html, '
' + ' ' + ' ' + ' ' + ' ' + '' + '
n' ); assert.deepStrictEqual([...result.containingImages], ['img.png', 'http://example.org/img.png', './img2.png']);  }); }); });

<!-- 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: 1.68.1 OS Version: Windows 10 Steps to Reproduce: a Markdown file and open "Open Preview to the Side" add line: ! image in preview second line: ! second image shows up. Remove the line above image preview shows 2 images and does not update properly !
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.68.1. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Still happens in 1.68.1. Updating bug
Does this reproduce in the with all ?
Yes still happens with all extensions disabled


Question: if (configuration.enableTsServerTracing && !isWeb()) { tsServerTraceDirectory = this._logDirectoryProvider.getNewLogDirectory(); if (tsServerTraceDirectory) { <del> args.push('--traceDirectory', tsServerTraceDirectory.path); </del> <ins> args.push('--traceDirectory', tsServerTraceDirectory.fsPath); </ins> } }

Type: <bBug</btypescript server keeps crashing after the latest update VSCODE ! I can reproduce this with all the extensions disabled. LOG: ! VS Code version: Code - Insiders 1.76.0-insider (, 2023-02-03T05:23:17.202Z) OS version: WindowsNT x64 10.0. Modes: Sandboxed: Yes <details<summarySystem Info</summary </details<details<summaryExtensions (11)</summaryExtensionVersion ------ ng-template15.1.0 atlascode3.0.1 vscode-markdownlint0.49.0 vscode-eslint2.2.6 githistory0.6.19 gitlens13.2.0 prettier-vscode9.10.4 vscode-yaml1.11.0 sonarlint-vscode3.14.0 code-spell-checker2.16.0 vscode-stylelint1.2.3 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Please try collecting the TS Server log from the crashed instance: VS Code and reproduce the problem the section of the output panel the very top, find the first line that prints to path to the semantic error log file. It should look something like: That file contains the typescript logs. Look through that log file for the first error or stack trace you see. If you can share the log, I can also take a look to see if anything stands out
, for some reason the log file location is shown as [Object object] (as pointed out by the pink arrow), I checked in the folder pointed out by the red arrow and the folder is empty. ! I have checked this for multiple folder I could see in the log prompt but all of them are empty.
a Microsoft member created same/duplicate issue , in case this could help with the debugging
Confirming that I also see when using verbose setting and all the log files are empty for me, which is also noted and shown on microsoft/vscode.
For me the directory under the object object is also empty, is that the case with you?
Yes, same.
should be fixed in the next insider release: microsoft/vscode
the object object issue is resolved, however, the file pointed by the log still does not exist. can you give it a try if you can see the logs?


Question: if (configuration.enableTsServerTracing && !isWeb()) { tsServerTraceDirectory = this._logDirectoryProvider.getNewLogDirectory(); if (tsServerTraceDirectory) { <del> args.push('--traceDirectory', tsServerTraceDirectory.path); </del> <ins> args.push('--traceDirectory', tsServerTraceDirectory.fsPath); </ins> } }

i did some commenting in the file and found that commenting out setting stops the repeated crash. Note: I am not sure why I have /enabled this setting in the first place.
Oh wow, exactly the same for me. I also do not remember ever setting , but it was in my and removing it fixes the crash for me too!
Also confirming that with latest update is fixed but log directories are still empty. I've closed my bug as a duplicate of this one since it's pretty clear these are the same issue now. Are you able to repro using is Also do you know if this would ever have been set on user's behalf, which could impact the severity here if lots of people would have this in their settings?
Thanks and I can confirm that enabling cause the server to crash on windows. Oddly I don't see it on Mac. The server is likely crashing before logging can start too, which is why the log files don't exist I'm not sure how this setting got enabled for you. It's only meant for detailed performance investigations and should never be turned on automatically
Yay, thank you and


Question: if (platform === 'win32' && await exists(path.join(rootPath!, 'node_modules', '.bin', 'gulp.cmd'))) { const globalGulp = path.join(process.env.APPDATA ? process.env.APPDATA : '', 'npm', 'gulp.cmd'); if (await exists(globalGulp)) { <del> gulpCommand = globalGulp; </del> <ins> gulpCommand = '"' + globalGulp + '"'; </ins> } else { gulpCommand = path.join('.', 'node_modules', '.bin', 'gulp.cmd'); }

<!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.31.0 OS Version: Windows 10 Steps to Reproduce: a system with user home containing a space some gulp task configured you will have: <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No I think it was introduced by this commit: it is now using a global gulp which is installed in user home instead of local one. The command has never escaped space in path though
Thank you for catching this! The fix will be available in the next Insiders build.
Why are you looking in now, was that on purpose?
Ah that was already fixed


Question: this.loadedScriptsItemType = CONTEXT_LOADED_SCRIPTS_ITEM_TYPE.bindTo(contextKeyService); } <ins> @memoize private get treeRefreshScheduler(): RunOnceScheduler { return new RunOnceScheduler(() => { if (this.tree) { this.tree.refresh(undefined, this.shouldRefreshRecursive); this.shouldRefreshRecursive = false; } }, 300); } </ins> protected renderBody(container: HTMLElement): void { dom.addClass(container, 'debug-loaded-scripts');

debugging the loaded scripts view open debugging, notice exception in the console can not reproduce with Stable so it might be that my listener refactoring caused this If you pause on exception you will see that caused it.
did you have a chance to look into this? Or would you like me to investigate? I suspect this is breaking the loaded scripts view and is the root cause for
no, please investigate since this and was working before, and I haven't touched this code for two weeks.
end session events are not arriving in As a consequence the tree for the session is not properly removed.
I see something differnetly, the end sessions are arriving however when the last session end arrives view starts refreshing the tree and while that is in progress the view gets disposed which throws an exception. Looking into a fix...
I have created a PR which address this issue


Question: import { ViewContainerLocation } from 'vs/workbench/common/views'; import { OPEN_TO_SIDE_COMMAND_ID, COMPARE_WITH_SAVED_COMMAND_ID, SELECT_FOR_COMPARE_COMMAND_ID, ResourceSelectedForCompareContext, COMPARE_SELECTED_COMMAND_ID, COMPARE_RESOURCE_COMMAND_ID, COPY_PATH_COMMAND_ID, COPY_RELATIVE_PATH_COMMAND_ID, REVEAL_IN_EXPLORER_COMMAND_ID, OPEN_WITH_EXPLORER_COMMAND_ID, SAVE_FILE_COMMAND_ID, SAVE_FILE_WITHOUT_FORMATTING_COMMAND_ID, SAVE_FILE_AS_COMMAND_ID, SAVE_ALL_COMMAND_ID, SAVE_ALL_IN_GROUP_COMMAND_ID, SAVE_FILES_COMMAND_ID, REVERT_FILE_COMMAND_ID, REMOVE_ROOT_FOLDER_COMMAND_ID, PREVIOUS_COMPRESSED_FOLDER, NEXT_COMPRESSED_FOLDER, FIRST_COMPRESSED_FOLDER, LAST_COMPRESSED_FOLDER, NEW_UNTITLED_FILE_COMMAND_ID, NEW_UNTITLED_FILE_LABEL, NEW_FILE_COMMAND_ID } from './fileConstants'; import { IFileDialogService } from 'vs/platform/dialogs/common/dialogs'; <ins> import { RemoveRootFolderAction } from 'vs/workbench/browser/actions/workspaceActions'; </ins> export const openWindowCommand = (accessor: ServicesAccessor, toOpen: IWindowOpenable[], options?: IOpenWindowOptions) => { if (Array.isArray(toOpen)) {

Steps: multi root workspace with 2-3 folders right click into empty space below last folder select "Remove Folder from Workspace" nothing happens //cc
I guess this should remove the last workspace folder.
Not sure, if you invoke this command from F1 list, you get a picker asking which folder to remove. We could do the same here.
Sometimes the empty area takes the last workspace folder as context and sometimes not. So we should be consistent and check what other actions do on the empty area. Maybe the only exception is actually drag and drop, which on drop on empty area drops to the last workspace folder.
! context menu of empty area should be something like this.
! and also change this icons when there is no folder selected.
works fine, but "Open Folder Settings" does not bring up a picker, should it?


Question: const debugCategory = nls.localize('debugCategory', "Debug"); <del> const startDebugDescriptor = new SyncActionDescriptor(StartAction, StartAction.ID, StartAction.LABEL, { primary: KeyCode.F5 }, CONTEXT_IN_DEBUG_MODE.toNegated()); function startDebugHandler(accessor, args): Promise<void> { const notificationService = accessor.get(INotificationService); const instantiationService = accessor.get(IInstantiationService); const lifecycleService = accessor.get(ILifecycleService); return Promise.resolve(lifecycleService.when(LifecyclePhase.Ready).then(() => { const actionInstance = instantiationService.createInstance(startDebugDescriptor.syncDescriptor); try { // don't run the action when not enabled if (!actionInstance.enabled) { actionInstance.dispose(); return void 0; } const from = args && args.from || 'keybinding'; if (args) { delete args.from; } return Promise.resolve(actionInstance.run(args, { from })).then(() => { actionInstance.dispose(); }, err => { actionInstance.dispose(); return Promise.reject(err); }); } catch (err) { actionInstance.dispose(); return Promise.reject(err); } })).then(void 0, err => notificationService.error(err)); } KeybindingsRegistry.registerCommandAndKeybindingRule({ id: StartAction.ID, weight: KeybindingWeight.WorkbenchContrib, when: CONTEXT_IN_DEBUG_MODE.toNegated(), primary: KeyCode.F5, handler: startDebugHandler }); MenuRegistry.addCommand({ id: StartAction.ID, title: StartAction.LABEL, category: debugCategory }); </del> <ins> registry.registerWorkbenchAction(new SyncActionDescriptor(StartAction, StartAction.ID, StartAction.LABEL, { primary: KeyCode.F5 }), 'Debug: Start Debugging', debugCategory); </ins> registry.registerWorkbenchAction(new SyncActionDescriptor(StepOverAction, StepOverAction.ID, StepOverAction.LABEL, { primary: KeyCode.F10 }, CONTEXT_IN_DEBUG_MODE), 'Debug: Step Over', debugCategory); registry.registerWorkbenchAction(new SyncActionDescriptor(StepIntoAction, StepIntoAction.ID, StepIntoAction.LABEL, { primary: KeyCode.F11 }, CONTEXT_IN_DEBUG_MODE, KeybindingWeight.WorkbenchContrib + 1), 'Debug: Step Into', debugCategory); registry.registerWorkbenchAction(new SyncActionDescriptor(StepOutAction, StepOutAction.ID, StepOutAction.LABEL, { primary: KeyMod.Shift | KeyCode.F11 }, CONTEXT_IN_DEBUG_MODE), 'Debug: Step Out', debugCategory);

Somehow I missed the change in the and only now found it out. What I do not udnerstand is why we need all this code? I think this handler should be removed and the action should be called like it was done previously. Code pointer: It would be great if we could tackle this in December. Thanks
The reason for this code change was that creates a handler for command that passes no arguments to the action: So instead I used with a handler that would forward the argument. It looks like there are other debug commands registered in this way in , so I think moving the code for startDebug there makes sense. The handlers there are shorter and less generic, I'll see if rewriting the startDebug one that way causes any issues
what you need is calling the start debug with a configuration, and I believe we already have a way for doing this. can you please provide a pointer to where you are already calling start debug with a configuration. are you calling start debug from the main side or where from exactly? I can also look into this. You can just let me know how to verify that I did not break your scenario.
The extension API's implementation passes a debug configuration to the debug service's startDebugging here:
I'm trying to start debugging from the process explorer. Since it's a separate browser window, it doesn't have access to the debug workbench service, and it's also not an extension, so it can't leverage the extension API for starting debugging. Currently, the process explorer window sends an IPC message back to the issue service in the main process. This then sends an IPC message to the main renderer process to run the debug start command: The path is also used by the native menu to trigger commands from the main process.
ok got it. So the best way it seems is to what you have done going via the action. Can you try to clean up the handler. And if that does not work I can look into an alternative solution.
Sure, I'll work on cleaning up the handler today


Question: } }); <ins> // Hide when the window loses focus this._register(dom.addDisposableListener(window, 'blur', () => this.dispose())); </ins> const rowElement = $('div.hover-row.markdown-hover'); const contentsElement = $('div.hover-contents'); if (typeof options.content === 'string') {

On Windows: something with a rich hover in a tree view, like an extension or an item in the activity bar +tab off the window back to VS Code the hover is still there and stays around around until you hover something else with a rich hover, or click on it and hit escape


Question: } } return cb(undefined); <del> }); </del> <ins> }, false); </ins> this._standardLinkProviders.push(validatedProvider); }

Logging errors from the file service I notice that the terminal seems to stat the terminal prompt multiple times: ! Notice the at the end of the file path.
When you hover a line in the terminal links are resolved, one of the link providers gets confirmation on whether it's a file or directory and gives a high confidence link (underline shows when you hover without cmd) and on macOS we treat as a valid path character. This is how it's always worked. but we could cache this stat result with a TTL (10s?) so it doesn't spam so many stat calls and will be able to return the link faster on successive hovers.


Question: : this.tokenizeDocument(input, config, engine); const env: RenderEnv = { <del> containingImages: [], </del> <ins> containingImages: new Set<string>(), </ins> currentDocument: typeof input === 'string' ? undefined : input.uri, resourceProvider, };


Question: } } <ins> // Accessibility navigation commands should only be enabled on windows since they are tuned to what NVDA expects export class CursorWordAccessibilityLeft extends WordLeftCommand { constructor() { super({ inSelectionMode: false, wordNavigationType: WordNavigationType.WordAccessibility, id: 'cursorWordAccessibilityLeft', precondition: undefined }); } protected override _move(wordCharacterClassifier: WordCharacterClassifier, model: ITextModel, position: Position, wordNavigationType: WordNavigationType, hasMulticursor: boolean): Position { return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue, wordCharacterClassifier.intlSegmenterLocales), model, position, wordNavigationType, hasMulticursor); } } export class CursorWordAccessibilityLeftSelect extends WordLeftCommand { constructor() { super({ inSelectionMode: true, wordNavigationType: WordNavigationType.WordAccessibility, id: 'cursorWordAccessibilityLeftSelect', precondition: undefined }); } protected override _move(wordCharacterClassifier: WordCharacterClassifier, model: ITextModel, position: Position, wordNavigationType: WordNavigationType, hasMulticursor: boolean): Position { return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue, wordCharacterClassifier.intlSegmenterLocales), model, position, wordNavigationType, hasMulticursor); } } </ins> export class CursorWordStartRight extends WordRightCommand { constructor() { super({

Type: <bBug</bCC [I cannot easily find my authored issue so I am creating a new] Ctrl+LeftArrow and Ctrl+RightArrow does not work in the Output View (Ctrl+Shift+U) area. This happens on Windows. This means screen reader users cannot navigate word by word within the output view. Ctrl+Shift+U to focus in the Output View Choose any output (e.g., terminal) if you can navigate word by word via Ctrl+LeftArrow or Ctrl+RightArrow VS Code version: Code - Insiders 1.92.0-insider (, 2024-07-12T05:08:08.550Z) OS version: WindowsNT x64 10.0. Modes: <details<summarySystem Info</summary </details<details<summaryExtensions (125)</summaryExtensionVersion ------ vscode-openapi4.27.0 zotenote1.0.1 android-dev-ext1.4.0 aiprm-lang0.0.2 Bookmarks13.5.0 openscad1.2.2 spellright3.0.134 zoterolatex0.4.1 mermaid-markdown-syntax-highlighting1.6.0 external-pdf1.2.0 doxdocgen1.4.0 vscode-markdownlint0.53.0 vscode-eslint3.0.10 vscode-quick-select0.2.9 vscode-deno3.38.0 gitlens14.6.1 EditorConfig0.16.4 prettier-vscode10.1.0 figma-vscode-extension0.3.5 vscode-firefox-debug2.9.10 shell-format7.2.5 vscode-google-translate1.4.13 codespaces1.17.1 copilot1.213.0 copilot-chat0.18. remotehub0.62.0 vscode-github-actions0.26.2 vscode-pull-request-github0.93.


Question: } } <ins> // Accessibility navigation commands should only be enabled on windows since they are tuned to what NVDA expects export class CursorWordAccessibilityLeft extends WordLeftCommand { constructor() { super({ inSelectionMode: false, wordNavigationType: WordNavigationType.WordAccessibility, id: 'cursorWordAccessibilityLeft', precondition: undefined }); } protected override _move(wordCharacterClassifier: WordCharacterClassifier, model: ITextModel, position: Position, wordNavigationType: WordNavigationType, hasMulticursor: boolean): Position { return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue, wordCharacterClassifier.intlSegmenterLocales), model, position, wordNavigationType, hasMulticursor); } } export class CursorWordAccessibilityLeftSelect extends WordLeftCommand { constructor() { super({ inSelectionMode: true, wordNavigationType: WordNavigationType.WordAccessibility, id: 'cursorWordAccessibilityLeftSelect', precondition: undefined }); } protected override _move(wordCharacterClassifier: WordCharacterClassifier, model: ITextModel, position: Position, wordNavigationType: WordNavigationType, hasMulticursor: boolean): Position { return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue, wordCharacterClassifier.intlSegmenterLocales), model, position, wordNavigationType, hasMulticursor); } } </ins> export class CursorWordStartRight extends WordRightCommand { constructor() { super({

cloudcode2.14.0 overleaf-workshop0.13.0 cslpreview0.2.2 path-autocomplete1.25.0 latex-workshop10.1.0 lilypond-syntax0.1.1 scheme0.2.0 better-cpp-syntax1.17.2 commitlint2.6.0 language-julia1.90.1 google-search0.0.1 vscode-lua-format1.3.8 lilypond-formatter0.2.3 lilypond-pdf-preview0.2.8 lilypond-snippets0.1.1 vslilypond1.7.3 language-matlab1.2.4 zotero0.1.11 git-graph1.30.0 azure-dev0.8.3 vscode-azureappservice0.25.2 vscode-azurecontainerapps0.6.1 vscode-azurefunctions1.15.1 vscode-azureresourcegroups0.8.3 vscode-azurestaticwebapps0.12.2 vscode-azurestorage0.16.0 vscode-azurevirtualmachines0.6.5 vscode-cosmosdb0.22.0 vscode-docker1.29.1 vscode-edge-devtools2.1.5 black-formatter2024.3. debugpy2024.9. flake82023.13. isort2023.13. python2024.11. vscode-pylance2024.7.1 jupyter2024.6. jupyter-keymap1.1.2 jupyter-renderers1.0.18 vscode-jupyter-cell-tags0.1.8 vscode-jupyter-slideshow0.1.5 remote-containers0.377.0 remote-ssh0.113. remote-ssh-edit0.86.0 remote-wsl0.81.8 vscode-remote-extensionpack0.25.0 azure-account0.12.0 azure-repos0.38.0 cmake-tools1.18.43 cpptools1.21.0 cpptools-extension-pack1.3.0 js-debug-nightly2024.7.517 powershell2024.3.2 remote-explorer0.5. remote-repositories0.40.0 remote-server1.6.


Question: } } <ins> // Accessibility navigation commands should only be enabled on windows since they are tuned to what NVDA expects export class CursorWordAccessibilityLeft extends WordLeftCommand { constructor() { super({ inSelectionMode: false, wordNavigationType: WordNavigationType.WordAccessibility, id: 'cursorWordAccessibilityLeft', precondition: undefined }); } protected override _move(wordCharacterClassifier: WordCharacterClassifier, model: ITextModel, position: Position, wordNavigationType: WordNavigationType, hasMulticursor: boolean): Position { return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue, wordCharacterClassifier.intlSegmenterLocales), model, position, wordNavigationType, hasMulticursor); } } export class CursorWordAccessibilityLeftSelect extends WordLeftCommand { constructor() { super({ inSelectionMode: true, wordNavigationType: WordNavigationType.WordAccessibility, id: 'cursorWordAccessibilityLeftSelect', precondition: undefined }); } protected override _move(wordCharacterClassifier: WordCharacterClassifier, model: ITextModel, position: Position, wordNavigationType: WordNavigationType, hasMulticursor: boolean): Position { return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue, wordCharacterClassifier.intlSegmenterLocales), model, position, wordNavigationType, hasMulticursor); } } </ins> export class CursorWordStartRight extends WordRightCommand { constructor() { super({

vscode-github-issue-notebooks0.0.130 vscode-node-azure-pack1.2.0 vscode-selfhost-test-provider0.3.25 vscode-serial-monitor0.12.0 vscode-speech0.10.0 vscode-speech-language-pack-ko-kr0.4.0 vsliveshare1.0.5932 windows-ai-studio0.3.3 autodocstring0.6.1 pandocciter0.10.4 publisher1.1.3 shiny1.0.0 shinyuieditor0.5.0 quarto1.113.0 r-debugger0.5.4 java1.32.0 vscode-xml0.27.1 vscode-yaml1.14.0 r2.8.4 multi-command1.6.0 AudioQ0.0.2 vscode-deepl1.1.1 abc-music0.4.0 lua3.9.3 latex-utilities0.4.14 cmake0.0.17 vscode-terminal-here0.2.4 windows-terminal0.7.0 errorlens3.16.0 intellicode-api-usage-examples0.2.8 vscodeintellicode1.2.30 vscode-conventional-commits1.25.0 vscode-arduino0.6. vscode-java-debug0.58.0 vscode-java-dependency0.23.7 vscode-java-pack0.27.0 vscode-java-test0.41.1 vscode-maven0.44.0 zotero-cite0.8.6 markdown-all-in-one3.6.2 grammarly0.25.0 (1 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
do you know why this isn't currently supported?
It seems to work for me in Mac, are you seeing it otherwise?
It does work for me, although sometimes with the screen reader enabled, it's reading the word then a whole chunk of text. I'll try on windows.
It’s not working in Windows.
Can reproduce on windows. I see that this is happening because there's a part of the when clause for and of for windows
Removing that from the clause fixes it. Looks like that condition was to fix this can you try removing that condition from the clause and seeing if you experience any consequences of doing so?


Question: stepElement.classList.add('expanded'); stepElement.setAttribute('aria-expanded', 'true'); <del> this.buildMediaComponent(id); </del> <ins> this.buildMediaComponent(id, true); </ins> this.gettingStartedService.progressByEvent('stepSelected:' + id); } else { this.editorInput.selectedStep = undefined;

Type: <bBug</bThank you for all the improvements to walkthroughs in the latest release, however I noticed that the following issue started popping up after the changes to "save" your place in a walkthrough when changing tabs. When you have a walkthrough open: to a different tab in the same editor window back to the walkthrough that the media on the right side of the walkthrough is no longer present steps 1. and 2., note that the media has reappeared. If you repeat steps 1. and 2. once more, the media will dissapear again. This process can be repeated any number of times to "toggle" the media's visibility. Jumping between steps will also cause the media to reappear.


Question: stepElement.classList.add('expanded'); stepElement.setAttribute('aria-expanded', 'true'); <del> this.buildMediaComponent(id); </del> <ins> this.buildMediaComponent(id, true); </ins> this.gettingStartedService.progressByEvent('stepSelected:' + id); } else { this.editorInput.selectedStep = undefined;

Screen recording: VS Code version: Code 1.87.0 (Universal) (, 2024-02-27T23:42:56.944Z) OS version: Darwin arm64 22.6.0 Modes: <details<summarySystem Info</summary </details<details<summaryExtensions (34)</summaryExtensionVersion ------ vscode-markdownlint0.54.0 vscode-eslint2.4.4 gitlens14.8.2 EditorConfig0.16.4 prettier-vscode10.1.0 go0.41.1 vscode-drawio1.6.6 debugpy2024.2.0 isort2023.10.1 python2024.2.1 vscode-pylance2024.2.3 jupyter2024.2.0 jupyter-keymap1.1.2 jupyter-renderers1.0.17 vscode-jupyter-cell-tags0.1.8 vscode-jupyter-slideshow0.1.5 remote-containers0.348.0 makefile-tools0.8.22 vsliveshare1.0.5918 ansible2.13.148 java1.28.1 vscode-yaml1.14.0 sonarlint-vscode4.3.0 code-spell-checker3.0.1 intellicode-api-usage-examples0.2.8 vscodeintellicode1.2.30 vscode-java-debug0.56.2 vscode-java-dependency0.23.5 vscode-java-pack0.25.15 vscode-java-test0.40.1 vscode-maven0.44.0 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --


Question: this.onActiveTabChanged(() => isRemote ? this._updateRemoteState() : this._updateLocalState()); this.onActiveInstanceChanged(() => isRemote ? this._updateRemoteState() : this._updateLocalState()); this.onInstancesChanged(() => isRemote ? this._updateRemoteState() : this._updateLocalState()); <ins> // The state must be updated when the terminal is relaunched, otherwise the persistent // terminal ID will be stale and the process will be leaked. this.onInstanceProcessIdReady(() => isRemote ? this._updateRemoteState() : this._updateLocalState()); </ins> } public setNativeWindowsDelegate(delegate: ITerminalNativeWindowsDelegate): void {

We should filter out the terminal if this is undefined, otherwise bad bugs like could happen where we restore a terminal into the wrong window: The chances of this happening are pretty slim so not doing this in Feb.
Falling back to 0 as it has been seems to work well, if we need to handle this on reconnect we will have a persistentProcessId of 0 which isn't valid anyway.


Question: *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <ins> import { Queue } from 'vs/base/common/async'; import { IStringDictionary } from 'vs/base/common/collections'; import { Schemas } from 'vs/base/common/network'; import { IProcessEnvironment } from 'vs/base/common/platform'; import * as Types from 'vs/base/common/types'; </ins> import { URI as uri } from 'vs/base/common/uri'; <ins> import { ICodeEditor, isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser'; </ins> import * as nls from 'vs/nls'; <del> import * as Types from 'vs/base/common/types'; import { Schemas } from 'vs/base/common/network'; import { SideBySideEditor, EditorResourceAccessor } from 'vs/workbench/common/editor'; import { IStringDictionary } from 'vs/base/common/collections'; import { IConfigurationService, IConfigurationOverrides, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; </del> import { ICommandService } from 'vs/platform/commands/common/commands'; <del> import { IWorkspaceFolder, IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { AbstractVariableResolverService } from 'vs/workbench/services/configurationResolver/common/variableResolver'; import { ICodeEditor, isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser'; import { IQuickInputService, IInputOptions, IQuickPickItem, IPickOptions } from 'vs/platform/quickinput/common/quickInput'; import { ConfiguredInput } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; import { IProcessEnvironment } from 'vs/base/common/platform'; </del> <ins> import { ConfigurationTarget, IConfigurationOverrides, IConfigurationService } from 'vs/platform/configuration/common/configuration'; </ins> import { ILabelService } from 'vs/platform/label/common/label'; <del> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </del> <ins> import { IInputOptions, IPickOptions, IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; import { IWorkspaceContextService, IWorkspaceFolder, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { EditorResourceAccessor, SideBySideEditor } from 'vs/workbench/common/editor'; import { ConfiguredInput } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; import { AbstractVariableResolverService } from 'vs/workbench/services/configurationResolver/common/variableResolver'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; </ins> import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; <ins> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </ins> export abstract class BaseConfigurationResolverService extends AbstractVariableResolverService { static readonly INPUT_OR_COMMAND_VARIABLES_PATTERN = /${((input|command):(.*?))}/g; <ins> private userInputAccessQueue = new Queue<string | IQuickPickItem | undefined>(); </ins> constructor( context: { getAppRoot: () => string | undefined;

<!-- 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.63.2 OS Version: macOS 12.1 (ARM64) I can't get more than two launch configurations to run at the same time. I can run the rest of the configurations afterwards and everything works (debugging, etc.). StopAll will also only close the two configs that were successfully launched. I haven't found any mention in the documentation that this is limited to two launch configurations. I've only seen that two are used in every explanation or tutorial about this feature. Steps to Reproduce: multiple launch configurations in multi-root workspace inside of project roots. launch configurations to compounds in .code-workspace file debugging two of the many compound configurations will run Examples:
VS Code imposes no limit on number of launch configurations in compound config. I've verified this with this simple example project (which only relies on built-in VS Code features and not third-party extensions): unpack zip file in VS Code use "Open Workspace from file" to open workspace file inside folder switch to debug viewlet in debug config dropdown select and run "4 Debug Session" Observe: 4 debug sessions: <img width="1384" alt="CleanShot 2022-01-26 at 11 45 23 src="https://user-"Maybe there is a limit on dotnet/coreclr?
Thank you for taking a look at this After inspecting your configuration and some research in my own project I was able to isolate the culprit. The problem arises when you try to make use of inputs in the launch configuration.


Question: *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <ins> import { Queue } from 'vs/base/common/async'; import { IStringDictionary } from 'vs/base/common/collections'; import { Schemas } from 'vs/base/common/network'; import { IProcessEnvironment } from 'vs/base/common/platform'; import * as Types from 'vs/base/common/types'; </ins> import { URI as uri } from 'vs/base/common/uri'; <ins> import { ICodeEditor, isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser'; </ins> import * as nls from 'vs/nls'; <del> import * as Types from 'vs/base/common/types'; import { Schemas } from 'vs/base/common/network'; import { SideBySideEditor, EditorResourceAccessor } from 'vs/workbench/common/editor'; import { IStringDictionary } from 'vs/base/common/collections'; import { IConfigurationService, IConfigurationOverrides, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; </del> import { ICommandService } from 'vs/platform/commands/common/commands'; <del> import { IWorkspaceFolder, IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { AbstractVariableResolverService } from 'vs/workbench/services/configurationResolver/common/variableResolver'; import { ICodeEditor, isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser'; import { IQuickInputService, IInputOptions, IQuickPickItem, IPickOptions } from 'vs/platform/quickinput/common/quickInput'; import { ConfiguredInput } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; import { IProcessEnvironment } from 'vs/base/common/platform'; </del> <ins> import { ConfigurationTarget, IConfigurationOverrides, IConfigurationService } from 'vs/platform/configuration/common/configuration'; </ins> import { ILabelService } from 'vs/platform/label/common/label'; <del> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </del> <ins> import { IInputOptions, IPickOptions, IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; import { IWorkspaceContextService, IWorkspaceFolder, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { EditorResourceAccessor, SideBySideEditor } from 'vs/workbench/common/editor'; import { ConfiguredInput } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; import { AbstractVariableResolverService } from 'vs/workbench/services/configurationResolver/common/variableResolver'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; </ins> import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; <ins> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </ins> export abstract class BaseConfigurationResolverService extends AbstractVariableResolverService { static readonly INPUT_OR_COMMAND_VARIABLES_PATTERN = /${((input|command):(.*?))}/g; <ins> private userInputAccessQueue = new Queue<string | IQuickPickItem | undefined>(); </ins> constructor( context: { getAppRoot: () => string | undefined;

I created a demo for download, the process is the same as you described above.
thanks for the additional info. I was able to create an even smaller repro without a multi-folder workspace: unpack zip file in VS Code open the "compound" folder switch to debug viewlet in debug config dropdown select and run "Compound" Observe: only one debug session starts
Is it possible to implement the input that allows blocking another input request until the first input has completed? Latter quick pick also cancels former ones so it needs to be fixed as well.
Do you own the configuration resolver Is my solution correct or should the service guarantee correct behavior when calling into it multiple times simultaneously?
your solution looks good. The configuration resolver service doesn't currently make any guarantees about what will happen if it's called into multiple time simultaneously. I would also be fine with the change being in the configuration resolver service though. We can change it's behavior so that it does make that guarantee.
Yes, making the fix in the configuration resolver service sounds better.
This fix doesn't fully cover our scenario (tested in latest insiders). This fixes case, and yet we also prompt for input or quick pick in , which is not covered in this PR. Is it appropriate to wait for as well?
Good point. Yeah, I think that makes sense.
I guess we'll need Queue's for and Would you like to make the changes, or should I work on this?
I can take care of it
This gets a bit weird. Since one launch config can be calling into the variable resolver (the first fix) while the second is calling the extension config provider, we also need a queue that orchestrates those two things. Easiest fix is to start launch configs one at a time instead of kicking them off in parallel: and I'm not sure what other impacts that could have. Perf to some extent, probably. So I wonder whether we would ever consider queueing calls into the quick pick control so that invoking the quick pick while it is already visible would wait instead of cancelling the first one as it does currently. Example of what I'm talking about (but in my real situation it's an extension competing with code in core): This extension code only shows one input box, while we could have the second wait for the first to complete. This could possibly be a breaking change for some extensions though, so it could be enabled with a flag.


Question: *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <ins> import { Queue } from 'vs/base/common/async'; import { IStringDictionary } from 'vs/base/common/collections'; import { Schemas } from 'vs/base/common/network'; import { IProcessEnvironment } from 'vs/base/common/platform'; import * as Types from 'vs/base/common/types'; </ins> import { URI as uri } from 'vs/base/common/uri'; <ins> import { ICodeEditor, isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser'; </ins> import * as nls from 'vs/nls'; <del> import * as Types from 'vs/base/common/types'; import { Schemas } from 'vs/base/common/network'; import { SideBySideEditor, EditorResourceAccessor } from 'vs/workbench/common/editor'; import { IStringDictionary } from 'vs/base/common/collections'; import { IConfigurationService, IConfigurationOverrides, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; </del> import { ICommandService } from 'vs/platform/commands/common/commands'; <del> import { IWorkspaceFolder, IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { AbstractVariableResolverService } from 'vs/workbench/services/configurationResolver/common/variableResolver'; import { ICodeEditor, isCodeEditor, isDiffEditor } from 'vs/editor/browser/editorBrowser'; import { IQuickInputService, IInputOptions, IQuickPickItem, IPickOptions } from 'vs/platform/quickinput/common/quickInput'; import { ConfiguredInput } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; import { IProcessEnvironment } from 'vs/base/common/platform'; </del> <ins> import { ConfigurationTarget, IConfigurationOverrides, IConfigurationService } from 'vs/platform/configuration/common/configuration'; </ins> import { ILabelService } from 'vs/platform/label/common/label'; <del> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </del> <ins> import { IInputOptions, IPickOptions, IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; import { IWorkspaceContextService, IWorkspaceFolder, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { EditorResourceAccessor, SideBySideEditor } from 'vs/workbench/common/editor'; import { ConfiguredInput } from 'vs/workbench/services/configurationResolver/common/configurationResolver'; import { AbstractVariableResolverService } from 'vs/workbench/services/configurationResolver/common/variableResolver'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; </ins> import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; <ins> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </ins> export abstract class BaseConfigurationResolverService extends AbstractVariableResolverService { static readonly INPUT_OR_COMMAND_VARIABLES_PATTERN = /${((input|command):(.*?))}/g; <ins> private userInputAccessQueue = new Queue<string | IQuickPickItem | undefined>(); </ins> constructor( context: { getAppRoot: () => string | undefined;

As an easy workaround, I can put a queue around calling into the vscode variable resolver and calling an extension debug config provider. But, putting a queue around two unrelated pieces of code seems to say that I'm solving the problem at the wrong level.
Or maybe make them the same level by moving the resolve queue to
Just to be clear. The two callers of the are in two different places right (core and extension)?
Right
Ok I've not heard of any feature request like this but feel free to open one... I wonder if maybe instead Core could have concept of "important" quick picks that can't be stomped over by extensions and instead the extension calls wait until Core is done. Then we don't need any more API
It can also go the other way. The problem is just that there are two async processes that have to run and show a quick input, and we need both of them to complete and not to get canceled by the other. Filed I'll go with a workaround for now, so I'm not blocked, just figured I'd start the discussion
Sorry for the late reply. I tested this today and it works for our scenario. Thanks for the quick fixes!


Question: // noop } <ins> override setVisible(visible: boolean): void { this.viewVisibleContextKey.set(visible); super.setVisible(visible); } </ins> @memoize private get fileCopiedContextKey(): IContextKey<boolean> { return FileCopiedContext.bindTo(this.contextKeyService); }

open explorer select a file press and to copy paste a file in place :bug: nothing happens, in the past I would get a copy of the file
Hmmm. I cannot repro this and am able to copy and paste. Do you have any custom keybindings? What is your setting?
It's the default, this is from the keybindings log
Hmmm I wonder what has happening with your keybindings. Here's mine triggering the explorer specific ones with the proper when clauses. Is your explorer in a non-default position (i.e. not the activity bar)
This gets more and more interesting... The keybinding is there and not (re)configured but it looks like something is wrong with context keys. The seems AWOL. Maybe that's because I moved the explorer around very much last endgame? <img width="2819" alt="Screenshot 2023-03-01 at 16 55 16" src="https://user-"
Think I found the bug. the folders view to the right sidebar the remaining explorer view container in the activity bar Can't copy and past in the explorer anymore
I know this is very early into the next release cycle, but could this be released in a patch to stable VSCode? I have been bitten by this in stable VSCode after the February 2023 update, by dragging Explorer over to the secondary sidebar. Or is there a workaround to restore functioning of these keys, other than resetting the user profile altogether? I've tried dragging the Explorer menu back, and also right-clicking and selecting "Reset Location". Neither seems to "restore" the functionality of these keys. This affects any command using in , such as deleting a file with the Delete key (hopefully people find this issue instead of creating a new one for every such broken key). The workaround I've managed to apply is to manually remove from every expression possible, which may have side effects, but it works in a pinch. Copy all the keybindings below (expand for details, grab bindings between the comments) into your to fix this in a pinch. <details</summary</details
Does the command in the command palette not fix it for you? This will reset all your views to their default positions.
My keybindings workaround bypassed the issue on my home computer yesterday.


Question: // noop } <ins> override setVisible(visible: boolean): void { this.viewVisibleContextKey.set(visible); super.setVisible(visible); } </ins> @memoize private get fileCopiedContextKey(): IContextKey<boolean> { return FileCopiedContext.bindTo(this.contextKeyService); }

Now I'm at work (both are Windows machines, VSCode up to date), and I went to try your approach. However, I have a lot of menus in my secondary sidebar, so I didn't want to on my main profile, so I did the following: Ensure my workaround from before is commented out Export the profile as Import the profile Switch to that profile Verify that the key doesn't work First, try the less invasive, right-click on Explorer button in secondary sidebar and click key, and others, works again, even when putting the Explorer back in the secondary sidebar Curiously, switching back to the profile, the key, and others, works again, even when putting the Explorer back in the secondary sidebar Never had to go the nuclear option and So, some funny business related to one of the steps above, probably the settings profile shuffle, restored basic functionality of those keys, without having to manually tweak the expressions as before, and without having to go nuclear and . It's possible to work around this with some UI shuffling, but your mileage may vary. My initial request to backport the patch to stable VSCode is not so serious since there are a few workarounds documented here. Also, thanks for the quick work in the PR! I'm looking forward for this behavior to stabilize in future versions, since secondary sidebar Explorer view (without the compromise of moving the whole primary sidebar over) is great!


Question: // noop } <ins> override setVisible(visible: boolean): void { this.viewVisibleContextKey.set(visible); super.setVisible(visible); } </ins> @memoize private get fileCopiedContextKey(): IContextKey<boolean> { return FileCopiedContext.bindTo(this.contextKeyService); }

mac select an entry in the explorer press to trigger rename the file is being opened, no rename log
tested on windows and this doesn't work for me - not sure if it's necessarily platform specific
Steps to verify explorer that keybindings still work for the explorer
Mac Pro (Intel 2019) user here. I also have the same problem. Before pressing can rename files but now it just navigates to the file editor window.
This will be fixed in the next release which comes out sometime this week. In the meantime -should fix it for you.
Thank you for prompt reply. Yes, it works fine now!!


Question: #!/bin/sh VSCODE_GIT_ASKPASS_PIPE=`mktemp` <del> ELECTRON_RUN_AS_NODE="1" VSCODE_GIT_ASKPASS_PIPE="$VSCODE_GIT_ASKPASS_PIPE" "$VSCODE_GIT_ASKPASS_NODE" "$VSCODE_GIT_ASKPASS_EXTRA_ARGS" "$VSCODE_GIT_ASKPASS_MAIN" $* </del> <ins> ELECTRON_RUN_AS_NODE="1" VSCODE_GIT_ASKPASS_PIPE="$VSCODE_GIT_ASKPASS_PIPE" "$VSCODE_GIT_ASKPASS_NODE" "$VSCODE_GIT_ASKPASS_MAIN" $VSCODE_GIT_ASKPASS_EXTRA_ARGS $* </ins> cat $VSCODE_GIT_ASKPASS_PIPE rm $VSCODE_GIT_ASKPASS_PIPE

Copied from My workaround is export VSCODEGITASKPASSEXTRAARGS="--title=foobar" but the proper bugfix should happen in VSCode's GIT_ASKPASS implementation.
I experience the same problem, from the moment been released. Working through remote ssh the git processes stay open, without anything happening.
Still facing this issue on WSL.
Will be fixed in upcoming 1.62.2. Meanwhile a workaround is to and then manually
I can confirm that this is fixed after updating to 1.62.2 ().


Question: cksOverlay.push(['galleryExtensionIsPreReleaseVersion', !!extension.gallery?.properties.isPreReleaseVersion]); cksOverlay.push(['extensionHasPreReleaseVersion', extension.hasPreReleaseVersion]); cksOverlay.push(['extensionHasReleaseVersion', extension.hasReleaseVersion]); <ins> cksOverlay.push(['isExtensionPinned', extension.pinned]); </ins> const [colorThemes, fileIconThemes, productIconThemes] = await Promise.all([workbenchThemeService.getColorThemes(), workbenchThemeService.getFileIconThemes(), workbenchThemeService.getProductIconThemes()]); cksOverlay.push(['extensionHasColorThemes', colorThemes.some(theme => isThemeFromExtension(theme, extension))]);

<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --I saw and created this issue anyway because I think that issue is a) too old b) has too many other things going on. <!-- Describe the feature you'd like. --For me, personally, I'd like a simple way to enable/disable automatic extension updates per extension. I really care about updates for many of them and want to read the changelog before I update but for some, like Copilot, who get several updates a day, I really just want to always be on the latest. Copying section 7 from the above: Users could opt-out of Auto-Update for specific extensions, with toggle button next to Disable/Uninstall in Extensions Sidebar (under gear icon menu) and next to those buttons in Extensions Detail Page. This could allow users to stick with previous versions before new high-risk permissions became required This could allow avoiding updating to problematic versions of extensions until issues are resolved. This could allow users to manually review/approve updates based on reviews and changelog for higher (security or reliability) risk extensions This could be controlled per extension without disabling globally as may be desired by default for most extensions. Can be set per extension to "Default" vs Auto-Update vs. Disable Automates, like with Firefox, with Default behavior controlled through global setting. Could provide Undo Update button or choose from version history (like with Chrome/Firefox extension stores) on extension details page, to enable rollback to previous version after an update causes issues, instead of just disabling until if/when ever fixed.
Have you tried to select specific version for extension? This should effectively force version and prevent updates.
No, would that still show if there was an update available?
It should show. Also September 22 update had few updates to including . Check it out
Supported auto updating options per extension/publisher <img width="550" alt="image" src=""This is enabled when auto update mode is disabled or set to (new config)


Question: message += 'n'; } } <del> const exitThisDialogHint = localize('exit', 'nnExit this dialog (Escape).'); </del> <ins> const verbose = this._configurationService.getValue(provider.verbositySettingKey); const exitThisDialogHint = verbose && !provider.options.positionBottom ? localize('exit', 'nnExit this dialog (Escape).') : ''; </ins> this._currentContent = message + provider.provideContent() + readMoreLink + disableHelpHint + exitThisDialogHint; this._updateContextKeys(provider, true);

Type: <bBug</bterminal in editor area. and hit enter. and hit enter alt+F2 to open accessible view ctrl+shift+O to open symbol list and select and hit enter Note: the focus doesn't move to VS Code version: Code - Insiders 1.83.0-insider (, 2023-09-25T10:41:26.295Z) OS version: WindowsNT x64 10.0. Modes: <details<summarySystem Info</summary </details<details<summaryExtensions (91)</summaryExtensionVersion ------ android-dev-ext1.3.2 aiprm-lang0.0.2 Bookmarks13.4.1 openscad1.2.1 spellright3.0.118 zoterolatex0.4.1 mermaid-markdown-syntax-highlighting1.5.2 doxdocgen1.4.0 vscode-markdownlint0.52.0 vscode-eslint2.4.2 vscode-quick-select0.2.9 vscode-deno3.23.1 gitlens14.3.0 EditorConfig0.16.4 prettier-vscode10.1.0 vscode-google-translate1.4.13 codespaces1.15.3 copilot1.115.437 copilot-chat0.8. remotehub0.60.0 vscode-github-actions0.26.2 vscode-pull-request-github0.72.0 overleaf-workshop0.2.4 cslpreview0.2.2 easy-snippet0.6.3 path-autocomplete1.25.0 latex-workshop9.14.0 lilypond-syntax0.1.1 scheme0.2.0 better-cpp-syntax1.17.2 google-search0.0.1 vscode-lua-format1.3.8 lilypond-formatter0.2.3 lilypond-pdf-preview0.2.8 lilypond-snippets0.1.1 vslilypond1.7.3 zotero0.1.10 git-graph1.30.0 vscode-docker1.26.1 black-formatter2023.4.1 flake82023.6.0 isort2023.11. python2023.16.0 vscode-pylance2023.9.20 jupyter2023.8.


Question: message += 'n'; } } <del> const exitThisDialogHint = localize('exit', 'nnExit this dialog (Escape).'); </del> <ins> const verbose = this._configurationService.getValue(provider.verbositySettingKey); const exitThisDialogHint = verbose && !provider.options.positionBottom ? localize('exit', 'nnExit this dialog (Escape).') : ''; </ins> this._currentContent = message + provider.provideContent() + readMoreLink + disableHelpHint + exitThisDialogHint; this._updateContextKeys(provider, true);

jupyter-keymap1.1.2 jupyter-renderers1.0.17 vscode-jupyter-cell-tags0.1.8 vscode-jupyter-slideshow0.1.5 remote-containers0.312.0 remote-ssh0.106.4 remote-ssh-edit0.86.0 remote-wsl0.81.4 vscode-remote-extensionpack0.24.0 azure-repos0.36.0 cmake-tools1.15.31 cpptools1.17.5 cpptools-extension-pack1.3.0 js-debug-nightly2023.9.2117 powershell2023.6.0 remote-repositories0.38.1 vscode-github-issue-notebooks0.0.129 vscode-selfhost-test-provider0.3.18 vscode-serial-monitor0.10.0 vsliveshare1.0.5883 autodocstring0.6.1 pandocciter0.10.3 shiny-python0.1.4 shinyuieditor0.4.3 quarto1.100.0 r-debugger0.5.4 java1.22.1 vscode-xml0.26.1 r2.8.1 multi-command1.6.0 vscode-deepl1.0.6 abc-music0.4.0 lua3.7.0 latex-utilities0.4.10 cmake0.0.17 errorlens3.13.0 intellicode-api-usage-examples0.2.8 vscodeintellicode1.2.30 vscode-arduino0.6.0 vscode-java-debug0.54.0 vscode-java-dependency0.23.1 vscode-java-pack0.25.14 vscode-java-test0.40.0 vscode-maven0.42.0 markdown-all-in-one3.5.1 grammarly0.22.1 (1 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Thanks for the report! Reproduces in panel terminals also
For step 5, after I select and hit enter, the cursor moves to the beginning of the line that contains , rather than after the prompt. Is that intended behaviour?


Question: } else if (path.backupPath) { emptyWindowsWithBackupsToRestore.push({ backupFolder: basename(path.backupPath), remoteAuthority: path.remoteAuthority }); } else { <del> emptyToOpen++; </del> <ins> openOneEmptyWindow = true; </ins> } }

Steps to Reproduce: to 1 window on a folder open the command line run = only the folder opens, but not an empty window I would expect here 2 windows to open, one is the folder and one the empty window since no argument was given to open any folder or file.


Question: <img src="${imagePath}"> <script> const vscode = acquireVsCodeApi(); <ins> vscode.postMessage({ type: 'ready', userAgent: window.navigator.userAgent }); </ins> const img = document.getElementsByTagName('img')[0]; img.addEventListener('load', () => { vscode.postMessage({ value: true }); }); img.addEventListener('error', () => { vscode.postMessage({ value: false }); }); </script>`); <del> const firstResponse = getMessage(webview); </del> <ins> const ready = getMessage(webview); if ((await ready).userAgent.indexOf('Firefox') >= 0) { // Skip on firefox web for now. // Firefox service workers never seem to get any 'fetch' requests here. Other browsers work fine return; } const firstResponse = await sendRecieveMessage(webview, { src: imagePath.toString() }); </ins> <del> assert.strictEqual((await firstResponse).value, true); </del> <ins> assert.strictEqual(firstResponse.value, true); </ins> }); test('webviews should have real view column after they are created, #56097', async () => {

They used to finish in 3m24s before - […]-5f82-0dbc-&t=-371d-5daa-d7a2-
I can confirm that tests started timing out after this commit - The first commit that is started happening is Checking what commits in between would have caused it. FYI
Assigning to as one of his commits has caused this timeout.
Mac seems to be passing pretty reliably now but now windows fails consistently on two tests Been adding a bunch of logging to investigate this. Here's the relevant new error: The service worker should be intercepting this request so it should never be going to the network at all here. Taking a look to see if I can figure out what is going on
Actually it's not windows specific: its Firefox specific. The windows browser tests just happen to be the only ones using Firefox Can reproduce on Mac too


Question: public goToFocused(): void { const lineNumbers = this._stickyScrollWidget.lineNumbers; this._disposeFocusStickyScrollStore(); <del> this._editor.revealPosition({ lineNumber: lineNumbers[this._focusedStickyElementIndex], column: 1 }); </del> <ins> this._revealPosition({ lineNumber: lineNumbers[this._focusedStickyElementIndex], column: 1 }); } private _revealPosition(position: IPosition): void { this._positionRevealed = true; this._editor.revealPosition(position); this._editor.setSelection(Range.fromPositions(position)); this._editor.focus(); </ins> } private _createClickLinkGesture(): IDisposable {

Testing a Markdown file with headers up to H3, enable Sticky Scroll and scroll up and down in the editor. Stick Scroll a header leve and press . Try to scroll up and down with the arrow keys. Unclear where the cursor focus is. Try typing, the editor doesn't have focus Focus should should probably go to the editor on the selected header. That is the behavior with breadcrumb navigation
This is the general behavior of Sticky Scroll and also reproduces if you select a level via the mouse
Verified on OSS


Question: } <del> public async createExtensionTerminal(location?: TerminalLocation | vscode.TerminalEditorLocationOptions | vscode.TerminalSplitLocationOptions, parentTerminal?: ExtHostTerminalIdentifier, iconPath?: TerminalIcon, color?: ThemeColor): Promise<number> { </del> <ins> public async createExtensionTerminal(location?: TerminalLocation | vscode.TerminalEditorLocationOptions | vscode.TerminalSplitLocationOptions, internalOptions?: ITerminalInternalOptions, parentTerminal?: ExtHostTerminalIdentifier, iconPath?: TerminalIcon, color?: ThemeColor): Promise<number> { </ins> if (typeof this._id !== 'string') { throw new Error('Terminal has already been created'); }

<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --When the user starts an extension defined terminal through the "Split Terminal" submenu of "New Terminal", the new terminal is always created in a new terminal tab, instead of a split. When the user opens a terminal through this menu, VS Code should override the field of the new terminal profile to make it split, as the user requested.
is this not what you're seeing or am I doing something wrong? !
Only when the custom terminal profile is created with . I have a terminal profile that is created with , that looks like this: This terminal profile is created like this:


Question: this.logService.trace(`Extension signature verification details for ${extension.identifier.id} ${extension.version}:n${sigError.output}`); } if (verificationStatus === ExtensionSignaturetErrorCode.PackageIsInvalidZip || verificationStatus === ExtensionSignaturetErrorCode.SignatureArchiveIsInvalidZip) { <ins> try { // Delete the downloaded vsix before throwing the error await this.delete(location); } catch (error) { this.logService.error(error); } </ins> throw new ExtensionManagementError(CorruptZipMessage, ExtensionManagementErrorCode.CorruptZip); } } finally {

Type: <bBug</bA corrupted file is stored in CachedExtensionVSIXs and never re-downloaded, preventing extension from being installed until the file is manually deleted. Repro: Attempt to install an extension while the Azure DevOps service is not available and returning errors. Result in this comment: The corrupted vsix contains the following HTML instead of zipped data ! Shared Output: VS Code version: Code 1.84.2 (, 2023-11-09T10:52:57.054Z) OS version: Darwin arm64 23.1.0 Modes: Connection to 'SSH: ox' could not be established Canceled <details<summarySystem Info</summary Connection to 'SSH: ox' could not be established Canceled </details<details<summaryExtensions (31)</summaryExtensionVersion ------ vscode-ron0.11.0 vscode-eslint2.4.2 prettier-vscode10.1.0 kotlin0.2.32 copilot1.139.0 copilot-chat0.10.2 copilot-labs0.17.1121 vscode-github-actions0.26.2 better-cpp-syntax1.17.2 vscode-peacock4.2.2 vscode-clangd0.1.25 membrane1.6.1 vscode-dotnet-runtime2.0.0 vscode-postgresql0.3.0 remote-containers0.321.0 remote-ssh0.107.1 remote-ssh-edit0.86.0 cpptools-extension-pack1.3.0 hexeditor1.9.12 makefile-tools0.7.0 remote-explorer0.4.1 proto0.0.4 vscode-yaml1.14.0 vscode-gitweblinks2.9.3 rust-analyzer0.3.1748 even-better-toml0.19.2 shellcheck0.35.0 es6-string-html2.12.1 vscode-lldb1.10.0 vim1.27.1 clang-format1.9.0 (2 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
cc who was looking into this in
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected.


Question: this.logService.trace(`Extension signature verification details for ${extension.identifier.id} ${extension.version}:n${sigError.output}`); } if (verificationStatus === ExtensionSignaturetErrorCode.PackageIsInvalidZip || verificationStatus === ExtensionSignaturetErrorCode.SignatureArchiveIsInvalidZip) { <ins> try { // Delete the downloaded vsix before throwing the error await this.delete(location); } catch (error) { this.logService.error(error); } </ins> throw new ExtensionManagementError(CorruptZipMessage, ExtensionManagementErrorCode.CorruptZip); } } finally {

If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
bumping to see if this issue is still occurring and if the fix has been verified!
It's somewhat fixed. You can try again and the second time it will work. But the error message that appears doesn't indicate that. perhaps it should retry at least once if the zip is corrupted before showing this error? Note the bottom right popup asking to manually download where a retry could've sufficed. <img width="1304" alt="Screenshot 2023-12-06 at 6 14 41 PM" src=""
Thanks for the feedback. This bug is to fix not to cache corrupted VSIXs and please validate that. Regarding trying again, I do not think we should be showing this as this might be random.
Verifying with a code review


Question: 'type': 'string', 'enum': ['default', 'short', 'medium', 'long'], 'enumDescriptions': [ <del> nls.localize('workbench.editor.labelFormat.default', "Show the name of the file. When tabs are enabled and two files have the same name in one group the distinguinshing sections of each file's path are added. When tabs are disabled, the path relative to the workspace folder is shown if the editor is active."), nls.localize('workbench.editor.labelFormat.short', "Show the name of the file followed by it's directory name."), nls.localize('workbench.editor.labelFormat.medium', "Show the name of the file followed by it's path relative to the workspace folder."), nls.localize('workbench.editor.labelFormat.long', "Show the name of the file followed by it's absolute path.") </del> <ins> nls.localize('workbench.editor.labelFormat.default', "Show the name of the file. When tabs are enabled and two files have the same name in one group the distinguishing sections of each file's path are added. When tabs are disabled, the path relative to the workspace folder is shown if the editor is active."), nls.localize('workbench.editor.labelFormat.short', "Show the name of the file followed by its directory name."), nls.localize('workbench.editor.labelFormat.medium', "Show the name of the file followed by its path relative to the workspace folder."), nls.localize('workbench.editor.labelFormat.long', "Show the name of the file followed by its absolute path.") </ins> ], 'default': 'default', 'description': nls.localize({

String Text: Show the name of the file. When tabs are enabled and two files have the same name in one group the distinguinshing sections of each file's path is . When tabs are disabled, the path relative to workspace root is shown if the editor is active. Context src/vs/workbench/electron-browser/main.contribution:English (en) Resource vs_workbench Query: Typo in source string. distinguinshing-distinguishing. Should'nt it be "the distinguinshing sections of each file's path are " and not is? Reference: $/?issue=yes


Question: fetch(remote?: string, ref?: string): Promise<void>; pull(): Promise<void>; <ins> push(head: Branch): Promise<void>; pushTo(remote?: string, name?: string, setUpstream?: boolean): Promise<void>; </ins> } export interface API {

Right now we can do pull but not push with Git's API . We are looking into allowing users to create pull request from the extension but without this API, we can only execute git command ourselves. Not sure about the cost of adding this API, the shape of in my mind can be like .
Fixed by


Question: _serviceBrand = undefined; private serverConfiguration = this.productService['editSessions.store']; <del> private storeClient: UserDataSyncStoreClient | undefined; </del> <ins> private storeClient: EditSessionsStoreClient | undefined; private machineClient: IUserDataSyncMachinesService | undefined; </ins> #authenticationInfo: { sessionId: string; token: string; providerId: string } | undefined; private static CACHED_SESSION_STORAGE_KEY = 'editSessionAccountPreference';

Testing I'm not sure why I have two entries for edit sessions and wonder if it came from another machine/sessions. It would be great to see some metadata about where the source is coming from, similar to the "Synced Data" view for Settings Sync. <img width="394" alt="CleanShot 2022-07-26 at 10 58 31 src="https://user-"<img width="373" alt="CleanShot 2022-07-26 at 11 00 07 src="https://user-"


Question: }; } <ins> private getCharCountText(charCount: number): string { let remaining = FeedbackDropdown.MAX_FEEDBACK_CHARS - charCount; let text = (remaining == 1) ? nls.localize("character left", "character left") : nls.localize("characters left", "characters left"); return '(' + remaining + ' ' + text + ')'; } </ins> protected setSentiment(smile: boolean): void { if (smile) { this.smileyInput.addClass('checked');

To reproduce. click smiley in the bottom right of editor window. The feedback form should appear enter several characters, press "Enter" (the new line should appear) continue entering characters while you can You should stop at "1 characters left" (declensions?) After that you will not be able to enter anything On the screenshot. There's a newline after "1". I reached the end of input and unable to enter more characters. But counter still says "1 characters left": <img width="468" alt="" src=""Mac OS 10.10.5 Yosemite
This is interesting. I created this to reproduce the behavior. do you have any thoughts on this? Here are a couple ideas we've talked about before. 1 - Remove the text area completely and replace with just the tweet button. This makes sense because we're submitting to twitter anyways. 2 - Hack the text area element to get better behavior. This would involve looking for new line characters based on the batter described by OP. I'm not a fan of this as it seems error prone. If we go with option 1, I'll work with Brad and get some design love on the form. any thoughts? I created PR to fix the "s" on singular count issue.
Thanks for your amazing job and thanks for asking! :blush: If the "Tweet" button will not require having a Twitter account, then it's a solution, I guess. I feel a bit weird reporting those super-tiny issues that still require developers time. Is the related (then we should star it)? Probably even disabling line breaks (like turning into line input) could be a solution.
Yes that is the exact issue. Starred it! I thought about disabling line breaks, but I think it would be a good thing for the user to do, considering Twitter supports line breaks. The Tweet button wouldn't require a Twitter account, but once the Tweet button takes them to twitter they would need to login.
Well, the need to login on Twitter is a requirement to have a Twitter account :blush: I wouldn't think it's a good UX :relaxed:
Right. Unfortunately Twitter doesn't support anonymous tweets.
After some internal discussion we decided to go with a dialog redesign. Will work with our UX designer to get some help.
Closing as it will be fixed with .