jiebi/CodeConvo huggingface dataset:
Change:
return new Promise<void>(r => { quickPick.onDidTriggerItemButton(async e => { if (e.button === removeFromCommandHistoryButton) { <del> this._instantiationService.invokeFunction(getCommandHistory)?.remove(e.item.label); } const selectedCommand = (e.item as Item).command; const output = selectedCommand?.getOutput(); if (output && selectedCommand?.command) { const textContent = await outputProvider.provideTextContent(URI.from( { scheme: TerminalOutputProvider.scheme, path: `${selectedCommand.command}... ${fromNow(selectedCommand.timestamp, true)}`, fragment: output, query: `terminal-output-${selectedCommand.timestamp}-${this.instanceId}` })); if (textContent) { await this._editorService.openEditor({ resource: textContent.uri }); </del> <ins> if (type === 'command') { this._instantiationService.invokeFunction(getCommandHistory)?.remove(e.item.label); } else { this._instantiationService.invokeFunction(getDirectoryHistory)?.remove(e.item.label); } } else { const selectedCommand = (e.item as Item).command; const output = selectedCommand?.getOutput(); if (output && selectedCommand?.command) { const textContent = await outputProvider.provideTextContent(URI.from( { scheme: TerminalOutputProvider.scheme, path: `${selectedCommand.command}... ${fromNow(selectedCommand.timestamp, true)}`, fragment: output, query: `terminal-output-${selectedCommand.timestamp}-${this.instanceId}` })); if (textContent) { await this._editorService.openEditor({ resource: textContent.uri }); } </ins> } } quickPick.hide();

Discussion:
We should not sync this Should this be per terminal instance? No We should persist similar to recent commands as well Should persisted entries work across different shells? Probably We should invalidate entries similar to commands Let's support removing entries, using a icon that shows only on active and hovered item Let's not use the x for failed, we can improve visualizing errors later on
Change:
await terminal.runCommandWithValue(TerminalCommandIdWithValue.NewWithProfile, process.platform === 'win32' ? 'PowerShell' : 'bash'); } <del> // TODO: These are currently flaky https://github.com/microsoft/vscode/issues/150478 describe.skip('Shell integration', function () { </del> <ins> // TODO: Some agents may not have pwsh installed? (process.platform === 'win32' ? describe.skip : describe)(`Shell integration`, function () { </ins> describe('Decorations', function () { describe('Should show default icons', function () { it('Placeholder', async () => { await createShellIntegrationProfile(); await terminal.assertCommandDecorations({ placeholder: 1, success: 0, error: 0 }); }); it('Success', async () => { await createShellIntegrationProfile(); <del> await terminal.runCommandInTerminal(`ls`); </del> <ins> await terminal.runCommandInTerminal(`echo "success"`); </ins> await terminal.assertCommandDecorations({ placeholder: 1, success: 1, error: 0 }); }); it('Error', async () => { await createShellIntegrationProfile(); <del> await terminal.runCommandInTerminal(`fsdkfsjdlfksjdkf`); </del> <ins> await terminal.runCommandInTerminal(`false`); </ins> await terminal.assertCommandDecorations({ placeholder: 1, success: 0, error: 1 }); }); });

Discussion:
With support for for Electron tests, we should enable terminal tests: I eagerly had enabled them but since we don't know whether Electron smoke tests with are stable, I moved back to only running them in web. We should not enable these tests until we are sure, smoke tests are stable, so maybe this should only happen in May.
Failing macOS run for reference: !
Still not passing, deferring to a debt week
Change:
return; } const edits: vscode.SnippetTextEdit[] = []; let insertedLinkCount = 0;

Discussion:
Type: <bBug</ban image file from the VS Code explorer into a md file Bug No markdown image inserted, just the file name VS Code version: Code - Insiders 1.88.0-insider (Universal) (, 2024-03-29T22:24:49.191Z) OS version: Darwin arm64 23.4.0 Modes: <details<summarySystem Info</summary </details<!-- generated by issue reporter --
Closing for verification.
Change:
}; } <ins> private getEditToRemoveValueFromArray(path: JSONPath, array: string[] | undefined, value: string): IJSONValue | undefined { const index = array?.indexOf(value); if (index !== undefined && index !== -1) { return { path: [...path, index], value: undefined }; } return undefined; } </ins> } registerSingleton(IWorkspaceExtensionsConfigService, WorkspaceExtensionsConfigService, InstantiationType.Delayed);

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: Version: 1.84.0 (system setup) OS: WindowsNT x64 10.0. Steps to Reproduce: "Add to Workspace Recommendations" any extension and select whichever place you like (i.e. among workspace & workspace folder) the or some comments inside_ the array once step 1. the comment from step 3. got erased. <!-- -- Titles & summaries: "add to rec" removes comments from extensions-recommendations array in the configuration file "add to rec" rewrites & hence erases any comments in extensions-recommendations array "add to rec" rewrites & hence erases any comments in Sample file:
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.84.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
i wish there were patch updates if i have to update that frequently
p.s.: wow, never tried doing it from command palette pps: i think that no longer exists now
thanks all a lot
Change:
const repositoryPath = await window.withProgress( opts, <del> (progress, token) => this.git.clone(url!, { parentPath: parentPath!, progress, recursive: options.recursive }, token) </del> <ins> (progress, token) => this.git.clone(url!, { parentPath: parentPath!, progress, recursive: options.recursive, ref: options.ref }, token) </ins> ); <del> const refToCheckoutAfterClone = options.ref; if (refToCheckoutAfterClone !== undefined) { await window.withProgress( { location: ProgressLocation.Notification, title: localize('checking out ref', "Checking out ref '{0}'...", options.ref) }, async () => { await this.model.openRepository(repositoryPath); const repository = this.model.getRepository(repositoryPath); await repository?.checkout(refToCheckoutAfterClone); }); } </del> const config = workspace.getConfiguration('git'); const openAfterClone = config.get<'always' | 'alwaysNewWindow' | 'whenNoFolderOpen' | 'prompt'>('openAfterClone');

Discussion:
Testing According to , we can have git checkout a specific branch as part of the cloning command. That way we can avoid slowness as well as a double progress indicator.
Verification From your browser, enter . This should clone the repo and checkout the branch , and there should only be one progress notification for the clone progress, there shouldn't be a second progress notification for the checkout
I just get messages like Version: 1.73.0-insider (user setup) Commit: Date: 2022-10-26T09:31:30.519Z Edit: It's missing url=. Will try again.
Thanks
Change:
} .monaco-editor .parameter-hints-widget .signature .parameter.active { <del> color: var(--vscode-editor-hoverHighlightForeground); </del> <ins> color: var(--vscode-editorHoverWidget-highlightForeground); </ins> font-weight: bold; }

Discussion:
I think it used to be a lighter gray: <img width="797" alt="image" src="https://user-"
This looks normal to me. Do you mean the tooltip?
No this: <img width="683" alt="image" src="https://user-"Compared with stable: <img width="555" alt="image" src="https://user-"
Change:
const pascalCased = viewType.split(/[^a-z0-9]/ig).map(uppercaseFirstLetter).join(''); view?.search(`@tag:notebookKernel${pascalCased}`); } <ins> } registerAction2(class extends Action2 { constructor() { super({ id: SELECT_KERNEL_ID, category: NOTEBOOK_ACTIONS_CATEGORY, title: { value: localize('notebookActions.selectKernel', "Select Notebook Kernel"), original: 'Select Notebook Kernel' }, icon: selectKernelIcon, f1: true, menu: [{ id: MenuId.EditorTitle, when: ContextKeyExpr.and( NOTEBOOK_IS_ACTIVE_EDITOR, ContextKeyExpr.notEquals('config.notebook.globalToolbar', true) ), group: 'navigation', order: -10 }, { id: MenuId.NotebookToolbar, when: ContextKeyExpr.equals('config.notebook.globalToolbar', true), group: 'status', order: -10 }, { id: MenuId.InteractiveToolbar, when: NOTEBOOK_KERNEL_COUNT.notEqualsTo(0), group: 'status', order: -10 }], description: { description: localize('notebookActions.selectKernel.args', "Notebook Kernel Args"), args: [ { name: 'kernelInfo', description: 'The kernel info', schema: { 'type': 'object', 'required': ['id', 'extension'], 'properties': { 'id': { 'type': 'string' }, 'extension': { 'type': 'string' }, 'notebookEditorId': { 'type': 'string' } } } } ] }, }); } async run(accessor: ServicesAccessor, context?: KernelQuickPickContext): Promise<boolean> { const notebookKernelService = accessor.get(INotebookKernelService); const editorService = accessor.get(IEditorService); const productService = accessor.get(IProductService); const quickInputService = accessor.get(IQuickInputService); const labelService = accessor.get(ILabelService); const logService = accessor.get(ILogService); const paneCompositeService = accessor.get(IPaneCompositePartService); const extensionWorkbenchService = accessor.get(IExtensionsWorkbenchService); const extensionHostService = accessor.get(IExtensionService); const strategy = new KernelPickerFlatStrategy( notebookKernelService, editorService, productService, quickInputService, labelService, logService, paneCompositeService, extensionWorkbenchService, extensionHostService ); return await strategy.showQuickPick(context); } </ins> }); export class NotebooKernelActionViewItem extends ActionViewItem {

Discussion:
Currently when there is one suggested kernel and that's the one users are using in current document, its presentation in kernel picker is weird <img width="601" alt="image" src="https://user-"This can be simplified as a single "Selected" group at the very top <img width="601" alt="image" src="https://user-"
Change:
markdown.appendText(`n`); } <ins> if (this.extension.outdated) { markdown.appendMarkdown(localize('updateRequired', "Latest version:")); markdown.appendMarkdown(`&nbsp;<span style="background-color:#8080802B;">**&nbsp;_v${this.extension.latestVersion}_**&nbsp;</span>`); markdown.appendText(`n`); } </ins> const preReleaseMessage = ExtensionHoverWidget.getPreReleaseMessage(this.extension); const extensionRuntimeStatus = this.extensionsWorkbenchService.getExtensionStatus(this.extension); const extensionStatus = this.extensionStatusAction.status; <del> const reloadRequiredMessage = this.reloadAction.enabled ? this.reloadAction.tooltip : ''; </del> <ins> const reloadRequiredMessage = this.extension.reloadRequiredStatus; </ins> const recommendationMessage = this.getRecommendationMessage(this.extension); if (extensionRuntimeStatus || extensionStatus || reloadRequiredMessage || recommendationMessage || preReleaseMessage) {

Discussion:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --Hello, I searched for an existing ticket with , but didn't find anything related. <!-- Describe the feature you'd like. --Prior to v1.72.0, the extension sidebar showed which version an extension will be updated to. And when hovering over the extension in the sidebar, or opening the extension in a tab, you could see the currently installed one. That way you could see for example if an update is a major, minor, or patch update, and depending on that dig into the release notes or not. Further in the past, IIRC, the extension sidebar even showed both, installed and target version, which was even more convenient. Now with v1.72.0, I don't see anywhere the target version of an extension update. Many extensions don't keep a proper changelog, so that's not a reliable place to check. Here's an example for vscode-icons, a very popular extension with 12 million installs: ! Only when going to the Marketplace webpage () we see the target version: ! =Feature request: Please make the target version for extension updates visible inside of VS Code again.
Latest version is now shown in the hover. Update button in the extension editor shows the version.
Change:
*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> export const ShowCurrentReleaseNotesActionId = 'update.showCurrentReleaseNotes'; </del>  No newline at end of file <ins> export const ShowCurrentReleaseNotesActionId = 'update.showCurrentReleaseNotes'; export const CheckForVSCodeUpdateActionId = 'update.checkForVSCodeUpdate'; </ins>  No newline at end of file

Discussion:
Ability to update VS Code from the command palette as I have disabled activity bar and have to reenable it to update VS Code. Also, there is a palette option to check for extensions updates, but not for the whole app Steps: Command palette VS Code
First timer here. Could I give this one a shot?
I can do this work.
Hello there, I'm experienced developer and would like to contribute.
Hello there, I am a developer and I have gone through the whole code base and I think that I can add this feature without much problem. Can I please give it a shot?
Please do, you can check the
I have implemented this feature in . Kindly review it.
Works nicely, for downloading updates, but a command doesn't show to Restart To Update.
Change:
*--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; <ins> import * as nls from 'vscode-nls'; </ins> import type * as Proto from '../protocol'; <del> import { localize } from '../tsServer/versionProvider'; </del> import { ClientCapability, ITypeScriptServiceClient, ServerType } from '../typescriptService'; import { conditionalRegistration, requireSomeCapability } from '../utils/dependentRegistration'; import { DocumentSelector } from '../utils/documentSelector';

Discussion:
devtools. the vscode repo and open a TS file. . over an expression while the TS extension loads. hover appears. :bug: In the devtools console, the "didn't get externalized correctly" warning shows up.
Any ideas what would cause this?
This would happen if the call wasn't rewritten by the webpack loader defined here: can you look at the built version of typescript-language-features and tell me what the call looks like?
Ah looks like we're incorrectly importing from another file. Here's the compiled call (which doesn't appear to be rewritten): Will push a PR with a fix
That'll do it. loadMessageBundle is actually responsible for giving you your strings for that specific file so you need to have one of those everywhere you have a localize call
Change:
export class EditorHoverStatusBar extends Disposable implements IEditorHoverStatusBar { public readonly hoverElement: HTMLElement; <ins> public readonly actions: HoverAction[] = []; </ins> private readonly actionsElement: HTMLElement; private _hasContent: boolean = false;

Discussion:
Testing Once again, I'm not sure what the norms are here, but would it be useful to have the actions in the status bar show in the accessibly view? <img width="607" alt="image" src=""
Hi yes that would make sense. Good point!
Change:
import * as assert from 'assert'; import { DisposableStore } from 'vs/base/common/lifecycle'; <del> import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; </del> import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; import { CellKind } from 'vs/workbench/contrib/notebook/common/notebookCommon'; <del> import { INotebookExecutionStateService } from 'vs/workbench/contrib/notebook/common/notebookExecutionStateService'; import { NotebookOptions } from 'vs/workbench/contrib/notebook/browser/notebookOptions'; </del> import { createNotebookCellList, setupInstantiationService, withTestNotebook } from 'vs/workbench/contrib/notebook/test/browser/testNotebookEditor'; suite('NotebookCellList', () => { let disposables: DisposableStore; let instantiationService: TestInstantiationService; <del> let notebookDefaultOptions: NotebookOptions; let topInsertToolbarHeight: number; </del> suiteSetup(() => { disposables = new DisposableStore(); instantiationService = setupInstantiationService(disposables); <del> notebookDefaultOptions = new NotebookOptions(instantiationService.get(IConfigurationService), instantiationService.get(INotebookExecutionStateService), false); topInsertToolbarHeight = notebookDefaultOptions.computeTopInsertToolbarHeight(); </del> }); suiteTeardown(() => disposables.dispose());

Discussion:
enough cells in the interactive window that it needs to scroll "interactiveWindow.alwaysScrollOnNewCell": false to the bottom of the IW and execute another cell :bug: scrollbar height changes and is at the bottom, but the new cell isn't visible
Change:
@command('git._syncAll') async syncAll(): Promise<void> { await Promise.all(this.model.repositories.map(async repository => { <ins> const config = workspace.getConfiguration('git', Uri.file(repository.root)); const rebase = config.get<boolean>('rebaseWhenSync', false) === true; </ins> const HEAD = repository.HEAD; if (!HEAD || !HEAD.upstream) { return; } <del> await repository.sync(HEAD); </del> <ins> await repository.sync(HEAD, rebase); </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 <!-- 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.67.0 OS Version: Windows 10 Steps to Reproduce: .rebaseWhenSync true .postCommitCommand sync git.rebaseWhenSync true works on actionbutton and statusbar but it does not affect git.postCommitCommand sync
Change:
return result; } <del> private parseSettings(settingsObject: { [path: string]: IConfigurationPropertySchema }, extensionInfo?: IExtensionInfo): ISetting[] { </del> <ins> private parseSettings(config: IConfigurationNode): ISetting[] { </ins> const result: ISetting[] = []; <ins> const settingsObject = config.properties; const extensionInfo = config.extensionInfo; // Try using the title if the category id wasn't given // (in which case the category id is the same as the extension id) const categoryLabel = config.extensionInfo?.id === config.id ? config.title : config.id; const categoryOrder = config.order; </ins> for (const key in settingsObject) { const prop = settingsObject[key]; if (this.matchesScope(prop)) {

Discussion:
Tested on Insiders Build 1.65.0 and Build 1.64.2. If an extension's settings are viewed, the presentation order is respected, but _only if the "Search settings" bar is empty. If the search bar contains anything, including the name of the extension (matching all settings for that extension), the presentation order is alphabetical. Given that the presentation can still be controlled by the selected extension name in the left menu, it would seem logically possible to respect the sort ordering within an extension settings group. Examples: Following ordering (search area blank): ! Not following ordering: !
Verification steps: or write an extension with settings where the settings group and the individual settings use fields to determine the order. An example is at Also make the setting keys similar so that they can show up under the same search query. the extension, navigate to the Settings editor, and clear the search widget. that the settings for that extension are displayed in the expected order. a query to the search widget such that those extension settings still show up. that the filtered settings for that extension show up in the same order as in step 3.
Tested just now on LGTM
Change:
const uncategorizedCodeActionGroup = Object.freeze<ActionGroup>({ kind: CodeActionKind.Empty, title: localize('codeAction.widget.id.more', 'More Actions...') }); const codeActionGroups = Object.freeze<ActionGroup[]>([ <del> { kind: CodeActionKind.QuickFix, title: localize('codeAction.widget.id.quickfix', 'Quick Fix...') }, { kind: CodeActionKind.RefactorExtract, title: localize('codeAction.widget.id.extract', 'Extract...'), icon: Codicon.wrench }, { kind: CodeActionKind.RefactorInline, title: localize('codeAction.widget.id.inline', 'Inline...'), icon: Codicon.wrench }, { kind: CodeActionKind.RefactorRewrite, title: localize('codeAction.widget.id.convert', 'Rewrite...'), icon: Codicon.wrench }, { kind: CodeActionKind.RefactorMove, title: localize('codeAction.widget.id.move', 'Move...'), icon: Codicon.wrench }, { kind: CodeActionKind.SurroundWith, title: localize('codeAction.widget.id.surround', 'Surround With...'), icon: Codicon.symbolSnippet }, { kind: CodeActionKind.Source, title: localize('codeAction.widget.id.source', 'Source Action...'), icon: Codicon.symbolFile }, </del> <ins> { kind: CodeActionKind.QuickFix, title: localize('codeAction.widget.id.quickfix', 'Quick Fix:') }, { kind: CodeActionKind.RefactorExtract, title: localize('codeAction.widget.id.extract', 'Extract:'), icon: Codicon.wrench }, { kind: CodeActionKind.RefactorInline, title: localize('codeAction.widget.id.inline', 'Inline:'), icon: Codicon.wrench }, { kind: CodeActionKind.RefactorRewrite, title: localize('codeAction.widget.id.convert', 'Rewrite:'), icon: Codicon.wrench }, { kind: CodeActionKind.RefactorMove, title: localize('codeAction.widget.id.move', 'Move:'), icon: Codicon.wrench }, { kind: CodeActionKind.SurroundWith, title: localize('codeAction.widget.id.surround', 'Surround With:'), icon: Codicon.symbolSnippet }, { kind: CodeActionKind.Source, title: localize('codeAction.widget.id.source', 'Source Action:'), icon: Codicon.symbolFile }, </ins> uncategorizedCodeActionGroup, ]);

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 <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: OS Version: Related to Swap header ellipses to semi-colons - less confusing vs actual links in other vs code instances