jiebi/CodeConvo huggingface dataset:
Change:
// Handle unsafe repository const match = /^fatal: detected dubious ownership in repository at '([^']+)'$/m.exec(ex.stderr); if (match && match.length === 2) { <del> const unsafeRepositoryPath = match[1]; </del> <ins> const unsafeRepositoryPath = path.normalize(match[1]); </ins> this.logger.trace(`Unsafe repository: ${unsafeRepositoryPath}`); // If the unsafe repository is opened after the initial repository scan, and we cannot use the welcome view

Discussion:
Testing <img width="310" alt="image" src="https://user-"
Same for the picker where the repositories are shown btw.
And also the notification toast. I suggest to use the label service for consistent path formatting.
is the label service available to built-in extensions? If not, it looks like using uses the correct separator though there is a comment in the that the value from this property should not be used for display purposes.
I briefly pinged but there seems to be no API to format labels. I am not sure if or have suggestions for how an extension can render a path label properly according to our "rules".
I missed the comment on about not using it for display. microsoft/vscode-pull-request-github is definitely using that for display in a few quick picks. I don't know of another way to get the correct slashes.
One downside of is that drive letter is lowercased, but for display purposes it should be uppercased.
You can use  for this. It makes the path relative, pretty and can prepend the workspace name (if wanted)
Thank you all! The path itself is extracted from a git error message and decided to call on it after I extract it from the error message. This seems to result in the correct drive letter casing and separator.
And to make things even more fun, I just learned that can only handle as a path separator.
What's the best way to trigger this message? I made a git repo owned by the SYSTEM instead of my user, but did not encounter this warning.
We have tweaked the welcome view and the paths are not being shown any more. Will mark as verified.
Change:
return viewModel.normalizePosition(position, PositionAffinity.None); } <del> private static _validateViewState(viewModel: ICursorSimpleModel, viewState: SingleCursorState, cursorConfig: CursorConfiguration): SingleCursorState { </del> <ins> private static _validateViewState(viewModel: ICursorSimpleModel, viewState: SingleCursorState): SingleCursorState { </ins> const position = viewState.position; const sStartPosition = viewState.selectionStart.getStartPosition(); const sEndPosition = viewState.selectionStart.getEndPosition(); <del> const validPosition = viewModel.normalizePosition(position, cursorConfig.cursorStyleKind === 'onCharacter' ? PositionAffinity.Right : PositionAffinity.None); </del> <ins> const validPosition = viewModel.normalizePosition(position, PositionAffinity.None); </ins> const validSStartPosition = this._validatePositionWithCache(viewModel, sStartPosition, position, validPosition); const validSEndPosition = this._validatePositionWithCache(viewModel, sEndPosition, sStartPosition, validSStartPosition);

Discussion:
Using copilot completions in the latest VS Code insiders, I see the cursor being pushed to after the suggested text. This makes it very difficult to work with the text while passive completions are suggested. <img width="1126" alt="image" src=""
FYI I didn't think of this.
is it possible to differentiate between an inline completion and inlay hint in the editor? maybe we could have different behavior in different cases?
Change:
InlineCompletions = 'inlineCompletions', KeybindingsEditor = 'keybindingsEditor', Notebook = 'notebook', <ins> ReplEditor = 'replEditor', </ins> Editor = 'editor', Hover = 'hover', Notification = 'notification',

Discussion:
verification steps: get the latest pre-release for python extension run while focused in the REPL editor, press alt+F1 to open the a11y help view press escape to return focus to the editor
Change:
const REMOTE_TUNNEL_USED_STORAGE_KEY = 'remoteTunnelServiceUsed'; const REMOTE_TUNNEL_PROMPTED_PREVIEW_STORAGE_KEY = 'remoteTunnelServicePromptedPreview'; const REMOTE_TUNNEL_EXTENSION_RECOMMENDED_KEY = 'remoteTunnelExtensionRecommended'; <ins> const REMOTE_TUNNEL_HAS_USED_BEFORE = 'remoteTunnelHasUsed'; </ins> const REMOTE_TUNNEL_EXTENSION_TIMEOUT = 4 * 60 * 1000; // show the recommendation that a machine started using tunnels if it joined less than 4 minutes ago const INVALID_TOKEN_RETRIES = 2;

Discussion:
After starting up VS Code for the first time, something strange appears in the status bar: ! Click it. Then click the notification link. The output opens empty. Wait long enough and an error comes up: !
The "syntax error" will log the output, so if you see that again, please share more details what do you think about not showing the "Looking for tunnel" progress on startup? Most users don't use remote tunnels, so this is just noise.
I think user only see that if they turned on Remote Tunnel Access. Yes, I guess we can remove it.
It looks like that progress is shown whenever the RemoteTunnelWorkbenchContribution is instantiated unless there's already a known session.
Change:
private _isKbFound(resolutionResult: ResolutionResult): resolutionResult is { kind: ResultKind.KbFound; commandId: string | null; commandArgs: any; isBubble: boolean } { return resolutionResult.kind === ResultKind.KbFound; } <ins> private getCommandDetails(commandId: string): { title: string; category?: string } | undefined { const fromMenuRegistry = MenuRegistry.getCommand(commandId); if (fromMenuRegistry) { return { title: typeof fromMenuRegistry.title === 'string' ? fromMenuRegistry.title : fromMenuRegistry.title.value, category: fromMenuRegistry.category ? (typeof fromMenuRegistry.category === 'string' ? fromMenuRegistry.category : fromMenuRegistry.category.value) : undefined }; } const fromCommandsRegistry = CommandsRegistry.getCommand(commandId); if (fromCommandsRegistry && fromCommandsRegistry.description?.description) { return { title: fromCommandsRegistry.description.description }; } return undefined; } </ins> } class LogStorageAction extends Action2 {

Discussion:
Found while verifying
Yeah this has always been the case. I think it's due to registerAction vs registerCommand. Very confusing. We should investigate whether there's another way to get the commands, other than .
Take a look at this PR fixing this. Let me know if you have feedback for how the issue is solved.
Verification: Some commands are still not showing up since they register against the command registry without any description. This needs fixing at each command registration. But the fix makes sure certain commands start getting labels, like pressing <kbdCmd N</kbdto create a new untitled file.
as you mentioned some shortcut like + or + are still not visible - is there issue where that this shortcuts can be reported or progress regarding this fix tracked?
Change:
private async handleCandidateUpdate(removed: Map<string, { host: string; port: number }>) { const removedPorts: number[] = []; <del> let autoForwarded: Set<string>; </del> <ins> let autoForwarded: Map<string, string | Tunnel>; </ins> if (this.unforwardOnly) { <del> autoForwarded = new Set(); </del> <ins> autoForwarded = new Map(); </ins> for (const entry of this.remoteExplorerService.tunnelModel.forwarded.entries()) { if (entry[1].source.source === TunnelSource.Auto) { <del> autoForwarded.add(entry[0]); </del> <ins> autoForwarded.set(entry[0], entry[1]); </ins> } } } else { <del> autoForwarded = this.autoForwarded; </del> <ins> autoForwarded = new Map(this.autoForwarded.entries()); </ins> } for (const removedPort of removed) { const key = removedPort[0]; <del> const value = removedPort[1]; if (autoForwarded.has(key)) { </del> <ins> let value = removedPort[1]; const forwardedValue = mapHasAddressLocalhostOrAllInterfaces(autoForwarded, value.host, value.port); if (forwardedValue) { if (typeof forwardedValue === 'string') { this.autoForwarded.delete(key); } else { value = { host: forwardedValue.remoteHost, port: forwardedValue.remotePort }; } </ins> await this.remoteExplorerService.close(value); <del> autoForwarded.delete(key); </del> removedPorts.push(value.port); } else if (this.notifiedOnly.has(key)) { this.notifiedOnly.delete(key);

Discussion:
Testing I'm not clear on what unforwarding a port means so this maybe expected, but we do detect that the process is no longer running but it still appears in the list: !
can you please provide the steps you used to get here? If port forwarding is properly set (setting + reload) then yes, the port should be unforwarded and no longer appear in the list.
Run the above Python script in integrated terminal when using Remote-SSH, it should start appearing in the list along with process ID under "Running process" column. Kill process using in a separate terminal.
Also confirming I made sure this was done as well.
Thank you for the steps!
When verifying, please test that the port is unforwarded with both and are used.
The port is not unforwarded when is used. It is however unforwarded when is used. I'm testing with the vscode-remote-try-node repo and the default launch config.
The fix works for me though, with the original Python script I provided.
I'm not able to reproduce this. It's possible for what you describe to occur if the process is terminated before we have a chance notice that it's running. If you see this again can you please set the log level to debug, repro, and share logs from Remote Extension Host and Window? Closing again for testing.
I am unable to reproduce the issue with vscode-remote-try-node on Codespaces or Dev Containers, though it did take a bit longer for the port to close on Codespaces. Marking as verified.
Change:
if (lineNumbers) { collector.addRule(`.monaco-editor .line-numbers { color: ${lineNumbers}; }`); } <ins> const activeLineNumber = theme.getColor(editorActiveLineNumber); if (activeLineNumber) { collector.addRule(`.monaco-editor .current-line-margin ~ .line-numbers { color: ${activeLineNumber}; }`); } </ins> });

Discussion:
<!-- Do you have a question? Please ask it on --- VSCode Version: 1.10.1() and 1.11.0-insider () OS Version: Windows 10 -- Sorry for the English, I used Google Translator -- Allow different color in the line number when the cursor is on that line. Like Atom. !
Is this feature not available for macOS?
Seems like a useful feature (or at least appealing). Now only doable as a hack with extension: ! For this to work highlight should include the gutter (in ) But this should be theme configurable.
Change:
for (const dependency of task.configurationProperties.dependsOn) { const dependencyTask = await resolver.resolve(dependency.uri, dependency.task!); if (dependencyTask) { <del> dependencyTask.configurationProperties.icon = dependencyTask.configurationProperties.icon || task.configurationProperties.icon; </del> <ins> if (dependencyTask.configurationProperties.icon) { dependencyTask.configurationProperties.icon.id ||= task.configurationProperties.icon?.id; dependencyTask.configurationProperties.icon.color ||= task.configurationProperties.icon?.color; } else { dependencyTask.configurationProperties.icon = task.configurationProperties.icon; } </ins> const key = dependencyTask.getMapKey(); let promise = this._activeTasks[key] ? this._getDependencyPromise(this._activeTasks[key]) : undefined; if (!promise) {

Discussion:
Testing I the following to the "Core - Build" task in this repo: The color shows in the "Run Task" quick pick, but not in the terminal tabs (I tried reloading, but still no color). !
the color will only take effect the next time you run the task - don't think it's worth listening to the config and updating. we don't do that for existing terminals either when an icon or color is set for their profile <img width="1291" alt="Screen Shot 2022-06-28 at 12 06 04 PM" src="https://user-"
Alex mentioned , I actually reproduced the icon and color not applying when testing also
I'm guessing it's just on tasks run via ? It works when running Core - Build explicitly but not ctrl+shift+b: !
should work for dependsOn tasks
works w ctrl+shift+b for other default build tasks () https://user-
works w ctrl+shift+b and the VS Code build task for me https://user-
can you pls send me the exact task config this isn't working for?
it's was just what was shown in the screenshot, the small change to . Might be related to Windows somehow then if you don't see it?
not sure why I can't reproduce it, but could be fixed by
I can still repro this in the latest insiders.
yes so can on Windows. we're going to debug
are there any task load messages in the output channel?
or any way the build task on windows is handled specially?
If there's an issue reading tasks from then an error should be logged to the tasks output channel, and I don't have any. The Run Build Task command shouldn't be handled any differently here, and I confirmed that this isn't build specific by making this keybinding:
to verify: set an icon for a dependency task
If I just set the icon color it now changes the icon away from the tools icon (its still the tools icon in the task quick pick): !
Change:
export interface IHoverDelegate { showHover(options: IHoverDelegateOptions): IDisposable | undefined; <ins> hideHover(): void; </ins> }

Discussion:
Issue Type: <bBug</bIn the past, if the tree item was falsy, the would be used instead on hover. makes it so that if the tree item's is falsy after calling , then instead of following the old behavior and using , it will stick as 'Loading...' forever. Instead, if is falsy, it should fall back to to most closely resemble prior behavior. VS Code version: Code - Insiders 1.53.0-insider (, 2021-01-27T08:59:32.031Z) OS version: WindowsNT x64 10.0. <details<summarySystem Info</summary </details<details<summaryExtensions (11)</summaryExtensionVersion ------ vscode-eslint2.1.14 vscode-docker1.9.1 csharp1.23.8 python2021.1. jupyter2020.12. remote-containers0.156.0 remote-ssh0.63.0 remote-ssh-edit0.63.0 remote-wsl0.53.2 vscode-remote-extensionpack0.20.0 azure-account0.9.5 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
FYI
this fix is out in the latest insiders, can you please let us know when you've verified, thanks
everything seems to be working nicely, thanks!
Change:
import { ICompleteTerminalConfiguration } from 'vs/workbench/contrib/terminal/common/remoteTerminalChannel'; import { Orientation } from 'vs/base/browser/ui/splitview/splitview'; import { IEditableData } from 'vs/workbench/common/views'; <del> import { TerminalEditorInput } from 'vs/workbench/contrib/terminal/browser/terminalEditorInput'; </del> import { DeserializedTerminalEditorInput } from 'vs/workbench/contrib/terminal/browser/terminalEditorSerializer'; <ins> import { TerminalEditorInput } from 'vs/workbench/contrib/terminal/browser/terminalEditorInput'; </ins> export const ITerminalService = createDecorator<ITerminalService>('terminalService'); export const ITerminalEditorService = createDecorator<ITerminalEditorService>('terminalEditorService');

Discussion:
Context: Essentially instead of creating s we will assign URIs to the shell launch configs and only create the terminals when the input is created.
This should also include the fix for splitCwd support in terminal editors:
Change:
// Reference: https://en.wikipedia.org/wiki/Filename const WINDOWS_INVALID_FILE_CHARS = /[/:*?"<>|]/g; const UNIX_INVALID_FILE_CHARS = /[/]/g; <del> const WINDOWS_FORBIDDEN_NAMES = /^(con|prn|aux|clock$|nul|lpt[0-9]|com[0-9])$/i; </del> <ins> const WINDOWS_FORBIDDEN_NAMES = /^(con|prn|aux|clock$|nul|lpt[0-9]|com[0-9])(.(.*?))?$/i; </ins> export function isValidBasename(name: string | null | undefined, isWindowsOS: boolean = isWindows): boolean { const invalidFileChars = isWindowsOS ? WINDOWS_INVALID_FILE_CHARS : UNIX_INVALID_FILE_CHARS;

Discussion:
<!-- 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.48.0 OS Version: 10.0. (Windows) Steps to Reproduce: a new file with name file Windows cannot delete the file and git shows an error. Windows does not allow to create files with reserved words but visual studio can. Remove the ability to save files with reserved words in Windows. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes
I cannot create with VS: ! We should probably revisit our logic in . If someone wants to revisit this, bring up a PR with tests. As a workaround you can always use VSCode itself to delete the file.
I finally removed the file just changing the name.
I was wrong to describe the problem! Steps to Reproduce: a new file with name file file in (important with extension!) ! the bug occurs only with the extension !
Verification: follow on Windows
Change:
) { super(outputChannelDescriptor, modelUri, fileService, modelService, modeService); <del> this.fileHandler = this._register(new OutputFileListener(this.file, this.fileService)); this._register(this.fileHandler.onDidContentChange(size => this.update(size))); </del> <ins> this.fileHandler = this._register(new FileListener(this.file, this.fileService)); this._register(this.fileHandler.onDidContentChange(({ size }) => this.update(size))); </ins> this._register(toDisposable(() => this.fileHandler.unwatch())); }

Discussion:
Issue Type: <bBug</bChanges to the file by external sources (extensions/manual edit) are not picked up anymore until VSCode is relaunched. For instance, if you use notepad to add a workspace folder to the file, VSCode won't show the new workspace folder until the workspace is relaunched in VSCode. This also means that if you then add another workspace folder through VSCode, and save the workspace, the workspace folder with notepad is removed. Using the button doesn't trigger a re-read of the file either. This renders the extension rather useless. VS Code version: Code 1.31.0 (, 2019-02-05T22:35:56.624Z) OS version: Windows_NT x64 10.0. Does this issue occur when all extensions are disabled?: Yes Steps to Reproduce: a new workspace 2 folders to the workspace, called and the workspace and save the file, changing the order of the folders using notepad or the extension that the order in VSCode has not been changed and reopen VSCode, notice that the order in VSCode did change
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.51 --- <!-- score: 0.471 --- <!-- score: 0.46 --<!-- potentialduplicatescomment --
I was not able to reproduce this on macOS at least.
In the screenshot below you can see that VSCode shows a different order of the folders than the file. !
Can you reproduce this with latest vscode insiders?
Yes, I can. The screenshot below shows the difference in the order of the folders between the content of the file within the latest insiders, in this case there are also no extensions active. Changes are not shown in VSCode until it is restarted. !
I can reproduce this also on the mac. The issue here is that the does not fire a event when the order of workspace roots is changed in the code-workspace file. Since the order changed I would expect this event to arrive. Thus forwarding to and
could be the case of a missing file event (given I could not reproduce when I tried on macOS), if so, please forward back to me. did you check if the file event made it through?

--verbose
The file event does not seem to go through. if I start out of source with --verbose flag.
I assume you setup custom file watching for the workspace file right? Where is that code? Does it check for changes?
I think this would have caused by my changes moving away from node based file watching to file service watch. Will investigate further and figure it out.
Thanks for the fix, I just tested it in the new insiders build and everything seems to be working correctly. I am looking forward to the next release!
Change:
import { NativeParsedArgs } from 'vs/platform/environment/common/argv'; import { IEnvironmentMainService } from 'vs/platform/environment/electron-main/environmentMainService'; import { isLaunchedFromCli } from 'vs/platform/environment/node/argvHelper'; <del> import { getResolvedShellEnv } from 'vs/platform/terminal/node/shellEnv'; </del> <ins> import { getResolvedShellEnv } from 'vs/platform/shell/node/shellEnv'; </ins> import { IExtensionUrlTrustService } from 'vs/platform/extensionManagement/common/extensionUrlTrust'; import { ExtensionUrlTrustService } from 'vs/platform/extensionManagement/node/extensionUrlTrustService'; import { IExtensionHostStarter, ipcExtensionHostStarterChannelName } from 'vs/platform/extensions/common/extensionHostStarter';

Discussion:
Moved in I know there's nothing enforcing this, but the terminal folder should rarely be depended upon outside of debug/tasks. Having in platform/terminal means that platform/request depends on the terminal which creates a weird relationship: platform/request -platform/terminal contrib/terminal -platform/request Terminal only exists in platform so that it can be used in the pty host, I'd prefer to keep it similar to a workbench contrib where nothing else in platform depends on it. If no other folder makes sense I propose creating a as it's a similar theme to what's going on in The original seemed fine but I don't understand the tangle.
Change:
// ARIA this.element.setAttribute('role', 'treeitem'); <del> const ariaLabel = this.context.accessibilityProvider.getAriaLabel(this.context.tree, this.model.getElement()); </del> <ins> const accessibility = this.context.accessibilityProvider; const ariaLabel = accessibility.getAriaLabel(this.context.tree, this.model.getElement()); </ins> if (ariaLabel) { this.element.setAttribute('aria-label', ariaLabel); } <ins> if (accessibility.getPosInSet && accessibility.getSetSize) { this.element.setAttribute('aria-setsize', accessibility.getSetSize()); this.element.setAttribute('aria-posinset', accessibility.getPosInSet(this.context.tree, this.model.getElement())); } </ins> if (this.model.hasTrait('focused')) { const base64Id = strings.safeBtoa(this.model.id);

Discussion:
The tree/list is virtualized and as such a screen reader cannot make a correct statement on the number of entries. We should leverage and for that purpose within the tree and list widgets. The widgets know the number of elements to render and the currently selected items position in the set. /cc
Makes sense, I can look into it in june
Accidently closed this by PR which only address the list widget, still gotta do it for the tree
After looking into this with we have fixed this issue for the , however for the tree the situation is a bit more complex: It is not exactly specified what the and should be with respect to the tree structure. Should they be absolute or only relative to the siblings. In both of the cases we have an issue that the tree smartly chooses the minimal set of elements that need to be re-rendered, so if an element A gets removed and element B is above it, B will not get re-rendered and will still have the wrong attribute. Due to that we would need a bigger refactoring in order to fix this for the tree. So renaming this issue and pushing it to backlog for now.
The originating issue -- -- came in w.r.t. the Command Palette that displays a list. perhaps the root issue is that the implementation of the Command Palette uses a tree to display a list and that makes it difficult to express the list to Screen Readers ?
+1 for making the command palette use the list. I could also look into this when I get cycles if does not mind.
yeah +1 for using list for quick open, that would be very nice . I hope there are no things in tree that quick open depends on.
I have created this issue to track it