Question:
Testing When my cursor isn't inside of a conflict, this command does nothing. Should it only be visible in the quickpick when it does something? Or should there be an error message when you try to run it but it doesn't do anything? Same with the "Toggle Current Conflict from Right". <img width="549" alt="image" src="https://user-"
I fear if we hide it when there is nothing to toggle, users won't discover that there is a (keybindable) command for this functionality. How did you find this command? Was your cursor in a conflicting region?
It wasn't in a conflicting region at the time
Let's show an error message if this command does not do anything.
If I run the toggle command in an invalid region, I get a notification, which is good. But, if I then toggle a valid region after, the notification still stays on the screen for a while. Can the notification be hidden when the user toggles a valid region?
Can notifications be removed? I thought that is not possible. Also, I think this use-case is quite rare. The notification is just to teach that you should be in a conflict.

const inputModel = await input.resolve(); const model = inputModel.model; <del> const viewModel = new MergeEditorViewModel(model, this.input1View, this.input2View, this.inputResultView, this.baseView, this.showNonConflictingChanges, this.configurationService); </del> <ins> const viewModel = this.instantiationService.createInstance( MergeEditorViewModel, model, this.input1View, this.input2View, this.inputResultView, this.baseView, this.showNonConflictingChanges, ); </ins> model.telemetry.reportMergeEditorOpened({


Question:
Testing When my cursor isn't inside of a conflict, this command does nothing. Should it only be visible in the quickpick when it does something? Or should there be an error message when you try to run it but it doesn't do anything? Same with the "Toggle Current Conflict from Right". <img width="549" alt="image" src="https://user-"
I fear if we hide it when there is nothing to toggle, users won't discover that there is a (keybindable) command for this functionality. How did you find this command? Was your cursor in a conflicting region?
It wasn't in a conflicting region at the time
Let's show an error message if this command does not do anything.
If I run the toggle command in an invalid region, I get a notification, which is good. But, if I then toggle a valid region after, the notification still stays on the screen for a while. Can the notification be hidden when the user toggles a valid region?
Can notifications be removed? I thought that is not possible. Also, I think this use-case is quite rare. The notification is just to teach that you should be in a conflict.

import { derived, derivedObservableWithWritableCache, IObservable, IReader, ITransaction, observableFromEvent, observableValue, transaction } from 'vs/base/common/observable'; import { Range } from 'vs/editor/common/core/range'; import { ScrollType } from 'vs/editor/common/editorCommon'; <ins> import { localize } from 'vs/nls'; </ins> import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; <ins> import { INotificationService } from 'vs/platform/notification/common/notification'; </ins> import { LineRange } from 'vs/workbench/contrib/mergeEditor/browser/model/lineRange'; import { MergeEditorModel } from 'vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel'; import { ModifiedBaseRange, ModifiedBaseRangeState } from 'vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange';


Question:
Testing When my cursor isn't inside of a conflict, this command does nothing. Should it only be visible in the quickpick when it does something? Or should there be an error message when you try to run it but it doesn't do anything? Same with the "Toggle Current Conflict from Right". <img width="549" alt="image" src="https://user-"
I fear if we hide it when there is nothing to toggle, users won't discover that there is a (keybindable) command for this functionality. How did you find this command? Was your cursor in a conflicting region?
It wasn't in a conflicting region at the time
Let's show an error message if this command does not do anything.
If I run the toggle command in an invalid region, I get a notification, which is good. But, if I then toggle a valid region after, the notification still stays on the screen for a while. Can the notification be hidden when the user toggles a valid region?
Can notifications be removed? I thought that is not possible. Also, I think this use-case is quite rare. The notification is just to teach that you should be in a conflict.

public readonly resultCodeEditorView: ResultCodeEditorView, public readonly baseCodeEditorView: IObservable<BaseCodeEditorView | undefined>, public readonly showNonConflictingChanges: IObservable<boolean>, <del> @IConfigurationService public readonly configurationService: IConfigurationService, </del> <ins> @IConfigurationService private readonly configurationService: IConfigurationService, @INotificationService private readonly notificationService: INotificationService </ins> ) { super();


Question:
Testing When my cursor isn't inside of a conflict, this command does nothing. Should it only be visible in the quickpick when it does something? Or should there be an error message when you try to run it but it doesn't do anything? Same with the "Toggle Current Conflict from Right". <img width="549" alt="image" src="https://user-"
I fear if we hide it when there is nothing to toggle, users won't discover that there is a (keybindable) command for this functionality. How did you find this command? Was your cursor in a conflicting region?
It wasn't in a conflicting region at the time
Let's show an error message if this command does not do anything.
If I run the toggle command in an invalid region, I get a notification, which is good. But, if I then toggle a valid region after, the notification still stays on the screen for a while. Can the notification be hidden when the user toggles a valid region?
Can notifications be removed? I thought that is not possible. Also, I think this use-case is quite rare. The notification is just to teach that you should be in a conflict.

public toggleActiveConflict(inputNumber: 1 | 2): void { const activeModifiedBaseRange = this.activeModifiedBaseRange.get(); if (!activeModifiedBaseRange) { <ins> this.notificationService.error(localize('noConflictMessage', "There is currently no conflict focused that can be toggled.")); </ins> return; } transaction(tx => {


Question:
<img width="603" alt="image" src="https://user-"
!

} .extension-list-item > .details > .footer > .monaco-action-bar > .actions-container .action-label:not(.icon) { <del> border-radius: 0; </del> <ins> border-radius: 2px; </ins> } .extension-list-item > .details > .footer > .monaco-action-bar > .actions-container .extension-action.label {


Question:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.

import { consumeStream, isReadableBufferedStream, isReadableStream, listenStream, newWriteableStream, peekReadable, peekStream, transform } from 'vs/base/common/stream'; import { URI } from 'vs/base/common/uri'; import { localize } from 'vs/nls'; <del> import { ensureFileSystemProviderError, etag, ETAG_DISABLED, FileChangesEvent, IFileDeleteOptions, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FilePermission, FileSystemProviderCapabilities, FileSystemProviderErrorCode, FileType, hasFileAtomicReadCapability, hasFileFolderCopyCapability, hasFileReadStreamCapability, hasOpenReadWriteCloseCapability, hasReadWriteCapability, ICreateFileOptions, IFileContent, IFileService, IFileStat, IFileStatWithMetadata, IFileStreamContent, IFileSystemProvider, IFileSystemProviderActivationEvent, IFileSystemProviderCapabilitiesChangeEvent, IFileSystemProviderRegistrationEvent, IFileSystemProviderWithFileAtomicReadCapability, IFileSystemProviderWithFileReadStreamCapability, IFileSystemProviderWithFileReadWriteCapability, IFileSystemProviderWithOpenReadWriteCloseCapability, IReadFileOptions, IReadFileStreamOptions, IResolveFileOptions, IFileStatResult, IFileStatResultWithMetadata, IResolveMetadataFileOptions, IStat, IFileStatWithPartialMetadata, IWatchOptions, IWriteFileOptions, NotModifiedSinceFileOperationError, toFileOperationResult, toFileSystemProviderErrorCode, hasFileCloneCapability, hasFileReadCapability, IFileSystemProviderWithFileReadCapability } from 'vs/platform/files/common/files'; </del> <ins> import { ensureFileSystemProviderError, etag, ETAG_DISABLED, FileChangesEvent, IFileDeleteOptions, FileOperation, FileOperationError, FileOperationEvent, FileOperationResult, FilePermission, FileSystemProviderCapabilities, FileSystemProviderErrorCode, FileType, hasFileAtomicReadCapability, hasFileFolderCopyCapability, hasFileReadStreamCapability, hasOpenReadWriteCloseCapability, hasReadWriteCapability, ICreateFileOptions, IFileContent, IFileService, IFileStat, IFileStatWithMetadata, IFileStreamContent, IFileSystemProvider, IFileSystemProviderActivationEvent, IFileSystemProviderCapabilitiesChangeEvent, IFileSystemProviderRegistrationEvent, IFileSystemProviderWithFileAtomicReadCapability, IFileSystemProviderWithFileReadStreamCapability, IFileSystemProviderWithFileReadWriteCapability, IFileSystemProviderWithOpenReadWriteCloseCapability, IReadFileOptions, IReadFileStreamOptions, IResolveFileOptions, IFileStatResult, IFileStatResultWithMetadata, IResolveMetadataFileOptions, IStat, IFileStatWithPartialMetadata, IWatchOptions, IWriteFileOptions, NotModifiedSinceFileOperationError, toFileOperationResult, toFileSystemProviderErrorCode, hasFileCloneCapability } from 'vs/platform/files/common/files'; </ins> import { readFileIntoStream } from 'vs/platform/files/common/io'; import { ILogService } from 'vs/platform/log/common/log';


Question:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.

return provider; } <del> private async withReadProvider(resource: URI): Promise<IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability | IFileSystemProviderWithFileReadStreamCapability | IFileSystemProviderWithFileReadCapability> { </del> <ins> private async withReadProvider(resource: URI): Promise<IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability | IFileSystemProviderWithFileReadStreamCapability> { </ins> const provider = await this.withProvider(resource); <del> if (hasOpenReadWriteCloseCapability(provider) || hasReadWriteCapability(provider) || hasFileReadStreamCapability(provider) || hasFileReadCapability(provider)) { </del> <ins> if (hasOpenReadWriteCloseCapability(provider) || hasReadWriteCapability(provider) || hasFileReadStreamCapability(provider)) { </ins> return provider; } <del> throw new Error(`Filesystem provider for scheme '${resource.scheme}' neither has FileReadWrite, FileReadStream, FileOpenReadWriteClose nor Readonly capability which is needed for the read operation.`); </del> <ins> throw new Error(`Filesystem provider for scheme '${resource.scheme}' neither has FileReadWrite, FileReadStream nor FileOpenReadWriteClose capability which is needed for the read operation.`); </ins> } private async withWriteProvider(resource: URI): Promise<IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability> {


Question:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.

return this.doReadFile(provider, resource, options, token); } <del> private async doReadFileAtomic(provider: IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability | IFileSystemProviderWithFileReadStreamCapability | IFileSystemProviderWithFileReadCapability, resource: URI, options?: IReadFileOptions, token?: CancellationToken): Promise<IFileContent> { </del> <ins> private async doReadFileAtomic(provider: IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability | IFileSystemProviderWithFileReadStreamCapability, resource: URI, options?: IReadFileOptions, token?: CancellationToken): Promise<IFileContent> { </ins> return new Promise<IFileContent>((resolve, reject) => { this.writeQueue.queueFor(resource, this.getExtUri(provider).providerExtUri).queue(async () => { try {


Question:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.

}); } <del> private async doReadFile(provider: IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability | IFileSystemProviderWithFileReadStreamCapability | IFileSystemProviderWithFileReadCapability, resource: URI, options?: IReadFileOptions, token?: CancellationToken): Promise<IFileContent> { </del> <ins> private async doReadFile(provider: IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability | IFileSystemProviderWithFileReadStreamCapability, resource: URI, options?: IReadFileOptions, token?: CancellationToken): Promise<IFileContent> { </ins> const stream = await this.doReadFileStream(provider, resource, { ...options, // optimization: since we know that the caller does not


Question:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.

return this.doReadFileStream(provider, resource, options, token); } <del> private async doReadFileStream(provider: IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability | IFileSystemProviderWithFileReadStreamCapability | IFileSystemProviderWithFileReadCapability, resource: URI, options?: IReadFileOptions & IReadFileStreamOptions & { preferUnbuffered?: boolean }, token?: CancellationToken): Promise<IFileStreamContent> { </del> <ins> private async doReadFileStream(provider: IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability | IFileSystemProviderWithFileReadStreamCapability, resource: URI, options?: IReadFileOptions & IReadFileStreamOptions & { preferUnbuffered?: boolean }, token?: CancellationToken): Promise<IFileStreamContent> { </ins> // install a cancellation token that gets cancelled // when any error occurs. this allows us to resolve


Question:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.

return stream; } <del> private readFileUnbuffered(provider: IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithFileAtomicReadCapability | IFileSystemProviderWithFileReadCapability, resource: URI, options?: IReadFileOptions & IReadFileStreamOptions): VSBufferReadableStream { </del> <ins> private readFileUnbuffered(provider: IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithFileAtomicReadCapability, resource: URI, options?: IReadFileOptions & IReadFileStreamOptions): VSBufferReadableStream { </ins> const stream = newWriteableStream<VSBuffer>(data => VSBuffer.concat(data)); // Read the file into the stream async but do not wait for


Question:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.

return !!(provider.capabilities & FileSystemProviderCapabilities.FileReadStream); } <del> export interface IFileSystemProviderWithFileReadCapability extends IFileSystemProvider { readFile(resource: URI): Promise<Uint8Array>; } export function hasFileReadCapability(provider: IFileSystemProvider): provider is IFileSystemProviderWithFileReadCapability { return !!(provider.capabilities & FileSystemProviderCapabilities.Readonly); } </del> export interface IFileSystemProviderWithFileAtomicReadCapability extends IFileSystemProvider { readFile(resource: URI, opts?: IFileAtomicReadOptions): Promise<Uint8Array>; }


Question:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.

import { Disposable, IDisposable } from 'vs/base/common/lifecycle'; import { Event } from 'vs/base/common/event'; import { URI } from 'vs/base/common/uri'; <del> import { FilePermission, FileSystemProviderCapabilities, FileSystemProviderErrorCode, FileType, IFileDeleteOptions, IFileOverwriteOptions, IFileSystemProviderWithFileReadCapability, IStat, IWatchOptions } from 'vs/platform/files/common/files'; </del> <ins> import { FilePermission, FileSystemProviderCapabilities, FileSystemProviderErrorCode, FileType, IFileDeleteOptions, IFileOverwriteOptions, IFileSystemProviderWithFileReadWriteCapability, IStat, IWatchOptions } from 'vs/platform/files/common/files'; </ins> import { ChangeType, decodeEditSessionFileContent, EDIT_SESSIONS_SCHEME, IEditSessionsStorageService } from 'vs/workbench/contrib/editSessions/common/editSessions'; <ins> import { NotSupportedError } from 'vs/base/common/errors'; </ins> <del> export class EditSessionsFileSystemProvider implements IFileSystemProviderWithFileReadCapability { </del> <ins> export class EditSessionsFileSystemProvider implements IFileSystemProviderWithFileReadWriteCapability { </ins> static readonly SCHEMA = EDIT_SESSIONS_SCHEME;


Question:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.

@IEditSessionsStorageService private editSessionsStorageService: IEditSessionsStorageService, ) { } <del> readonly capabilities: FileSystemProviderCapabilities = FileSystemProviderCapabilities.Readonly; </del> <ins> readonly capabilities: FileSystemProviderCapabilities = FileSystemProviderCapabilities.Readonly + FileSystemProviderCapabilities.FileReadWrite; </ins> async readFile(resource: URI): Promise<Uint8Array> { const match = /(?<ref>[^/]+)/(?<folderName>[^/]+)/(?<filePath>.*)/.exec(resource.path.substring(1));


Question:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.

async rename(from: URI, to: URI, opts: IFileOverwriteOptions): Promise<void> { } async delete(resource: URI, opts: IFileDeleteOptions): Promise<void> { } <ins> async writeFile() { throw new NotSupportedError(); } </ins> //#endregion }


Question: Latest insider. <img width="433" alt="image" src="https://user-"We should make sure the delete action is clearly visible.

} .monaco-workbench .part.editor>.content .gettingStartedContainer .gettingStartedSlide .getting-started-category .codicon.hide-category-button { <del> position: absolute; </del> <ins> margin-left: auto; </ins> top: 4px; right: 8px; }


this.setCountBadge(); // set mergeChanges context <del> commands.executeCommand('setContext', 'git.mergeChanges', merge.map(item => item.resourceUri.toString())); </del> <ins> commands.executeCommand('setContext', 'git.mergeChanges', merge.map(item => item.resourceUri)); </ins> this._onDidChangeStatus.fire();


Question:
<!-- 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: Stable & Insiders OS Version: Any Steps to Reproduce: Jupyter extension the following cell against a Python kernel The expected output is fairly simple: ( can appear some where in the middle) However VS Codes output is incorrect We are missing the line breaks (looks like this PR seems to have broken that) (using blockinline-block` fixes this). We have duplicate entries (as you can see below, we have multiple times) i think this has to do with the fact that we're trying to re-use the previous output and append the new stuff into the previous output element Note: This can be repro'ed in stable as well, but if i were to remove the code that tries to append to the previous element, then it looks as expected. Not sure when this part of the code broken though. Didn't go through the change log to determine this, you might have a better idea.
note that this is from the test, so that could probably be modified to check for the fix
It looks like this was briefly solved (at least for me as I reported in ) but the problem is now reappearing.
I agree, I can replicate the same bug again, hence reopening this issue. Looks like subsequent change regressed the fix.
seems to be a worse regression now (only in insiders) and repros without needing to do anything with background threads (unless I just have some bad setting): !
I'm seeing something similar with the JavaScript/tslab notebook I use for teaching async and promises. Previously, the output was inconsistent across runs with sometimes missing or duplicated output. Now all the expected output is present but with line breaks appearing only after some async code (e.g. ) is executed. <img width="661" alt="image" src="https://user-"
I reproduced output shown by above with missing new lines in code-insiders at ~14:00 UTC +1 (CET). In a code-insiders session that has been running last 24 hours. Restarting code-insiders approximately an hour later (15.00 UTC+1), the output is now shown with correct line breaks, see screenshot below. Version: 1.75.0-insider (user setup) Commit: Date: 2023-01-09T05:29:27.679Z Electron: 19.1.8 Chromium: 102.0.5005.167 16.14.2 V8: 10.2.154.15-electron.0 OS: Windows_NT x64 10.0. Sandboxed: Yes Output after code-insiders restart: !
confirmed that this no longer seems to reproduce on the latest.
Adding label as confirmed above.

const outputElement = (prev.firstChild as HTMLElement | null); if (outputElement && outputElement.getAttribute('output-mime-type') === outputInfo.mime) { // same stream <del> const text = outputInfo.text(); const element = document.createElement('span'); </del> <ins> // find child with same id const existing = outputElement.querySelector(`[output-item-id="${outputInfo.id}"]`) as HTMLElement | null; if (existing) { clearContainer(existing); } const text = outputInfo.text(); const element = existing ?? document.createElement('span'); element.classList.add('output-stream'); element.setAttribute('output-item-id', outputInfo.id); </ins> insertOutput(outputInfo.id, [text], ctx.settings.lineLimit, ctx.settings.outputScrolling, element); outputElement.appendChild(element); return;


Question:
<!-- 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: Stable & Insiders OS Version: Any Steps to Reproduce: Jupyter extension the following cell against a Python kernel The expected output is fairly simple: ( can appear some where in the middle) However VS Codes output is incorrect We are missing the line breaks (looks like this PR seems to have broken that) (using blockinline-block` fixes this). We have duplicate entries (as you can see below, we have multiple times) i think this has to do with the fact that we're trying to re-use the previous output and append the new stuff into the previous output element Note: This can be repro'ed in stable as well, but if i were to remove the code that tries to append to the previous element, then it looks as expected. Not sure when this part of the code broken though. Didn't go through the change log to determine this, you might have a better idea.
note that this is from the test, so that could probably be modified to check for the fix
It looks like this was briefly solved (at least for me as I reported in ) but the problem is now reappearing.
I agree, I can replicate the same bug again, hence reopening this issue. Looks like subsequent change regressed the fix.
seems to be a worse regression now (only in insiders) and repros without needing to do anything with background threads (unless I just have some bad setting): !
I'm seeing something similar with the JavaScript/tslab notebook I use for teaching async and promises. Previously, the output was inconsistent across runs with sometimes missing or duplicated output. Now all the expected output is present but with line breaks appearing only after some async code (e.g. ) is executed. <img width="661" alt="image" src="https://user-"
I reproduced output shown by above with missing new lines in code-insiders at ~14:00 UTC +1 (CET). In a code-insiders session that has been running last 24 hours. Restarting code-insiders approximately an hour later (15.00 UTC+1), the output is now shown with correct line breaks, see screenshot below. Version: 1.75.0-insider (user setup) Commit: Date: 2023-01-09T05:29:27.679Z Electron: 19.1.8 Chromium: 102.0.5005.167 16.14.2 V8: 10.2.154.15-electron.0 OS: Windows_NT x64 10.0. Sandboxed: Yes Output after code-insiders restart: !
confirmed that this no longer seems to reproduce on the latest.
Adding label as confirmed above.

const element = document.createElement('span'); element.classList.add('output-stream'); <ins> element.setAttribute('output-item-id', outputInfo.id); </ins> const text = outputInfo.text(); insertOutput(outputInfo.id, [text], ctx.settings.lineLimit, ctx.settings.outputScrolling, element);


Question:
shell integration enabled a zshell terminal just exits instantly a zsh terminal now works. However, some shell integration markers are still present, and my .zshrc didn't load -- no theme and no aliases are available <img width="359" alt="image" src="https://user-"vs in iterm: <img width="246" alt="image" src="https://user-"
I have seen issues where this is happening, but haven't been able to reproduce yet myself
a recent change which could've caused this is
does your set your on the machine that you're seeing this on? what's your in the external terminal?
is unset when I'm using zshell in iterm
Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for . See also our . Happy Coding!
This issue closed? This problem still seems to be occurring. Version: 1.72.0-insider (Universal) Commit: zsh 5.9 (x86_64-apple-darwin21.3.0) and I don't set ZDOTDIR variable
This issue still exists https://user-

// Move .zshrc into $ZDOTDIR as the way to activate the script const zdotdir = path.join(os.tmpdir(), `${os.userInfo().username}-vscode-zsh`); envMixin['ZDOTDIR'] = zdotdir; <del> const userZdotdir = env?.ZDOTDIR ?? os.homedir(); </del> <ins> const userZdotdir = env?.ZDOTDIR ?? os.homedir() ?? `~`; </ins> envMixin['USER_ZDOTDIR'] = userZdotdir; const filesToCopy: IShellIntegrationConfigInjection['filesToCopy'] = []; filesToCopy.push({


Question:
This throws in the monaco editor. To see the exception: clone as a sibling to vscode run run run open http://127.0.0.1:8080/monaco-editor/test/manual/?editor=src observe the error: <img width="1323" alt="image" src="https://user-"
I get this so I think I need some verification steps:

return URL.createObjectURL(blob); } <del> const result = new URL(scriptPath); COI.addSearchParam(result.searchParams, true, true); result.hash = label; return result.href; </del> <ins> const start = scriptPath.lastIndexOf('?'); const end = scriptPath.lastIndexOf('#', start); const params = start > 0 ? new URLSearchParams(scriptPath.substring(start + 1, ~end ? end : undefined)) : new URLSearchParams(); COI.addSearchParam(params, true, true); const search = params.toString(); if (!search) { return `${scriptPath}#${label}`; } else { return `${scriptPath}?${params.toString()}#${label}`; } </ins> } // ESM-comment-end


Question:
Type: <bBug</b! VS Code version: Code - Insiders 1.72.0-insider (, 2022-09-23T05:17:37.024Z) OS version: Windows_NT x64 10.0. Modes: Sandboxed: Yes /assign <!-- generated by issue reporter --
/assign
Completely agree on this. Tree ident guide highlights are pretty awful throughout the hole app, except the editor itself because of the color lines.
Great find!

private hideTwistiesOfChildlessElements: boolean = false; private shouldRenderIndentGuides: boolean = false; <del> private renderedIndentGuides = new SetMap<ITreeNode<T, TFilterData>, HTMLDivElement>(); </del> private activeIndentNodes = new Set<ITreeNode<T, TFilterData>>(); private indentGuidesDisposable: IDisposable = Disposable.None;


Question:
Type: <bBug</b! VS Code version: Code - Insiders 1.72.0-insider (, 2022-09-23T05:17:37.024Z) OS version: Windows_NT x64 10.0. Modes: Sandboxed: Yes /assign <!-- generated by issue reporter --
/assign
Completely agree on this. Tree ident guide highlights are pretty awful throughout the hole app, except the editor itself because of the color lines.
Great find!

private modelProvider: () => ITreeModel<T, TFilterData, TRef>, onDidChangeCollapseState: Event<ICollapseStateChangeEvent<T, TFilterData>>, private activeNodes: Collection<ITreeNode<T, TFilterData>>, <ins> private renderedIndentGuides: SetMap<ITreeNode<T, TFilterData>, HTMLDivElement>, </ins> options: ITreeRendererOptions = {} ) { this.templateId = renderer.templateId;


Question:
Type: <bBug</b! VS Code version: Code - Insiders 1.72.0-insider (, 2022-09-23T05:17:37.024Z) OS version: Windows_NT x64 10.0. Modes: Sandboxed: Yes /assign <!-- generated by issue reporter --
/assign
Completely agree on this. Tree ident guide highlights are pretty awful throughout the hole app, except the editor itself because of the color lines.
Great find!

const onDidChangeCollapseStateRelay = new Relay<ICollapseStateChangeEvent<T, TFilterData>>(); const onDidChangeActiveNodes = new Relay<ITreeNode<T, TFilterData>[]>(); const activeNodes = this.disposables.add(new EventCollection(onDidChangeActiveNodes.event)); <del> this.renderers = renderers.map(r => new TreeRenderer<T, TFilterData, TRef, any>(r, () => this.model, onDidChangeCollapseStateRelay.event, activeNodes, _options)); </del> <ins> const renderedIndentGuides = new SetMap<ITreeNode<T, TFilterData>, HTMLDivElement>(); this.renderers = renderers.map(r => new TreeRenderer<T, TFilterData, TRef, any>(r, () => this.model, onDidChangeCollapseStateRelay.event, activeNodes, renderedIndentGuides, _options)); </ins> for (const r of this.renderers) { this.disposables.add(r); }


Question:
Type: <bBug</bLight+ on Insiders ! Light+ on Stable ! Dark+ on Insiders: ! Dark+ on Stable: ! VS Code version: Code - Insiders 1.72.0-insider (, 2022-09-23T15:06:00.185Z) OS version: Windows_NT x64 10.0. Modes: Sandboxed: Yes <!-- generated by issue reporter --
regression from

readonly label: string = ''; readonly tooltip: string = ''; <del> readonly class: string = ''; </del> <ins> readonly class: string = 'separator'; </ins> readonly enabled: boolean = false; readonly checked: boolean = false; async run() { }


Question:
Testing on run continue on clone locally I see a browser-native dialog to open desktop I see a custom message that just reads "We tried opening Visual Studio Code - Insiders on your computer." which is confusing Unsure if we have to show the message or not but its wording needs to be improved. I mean tried and succeed in opening desktop so don't confusing me with this message. If we cannot prevent it I'd suggest to rephrase it and assume that it worked and give me a close option. Today, there this only covers the "didn't work cases" despite success https://user-
We cannot tell from the browser whether opening the protocol url succeeded, and the current wording for this dialog is based on a similar dialog from Office which also unconditionally appears in the browser: Maybe renaming 'Continue here' to 'Cancel' or 'Close' would help? Some other ideas for wording--when you launch a Zoom meeting from a browser in the desktop client, it says !
I can accept that but the wording should be positive/happy. Like: "This session now continues in VS Code Desktop. You can close this window, all your changes have been carried along. Try again if VS Code Desktop didn't start yet."

[ localize('openExternalDialogButtonRetry', "Try again"), localize('openExternalDialogButtonInstall', "Install {0}", this.productService.nameLong), <del> localize('openExternalDialogButtonContinue', "Continue here") </del> <ins> localize('openExternalDialogButtonCancel', "Cancel") </ins> ], { cancelId: 2, <del> detail: localize('openExternalDialogDetail', "We tried opening {0} on your computer.", this.productService.nameLong) </del> <ins> detail: localize( 'openExternalDialogDetail.v2', "We launched {0} on your computer.nnIf {1} did not launch, try again or install it below.", this.productService.nameLong, this.productService.nameLong, ) </ins> }, );


Question:
Testing It would seem to make sense to start at the first unhandled conflict (currently starts at the top of the file).
This would also help a first-time user understand what they are looking at. Without a conflict being highlighted, it is easy to get confused over all the filled and unfilled rectangles: <img width="2060" alt="image" src="https://user-"With the first conflict selected this is less the case because the 3 unfilled rectangles stand out: <img width="2061" alt="image" src="https://user-"
But the first conflict is revealed automatically, right?

return; } this.input1View.editor.revealLineInCenter(firstConflict.input1Range.startLineNumber); <ins> transaction(tx => { /** @description setActiveModifiedBaseRange */ viewModel.setActiveModifiedBaseRange(firstConflict, tx); }); </ins> })); }


Question:
Testing It would seem to make sense to start at the first unhandled conflict (currently starts at the top of the file).
This would also help a first-time user understand what they are looking at. Without a conflict being highlighted, it is easy to get confused over all the filled and unfilled rectangles: <img width="2060" alt="image" src="https://user-"With the first conflict selected this is less the case because the 3 unfilled rectangles stand out: <img width="2061" alt="image" src="https://user-"
But the first conflict is revealed automatically, right?

} ); <ins> public setActiveModifiedBaseRange(range: ModifiedBaseRange | undefined, tx: ITransaction): void { this.manuallySetActiveModifiedBaseRange.set({ range, counter: this.counter++ }, tx); } </ins> public setState( baseRange: ModifiedBaseRange, state: ModifiedBaseRangeState,


Question:
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

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');


Question:
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

readonly parentPath: string; readonly progress: Progress<{ increment: number }>; readonly recursive?: boolean; <ins> readonly ref?: string; </ins> } export class Git {


Question:
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

if (options.recursive) { command.push('--recursive'); } <ins> if (options.ref) { command.push('--branch', `'${options.ref}'`); } </ins> await this.exec(options.parentPath, command, { cancellationToken, env: { 'GIT_HTTP_USER_AGENT': this.userAgent },


Question: Here with the long path a "..." would help: <img width="673" alt="image" src="https://user-"

}); this.htmlElements.gutterDiv.style.width = '5px'; <ins> this.htmlElements.root.classList.add(`result`); </ins> this._register( autorunWithStore((reader, store) => {


Question: Here with the long path a "..." would help: <img width="673" alt="image" src="https://user-"

color: var(--vscode-descriptionForeground); } <ins> .monaco-workbench .merge-editor .code-view.result > .header > .description { display: inline; flex-shrink: 1; } .monaco-workbench .merge-editor .code-view.result > .header > .detail { flex-shrink: 0; } .monaco-workbench .merge-editor .code-view.result > .header > .toolbar { flex-shrink: 0; } </ins> .monaco-workbench .merge-editor .code-view > .header > span.description .codicon { font-size: 14px; color: var(--vscode-descriptionForeground);


Question:
Just debugging in Insiders, it looks like the opposite: the free port matcher doesn't match anything unless the output is more than its configured 20 lines <img width="499" alt="image" src="https://user-"If I add then it works. THat should be enough for me to verify the UI side of this... Originally posted by in
remove this completely
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!

if (startLine === endLine) { return undefined; } <del> if (outputMatcher?.length && (endLine - startLine) < outputMatcher.length) { return undefined; } </del> let line: string | undefined; if (outputMatcher?.anchor === 'bottom') { for (let i = endLine - (outputMatcher.offset || 0); i >= startLine; i--) {


Question: Type: <bBug</ba new profile from empty click on activity bar "Move Primary Side Bar Right" ! VS Code version: Code - Insiders 1.72.0-insider (, 2022-09-29T08:07:23.017Z) OS version: WindowsNT x64 10.0. Modes: Sandboxed: Yes Remote OS version: Linux x64 5.15.62.1-microsoft-standard-WSL2 Remote OS version: Linux x64 5.15.62.1-microsoft-standard-WSL2 <details<summarySystem Info</summary </detailsExtensions: none <!-- generated by issue reporter --

/* Right aligned */ <del> .monaco-workbench .activitybar.right > .content :not(.monaco-menu) > .monaco-action-bar .action-label:not(.codicon) { </del> <ins> .monaco-workbench .activitybar.right > .content :not(.monaco-menu) > .monaco-action-bar .action-label:not(.codicon):not(.profile-activity-item) { </ins> margin-left: 0; padding: 0 48px 0 0; background-position: calc(100% - 9px) center;


flex-shrink: 0; } <ins> .monaco-workbench .part > .title > .title-actions .start-debug-action-item .codicon-debug-start { width: 18px; height: 21px; padding-left: 2px; } </ins> .monaco-workbench .monaco-action-bar .start-debug-action-item .configuration .monaco-select-box { border: none; margin-top: 0px;


Question:
A remote code execution vulnerability exists in VS Code 1.71 and earlier versions for malicious notebooks. These notebooks could use command uris to execute arbitrary commands, including potentially dangerous commands The fix is available starting with VS Code 1.71.1. The mitigates this attack by performing input validation on the URL pointing to the repository to be cloned. Do not open notebooks from untrusted sources. The patch for this can be found at An advisory for this can be found at MSRC details for this can be found at
the docs and advisories say it's fixed in 1.71.1, but it's only fixed in 1.72.1

return; } <del> if (matchesScheme(link, Schemas.command)) { const ret = /command:workbench.action.openLargeOutput?(.*)/.exec(link); if (ret && ret.length === 2) { const outputId = ret[1]; this.openerService.open(CellUri.generateCellOutputUri(this.documentUri, outputId)); return; } console.warn('Command links are deprecated and will be removed, use message passing instead: https://github.com/microsoft/vscode/issues/123601'); } if (matchesScheme(link, Schemas.command)) { if (this.workspaceTrustManagementService.isWorkspaceTrusted()) { this.openerService.open(link, { fromUserGesture: true, allowContributedOpeners: true, allowCommands: true }); } else { console.warn('Command links are disabled in untrusted workspaces'); } } else if (matchesSomeScheme(link, Schemas.vscodeNotebookCell, Schemas.http, Schemas.https, Schemas.mailto)) { this.openerService.open(link, { fromUserGesture: true, allowContributedOpeners: true, allowCommands: true }); </del> <ins> if (matchesSomeScheme(link, Schemas.vscodeNotebookCell, Schemas.http, Schemas.https, Schemas.mailto)) { this.openerService.open(link, { fromUserGesture: true, allowContributedOpeners: true, allowCommands: false }); </ins> } }));


Question:
A remote code execution vulnerability exists in VS Code 1.71 and earlier versions for malicious notebooks. These notebooks could use command uris to execute arbitrary commands, including potentially dangerous commands The fix is available starting with VS Code 1.71.1. The mitigates this attack by performing input validation on the URL pointing to the repository to be cloned. Do not open notebooks from untrusted sources. The patch for this can be found at An advisory for this can be found at MSRC details for this can be found at
the docs and advisories say it's fixed in 1.71.1, but it's only fixed in 1.72.1

} case 'clicked-link': { let linkToOpen: URI | string | undefined; if (matchesScheme(data.href, Schemas.command)) { <del> const ret = /command:workbench.action.openLargeOutput?(.*)/.exec(data.href); if (ret && ret.length === 2) { const outputId = ret[1]; const group = this.editorGroupService.activeGroup; if (group) { if (group.activeEditor) { group.pinEditor(group.activeEditor); </del> <ins> // We allow a very limited set of commands const uri = URI.parse(data.href); switch (uri.path) { case 'workbench.action.openLargeOutput': { const outputId = uri.query; const group = this.editorGroupService.activeGroup; if (group) { if (group.activeEditor) { group.pinEditor(group.activeEditor); } </ins> } <del> } this.openerService.open(CellUri.generateCellOutputUri(this.documentUri, outputId)); return; </del> <ins> this.openerService.open(CellUri.generateCellOutputUri(this.documentUri, outputId)); return; } case 'github-issues.authNow': case 'workbench.extensions.search': case 'workbench.action.openSettings': { this.openerService.open(data.href, { fromUserGesture: true, allowCommands: true, fromWorkspace: true }); return; } </ins> } <ins> return; </ins> } <del> if (matchesSomeScheme(data.href, Schemas.http, Schemas.https, Schemas.mailto, Schemas.command, Schemas.vscodeNotebookCell, Schemas.vscodeNotebook)) { </del> <ins> if (matchesSomeScheme(data.href, Schemas.http, Schemas.https, Schemas.mailto, Schemas.vscodeNotebookCell, Schemas.vscodeNotebook)) { </ins> linkToOpen = data.href; } else if (!/^[w-]+:/.test(data.href)) { const fragmentStartIndex = data.href.lastIndexOf('#');


Question:
A remote code execution vulnerability exists in VS Code 1.71 and earlier versions for malicious notebooks. These notebooks could use command uris to execute arbitrary commands, including potentially dangerous commands The fix is available starting with VS Code 1.71.1. The mitigates this attack by performing input validation on the URL pointing to the repository to be cloned. Do not open notebooks from untrusted sources. The patch for this can be found at An advisory for this can be found at MSRC details for this can be found at
the docs and advisories say it's fixed in 1.71.1, but it's only fixed in 1.72.1

} if (linkToOpen) { <del> this.openerService.open(linkToOpen, { fromUserGesture: true, allowCommands: true, fromWorkspace: true }); </del> <ins> this.openerService.open(linkToOpen, { fromUserGesture: true, allowCommands: false, fromWorkspace: true }); </ins> } break; }


Question: Since long we automatically profile the extension host when it becomes unresponsive. In that cases we send a signal via telemetry and in bad cases we ask users to file issues. During that we ask them to attach the corresponding profile but we have mixed results with that. So, in addition to the existing flow we want to log a richer telemetry event that uploads the heaviest sample trace from the profiling

import { StartupProfiler } from './startupProfiler'; import { StartupTimings } from './startupTimings'; import { RendererProfiling } from 'vs/workbench/contrib/performance/electron-sandbox/rendererAutoProfiler'; <ins> import { IConfigurationRegistry, Extensions as ConfigExt } from 'vs/platform/configuration/common/configurationRegistry'; import { localize } from 'vs/nls'; </ins> Registry.as<IWorkbenchContributionsRegistry>(Extensions.Workbench).registerWorkbenchContribution(


Question: Since long we automatically profile the extension host when it becomes unresponsive. In that cases we send a signal via telemetry and in bad cases we ask users to file issues. During that we ask them to attach the corresponding profile but we have mixed results with that. So, in addition to the existing flow we want to log a richer telemetry event that uploads the heaviest sample trace from the profiling

StartupTimings, LifecyclePhase.Eventually ); <ins> Registry.as<IConfigurationRegistry>(ConfigExt.Configuration).registerConfiguration({ id: 'application', order: 100, type: 'object', 'properties': { 'application.experimental.rendererProfiling': { type: 'boolean', default: false, markdownDescription: localize('experimental.rendererProfiling', "When enabled slow renderers are automatically profiled") } } }); </ins>


Question: Since long we automatically profile the extension host when it becomes unresponsive. In that cases we send a signal via telemetry and in bad cases we ask users to file issues. During that we ask them to attach the corresponding profile but we have mixed results with that. So, in addition to the existing flow we want to log a richer telemetry event that uploads the heaviest sample trace from the profiling

import { timeout } from 'vs/base/common/async'; import { generateUuid } from 'vs/base/common/uuid'; <ins> import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; </ins> import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { ILogService } from 'vs/platform/log/common/log'; import { INativeHostService } from 'vs/platform/native/electron-sandbox/native';


Question: Since long we automatically profile the extension host when it becomes unresponsive. In that cases we send a signal via telemetry and in bad cases we ask users to file issues. During that we ask them to attach the corresponding profile but we have mixed results with that. So, in addition to the existing flow we want to log a richer telemetry event that uploads the heaviest sample trace from the profiling

@IEnvironmentService environmentService: IEnvironmentService, @ILogService logService: ILogService, @ITimerService timerService: ITimerService, <ins> @IConfigurationService configService: IConfigurationService </ins> ) { const devOpts = parseExtensionDevOptions(environmentService);


Question: Since long we automatically profile the extension host when it becomes unresponsive. In that cases we send a signal via telemetry and in bad cases we ask users to file issues. During that we ask them to attach the corresponding profile but we have mixed results with that. So, in addition to the existing flow we want to log a richer telemetry event that uploads the heaviest sample trace from the profiling

return; } <ins> if (!configService.getValue('application.experimental.rendererProfiling')) { logService.debug(`[perf] SLOW task detected (${maxDuration}ms) but renderer profiling is disabled via 'application.experimental.rendererProfiling'`); return; } </ins> const sessionId = generateUuid(); // start heartbeat monitoring logService.warn(`[perf] Renderer reported VERY LONG TASK (${maxDuration}ms), starting profiling session '${sessionId}'`);


Question: Since long we automatically profile the extension host when it becomes unresponsive. In that cases we send a signal via telemetry and in bad cases we ask users to file issues. During that we ask them to attach the corresponding profile but we have mixed results with that. So, in addition to the existing flow we want to log a richer telemetry event that uploads the heaviest sample trace from the profiling

totalTime: sample.totalTime, percentage: sample.percentage, functionName: sample.location, <del> callstack: sample.caller.map(c => `${c.percentage}|${c.location}`).join('<'), extensionId: '' </del> <ins> callstack: sample.caller.map(c => c.location).join('<'), extensionId: '<<renderer>>' </ins> }; this._telemetryService.publicLog2<TelemetrySampleData, TelemetrySampleDataClassification>('prof.freeze.sample', data);


Question: When the /gifPlease command is used the issue owner sometimes replies to the GH notification email and attaches their files. The attachment gets lost. Please update the instructions to say that files must be submitted via the GH website.

], "action": "comment", "addLabel": "info-needed", <del> "comment": "Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, `.gif` files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.nnIf the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (`Developer: Toggle Screencast Mode` in the command palette).nnHappy coding!" </del> <ins> "comment": "Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, `.gif` files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.nnIf the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (`Developer: Toggle Screencast Mode` in the command palette). Lastly, please attach this file via the GitHub web interface as emailed responses will strip files out from the issue.nnHappy coding!" </ins> }, { "__comment__": "Allows folks on the team to label issues by commenting: `label My-Label` ",


Question:
Just upgraded to macos 12.3, try to ENABLE System Integrity Protection if you have disabled it before: Originally posted by in
[(42)] opendir /Users/xxx/Library/Application Support/Code/Crashpad/attachments/-107c-4a3e-8990-: No such file or directory (2) objc[2187]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE- (0x7ffa4f13a8f0) and /Applications/Visual Studio (0x115684ce0). One of the two will be used. Which one is undefined. [(171)] EXCCRASH should not contain exception 12 [(70)] exception EXCGUARD invalid in EXCCRASH [main 2022-11-01T07:19:07.195Z] CodeWindow: renderer process gone (reason: killed, code: 9)
Local OS Version: macOS 13.0 (22A380)
If the issue persists with latest stable , can you provide the crash logs following the steps at , thanks!
my version is 1.74
In your case, is SIP enabled or disabled ? Does it crash when you run with ?
! The same mistake. Are you running normally on the latest Mac 13 system
I think is not specifically a vscode problem. Im getting this for every Chromium <108 based electron app like: Logitech G-Hub I replaced the with the latest it working since but please don't do that it requires SIP disabled and this is not a solution not even a workaround. !
This "not even a workaround" works here as well. Thank you for sharing! SIP was reduced beforehand due to OCLP, so I don't know about it. But definitely not recommended reducing/disabling it! For anyone curios:
If you are using OCLP with reduced SIP you just need to add ipccontrolport_options=0 to the nvram boot-args.
Upstream issue
sudo nvram boot-args="-v csenforcementdisable=1 amfigetoutofmyway=1 keepsyms=1 intcoprocunrestricted=1 amfiunrestricttaskforpid=1 amfiallowanysignature=1 csdebug=1 ipccontrolport_options=0" exec this command,program is ok
are there steps for this?
this requires booting macOS with custom arguments specifically SIP and AMFI disabled, better for authors to verify this issue. can you help verify if this issue is addressed with our latest insiders without having to add to the boot args, thanks!
Are there any conclusions? I also have this problem
this will be fixed in our next stable release
Today it keeps failing. !
please create a new issue with crash dumps based on the steps here , thanks!

disturl "https://electronjs.org/headers" <del> target "19.1.8" </del> <ins> target "19.1.9" </ins> runtime "electron" build_from_source "true"


Question:
Just upgraded to macos 12.3, try to ENABLE System Integrity Protection if you have disabled it before: Originally posted by in
[(42)] opendir /Users/xxx/Library/Application Support/Code/Crashpad/attachments/-107c-4a3e-8990-: No such file or directory (2) objc[2187]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE- (0x7ffa4f13a8f0) and /Applications/Visual Studio (0x115684ce0). One of the two will be used. Which one is undefined. [(171)] EXCCRASH should not contain exception 12 [(70)] exception EXCGUARD invalid in EXCCRASH [main 2022-11-01T07:19:07.195Z] CodeWindow: renderer process gone (reason: killed, code: 9)
Local OS Version: macOS 13.0 (22A380)
If the issue persists with latest stable , can you provide the crash logs following the steps at , thanks!
my version is 1.74
In your case, is SIP enabled or disabled ? Does it crash when you run with ?
! The same mistake. Are you running normally on the latest Mac 13 system
I think is not specifically a vscode problem. Im getting this for every Chromium <108 based electron app like: Logitech G-Hub I replaced the with the latest it working since but please don't do that it requires SIP disabled and this is not a solution not even a workaround. !
This "not even a workaround" works here as well. Thank you for sharing! SIP was reduced beforehand due to OCLP, so I don't know about it. But definitely not recommended reducing/disabling it! For anyone curios:
If you are using OCLP with reduced SIP you just need to add ipccontrolport_options=0 to the nvram boot-args.
Upstream issue
sudo nvram boot-args="-v csenforcementdisable=1 amfigetoutofmyway=1 keepsyms=1 intcoprocunrestricted=1 amfiunrestricttaskforpid=1 amfiallowanysignature=1 csdebug=1 ipccontrolport_options=0" exec this command,program is ok
are there steps for this?
this requires booting macOS with custom arguments specifically SIP and AMFI disabled, better for authors to verify this issue. can you help verify if this issue is addressed with our latest insiders without having to add to the boot args, thanks!
Are there any conclusions? I also have this problem
this will be fixed in our next stable release
Today it keeps failing. !
please create a new issue with crash dumps based on the steps here , thanks!

"git": { "name": "chromium", "repositoryUrl": "https://chromium.googlesource.com/chromium/src", <del> "commitHash": "16e28102fdf876ce6d136674ba66343ede07441f" </del> <ins> "commitHash": "a8a8309404d39efa9c624d7aee0e27562721e522" </ins> } }, "licenseDetail": [


Question:
Just upgraded to macos 12.3, try to ENABLE System Integrity Protection if you have disabled it before: Originally posted by in
[(42)] opendir /Users/xxx/Library/Application Support/Code/Crashpad/attachments/-107c-4a3e-8990-: No such file or directory (2) objc[2187]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE- (0x7ffa4f13a8f0) and /Applications/Visual Studio (0x115684ce0). One of the two will be used. Which one is undefined. [(171)] EXCCRASH should not contain exception 12 [(70)] exception EXCGUARD invalid in EXCCRASH [main 2022-11-01T07:19:07.195Z] CodeWindow: renderer process gone (reason: killed, code: 9)
Local OS Version: macOS 13.0 (22A380)
If the issue persists with latest stable , can you provide the crash logs following the steps at , thanks!
my version is 1.74
In your case, is SIP enabled or disabled ? Does it crash when you run with ?
! The same mistake. Are you running normally on the latest Mac 13 system
I think is not specifically a vscode problem. Im getting this for every Chromium <108 based electron app like: Logitech G-Hub I replaced the with the latest it working since but please don't do that it requires SIP disabled and this is not a solution not even a workaround. !
This "not even a workaround" works here as well. Thank you for sharing! SIP was reduced beforehand due to OCLP, so I don't know about it. But definitely not recommended reducing/disabling it! For anyone curios:
If you are using OCLP with reduced SIP you just need to add ipccontrolport_options=0 to the nvram boot-args.
Upstream issue
sudo nvram boot-args="-v csenforcementdisable=1 amfigetoutofmyway=1 keepsyms=1 intcoprocunrestricted=1 amfiunrestricttaskforpid=1 amfiallowanysignature=1 csdebug=1 ipccontrolport_options=0" exec this command,program is ok
are there steps for this?
this requires booting macOS with custom arguments specifically SIP and AMFI disabled, better for authors to verify this issue. can you help verify if this issue is addressed with our latest insiders without having to add to the boot args, thanks!
Are there any conclusions? I also have this problem
this will be fixed in our next stable release
Today it keeps failing. !
please create a new issue with crash dumps based on the steps here , thanks!

"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ], "isOnlyProductionDependency": true, <del> "version": "102.0.5005.167" </del> <ins> "version": "102.0.5005.194" </ins> }, { "component": {


Question:
Just upgraded to macos 12.3, try to ENABLE System Integrity Protection if you have disabled it before: Originally posted by in
[(42)] opendir /Users/xxx/Library/Application Support/Code/Crashpad/attachments/-107c-4a3e-8990-: No such file or directory (2) objc[2187]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE- (0x7ffa4f13a8f0) and /Applications/Visual Studio (0x115684ce0). One of the two will be used. Which one is undefined. [(171)] EXCCRASH should not contain exception 12 [(70)] exception EXCGUARD invalid in EXCCRASH [main 2022-11-01T07:19:07.195Z] CodeWindow: renderer process gone (reason: killed, code: 9)
Local OS Version: macOS 13.0 (22A380)
If the issue persists with latest stable , can you provide the crash logs following the steps at , thanks!
my version is 1.74
In your case, is SIP enabled or disabled ? Does it crash when you run with ?
! The same mistake. Are you running normally on the latest Mac 13 system
I think is not specifically a vscode problem. Im getting this for every Chromium <108 based electron app like: Logitech G-Hub I replaced the with the latest it working since but please don't do that it requires SIP disabled and this is not a solution not even a workaround. !
This "not even a workaround" works here as well. Thank you for sharing! SIP was reduced beforehand due to OCLP, so I don't know about it. But definitely not recommended reducing/disabling it! For anyone curios:
If you are using OCLP with reduced SIP you just need to add ipccontrolport_options=0 to the nvram boot-args.
Upstream issue
sudo nvram boot-args="-v csenforcementdisable=1 amfigetoutofmyway=1 keepsyms=1 intcoprocunrestricted=1 amfiunrestricttaskforpid=1 amfiallowanysignature=1 csdebug=1 ipccontrolport_options=0" exec this command,program is ok
are there steps for this?
this requires booting macOS with custom arguments specifically SIP and AMFI disabled, better for authors to verify this issue. can you help verify if this issue is addressed with our latest insiders without having to add to the boot args, thanks!
Are there any conclusions? I also have this problem
this will be fixed in our next stable release
Today it keeps failing. !
please create a new issue with crash dumps based on the steps here , thanks!

}, "isOnlyProductionDependency": true, "license": "MIT", <del> "version": "19.1.8" </del> <ins> "version": "19.1.9" </ins> }, { "component": {


Question:
Just upgraded to macos 12.3, try to ENABLE System Integrity Protection if you have disabled it before: Originally posted by in
[(42)] opendir /Users/xxx/Library/Application Support/Code/Crashpad/attachments/-107c-4a3e-8990-: No such file or directory (2) objc[2187]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE- (0x7ffa4f13a8f0) and /Applications/Visual Studio (0x115684ce0). One of the two will be used. Which one is undefined. [(171)] EXCCRASH should not contain exception 12 [(70)] exception EXCGUARD invalid in EXCCRASH [main 2022-11-01T07:19:07.195Z] CodeWindow: renderer process gone (reason: killed, code: 9)
Local OS Version: macOS 13.0 (22A380)
If the issue persists with latest stable , can you provide the crash logs following the steps at , thanks!
my version is 1.74
In your case, is SIP enabled or disabled ? Does it crash when you run with ?
! The same mistake. Are you running normally on the latest Mac 13 system
I think is not specifically a vscode problem. Im getting this for every Chromium <108 based electron app like: Logitech G-Hub I replaced the with the latest it working since but please don't do that it requires SIP disabled and this is not a solution not even a workaround. !
This "not even a workaround" works here as well. Thank you for sharing! SIP was reduced beforehand due to OCLP, so I don't know about it. But definitely not recommended reducing/disabling it! For anyone curios:
If you are using OCLP with reduced SIP you just need to add ipccontrolport_options=0 to the nvram boot-args.
Upstream issue
sudo nvram boot-args="-v csenforcementdisable=1 amfigetoutofmyway=1 keepsyms=1 intcoprocunrestricted=1 amfiunrestricttaskforpid=1 amfiallowanysignature=1 csdebug=1 ipccontrolport_options=0" exec this command,program is ok
are there steps for this?
this requires booting macOS with custom arguments specifically SIP and AMFI disabled, better for authors to verify this issue. can you help verify if this issue is addressed with our latest insiders without having to add to the boot args, thanks!
Are there any conclusions? I also have this problem
this will be fixed in our next stable release
Today it keeps failing. !
please create a new issue with crash dumps based on the steps here , thanks!

"cssnano": "^4.1.11", "debounce": "^1.0.0", "deemon": "^1.8.0", <del> "electron": "19.1.8", </del> <ins> "electron": "19.1.9", </ins> "eslint": "8.7.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-jsdoc": "^39.3.2",


Question:
Just upgraded to macos 12.3, try to ENABLE System Integrity Protection if you have disabled it before: Originally posted by in
[(42)] opendir /Users/xxx/Library/Application Support/Code/Crashpad/attachments/-107c-4a3e-8990-: No such file or directory (2) objc[2187]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE- (0x7ffa4f13a8f0) and /Applications/Visual Studio (0x115684ce0). One of the two will be used. Which one is undefined. [(171)] EXCCRASH should not contain exception 12 [(70)] exception EXCGUARD invalid in EXCCRASH [main 2022-11-01T07:19:07.195Z] CodeWindow: renderer process gone (reason: killed, code: 9)
Local OS Version: macOS 13.0 (22A380)
If the issue persists with latest stable , can you provide the crash logs following the steps at , thanks!
my version is 1.74
In your case, is SIP enabled or disabled ? Does it crash when you run with ?
! The same mistake. Are you running normally on the latest Mac 13 system
I think is not specifically a vscode problem. Im getting this for every Chromium <108 based electron app like: Logitech G-Hub I replaced the with the latest it working since but please don't do that it requires SIP disabled and this is not a solution not even a workaround. !
This "not even a workaround" works here as well. Thank you for sharing! SIP was reduced beforehand due to OCLP, so I don't know about it. But definitely not recommended reducing/disabling it! For anyone curios:
If you are using OCLP with reduced SIP you just need to add ipccontrolport_options=0 to the nvram boot-args.
Upstream issue
sudo nvram boot-args="-v csenforcementdisable=1 amfigetoutofmyway=1 keepsyms=1 intcoprocunrestricted=1 amfiunrestricttaskforpid=1 amfiallowanysignature=1 csdebug=1 ipccontrolport_options=0" exec this command,program is ok
are there steps for this?
this requires booting macOS with custom arguments specifically SIP and AMFI disabled, better for authors to verify this issue. can you help verify if this issue is addressed with our latest insiders without having to add to the boot args, thanks!
Are there any conclusions? I also have this problem
this will be fixed in our next stable release
Today it keeps failing. !
please create a new issue with crash dumps based on the steps here , thanks!

resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.207.tgz#9c3310ebace2952903d05dcaba8abe3a4ed44c01" integrity sha512-piH7MJDJp4rJCduWbVvmUd59AUne1AFBJ8JaRQvk0KzNTSUnZrVXHCZc+eg+CGE4OujkcLJznhGKD6tuAshj5Q== <del> electron@19.1.8: version "19.1.8" resolved "https://registry.yarnpkg.com/electron/-/electron-19.1.8.tgz#3ce19c270ca86d05bbf0df5ceeaea2d23edc7083" integrity sha512-UfPQdFjgKI0xCm1V5sV3iAVOs0kCwAE91xWzV5tI7ij14yOkxTdXp9BqTzFaSbQYLYxn6q1BUUe1nlzjJjzAnw== </del> <ins> electron@19.1.9: version "19.1.9" resolved "https://registry.yarnpkg.com/electron/-/electron-19.1.9.tgz#01995eea4014f7cdb2f616f5f3492d4ed6f5e4f0" integrity sha512-XT5LkTzIHB+ZtD3dTmNnKjVBWrDWReCKt9G1uAFLz6uJMEVcIUiYO+fph5pLXETiBw/QZBx8egduMEfIccLx+g== </ins> dependencies: "@electron/get" "^1.14.1" "@types/node" "^16.11.26"


Question:
When running VS Code (or the Monaco editor) all theme colors are exposed as CSS variables. That means components don’t need to use JavaScript to read and set colors but can simply rely on CSS. When a theme changes, the variable values automatically update. Also, with CSS variables you have less code and everything in one place. The (long) list below is all users of . Those that only set/update colors are candidates for adopting CSS variables The names of the CSS variables can be "derived" with the following logic the theme color id and replace dots with slashes For instance the color id is exposed as CSS variables . Find a sample adoption in this commit: [ ] [ ] [x] [x] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [x] [x] [x] [x] [x] [x] [x] [x] [x] [x]
Hi, is this issue still up for grabs? I would like to be assigned to one of the bullets.
Yep! Just feel free to grab whichever one you want and open a PR for it :)
Hi! I would like to grab
Hi How did you linked your PR in every line of the description in this issue? I am not able to edit the description and I opened a PR for 12 hours ago. I guess edited the description to add your PR but not mine?
Maybe I mentioned this issue in the pr?
Yes, I was just wondering if there was an automated way of doing this, but I dont think so. Thank you!
I wrote a small helper that generates dynamic CSS rules but with the css variables filled in: You can use this for simple cases. Hopefully, it prevents some typos. The code is at:
Terminal is done, the following are intentional exceptions: We need to pull the color into TS to pass to as it uses it in canvas calls. We need to apply 0.5 opacity to the resolved color for the background, using won't work as it will fade the text.
Tunnel view, comments, and tree view are done.
what is the recommendation when more than the color is part of a ? To give an example: Here, we conditionally make an element if we have a . We cannot just blindly move that over to CSS because we then lose the check for the color.
I don't know. Has to stay in code....
can I listen to a change for a color key via theme service to conditionally toggle a class based on a color being defined or not?
Yes, and
If anyone else is still working on this, you can get completions with this handy extension
What is the recommendation if I have to hardcode a codicon css, for eg., I am deriving the codicon class programatically as follows If I have to move this to CSS then I have to hardcode the codicon class as follows Is it ok to hardcode codicons like this?
Looking at where verifiedPublisherThemeIcon is used, it's always in a dom node that also has the class . Better avoid the codicon class name, but use
Interesting issue where a migration to CSS variable caused a bug (). It looks like some visual behaviour is defined by the OS/runtime and not by default user agent CSS to fallback to. So if your CSS variable ends up as , you get some default (?) and the result is that the OS styling is disabled. Relevant SO for my case:
I looked over mine again and they are all there still intentionally: I don't think we can get the same effect of in CSS using the variable. Same as above. This is needed as the color is handed off to
please check those occurrences anyways so that we can remove them from the todo list
For , I couldn't find references to . For , we use the RGB values from the foreground var and we use a custom alpha. Since this only applies to the text, I don't think that there's a CSS-only equivalent. We could create a new var for this or just leave this as is; I'm not sure what's best in this case.
you're setting there so you can probably use a plain style, unless the element also has a background color as that would also apply there.
The element also has links, which have a normal alpha, so then the link opacity is affected.
you could have another rule with higher specificity that re-applies the link color?
For you could define a new (terminal hover specific) color. The default value of the color can express that it is a function of To access a color value use
As discussed in standup, tabs have quite an involved CSS ruling that involves not only colors but also other properties. I would like to keep it this way via and not invent various class names to get a similar effect to make maintenance easier there.
Closing this as I believe we are done here

*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> .monaco-editor .contentWidgets .codicon-light-bulb, .monaco-editor .contentWidgets .codicon-lightbulb-autofix { </del> <ins> .monaco-editor .lightBulbWidget { </ins> display: flex; align-items: center; justify-content: center; } <del> .monaco-editor .contentWidgets .codicon-light-bulb:hover, .monaco-editor .contentWidgets .codicon-lightbulb-autofix:hover { </del> <ins> .monaco-editor .lightBulbWidget:hover{ </ins> cursor: pointer; } <ins> .monaco-editor .lightBulbWidget.codicon-light-bulb { color: var(--vscode-editorLightBulb-foreground); } .monaco-editor .lightBulbWidget.codicon-lightbulb-autofix { color: var(--vscode-editorLightBulbAutoFix-foreground, var(--vscode-editorLightBulb-foreground)); } .monaco-editor .lightBulbWidget:before { position: relative; z-index: 2; } .monaco-editor .lightBulbWidget:after { position: absolute; top: 0; left: 0; content: ''; display: block; width: 100%; height: 100%; opacity: 0.3; background-color: var(--vscode-editor-background); z-index: 1; } </ins>


Question:
When running VS Code (or the Monaco editor) all theme colors are exposed as CSS variables. That means components don’t need to use JavaScript to read and set colors but can simply rely on CSS. When a theme changes, the variable values automatically update. Also, with CSS variables you have less code and everything in one place. The (long) list below is all users of . Those that only set/update colors are candidates for adopting CSS variables The names of the CSS variables can be "derived" with the following logic the theme color id and replace dots with slashes For instance the color id is exposed as CSS variables . Find a sample adoption in this commit: [ ] [ ] [x] [x] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [x] [x] [x] [x] [x] [x] [x] [x] [x] [x]
Hi, is this issue still up for grabs? I would like to be assigned to one of the bullets.
Yep! Just feel free to grab whichever one you want and open a PR for it :)
Hi! I would like to grab
Hi How did you linked your PR in every line of the description in this issue? I am not able to edit the description and I opened a PR for 12 hours ago. I guess edited the description to add your PR but not mine?
Maybe I mentioned this issue in the pr?
Yes, I was just wondering if there was an automated way of doing this, but I dont think so. Thank you!
I wrote a small helper that generates dynamic CSS rules but with the css variables filled in: You can use this for simple cases. Hopefully, it prevents some typos. The code is at:
Terminal is done, the following are intentional exceptions: We need to pull the color into TS to pass to as it uses it in canvas calls. We need to apply 0.5 opacity to the resolved color for the background, using won't work as it will fade the text.
Tunnel view, comments, and tree view are done.
what is the recommendation when more than the color is part of a ? To give an example: Here, we conditionally make an element if we have a . We cannot just blindly move that over to CSS because we then lose the check for the color.
I don't know. Has to stay in code....
can I listen to a change for a color key via theme service to conditionally toggle a class based on a color being defined or not?
Yes, and
If anyone else is still working on this, you can get completions with this handy extension
What is the recommendation if I have to hardcode a codicon css, for eg., I am deriving the codicon class programatically as follows If I have to move this to CSS then I have to hardcode the codicon class as follows Is it ok to hardcode codicons like this?
Looking at where verifiedPublisherThemeIcon is used, it's always in a dom node that also has the class . Better avoid the codicon class name, but use
Interesting issue where a migration to CSS variable caused a bug (). It looks like some visual behaviour is defined by the OS/runtime and not by default user agent CSS to fallback to. So if your CSS variable ends up as , you get some default (?) and the result is that the OS styling is disabled. Relevant SO for my case:
I looked over mine again and they are all there still intentionally: I don't think we can get the same effect of in CSS using the variable. Same as above. This is needed as the color is handed off to
please check those occurrences anyways so that we can remove them from the todo list
For , I couldn't find references to . For , we use the RGB values from the foreground var and we use a custom alpha. Since this only applies to the text, I don't think that there's a CSS-only equivalent. We could create a new var for this or just leave this as is; I'm not sure what's best in this case.
you're setting there so you can probably use a plain style, unless the element also has a background color as that would also apply there.
The element also has links, which have a normal alpha, so then the link opacity is affected.
you could have another rule with higher specificity that re-applies the link color?
For you could define a new (terminal hover specific) color. The default value of the color can express that it is a function of To access a color value use
As discussed in standup, tabs have quite an involved CSS ruling that involves not only colors but also other properties. I would like to keep it this way via and not invent various class names to get a similar effect to make maintenance easier there.
Closing this as I believe we are done here

import type { CodeActionSet, CodeActionTrigger } from 'vs/editor/contrib/codeAction/common/types'; import * as nls from 'vs/nls'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; <del> import { editorBackground, editorLightBulbAutoFixForeground, editorLightBulbForeground } from 'vs/platform/theme/common/colorRegistry'; import { IColorTheme, ICssStyleCollector, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; </del> namespace LightBulbState {


Question:
When running VS Code (or the Monaco editor) all theme colors are exposed as CSS variables. That means components don’t need to use JavaScript to read and set colors but can simply rely on CSS. When a theme changes, the variable values automatically update. Also, with CSS variables you have less code and everything in one place. The (long) list below is all users of . Those that only set/update colors are candidates for adopting CSS variables The names of the CSS variables can be "derived" with the following logic the theme color id and replace dots with slashes For instance the color id is exposed as CSS variables . Find a sample adoption in this commit: [ ] [ ] [x] [x] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [x] [x] [x] [x] [x] [x] [x] [x] [x] [x]
Hi, is this issue still up for grabs? I would like to be assigned to one of the bullets.
Yep! Just feel free to grab whichever one you want and open a PR for it :)
Hi! I would like to grab
Hi How did you linked your PR in every line of the description in this issue? I am not able to edit the description and I opened a PR for 12 hours ago. I guess edited the description to add your PR but not mine?
Maybe I mentioned this issue in the pr?
Yes, I was just wondering if there was an automated way of doing this, but I dont think so. Thank you!
I wrote a small helper that generates dynamic CSS rules but with the css variables filled in: You can use this for simple cases. Hopefully, it prevents some typos. The code is at:
Terminal is done, the following are intentional exceptions: We need to pull the color into TS to pass to as it uses it in canvas calls. We need to apply 0.5 opacity to the resolved color for the background, using won't work as it will fade the text.
Tunnel view, comments, and tree view are done.
what is the recommendation when more than the color is part of a ? To give an example: Here, we conditionally make an element if we have a . We cannot just blindly move that over to CSS because we then lose the check for the color.
I don't know. Has to stay in code....
can I listen to a change for a color key via theme service to conditionally toggle a class based on a color being defined or not?
Yes, and
If anyone else is still working on this, you can get completions with this handy extension
What is the recommendation if I have to hardcode a codicon css, for eg., I am deriving the codicon class programatically as follows If I have to move this to CSS then I have to hardcode the codicon class as follows Is it ok to hardcode codicons like this?
Looking at where verifiedPublisherThemeIcon is used, it's always in a dom node that also has the class . Better avoid the codicon class name, but use
Interesting issue where a migration to CSS variable caused a bug (). It looks like some visual behaviour is defined by the OS/runtime and not by default user agent CSS to fallback to. So if your CSS variable ends up as , you get some default (?) and the result is that the OS styling is disabled. Relevant SO for my case:
I looked over mine again and they are all there still intentionally: I don't think we can get the same effect of in CSS using the variable. Same as above. This is needed as the color is handed off to
please check those occurrences anyways so that we can remove them from the todo list
For , I couldn't find references to . For , we use the RGB values from the foreground var and we use a custom alpha. Since this only applies to the text, I don't think that there's a CSS-only equivalent. We could create a new var for this or just leave this as is; I'm not sure what's best in this case.
you're setting there so you can probably use a plain style, unless the element also has a background color as that would also apply there.
The element also has links, which have a normal alpha, so then the link opacity is affected.
you could have another rule with higher specificity that re-applies the link color?
For you could define a new (terminal hover specific) color. The default value of the color can express that it is a function of To access a color value use
As discussed in standup, tabs have quite an involved CSS ruling that involves not only colors but also other properties. I would like to keep it this way via and not invent various class names to get a similar effect to make maintenance easier there.
Closing this as I believe we are done here

private static readonly _posPref = [ContentWidgetPositionPreference.EXACT]; <del> private readonly _domNode: HTMLDivElement; </del> <ins> private readonly _domNode: HTMLElement; </ins> private readonly _onClick = this._register(new Emitter<{ x: number; y: number; actions: CodeActionSet; trigger: CodeActionTrigger }>()); public readonly onClick = this._onClick.event;


Question:
When running VS Code (or the Monaco editor) all theme colors are exposed as CSS variables. That means components don’t need to use JavaScript to read and set colors but can simply rely on CSS. When a theme changes, the variable values automatically update. Also, with CSS variables you have less code and everything in one place. The (long) list below is all users of . Those that only set/update colors are candidates for adopting CSS variables The names of the CSS variables can be "derived" with the following logic the theme color id and replace dots with slashes For instance the color id is exposed as CSS variables . Find a sample adoption in this commit: [ ] [ ] [x] [x] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [x] [x] [x] [x] [x] [x] [x] [x] [x] [x]
Hi, is this issue still up for grabs? I would like to be assigned to one of the bullets.
Yep! Just feel free to grab whichever one you want and open a PR for it :)
Hi! I would like to grab
Hi How did you linked your PR in every line of the description in this issue? I am not able to edit the description and I opened a PR for 12 hours ago. I guess edited the description to add your PR but not mine?
Maybe I mentioned this issue in the pr?
Yes, I was just wondering if there was an automated way of doing this, but I dont think so. Thank you!
I wrote a small helper that generates dynamic CSS rules but with the css variables filled in: You can use this for simple cases. Hopefully, it prevents some typos. The code is at:
Terminal is done, the following are intentional exceptions: We need to pull the color into TS to pass to as it uses it in canvas calls. We need to apply 0.5 opacity to the resolved color for the background, using won't work as it will fade the text.
Tunnel view, comments, and tree view are done.
what is the recommendation when more than the color is part of a ? To give an example: Here, we conditionally make an element if we have a . We cannot just blindly move that over to CSS because we then lose the check for the color.
I don't know. Has to stay in code....
can I listen to a change for a color key via theme service to conditionally toggle a class based on a color being defined or not?
Yes, and
If anyone else is still working on this, you can get completions with this handy extension
What is the recommendation if I have to hardcode a codicon css, for eg., I am deriving the codicon class programatically as follows If I have to move this to CSS then I have to hardcode the codicon class as follows Is it ok to hardcode codicons like this?
Looking at where verifiedPublisherThemeIcon is used, it's always in a dom node that also has the class . Better avoid the codicon class name, but use
Interesting issue where a migration to CSS variable caused a bug (). It looks like some visual behaviour is defined by the OS/runtime and not by default user agent CSS to fallback to. So if your CSS variable ends up as , you get some default (?) and the result is that the OS styling is disabled. Relevant SO for my case:
I looked over mine again and they are all there still intentionally: I don't think we can get the same effect of in CSS using the variable. Same as above. This is needed as the color is handed off to
please check those occurrences anyways so that we can remove them from the todo list
For , I couldn't find references to . For , we use the RGB values from the foreground var and we use a custom alpha. Since this only applies to the text, I don't think that there's a CSS-only equivalent. We could create a new var for this or just leave this as is; I'm not sure what's best in this case.
you're setting there so you can probably use a plain style, unless the element also has a background color as that would also apply there.
The element also has links, which have a normal alpha, so then the link opacity is affected.
you could have another rule with higher specificity that re-applies the link color?
For you could define a new (terminal hover specific) color. The default value of the color can express that it is a function of To access a color value use
As discussed in standup, tabs have quite an involved CSS ruling that involves not only colors but also other properties. I would like to keep it this way via and not invent various class names to get a similar effect to make maintenance easier there.
Closing this as I believe we are done here

@IKeybindingService keybindingService: IKeybindingService ) { super(); <del> this._domNode = document.createElement('div'); this._domNode.className = Codicon.lightBulb.classNames; </del> <ins> this._domNode = dom.$('div.lightBulbWidget'); </ins> this._register(Gesture.ignoreTarget(this._domNode)); this._editor.addContentWidget(this);