jiebi/CodeConvo huggingface dataset:
Change:
export class TimeBasedVariableResolver implements VariableResolver { <ins> private static readonly dayNames = [nls.localize('Sunday', "Sunday"), nls.localize('Monday', "Monday"), nls.localize('Tuesday', "Tuesday"), nls.localize('Wednesday', "Wednesday"), nls.localize('Thursday', "Thursday"), nls.localize('Friday', "Friday"), nls.localize('Saturday', "Saturday")]; private static readonly dayNamesShort = [nls.localize('SundayShort', "Sun"), nls.localize('MondayShort', "Mon"), nls.localize('TuesdayShort', "Tue"), nls.localize('WednesdayShort', "Wed"), nls.localize('ThursdayShort', "Thu"), nls.localize('FridayShort', "Fri"), nls.localize('SaturdayShort', "Sat")]; private static readonly monthNames = [nls.localize('January', "January"), nls.localize('February', "February"), nls.localize('March', "March"), nls.localize('April', "April"), nls.localize('May', "May"), nls.localize('June', "June"), nls.localize('July', "July"), nls.localize('August', "August"), nls.localize('September', "September"), nls.localize('October', "October"), nls.localize('November', "November"), nls.localize('December', "December")]; private static readonly monthNamesShort = [nls.localize('JanuaryShort', "Jan"), nls.localize('FebruaryShort', "Feb"), nls.localize('MarchShort', "Mar"), nls.localize('AprilShort', "Apr"), nls.localize('MayShort', "May"), nls.localize('JuneShort', "Jun"), nls.localize('JulyShort', "Jul"), nls.localize('AugustShort', "Aug"), nls.localize('SeptemberShort', "Sep"), nls.localize('OctoberShort', "Oct"), nls.localize('NovemberShort', "Nov"), nls.localize('DecemberShort', "Dec")]; </ins> resolve(variable: Variable): string { const { name } = variable;

Discussion:
I'm happy to see the new date-based snippet variables in v1.20.0. I would love to see some additional ones since I wanted to use this for generating journal templates. Something like this: CURRENTDAYNAME: Monday, Tuesday, ... CURRENTDAYNAMESHORT: Mon, Tue, ... CURRENTMONTHNAME: January, February, ... CURRENTMONTHNAMESHORT: Jan, Feb, ... Thank you.
A little more tricky because you might want to consider localisation settings...
Change:
if (this._disassembledInstructions) { this._disassembledInstructions.splice(0, this._disassembledInstructions.length); this._instructionBpList = this._debugService.getModel().getInstructionBreakpoints(); <del> this.loadDisassembledInstructions(targetAddress, -DisassemblyView.NUM_INSTRUCTIONS_TO_LOAD, DisassemblyView.NUM_INSTRUCTIONS_TO_LOAD * 2).then(() => { </del> <ins> this.loadDisassembledInstructions(targetAddress, -DisassemblyView.NUM_INSTRUCTIONS_TO_LOAD * 4, DisassemblyView.NUM_INSTRUCTIONS_TO_LOAD * 8).then(() => { </ins> // on load, set the target instruction in the middle of the page. if (this._disassembledInstructions!.length > 0) { const targetIndex = Math.floor(this._disassembledInstructions!.length / 2);

Discussion:
Testing disassembly view scrolling, look at the scroll bar and notice the aggressive jumping suggest to use a much bigger initial view size so the scrolling will be much smoother. Current experience is very rough.
will fix this.
Change:
interface MarkdownItConfig { readonly breaks: boolean; readonly linkify: boolean; <ins> readonly typographer: boolean; </ins> } class TokenCache {

Discussion:
Would it be possible to implement support for Typographer mode in the Markdown preview? has support for a typographer option to "enable some language-neutral replacement + quotes beautification". A live comparison is available on . I've listed some of the most common examples below: Name Typographer -- -- Left single quote Left double quote Right single quote Right double quote Ellipsis En-dash Em-dash Copyright Trademark It'd be ideal to add a config setting such that Typographer replacements are done on-the-fly, similarly to the existing implementation of . Thank you for your time.
Change:
} if (!globTasksDetected && groupTasks.length === 0) { <del> groupTasks = await this._findWorkspaceTasksInGroup(TaskGroup.Build, true); </del> <ins> groupTasks = await this._findWorkspaceTasksInGroup(taskGroup, true); </ins> } const handleMultipleTasks = (areGlobTasks: boolean) => {

Discussion:
Testing VS Code repo Test Task from command palette (I'm not sure what this command does) :bug: nothing happens
any errors in the output channel? does it always repro for you?
Always repros, no errors in tasks output channel even after enabling debug logging
What is that recording supposed to show? It has length 0 for me, I only see the default build tasks getting run?
That something happens for me when I call as opposed to " nothing happens" I see why the default build task is running for me - pretty sure that's not what's supposed to happen here and likely a recent regression.
Expectation to verify: the vscode test script gets run when that command is invoked
Change:
for (const extension of extensions) { const id = await getExtensionId(extension); const installed = await this.extensionManagementService.getInstalled(); <del> const extensionToUninstall = installed.find(e => areSameExtensions(e.identifier, { id })); if (!extensionToUninstall) { </del> <ins> const extensionsToUninstall = installed.filter(e => areSameExtensions(e.identifier, { id })); if (!extensionsToUninstall.length) { </ins> throw new Error(`${notInstalled(id)}n${useId}`); } <del> if (extensionToUninstall.type === ExtensionType.System) { output.log(localize('builtin', "Extension '{0}' is a Built-in extension and cannot be installed", id)); </del> <ins> if (extensionsToUninstall.some(e => e.type === ExtensionType.System)) { output.log(localize('builtin', "Extension '{0}' is a Built-in extension and cannot be uninstalled", id)); </ins> return; } <del> if (extensionToUninstall.isBuiltin && !force) { </del> <ins> if (!force && extensionsToUninstall.some(e => e.isBuiltin)) { </ins> output.log(localize('forceUninstall', "Extension '{0}' is marked as a Built-in extension by user. Please use '--force' option to uninstall it.", id)); return; } output.log(localize('uninstalling', "Uninstalling {0}...", id)); <del> await this.extensionManagementService.uninstall(extensionToUninstall); uninstalledExtensions.push(extensionToUninstall); </del> <ins> for (const extensionToUninstall of extensionsToUninstall) { await this.extensionManagementService.uninstall(extensionToUninstall); uninstalledExtensions.push(extensionToUninstall); } </ins> output.log(localize('successUninstall', "Extension '{0}' was successfully uninstalled!", id)); }

Discussion:
Open an integrated terminal in a remote window - the extensions viewlet shows that the extension is installed both locally and remote (not sure if that's the expected result) only removes one of the extensions
Calling results in
Sorry, I corrected the description. It's
Note, yesterday I changed that remote CLI only operates on the remote. That means removing a local extension is not possible with the remote CLI. User need to use the local CLI or the extensions viewlet. Removing the milestone as the issue is no longer valid.
Change:
width: 100%; height: 100%; opacity: 0.3; <del> background-color: var(--vscode-editor-background); </del> z-index: 1; }

Discussion:
diff Lightbulb / Sparkle to show (For example click on method name which is in a diff) / Sparkle Icon shows with a background color even though it should probably be transparent. <img width="770" alt="image" src=""
Change:
"onigasm-umd": "2.2.5", "semver-umd": "^5.5.5", "vscode-textmate": "4.4.0", <del> "xterm": "4.3.0-beta.28.vscode.1", </del> <ins> "xterm": "4.4.0-beta.13", </ins> "xterm-addon-search": "0.4.0-beta4", "xterm-addon-web-links": "0.2.1", <del> "xterm-addon-webgl": "0.4.0-beta.11" </del> <ins> "xterm-addon-webgl": "0.5.0-beta.7" </ins> } }

Discussion:
Re macOS zsh with oh my zsh Run scripts described in Open with Canvas rendering and select all ! Open with WebGL rendering ! !
Upstream: I think the problem with inverse is the only issue there? Let me know if I'm wrong.
yup, that's the only issue I saw.
Change:
const data = event.data; let cellContainer = document.getElementById(data.id); if (cellContainer) { <del> cellContainer?.parentElement?.removeChild(cellContainer); </del> <ins> cellContainer.parentElement?.removeChild(cellContainer); } } break; case 'updateMarkdownPreviewSelectionState': { const data = event.data; const previewNode = document.getElementById(`${data.id}_preview`); if (previewNode) { previewNode.classList.toggle('selected', data.isSelected); </ins> } } break;

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. --- VS Code Version: 1.54-Insiders OS Version: macOS open a GitHub issue notebook cmd+shift+o navigate down only code cells are highlighted https://user- <!-- 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 direct to the extension publisher. The 'Help Report Issue' dialog can assist with this. --

Verifying in the vscode repo across some of the markdown headers ! If I put them into edit mode, then I see the background change on multiselect
I guess you don't see this issue when commenting out from the workspace setting?
Yeah, that's correct! I see everything get highlighted as expected when that setting is off
The root cause is that the for webview backed markdown cells has a height of zero. This element gets the correct background color during selection, but is not visible due to the height. We have zero height so that you can click through to the webview instead of to the cell I will prototype telling the cell in the webview if it is selected or not. Then we can add styling inside the webview to show selection state
Change:
group: '2_signInRequests', command: { id: `${extensionId}signIn`, <del> title: nls.localize( { key: 'signInRequest', comment: ['The placeholder {0} will be replaced with an extension name. (1) is to indicate that this menu item contributes to a badge count.'] }, "Sign in to use {0} (1)", </del> <ins> title: nls.localize({ key: 'signInRequest', comment: [`The placeholder {0} will be replaced with an authentication provider's label. {1} will be replaced with an extension name. (1) is to indicate that this menu item contributes to a badge count.`] }, "Sign in with {0} to use {1} (1)", provider.label, </ins> extensionName) } });

Discussion:
Testing We don't show the provider in the list of extensions that want to sign in: ! In this case, test117290 wants to sign in using the provider and the others I assume want to sign in using GitHub. It would be good to know what I am signing into.
or maybe "sign in with <<< provider " to use ...
Verification steps: Install GHPR extension See: ! Install GitHub Codespaces extension ("Cancel" any modals) Reload VS Code Once GitHub Codespaces activates you should see: !
Change:
) { super(null, action, [], 0); <del> this.toDispose.push(this.outputService.onOutputChannel(() => this.setOptions(this.getOptions(), this.getSelected(undefined)))); </del> <ins> this.toDispose.push(this.outputService.onOutputChannel(() => { const activeChannelIndex = this.getSelected(this.outputService.getActiveChannel().id); this.setOptions(this.getOptions(), activeChannelIndex); })); </ins> this.toDispose.push(this.outputService.onActiveOutputChannel(activeChannelId => this.setOptions(this.getOptions(), this.getSelected(activeChannelId)))); this.toDispose.push(attachSelectBoxStyler(this.selectBox, themeService));

Discussion:
Platforms Tested: Insiders 5-30 Code 1.11.1 Stable Windows 7 OS X Sierra (should be all platforms) Problem: Output panel drop-down does not track current active output if output channel is activated later , typically when an extension output Channel is active (eg Git). Output select box will show the default 0 index output (Tasks) Steps to reproduce: Open code with git repository/workspace select Git output Channel close code reopen code Git output will be active but drop-down shows Tasks Fixed with PR always update active select box selection with setOptions call on any output channel update Tested on Windows 7, OS X
Fixed via
Change:
import { IViewDescriptorService } from 'vs/workbench/common/views'; import { ITextModelService } from 'vs/editor/common/services/resolverService'; import { ILifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycle'; <ins> import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; </ins> const folderName = 'test-folder'; const folderUri = URI.file(`/${folderName}`);

Discussion:
Testing Continue from web inside desktop Let the window sit Install update (which restarts the App) you are instantly greeted with a modal dialog (I wasn't even in that window of VS Code) Ideas don't use a modal but the custom modal overlay which is more friendly and doesn't steep focus don't show this when my local changes are no different to those on the server <img width="1391" alt="Screenshot 2022-08-24 at 09 26 13" src="https://user-"
Is the custom modal overlay the same thing as the custom modal dialog, i.e. :+1: I filed for this.
Change:
beforeRender(): IDimension | null { <del> const contentWidth = this._editor.getLayoutInfo().contentWidth; const minWidth = Math.round(contentWidth * 0.38); const maxWidth = Math.round(contentWidth * 0.82); const width = clamp(220, minWidth, maxWidth); </del> <ins> const maxHeight = this._widget.input.inputEditor.getOption(EditorOption.lineHeight) * 5; </ins> const inputEditorHeight = this._widget.inputEditor.getContentHeight(); <del> this._widget.inputEditor.layout(new dom.Dimension(width, inputEditorHeight)); </del> <ins> this._widget.inputEditor.layout(new dom.Dimension(360, Math.min(maxHeight, inputEditorHeight))); </ins> // const actualHeight = this._widget.inputPartHeight; // return new dom.Dimension(width, actualHeight);

Discussion:
Repro: vscode on (wide) external monitor inline chat - Additional info: Resizing vscode to half of screen fixes the problem Version: 1.88.0-insider Commit: Date: 2024-03-27T05:51:26.826Z Electron: 28.2.6 ElectronBuildId: Chromium: 120.0.6099.291 18.18.2 V8: 12.0.267.19-electron.0 OS: Darwin arm64 23.4.0

Sometimes the default width for inline chat seems very wide: <img width="854" alt="image" src=""Maybe it could grow while typing and or allow to be resized.
decided against dynamic and going with a more reasonable default width of 360px
Change:
} } <del> export class LinkOpener extends Disposable implements IEditorContribution { public static readonly ID = 'editor.linkOpener'; public static get(editor: ICodeEditor): LinkOpener | null { return editor.getContribution<LinkOpener>(LinkOpener.ID); } private readonly links = new LinkedList<{ range: IRange; label: string; callback: () => void }>(); constructor( private readonly editor: ICodeEditor, @IContextMenuService private readonly contextMenuService: IContextMenuService, ) { super(); } openLink(range: IRange, label: string, callback: () => void): void { this.links.push({ range, label, callback }); if (this.links.size === 1) { queueMicrotask(() => this.openLinks()); } } private openLinks(): void { if (!this.editor.hasModel()) { return; } const links = [...this.links]; this.links.clear(); // remove links that don't overlap, late links win over early links for (let i = 1; i < links.length; i++) { const link = links[i]; const prevLink = links[i - 1]; if (!Range.areIntersecting(link.range, prevLink.range)) { links[i - 1] = undefined!; } } coalesceInPlace(links); if (links.length === 1) { // single: just invoke callback links[0].callback(); } else if (links.length > 1) { // multiple: show context menu this.contextMenuService.showContextMenu({ getAnchor: () => { assertType(this.editor.hasModel()); const position = Range.getStartPosition(links[0].range); const cursorCoords = this.editor.getScrolledVisiblePosition(position); // Translate to absolute editor position const editorCoords = dom.getDomNodePagePosition(this.editor.getDomNode()); const posx = editorCoords.left + cursorCoords.left; const posy = editorCoords.top + cursorCoords.top + cursorCoords.height; return { x: posx, y: posy }; }, getActions: () => { return links.map(item => toAction({ id: '', label: item.label, run: item.callback })); }, }); } } } </del> class OpenLinkAction extends EditorAction { constructor() {

Discussion:
The content of the line: Open definition does nothing !
Also happens on Mac with Cmd+Click. Makes it very difficult to navigate my documentation.
I believe this is a result of fixing Markdown has a link provider and a definition provider. However in this case, the definition provider returns since we are not on a reference link
revert of the bad change is up
Change:
assert.strictEqual(smartPaste.pasteAsMarkdownLink, true); }); <del> test('Should evaluate pasteAsMarkdownLink as false for pasting within a code block', () => { </del> <ins> test('Should evaluate pasteAsMarkdownLink as false for pasting within a backtick code block', () => { </ins> skinnyDocument.getText = function () { return '```rnrn```'; }; const range = new vscode.Range(0, 5, 0, 5); const smartPaste = checkSmartPaste(skinnyDocument, range); assert.strictEqual(smartPaste.pasteAsMarkdownLink, false); }); <ins> test('Should evaluate pasteAsMarkdownLink as false for pasting within a tilde code block', () => { skinnyDocument.getText = function () { return '~~~rnrn~~~'; }; const range = new vscode.Range(0, 5, 0, 5); const smartPaste = checkSmartPaste(skinnyDocument, range); assert.strictEqual(smartPaste.pasteAsMarkdownLink, false); }); </ins> test('Should evaluate pasteAsMarkdownLink as false for pasting within a math block', () => { skinnyDocument.getText = function () { return '$$$rnrn$$$'; }; const range = new vscode.Range(0, 5, 0, 5);

Discussion:
Type: <bBug</ba md file: a url inside the block (this is an alternative way to create a fenced code block) bug The url is incorrectly pasted as a markdown link VS Code version: Code - Insiders 1.81.0-insider (Universal) (, 2023-07-25T08:15:40.243Z) OS version: Darwin x64 22.5.0 Modes: <details<summarySystem Info</summary </details<!-- generated by issue reporter --
Change:
before_install: - export GITHUB_TOKEN=$PUBLIC_GITHUB_TOKEN - git submodule update --init --recursive <del> - git clone --depth 1 https://github.com/creationix/nvm.git ./.nvm - source ./.nvm/nvm.sh </del> - nvm install 8.9.1 - nvm use 8.9.1 - npm i -g yarn

Discussion:
<!-- Do you have a question? Please ask it on --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.21.1 OS Version: Fedora 27 As Travis CI have shipped in their images, there is no need to install again
Change:
} })); <ins> this.disposables.add(extensionService.onWillStop(evt => { evt.veto( this.stopSession(undefined).then(() => false), nls.localize('stoppingDebug', 'Stopping debug sessions...'), ); })); </ins> this.initContextKeys(contextKeyService); }

Discussion:
Repro: a (TS) debug session (F5) on "Restart extensions" button in Extensions explorer - :bug: <img width="483" alt="image" src=""Expected behavior options: ideal: resume debug session ask the user if it's okay for them to interrupt debug session and not show error notification ?
We can't generally do this because the debug session can be owned+managed by stateful code in the extension. Resuming the debug session requires starting it anew which would launch any program again, behavior that could be surprising to users.
In core, you can also veto restarting extensions if there is a live debug session
Thanks, I'll have the session gracefully shut down when the extension host is restarted. Will tackle in debt week.
Change:
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, {

Discussion:
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
Change:
export namespace CompletionItem { <del> export function to(suggestion: modes.CompletionItem): types.CompletionItem { </del> <ins> export function to(suggestion: modes.CompletionItem, converter?: CommandsConverter): types.CompletionItem { </ins> const result = new types.CompletionItem(suggestion.label); result.insertText = suggestion.insertText; result.kind = CompletionItemKind.to(suggestion.kind);

Discussion:
If you return in a completion item, the property is when calling through . Setup: Test code: Output is: Full repro project is here:
It looks like the conversion is missing. The doc states that additionalTextEdits should not overlap with the main edit range or each other, should that be checked or is that done when the edits are carried out? Adding this: ! works, unless the range intersections need to be checked.
No checks required - this is already the way back from the UX and check should have been carried out already