jiebi/CodeConvo huggingface dataset:
Change:
public static readonly layoutStatusbar = new Codicon('layout-statusbar', { fontCharacter: 'ebf5' }); public static readonly layoutMenubar = new Codicon('layout-menubar', { fontCharacter: 'ebf6' }); public static readonly layoutCentered = new Codicon('layout-centered', { fontCharacter: 'ebf7' }); <ins> public static readonly layoutSidebarRightOff = new Codicon('layout-sidebar-right-off', { fontCharacter: 'ec00' }); public static readonly layoutPanelOff = new Codicon('layout-panel-off', { fontCharacter: 'ec01' }); public static readonly layoutSidebarLeftOff = new Codicon('layout-sidebar-left-off', { fontCharacter: 'ec02' }); </ins> public static readonly target = new Codicon('target', { fontCharacter: 'ebf8' }); public static readonly indent = new Codicon('indent', { fontCharacter: 'ebf9' }); public static readonly recordSmall = new Codicon('record-small', { fontCharacter: 'ebfa' });

Discussion:
The layout controls icons can be a bit of an eye sore when in the default state. One way to remedy this and to give a stronger indication of the state, we could swap icons based on their state. Would look something like this: https://user-
these icon are now in: - -
Change:
<del> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import './startDebugTextMate'; </del>

Discussion:
I noticed a dependency from : Is this something we could change so that we do not depend on node directly?
You can use to create the logger instead of creating it using spdlog directly. It will make sure it creates proper logger in the given environment. See how it is being used by other components, for eg output channels:
thanks, I opened a PR. Can you check if the logger creation is proper? It is my understanding I need to create the file first? Happens here:
I do not think creating the file is necessary - Underlying logger will take care of it.
Ok I think I saw an unrelated error then because we seem to try to read from this file directly after starting to log.
Change:
private registerEditorPartListeners(part: EditorPart, disposables: DisposableStore): void { disposables.add(part.onDidFocus(() => { <ins> this.doUpdateMostRecentActive(part, true); </ins> if (this._parts.size > 1) { this._onDidActiveGroupChange.fire(this.activeGroup); // this can only happen when we have more than 1 editor part } })); <ins> disposables.add(toDisposable(() => this.doUpdateMostRecentActive(part))); </ins> disposables.add(part.onDidChangeActiveGroup(group => this._onDidActiveGroupChange.fire(group))); disposables.add(part.onDidAddGroup(group => this._onDidAddGroup.fire(group)));

Discussion:
Currently we do not really track MRU of editor groups across windows. Some features rely on this though, so we should see if we can track MRU truly across aux windows.
Change:
const languageContributions = findNodeAtLocation(tree, ['contributes', 'languages']); languageContributions?.children?.forEach(child => { const id = findNodeAtLocation(child, ['id']); <del> if (id && id.type === 'string') { </del> <ins> const configuration = findNodeAtLocation(child, ['configuration']); if (id && id.type === 'string' && configuration && configuration.type === 'string') { </ins> activationEvents.add(`onLanguage:${id.value}`); } });

Discussion:
Bug The the following entry in its : This seems to cause the python extension to be activated whenever a json file is opened, even though the extension does not provide any json language support This was possibly caused by the move to automatic activation events
I think my initial implementation of implicit activation was perhaps too naive. There seem to be a few issues: It's possible to have a language configuration extension that doesn't contribute any code, and we would now attempt to activate such an extension (this is a noop if there is no main/browser entrypoint in , but results in unnecessary activation if all that's required is a language configuration) the bigger issue is that an extension which contributes extensions, filenames, filenamePatterns, firstLine, or mimeTypes for a language will now get activated anytime the language appears I think it's maybe reasonable to preserve the existing implicit activation behavior if an alias is defined for all of the others, we shouldn't infer , or we should perhaps keep track of the filenames/filenamePatterns etc and activate the extension with the language contribution matching the specified pattern? I know of at least two extensions which are impacted by the current behavior MakeCode Python
:+1: This makes good sense to me. We will infer only for the one which is the "main" language definition, and the best evidence of that is the alias property. I wouldn't do anything beyond that (i.e. tracking filenames, patterns, etc.)
Would the presence of the property be better evidence of a contribution being the main language definition?
injection based syntax highlighting can still have a configuration file
Change:
private readonly _onSeparatorButtonTriggered = new Emitter<IQuickPickSeparatorButtonEvent>(); onSeparatorButtonTriggered = this._onSeparatorButtonTriggered.event; <ins> private readonly _onTriggerEmptySelectionOrFocus = new Emitter<ITreeEvent<IQuickPickElement | null>>(); </ins> private readonly _container: HTMLElement; private readonly _tree: WorkbenchObjectTree<IQuickPickElement, void>; private readonly _separatorRenderer: QuickPickSeparatorElementRenderer;

Discussion:
<!-- 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.
Change:
'/foo', '~/foo', './foo', <ins> './$foo', </ins> '../foo', '/foo/bar', '/foo/bar+more',

Discussion:
<!-- 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. --There's currently an issue on the terminal of the VSCode that slows down the refactoring process of files specially on frameworks that relies heavily on the dollar sign for file structure like or . Any tool or place that spells out the path + filename containing $ is ignored by the cmd + click. Folders are even worse because it breaks their children. <!-- 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.58.2 OS Version: macOS Big Sur 11.5 (20G71) Steps to Reproduce: a file or a folder with the dollar sign on it it out using any tool or just run: !
Code pointer:
Change:
readonly automaticKeyboardNavigation?: boolean; readonly keyboardNavigationLabelProvider?: IKeyboardNavigationLabelProvider<T>; readonly keyboardNavigationDelegate?: IKeyboardNavigationDelegate; <del> readonly ariaRole?: ListAriaRootRole; </del> <ins> readonly ariaRole?: ListAriaRootRole | string; </ins> readonly ariaLabel?: string; readonly keyboardSupport?: boolean; readonly multipleSelectionSupport?: boolean;

Discussion:
Environment Details: Application Name: Visual Studio Code Application Version: 1.38.1 (user setup) Commit: Electron: 4.2.10 10.11.0 OS: Windows_NT x64 10.0. Steps to Reproduce: any workspace with Extensions recommendations notification pops up Accessibility insights and track the control type for toast notification. type is tree when it is expected to be a dialog. Accessibility Impact: the control is called out as tree by screen reader which might be confusing.
It is true that each notification toast is a tree itself because that is the underlying widget we are using. We can possible change that if there is API from the tree level.
There is already a  in the AriaProvider which should be exposed in the . Not sure if you can use that one, or you need to introduce a new one or the current one will be enough? can you try it out?
this was not possible without tree changes (and also a bugfix where the tree would always set the aria role "tree", even if options were provided). Please review
I was able to verify this change, the toast now has a dialog role. One thing I noticed is that the contained still has . This doesn't cause issues with OS X voiceover, but we should keep an eye out on whether it confuses other screen readers.
Yeah, to change that would need additional support from the tree widget I think.
Please note that this should now be fixed properly via So the parent is a and each toast is a
Change:
altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, "Alt"), metaKey: nls.localize({ key: 'windowsKey.long', comment: ['This is the long form for the Windows key on the keyboard'] }, "Windows"), separator: '+', <ins> }, { ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, "Control"), shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, "Shift"), altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, "Alt"), metaKey: nls.localize({ key: 'superKey.long', comment: ['This is the long form for the Super key on the keyboard'] }, "Super"), separator: '+', </ins> } );

Discussion:
I am actually surprised this bug exists, aren't you using some keybinding helper to turn the keybinding into a human readable label?
yea I'm using the keybinding service, yes, I'm not doing anything special on my own I don't believe.
Related:
PR out:
Change:
private async unsetProfileForWorkspace(window: ICodeWindow): Promise<void> { const workspace = this.getWorkspace(window); const profile = this.userDataProfilesService.getProfileForWorkspace(workspace); <del> if (profile && (isEmptyWorkspaceIdentifier(workspace) || profile.isTransient)) { </del> <ins> if (profile?.isTransient) { </ins> this.userDataProfilesService.unsetWorkspace(workspace, profile.isTransient); if (profile.isTransient) { await this.userDataProfilesService.cleanUpTransientProfiles();

Discussion:
Testing a new profile to the profile VS Code Keeps switching me back to the default profile
Are you on empty window?
Yes
I assume it works for folders/workspaces
It does seem to work with a folder open, yes.
Change:
env.clipboard.writeText(item.message); } <ins> @command('git.rebaseAbort', { repository: true }) async rebaseAbort(repository: Repository): Promise<void> { await repository.rebaseAbort(); } </ins> private createCommand(id: string, key: string, method: Function, options: CommandOptions): (...args: any[]) => any { const result = (...args: any[]) => {

Discussion:
It's very common to have to resolve merge conflicts during a pull with rebase. You might decide that you want to stop and try something else. There's no way, that I found, through the source control UI or command palette to properly abort a rebase. You can get into a jam trying to abort, though. Like clicking the branch button in the status bar. You can choose your local branch and have the local branch's contents restored, but Code leaves you in a rebase (and that's no good). You're stuck running on the command line. (I'll upload some pics later when I can contrive some examples... sorry, I didn't capture them while I was causing trouble earlier.)
I'd like to work on the implementation. But there are 2 options when a repository is being rebased: continue and abort. I can add two menu items right under "Pull (Rebase)": "Rebase Continue" and "Rebase Abort". Will it work from the UX perspective?
Rebase continue is already implemented: if you try to commit during a rebase, it will run rebase continue instead. All we're missing is the abort action.
So, adding "Rebase Continue" option under the "Pull (Rebase)" will be ok. Am I right?
This is good to know and takes some exploring to figure out. Are there any good patterns to explain this like during your 1st use of the feature? Or in the docs somewhere? This is a problem any time you combine git commands (like Sync).
We could maybe add that to the docs. :+1: Wanna submit a PR on ?
Hey, to this point (), I don't recall anywhere except maybe the Output | Git log that you can tell that the rebase has continued. There's no obvious status that commits are being replayed or that you may need to wait a few seconds for the next merge conflict to render in the source control explorer (if there are more conflicts) or even if the rebase is "done". You end up needing to check the Git status on the command line anyway. I think if you're going to wrap up the workflow by offering "abort", you need to make the entire experience better.
I did some exploration on supporting rebase features, which is related to this.
looks like your implementation covers git abort and my PR is not required anymore. Closing it.
Change:
} } <ins> const formatMap: Record<string, string> = { 'ttf': 'truetype', 'woff': 'woff', 'woff2': 'woff2' }; </ins> function getFontId(description: IExtensionDescription, fontPath: string) { return posix.join(description.identifier.value, fontPath); }

Discussion:
Does this issue occur when all extensions are disabled?: Yes VS Code Version: 1.82.2 OS Version: macOs Monterey 12.3 Steps to Reproduce: Created a ttf font file using select any icon and font character ( I have selected G) the to include the ttf file Status bar item with text Icon needs to show up but the character G shows up instead ! Attached my font file expected to show !
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.82.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Hey I saw you were working on the status bar (in the working areas md file)
I am not sure if this is a missing adoption or a bug, starting with Martin.
Nornally we use font characters codes starting from . I guess lower ones should work too. Can you add a complete sample extension to reproduce?
Hi Team thanks for reaching out here is my sample extension to reproduce it is very minimal just contributes the icon. Use command helloworld to see the status bar not working
I also have a small question as well do we need to use reserve characters to add icons in my case I replaced the letter G with my icon in my TTF file.
Found the problem. We had a bug with TTF fonts. I pushed a fix. In the meantime, if you can use or fonts, that should work, also with as character code.
Thanks for the nice sample.
Thanks for your quick response !
Change:
shellPath: shell, shellArgs: shellArgs, cwd: args.cwd, <del> name: args.title || nls.localize('debug.terminal.title', "debuggee"), </del> <ins> name: terminalName, </ins> }; giveShellTimeToInitialize = true; terminal = this._terminalService.createTerminalFromOptions(options, true);

Discussion:
See I think the best way for this would be for VS Code core to rename the terminal if gets a new request with a different name -- opened an issue for that Or, at least, try to use a terminal of the same name if one exists (which would be easier and probably more feasible since the is not writable.) Code pointer:
Also fyi
I'm going to take a swing at this. Here is my current understanding of the problem and I would appreciate any feedback or comments. The issue - Launching debug sessions in integrated terminal will open duplicate terminals. Solution - Code can attempt to find a terminal instance that has the same title as the launch request and is not currently in use. If located, it can reuse that instance, otherwise it can use the existing logic to create a new instance. I believe this should also address the concerns in as Code will stop spawning new terminal instances for repeat debug sessions. Please let me know if I have any misunderstandings on the issue.
Sounds good to me
I'm looking over the current code for checking out an integrated terminal and came across the minUseDelay for determining which of the terminals is available for use. It was a fix for . As I understand it, when compound node tasks were run, they would all try to grab the same terminal instance so only the first one to run would actually get the terminal, the others would fail to run. By introducing the minUseDelay, it insured that all of the launch tasks would get a new terminal instance. Once microsoft/vscode-js-debug is merged, each Node launch task will most likely have a unique name and therefore a dedicated terminal instance (ideally) which would mean we could always return the first terminal without a child process that has the same title and get rid of minUseDelay. Right?
Obviously if someone had two launch configurations with the same name (why?) this would fall apart.
We could even enforce name-matching and reopen the terminal if nothing's running in it and the name mismatches
Change:
private readonly accessibilityProvider: IListAccessibilityProvider<T> | undefined, ) { <del> this._rootDomNode = document.createElement('div'); this._rootDomNode.classList.add('monaco-tree-sticky-container'); </del> <ins> this._rootDomNode = $('.monaco-tree-sticky-container'); </ins> container.appendChild(this._rootDomNode); <ins> const shadow = $('.monaco-tree-sticky-container-shadow'); this._rootDomNode.appendChild(shadow); </ins> this.stickyScrollFocus = new StickyScrollFocus(this._rootDomNode, view); this.onDidChangeHasFocus = this.stickyScrollFocus.onDidChangeHasFocus; this.onContextMenu = this.stickyScrollFocus.onContextMenu;

Discussion:
Tree Sticky Scroll uses caching to make sure that it does not have to rerender often. During the animation each frame/scroll has to be rerendered, which causes DOM elements to be removed and reconstructed. This could be improved by reusing the DOM elements and just adapting their heights.
Change:
const layoutDelayer = new Delayer(50); this.layoutMarkdown = () => { <del> layoutDelayer.trigger(() => { webview.postMessage({ layoutMeNow: true }); </del> <ins> layoutDelayer.trigger(async () => { this.buildMediaComponent(stepId); </ins> }); };

Discussion:
<!-- 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 (don't know) <!-- 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.75.1 OS Version: macOS Ventura 13.0.1 VS Code walkthrough instructions disappear when opening the hello- file from the link (simple workflow step). Hearing the same feedback from multiple users doing internal testing. Steps to Reproduce: a codespace from . to the second walkthrough called "Writing workflows". the first step ("Actions workflow"), click the link to open the hello- file
This could potentially happen because the webivew that displays the welcome content has been reparented. This is actually easy to simulate: a single editor group open a walkthrough This will destroy the webview content because one of its parent nodes changes. The iframe still exists in the dom, but nothing is rendered inside of it. This is a limitation of how iframes are designed and is not something we can disable (but we do workaround it in other places) To fix this, you can either try switching the welcome webview to use an  or explore forcing the webview to re-render itself if it get reparented (but I'm not sure how difficult this would be) Webviews like the readme and markdown preview all use to avoid this issue
Change:
return; } <ins> if (document.uri.scheme === Schemes.notebookCell) { return; } </ins> for (const imageMime of supportedImageMimes) { const file = dataTransfer.get(imageMime)?.asFile(); if (file) {

Discussion:
The image paste handler introduced days ago overrides the notebook markdown paste handler The markdown workspace selector is and the notebook markdown one is , both matches the markdown cell in a notebook. The former is faster than the latter often times so most of the time, I got the workspace link instead of the notebook attachment link. Catch here is it's not guaranteed which one will take effect as it's all perf based.
Change:
this._focus(); } <ins> public focusTabsView(): void { this._terminalTabbedView?.focusTabsView(); } </ins> private _focus() { this._terminalService.getActiveInstance()?.focusWhenReady(); }

Discussion:
This would be useful since we can now navigate the tabs via the keyboard, so you could hit <keybinding, up n times, enter to focus that terminal.
Also it's a little tough to tell which split pane is actually focused right now, perhaps some extra visual hint?
Opening to double check what the ideal keybinding would be on each platform
Let's go with ctrl/cmd+shift+ for this, to align with 's navigate tabs keybinding.