jiebi/CodeConvo huggingface dataset:
Change:
I have muscle memory for middle-clicking on links (to open in a new tab) and it doesn't work in VS Code. ! If I middle-click on the link above, it opens a browser to
are you using VSCode in Electron or Web? Does it work when you click normally and if so what happens then?
This is in Electron (haven't tried on the web). And it works perfectly on a normal click.
OK, making this open for help if someone wants to chime in.
Created a PR to fix this
History shows as the one introducing the handler but I am not sure who the owner is today.

Discussion:
import { Schemas } from 'vs/base/common/network'; import { renderCodicons, markdownEscapeEscapedCodicons } from 'vs/base/common/codicons'; import { resolvePath } from 'vs/base/common/resources'; <ins> import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; </ins> export interface MarkedOptions extends marked.MarkedOptions { baseUrl?: never;

const actionHandler = options.actionHandler; if (actionHandler) { <del> actionHandler.disposeables.add(DOM.addStandardDisposableListener(element, 'click', event => { let target: HTMLElement | null = event.target; if (target.tagName !== 'A') { target = target.parentElement; if (!target || target.tagName !== 'A') { </del> <ins> [DOM.EventType.CLICK, DOM.EventType.AUXCLICK].forEach(event => { actionHandler.disposeables.add(DOM.addDisposableListener(element, event, (e: MouseEvent) => { const mouseEvent = new StandardMouseEvent(e); if (!mouseEvent.leftButton && !mouseEvent.middleButton) { </ins> return; } <del> } try { const href = target.dataset['href']; if (href) { actionHandler.callback(href, event); </del> <ins> let target: HTMLElement | null = mouseEvent.target; if (target.tagName !== 'A') { target = target.parentElement; if (!target || target.tagName !== 'A') { return; } </ins> } <del> } catch (err) { onUnexpectedError(err); } finally { event.preventDefault(); } })); </del> <ins> try { const href = target.dataset['href']; if (href) { actionHandler.callback(href, mouseEvent); } } catch (err) { onUnexpectedError(err); } finally { mouseEvent.preventDefault(); } })); }); </ins> } // Use our own sanitizer so that we can let through only spans.
Change:
The WSL recommendation says but should say “Windows Subsystem for Linux” (WSL)
I believe this was merged in, thus closing

Discussion:
{ "name": "code-oss-dev", "version": "1.48.1", <del> "distro": "ffb610b4929b3e94a5827ba9a35981961602fa6d", </del> <ins> "distro": "2893367f9ed13076309bf55498cfd8ce90cad480", </ins> "author": { "name": "Microsoft Corporation" },
Change:
<!-- 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

Discussion:
// 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;

assert.ok(!extpath.isValidBasename('aux')); assert.ok(!extpath.isValidBasename('Aux')); assert.ok(!extpath.isValidBasename('LPT0')); <ins> assert.ok(!extpath.isValidBasename('aux.txt')); assert.ok(!extpath.isValidBasename('com0.abc')); assert.ok(extpath.isValidBasename('LPT00')); assert.ok(extpath.isValidBasename('aux1')); assert.ok(extpath.isValidBasename('aux1.txt')); assert.ok(extpath.isValidBasename('aux1.aux.txt')); </ins> assert.ok(!extpath.isValidBasename('test.txt.')); assert.ok(!extpath.isValidBasename('test.txt..')); assert.ok(!extpath.isValidBasename('test.txt '));
Change:
Issue Type: <bFeature Request</bgit supports commit signing using either GPG or X.509. VS Code apparently supports using both methods, since it uses the signing method that git is set to use (probably by just calling ). However, the “Enable Commit Signing” configuration label names explicitly GPG as signing method. If X.509 is set to be used by git, it is also used when commiting using VS Code's git interface, although the user selected “Enable Commit Signing with GPG”. Renaming the “Enable Commit Signing” configuration label to include both GPG and X.509 would solve this inconsistence. VS Code version: Code 1.48.1 (, 2020-08-19T17:09:41.484Z) OS version: Darwin x64 20.0.0 <!-- generated by issue reporter --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.578 --- <!-- score: 0.448 --<!-- potentialduplicatescomment --
I checked on that, this issue is no duplicate, but a different issue.

Discussion:
"config.smartCommitChanges.all": "Automatically stage all changes.", "config.smartCommitChanges.tracked": "Automatically stage tracked changes only.", "config.suggestSmartCommit": "Suggests to enable smart commit (commit all changes when there are no staged changes).", <del> "config.enableCommitSigning": "Enables commit signing with GPG.", </del> <ins> "config.enableCommitSigning": "Enables commit signing with GPG or X.509.", </ins> "config.discardAllScope": "Controls what changes are discarded by the `Discard all changes` command. `all` discards all changes. `tracked` discards only tracked files. `prompt` shows a prompt dialog every time the action is run.", "config.decorations.enabled": "Controls whether Git contributes colors and badges to the explorer and the open editors view.", "config.enableStatusBarSync": "Controls whether the Git Sync command appears in the status bar.",
Change:
It looks like we a new dependency to which adds substantial time to our startup: ! This module should be loaded via only when used. //cc
Yeah, this is a really bulky module since it doesn't seem to be bundled in any way. Ideally, this loaded async and bundled <img width="377" alt="Screenshot 2020-08-25 at 11 09 05" src="https://user-"
On top of this discussion, we also need to think about wether this module should be supported in web and then it should be webpacked accordingly, similar to our UMD variants (, ...).
I have published the umd variant (though i messed up the typings so it needs an update), it just needs adoption.
sounds good. Loading this dependency async would be good in any case, even if you pick up the UMD variant as we avoid having to load the contents right on startup if not needed.
PR is up:

Discussion:
*--------------------------------------------------------------------------------------------*/ import * as platform from 'vs/base/common/platform'; <del> import { IKeyValueStorage, IExperimentationTelemetry, IExperimentationFilterProvider, ExperimentationService as TASClient } from 'tas-client'; </del> <ins> import type { IKeyValueStorage, IExperimentationTelemetry, IExperimentationFilterProvider, ExperimentationService as TASClient } from 'tas-client'; </ins> import { MementoObject, Memento } from 'vs/workbench/common/memento'; import { IProductService } from 'vs/platform/product/common/productService'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';

const telemetry = new ExperimentServiceTelemetry(this.telemetryService); const tasConfig = this.productService.tasConfig!; <del> const tasClient = new TASClient({ </del> <ins> const tasClient = new (await import('tas-client')).ExperimentationService({ </ins> filterProviders: [filterProvider], telemetry: telemetry, storageKey: storageKey,
Change:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --The next step in resolving . The Trusted Types violation here is setting an HTMLElement’s text content by assigning it to . Because in all of the cases the HTMLElement is already created with function, the idea is to pass the text as its argument. That is to replace: with .

Discussion:
const keys: Key[] = [ { id: 'explorer', <del> arrow: '&larr;', </del> <ins> arrow: 'u2190', // &larr; </ins> label: localize('welcomeOverlay.explorer', "File explorer"), command: 'workbench.view.explorer' }, { id: 'search', <del> arrow: '&larr;', </del> <ins> arrow: 'u2190', // &larr; </ins> label: localize('welcomeOverlay.search', "Search across files"), command: 'workbench.view.search' }, { id: 'git', <del> arrow: '&larr;', </del> <ins> arrow: 'u2190', // &larr; </ins> label: localize('welcomeOverlay.git', "Source code management"), command: 'workbench.view.scm' }, { id: 'debug', <del> arrow: '&larr;', </del> <ins> arrow: 'u2190', // &larr; </ins> label: localize('welcomeOverlay.debug', "Launch and debug"), command: 'workbench.view.debug' }, { id: 'extensions', <del> arrow: '&larr;', </del> <ins> arrow: 'u2190', // &larr; </ins> label: localize('welcomeOverlay.extensions', "Manage extensions"), command: 'workbench.view.extensions' },

// }, { id: 'problems', <del> arrow: '&larrpl;', </del> <ins> arrow: 'u2939', // &larrpl; </ins> label: localize('welcomeOverlay.problems', "View errors and warnings"), command: 'workbench.actions.view.problems' },

// }, { id: 'commandPalette', <del> arrow: '&nwarr;', </del> <ins> arrow: 'u2196', // &nwarr; </ins> label: localize('welcomeOverlay.commandPalette', "Find and run all commands"), command: ShowAllCommandsAction.ID }, { id: 'notifications', <del> arrow: '&cudarrr;', </del> <ins> arrow: 'u2935', // &cudarrr; </ins> arrowLast: true, label: localize('welcomeOverlay.notifications', "Show notifications"), command: 'notifications.showList'

.forEach(({ id, arrow, label, command, arrowLast }) => { const div = dom.append(this._overlay, $(`.key.${id}`)); if (arrow && !arrowLast) { <del> dom.append(div, $('span.arrow')).innerHTML = arrow; </del> <ins> dom.append(div, $('span.arrow', undefined, arrow)); </ins> } dom.append(div, $('span.label')).textContent = label; if (command) {

} } if (arrow && arrowLast) { <del> dom.append(div, $('span.arrow')).innerHTML = arrow; </del> <ins> dom.append(div, $('span.arrow', undefined, arrow)); </ins> } }); }
Change:
Version: 1.48.2 (user setup) Commit: Date: 2020-08-25T10:13:11.295Z Electron: 7.3.2 Chrome: 78.0.3904.130 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0. ! Breadcrumb for myself, in case a repro is required: I was reducing material-ui for abug.
FYI
Thanks for your great project, I would like to try to fix this issue. Before I begin to do, I want to have a discussion there. my idea for fixing this issue is that: I will check the current string(in this issuse is '=') whether hit the scopes(produced by vscode-textmate) such as "" defined in file, then apply different css style not allow new line for operator. But the problem is that we can't get scopes info, because we don't allow use tokenize method but can ony use tokenize2 method (because of performance reason): So in my opinion, this idea seems not the right fix for the issuse, right ? If so, how about just detect whether the current string is typescript operator, such as through typescript api(I am not sure this api is really exist) ?
Doing a fix specific about the token scope list would make this change tied up to TextMate, while the editor itself supports another tokenization engine named Monarch, which does not produce scope lists. What I find interesting is that our wrapping computer does a lot better in this case: ! Even when using the DOM wrapping points computed by the browser via , that symbol is not broken: ! So I believe there might be something off in the CSS of the hover widget that is causing the browser to break in the middle of . When computing wrapping points via the browser, is the CSS we use for . Perhaps the hover widget is using something else that would cause such behavior?
Thanks for offering these information. It seems I misunderstood this issue before. the message "TypeScript QuickInfo should not wrap in the middle of an operator", make me think I need only handle the operator not other single word, this make things more complicated. So I just remove relevant css as you suggested
I did a quick blame on the CSS and it looks like it was introduced via

Discussion:
.monaco-hover .monaco-tokenized-source { white-space: pre-wrap; <del> word-break: break-all; </del> } .monaco-hover .hover-row.status-bar {
Change:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --As mentioned in the thread by there is a need for a tool that would help developers engaged in the VSCode project identify the Trusted Types violations. This can be achieved by adding as a devDependency and an appropriate yarn script.
I have also a task-definition so that tsec errors show in the editor itself. F1 Run Task tsec <img width="1472" alt="Screenshot 2020-09-01 at 13 07 22" src="https://user-"

Discussion:
"smoketest": "cd test/smoke && node test/index.js", "download-builtin-extensions": "node build/lib/builtInExtensions.js", "monaco-compile-check": "tsc -p src/tsconfig.monaco.json --noEmit", <ins> "tsec-compile-check": "node_modules/tsec/bin/tsec -p src/tsconfig.json --noEmit", </ins> "valid-layers-check": "node build/lib/layersChecker.js", "strict-function-types-watch": "tsc --watch -p src/tsconfig.json --noEmit --strictFunctionTypes", "update-distro": "node build/npm/update-distro.js",

"source-map": "^0.4.4", "style-loader": "^1.0.0", "ts-loader": "^4.4.2", <ins> "tsec": "googleinterns/tsec", </ins> "typescript": "^4.1.0-dev.20200824", "typescript-formatter": "7.1.0", "underscore": "^1.8.2",
Change:
Testing The setting functions properly when I enter an invalid color: it defaults back to a red indicator. But I was thinking perhaps adding a warning message to users that they have entered an invalid color (like the warning for invalid ), and/or auto-filling the entry back to red would emphasize to them why their indicator has turned red again.
The setting is of type string, with which provides a good error message while editing the setting in the JSON file. As far as I can tell there is no way to currently get the same experience in the settings UI. I do agree that it would be nice to have a better experience for editing color settings in the settings UI. have we ever considered adding a type/validation for a setting?
We have to implement these individually and that format isn't implemented yet
It would be a feature request for the settings editor, probably easy, feel free to assign it to me
would you be opened for me to submit a pull request? I would be happy to take a stab at this in my free time to learn more about our codebase.
Sure! Here are our string validations:

Discussion:
type: 'string', format: 'color-hex', default: '#FF0000', <del> minLength: 4, maxLength: 9, </del> description: nls.localize('screencastMode.mouseIndicatorColor', "Controls the color in hex (#RGB, #RGBA, #RRGGBB or #RRGGBBAA) of the mouse indicator in screencast mode.") }, 'screencastMode.mouseIndicatorSize': {

*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <ins> import * as nls from 'vs/nls'; </ins> import { JSONSchemaType } from 'vs/base/common/jsonSchema'; <ins> import { Color } from 'vs/base/common/color'; </ins> import { isArray } from 'vs/base/common/types'; <del> import * as nls from 'vs/nls'; </del> import { IConfigurationPropertySchema } from 'vs/platform/configuration/common/configurationRegistry'; type Validator<T> = { enabled: boolean, isValid: (value: T) => boolean; message: string };

isValid: ((value: string) => patternRegex!.test(value)), message: prop.patternErrorMessage || nls.localize('validations.regex', "Value must match regex `{0}`.", prop.pattern) }, <ins> { enabled: prop.format === 'color-hex', isValid: ((value: string) => Color.Format.CSS.parseHex(value)), message: nls.localize('validations.colorFormat', "Invalid color format. Use #RGB, #RGBA, #RRGGBB or #RRGGBBAA.") } </ins> ].filter(validation => validation.enabled); }
Change:
Testing There is no hover explaining the sequence counter (I think that's what the block is showing). Being unfamiliar with Notebooks, I didn't know what that UI element was for. It seems to increase as cells are executed. I initially thought it was a result count until I turned on the Notebook status bar. !
There might also be a color contrast issue as the block is small and very faint.
Maybe it could get a tooltip. I'm not sure about color contrast,
You're right in the selected state it doesn't pass the ratio. If we bump the opacity to it will pass: <img width="350" src="https://user-"!
Thanks for fixing it Don't forget the milestone :)

Discussion:
font-family: var(--monaco-monospace-font); white-space: pre; box-sizing: border-box; <del> opacity: .6; </del> <ins> opacity: .7; </ins> /* Sizing hacks */ bottom: 0px;
Change:
Testing When the WebviewView is not visible, changing the title is not reflected visually:
Doesn't reproduce for me: ! Can you please share your full example?
I should have mentioned that his is when its in a bottom "Panel" and not a side tree, IOW:
I believe the issue is in here: If an extension updates the title when switching away from a view—or updates the title of a non-active view—then the condition fails so we never call . Could we move the call outside of the conditional?
reverted , will fix with a separate implementation of update title like panelPart has

Discussion:
protected onTitleAreaUpdate(compositeId: string): void { <del> // Active Composite if (this.activeComposite && this.activeComposite.getId() === compositeId) { // Title this.updateTitle(this.activeComposite.getId(), this.activeComposite.getTitle()); </del> <ins> // Title const compositeItem = this.instantiatedCompositeItems.get(compositeId); if (compositeItem) { this.updateTitle(compositeItem.composite.getId(), compositeItem.composite.getTitle()); } </ins> <del> // Actions </del> <ins> // Actions if (this.activeComposite && this.activeComposite.getId() === compositeId) { </ins> const actionsBinding = this.collectCompositeActions(this.activeComposite); this.mapActionsBindingToComposite.set(this.activeComposite.getId(), actionsBinding); actionsBinding();
Change:
<!-- 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. --Steps to Reproduce: a vscode extension repository (e.g. ) to contributes commands (e.g. ). "command" and observe the tooltip <img width="857" alt="Screen Shot 2020-09-05 at 21 07 16" src="https://user-"<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes Does this issue occur on Insider?: Yes

Discussion:
box-sizing: border-box; height: 100%; width: 100%; <ins> padding-right: 22px; </ins> } .monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .type {
Change:
This is not a failure but error output when running the tests: I feel this could be a result from the environment service change you did. Bounce back to me if not.
I investigated and do not understand how the environment service changes caused this, but it seems there is no error handling while writing into back up as a result above uncaught errors are shown. Digging more deeper, backup tracker test is not waiting until back up task is finished which is triggered by the test and removing the backup folder in tear down. Created a PR that takes care of error handling in backup tracker - If there is a better fix, please ignore the PR and push the fix.

Discussion:
if (workingCopy.isDirty()) { this.logService.trace(`[backup tracker] running backup`, workingCopy.resource.toString()); <del> const backup = await workingCopy.backup(); this.backupFileService.backup(workingCopy.resource, backup.content, this.getContentVersion(workingCopy), backup.meta); </del> <ins> try { const backup = await workingCopy.backup(); await this.backupFileService.backup(workingCopy.resource, backup.content, this.getContentVersion(workingCopy), backup.meta); } catch (error) { this.logService.error(error); } </ins> } }, BackupTracker.BACKUP_FROM_CONTENT_CHANGE_DELAY);

// Delete any existing backups completely and then re-create it. await pfs.rimraf(backupHome, pfs.RimRafMode.MOVE); await pfs.mkdirp(backupHome); <ins> await pfs.mkdirp(workspaceBackupPath); </ins> return pfs.writeFile(workspacesJsonPath, ''); });
Change:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --When creating a git tag via the <kbdF1</kbdmenu, the user is prompted to enter a tag name — this is of course mandatory. After that is entered, the user is prompted to enter a tag message. If this is left blank (the user just presses <kbdEnter</kbd), the tag name is set as the tag message. This is neither the behavior that I expect not the behavior I desire. I would expect either an annotated tag to be created with an empty message or a lightweight tag, the latter being preferred. <sup(not sure whether to put this as a bug or feature request)</sup
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.461 --<!-- potentialduplicatescomment --
/assign

Discussion:
}); const name = inputTagName.replace(/^.|/.|..|~|^|:|/$|.lock$|.lock/||*|s|^s*$|.$/g, '-'); <del> const message = inputMessage || name; await repository.tag(name, message); </del> <ins> await repository.tag(name, inputMessage); </ins> } @command('git.deleteTag', { repository: true })