Question:
Type: <bBug</bWhen reviewing outgoing changes for my tracking fork of microsoft/vscode after merging upstream/main into my local copy today. ! Also, based on I was surprised to see the magnifying glass icon still being used for "View Changes". VS Code version: Code - Insiders 1.85.0-insider (, 2023-11-22T05:35:23.085Z) OS version: Windows_NT x64 10.0. Modes: <!-- generated by issue reporter --
/assign
I'm very sure this is a duplicate of
This sounds like there was no insiders for today. Can you check you are running the build from today? The PR just got merged yesterday.
Yes, this is today's. The new codicon appears in the Timeline view, just not in the incoming/outgoing party of Source Control view: !
It does for me: !
Ah, we're not talking about the same thing. My screenshot is of the feature recently by and controlled by the and settings. It comes from here:
are you able to reproduce this consistently? Could you provide steps that that I should use to try to reproduce the issue? Thanks!
in said it was probably a known issue. Ever since Insiders got that fix I haven't had any problems opening multi-diff for outgoing changes that get listed after I merge from upstream/main into my local main prior to pushing them to origin/main (my tracking repo). So I'm closing this one.
thanks for the update!
Hmm, just happened to me again with today's Insiders: ! Reopening. I'll hold back from pushing the local changes that I merged in from upstream/main in case there are places you'd like me to look for clues while I can repro it.
Devtools console:
It's this one: ! And specifically which is of course binary: ! I guess the multi diff editor needs to handle this case gracefully instead of failing to show the diffs for the other files.
thanks! could you please take a look? Thanks!
Ahh, because it is a binary file...

private async _createModel(): Promise<IMultiDiffEditorModel & IDisposable> { const store = new DisposableStore(); <del> const rs = await Promise.all(this.resources.map(async r => ({ originalRef: r.original ? store.add(await this._textModelService.createModelReference(r.original)) : undefined, originalModel: !r.original ? store.add(this._modelService.createModel('', null)) : undefined, modifiedRef: r.modified ? store.add(await this._textModelService.createModelReference(r.modified)) : undefined, modifiedModel: !r.modified ? store.add(this._modelService.createModel('', null)) : undefined, title: r.resource.fsPath, }))); </del> <ins> const rs = (await Promise.all(this.resources.map(async r => { try { return { originalRef: r.original ? store.add(await this._textModelService.createModelReference(r.original)) : undefined, originalModel: !r.original ? store.add(this._modelService.createModel('', null)) : undefined, modifiedRef: r.modified ? store.add(await this._textModelService.createModelReference(r.modified)) : undefined, modifiedModel: !r.modified ? store.add(this._modelService.createModel('', null)) : undefined, title: r.resource.fsPath, }; } catch (e) { // e.g. "File seems to be binary and cannot be opened as text" console.error(e); onUnexpectedError(e); return undefined; } }))).filter(isDefined); </ins> const textResourceConfigurationService = this._textResourceConfigurationService;


Question:
Type: <bBug</bA corrupted file is stored in CachedExtensionVSIXs and never re-downloaded, preventing extension from being installed until the file is manually deleted. Repro: Attempt to install an extension while the Azure DevOps service is not available and returning errors. Result in this comment: The corrupted vsix contains the following HTML instead of zipped data ! Shared Output: VS Code version: Code 1.84.2 (, 2023-11-09T10:52:57.054Z) OS version: Darwin arm64 23.1.0 Modes: Connection to 'SSH: ox' could not be established Canceled <details<summarySystem Info</summary Connection to 'SSH: ox' could not be established Canceled </details<details<summaryExtensions (31)</summaryExtensionVersion ------ vscode-ron0.11.0 vscode-eslint2.4.2 prettier-vscode10.1.0 kotlin0.2.32 copilot1.139.0 copilot-chat0.10.2 copilot-labs0.17.1121 vscode-github-actions0.26.2 better-cpp-syntax1.17.2 vscode-peacock4.2.2 vscode-clangd0.1.25 membrane1.6.1 vscode-dotnet-runtime2.0.0 vscode-postgresql0.3.0 remote-containers0.321.0 remote-ssh0.107.1 remote-ssh-edit0.86.0 cpptools-extension-pack1.3.0 hexeditor1.9.12 makefile-tools0.7.0 remote-explorer0.4.1 proto0.0.4 vscode-yaml1.14.0 vscode-gitweblinks2.9.3 rust-analyzer0.3.1748 even-better-toml0.19.2 shellcheck0.35.0 es6-string-html2.12.1 vscode-lldb1.10.0 vim1.27.1 clang-format1.9.0 (2 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
cc who was looking into this in
<!-- 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!
bumping to see if this issue is still occurring and if the fix has been verified!
It's somewhat fixed. You can try again and the second time it will work. But the error message that appears doesn't indicate that. perhaps it should retry at least once if the zip is corrupted before showing this error? Note the bottom right popup asking to manually download where a retry could've sufficed. <img width="1304" alt="Screenshot 2023-12-06 at 6 14 41 PM" src=""
Thanks for the feedback. This bug is to fix not to cache corrupted VSIXs and please validate that. Regarding trying again, I do not think we should be showing this as this might be random.
Verifying with a code review

this.logService.trace(`Extension signature verification details for ${extension.identifier.id} ${extension.version}:n${sigError.output}`); } if (verificationStatus === ExtensionSignaturetErrorCode.PackageIsInvalidZip || verificationStatus === ExtensionSignaturetErrorCode.SignatureArchiveIsInvalidZip) { <ins> try { // Delete the downloaded vsix before throwing the error await this.delete(location); } catch (error) { this.logService.error(error); } </ins> throw new ExtensionManagementError(CorruptZipMessage, ExtensionManagementErrorCode.CorruptZip); } } finally {


Question:
Repro: an editor to a new window (or as many as you want) the original window that still contains the editor that all windows with the copied editor have input lag ! Version: 1.85.0-insider (user setup) Commit: Date: 2023-12-01T19:00:37.339Z Electron: 25.9.6 ElectronBuildId: Chromium: 114.0.5735.289 18.15.0 V8: 11.4.183.29-electron.0 OS: WindowsNT x64 10.0.
A regression from

public static INSTANCE = new EditorRenderingCoordinator(); private _coordinatedRenderings: ICoordinatedRendering[] = []; <del> private _animationFrameRunner: IDisposable | null = null; </del> <ins> private _animationFrameRunners = new Map<CodeWindow, IDisposable>(); </ins> private constructor() { }


Question:
Repro: an editor to a new window (or as many as you want) the original window that still contains the editor that all windows with the copied editor have input lag ! Version: 1.85.0-insider (user setup) Commit: Date: 2023-12-01T19:00:37.339Z Electron: 25.9.6 ElectronBuildId: Chromium: 114.0.5735.289 18.15.0 V8: 11.4.183.29-electron.0 OS: WindowsNT x64 10.0.
A regression from

this._coordinatedRenderings.splice(renderingIndex, 1); if (this._coordinatedRenderings.length === 0) { <del> // There are no more renderings to coordinate => cancel animation frame if (this._animationFrameRunner !== null) { this._animationFrameRunner.dispose(); this._animationFrameRunner = null; </del> <ins> // There are no more renderings to coordinate => cancel animation frames for (const [_, disposable] of this._animationFrameRunners) { disposable.dispose(); </ins> } <ins> this._animationFrameRunners.clear(); </ins> } } }; } private _scheduleRender(window: CodeWindow): void { <del> if (this._animationFrameRunner === null) { </del> <ins> if (!this._animationFrameRunners.has(window)) { </ins> const runner = () => { <del> this._animationFrameRunner = null; </del> <ins> this._animationFrameRunners.delete(window); </ins> this._onRenderScheduled(); }; <del> this._animationFrameRunner = dom.runAtThisOrScheduleAtNextAnimationFrame(window, runner, 100); </del> <ins> this._animationFrameRunners.set(window, dom.runAtThisOrScheduleAtNextAnimationFrame(window, runner, 100)); </ins> } }


Question: Type: <bFeature Request</bThe notification suggesting a plugin has a cog with an option "Don't show again". It's however not clear whether this suppresses suggesting the specific plugin, or any plugin. Either this message should be clarified ("Don't show this plugin again") or a second option should be . VS Code version: Code 1.84.2 (, 2023-11-09T10:51:52.184Z) OS version: Windows_NT x64 10.0. Modes:

const ignoreImportantExtensionRecommendationStorageKey = 'extensionsAssistant/importantRecommendationsIgnore'; const donotShowWorkspaceRecommendationsStorageKey = 'extensionsAssistant/workspaceRecommendationsIgnore'; <del> const choiceNever = localize('neverShowAgain', "Don't Show Again"); </del> type RecommendationsNotificationActions = { onDidInstallRecommendedExtensions(extensions: IExtension[]): void;


Question: Type: <bFeature Request</bThe notification suggesting a plugin has a cog with an option "Don't show again". It's however not clear whether this suppresses suggesting the specific plugin, or any plugin. Either this message should be clarified ("Don't show this plugin again") or a second option should be . VS Code version: Code 1.84.2 (, 2023-11-09T10:51:52.184Z) OS version: Windows_NT x64 10.0. Modes:

searchValue = source === RecommendationSource.WORKSPACE ? '@recommended' : extensions.map(extensionId => `@id:${extensionId.identifier.id}`).join(' '); } <ins> const donotShowAgainLabel = source === RecommendationSource.WORKSPACE ? localize('donotShowAgain', "Don't Show Again for this Repository") : extensions.length > 1 ? localize('donotShowAgainExtension', "Don't Show Again for these Extensions") : localize('donotShowAgainExtensionSingle', "Don't Show Again for this Extension"); </ins> return raceCancellablePromises([ <del> this._registerP(this.showRecommendationsNotification(extensions, message, searchValue, source, recommendationsNotificationActions)), </del> <ins> this._registerP(this.showRecommendationsNotification(extensions, message, searchValue, donotShowAgainLabel, source, recommendationsNotificationActions)), </ins> this._registerP(this.waitUntilRecommendationsAreInstalled(extensions)) ]); } <del> private showRecommendationsNotification(extensions: IExtension[], message: string, searchValue: string, source: RecommendationSource, </del> <ins> private showRecommendationsNotification(extensions: IExtension[], message: string, searchValue: string, donotShowAgainLabel: string, source: RecommendationSource, </ins> { onDidInstallRecommendedExtensions, onDidShowRecommendedExtensions, onDidCancelRecommendedExtensions, onDidNeverShowRecommendedExtensionsAgain }: RecommendationsNotificationActions): CancelablePromise<RecommendationsNotificationResult> { return createCancelablePromise<RecommendationsNotificationResult>(async token => { let accepted = false;


Question: Type: <bFeature Request</bThe notification suggesting a plugin has a cog with an option "Don't show again". It's however not clear whether this suppresses suggesting the specific plugin, or any plugin. Either this message should be clarified ("Don't show this plugin again") or a second option should be . VS Code version: Code 1.84.2 (, 2023-11-09T10:51:52.184Z) OS version: Windows_NT x64 10.0. Modes:

this.runAction(this.instantiationService.createInstance(SearchExtensionsAction, searchValue)); } }, { <del> label: choiceNever, </del> <ins> label: donotShowAgainLabel, </ins> isSecondary: true, run: () => { onDidNeverShowRecommendedExtensionsAgain(extensions);


Question:
or VS Code Desktop something to make the autocompletion menu appear. the dash key (-) multiple times to zoom in a lot. Only the text in the menu gets larger while the html elements stay the same size. ! The html should resize with the text appropriately. Zooming in first and then revealing the menu produces the correct sizes on everything. It's possible that "" is the incorrect command to call in this case. Perhaps a list of commands could be provided?
To verify bind a keybinding to Editor Zoom In/out trigger suggest while it shows, use the editor zoom keybindings

applyStatusBarStyle(); applyIconStyle(); } <ins> if (this._completionModel && (e.hasChanged(EditorOption.fontInfo) || e.hasChanged(EditorOption.suggestFontSize) || e.hasChanged(EditorOption.suggestLineHeight))) { this._list.splice(0, this._list.length, this._completionModel.items); } </ins> })); this._ctxSuggestWidgetVisible = SuggestContext.Visible.bindTo(_contextKeyService);


Question:
or VS Code Desktop something to make the autocompletion menu appear. the dash key (-) multiple times to zoom in a lot. Only the text in the menu gets larger while the html elements stay the same size. ! The html should resize with the text appropriately. Zooming in first and then revealing the menu produces the correct sizes on everything. It's possible that "" is the incorrect command to call in this case. Perhaps a list of commands could be provided?
To verify bind a keybinding to Editor Zoom In/out trigger suggest while it shows, use the editor zoom keybindings

readonly detailsLabel: HTMLElement; readonly readMore: HTMLElement; readonly disposables: DisposableStore; <ins> readonly configureFont: () => void; </ins> } export class ItemRenderer implements IListRenderer<CompletionItem, ISuggestionTemplateData> {


Question:
or VS Code Desktop something to make the autocompletion menu appear. the dash key (-) multiple times to zoom in a lot. Only the text in the menu gets larger while the html elements stay the same size. ! The html should resize with the text appropriately. Zooming in first and then revealing the menu produces the correct sizes on everything. It's possible that "" is the incorrect command to call in this case. Perhaps a list of commands could be provided?
To verify bind a keybinding to Editor Zoom In/out trigger suggest while it shows, use the editor zoom keybindings

readMore.style.width = lineHeightPx; }; <del> configureFont(); disposables.add(this._editor.onDidChangeConfiguration(e => { if (e.hasChanged(EditorOption.fontInfo) || e.hasChanged(EditorOption.suggestFontSize) || e.hasChanged(EditorOption.suggestLineHeight)) { configureFont(); } })); return { root, left, right, icon, colorspan, iconLabel, iconContainer, parametersLabel, qualifierLabel, detailsLabel, readMore, disposables }; </del> <ins> return { root, left, right, icon, colorspan, iconLabel, iconContainer, parametersLabel, qualifierLabel, detailsLabel, readMore, disposables, configureFont }; </ins> } renderElement(element: CompletionItem, index: number, data: ISuggestionTemplateData): void { <ins> data.configureFont(); </ins> const { completion } = element; data.root.id = getAriaId(index); data.colorspan.style.backgroundColor = '';


Question:
Type: <bBug</bWhen first opening vscode or reloading the window several context keys are set to incorrect values. These values may eventually be corrected when focusing another editor and returning to the original one. The keys I have noticed with this issue are: It can be a little tricky to catch some of them misbehaving. It depends on which editors you have open and how they are arranged. ! Steps to repro: Open 2 editors Focus the first editor Pin it Record context keys Reload window Record context keys Diff the two sets of context keys and notice they are not the same VS Code version: Code - Insiders 1.86.0-insider (, 2023-12-18T05:36:59.983Z) OS version: WindowsNT x64 10.0. Modes: <details<summarySystem Info</summary </detailsExtensions: none<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Ben, maybe you could check for the ones in editor area since you recently fixed some issues there. Maybe its a regression?
The following context keys were not being updated on reload: Updating them now on reload
This seems to apply to a few additional context keys outside of . Just a heads up in case closing the issue was accidental.

}; // Update group contexts based on group changes <del> this._register(this.onDidModelChange(e => { </del> <ins> const updateGroupContextKeys = (e: IGroupModelChangeEvent) => { </ins> switch (e.kind) { case GroupModelChangeKind.GROUP_LOCKED: groupLockedContext.set(this.isLocked);


Question:
Type: <bBug</bWhen first opening vscode or reloading the window several context keys are set to incorrect values. These values may eventually be corrected when focusing another editor and returning to the original one. The keys I have noticed with this issue are: It can be a little tricky to catch some of them misbehaving. It depends on which editors you have open and how they are arranged. ! Steps to repro: Open 2 editors Focus the first editor Pin it Record context keys Reload window Record context keys Diff the two sets of context keys and notice they are not the same VS Code version: Code - Insiders 1.86.0-insider (, 2023-12-18T05:36:59.983Z) OS version: WindowsNT x64 10.0. Modes: <details<summarySystem Info</summary </detailsExtensions: none<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Ben, maybe you could check for the ones in editor area since you recently fixed some issues there. Maybe its a regression?
The following context keys were not being updated on reload: Updating them now on reload
This seems to apply to a few additional context keys outside of . Just a heads up in case closing the issue was accidental.

// Group editors count context groupEditorsCountContext.set(this.count); <del> })); </del> <ins> }; this._register(this.onDidModelChange(e => updateGroupContextKeys(e))); </ins> // Track the active editor and update context key that reflects // the dirty state of this editor <del> this._register(this.onDidActiveEditorChange(() => { observeActiveEditor(); })); </del> <ins> this._register(this.onDidActiveEditorChange(() => observeActiveEditor())); </ins> // Update context keys on startup observeActiveEditor(); <ins> updateGroupContextKeys({ kind: GroupModelChangeKind.EDITOR_ACTIVE }); updateGroupContextKeys({ kind: GroupModelChangeKind.GROUP_LOCKED }); </ins> } private registerContainerListeners(): void {


Question:
Testing The setting says " speech recognized" which reads a bit weird. Maybe leave "speech" away or says "Controls whether the editor listens for the 'Hey Code' phrase and what to do with it"
Bonus points for mentioning that this happens all locally
Yeah, I think I will go with this:

localize('voice.keywordActivation.inlineChat', "Keyword activation is enabled and listening for 'Hey Code' to start a voice chat session in the active editor."), localize('voice.keywordActivation.chatInContext', "Keyword activation is enabled and listening for 'Hey Code' to start a voice chat session in the active editor or view depending on keyboard focus.") ], <del> 'description': localize('voice.keywordActivation', "Controls whether the phrase 'Hey Code' should be speech recognized to start a voice chat session."), </del> <ins> 'description': localize('voice.keywordActivation', "Controls whether the keyword phrase 'Hey Code' is recognized to start a voice chat session. Enabling this will start recording from the microphone but the audio is processed locally and never sent to a server."), </ins> 'default': 'off', 'tags': ['accessibility', 'FeatureInsight'] }


Question:
]- Identify accessibility bugs before check-in and make bug fixing faster and easier. #A11yMAS; #A11yTCS; #A11ySev2; #DesktopApp; #Win32; #Visual Studio Code Client; #BM-VisualStudioCodeClient-Win32-Jan2024; #WCAG1.4.3; #Color Contrast; Visual Studio Code insider version 1.86.0 Microsoft Windows 11 Enterprise 22H2 Build .3007 Visual Studio Code Insiders editor ctrl+P or Tab till go and press ENTER then TAB till Go to File. that Color contrast ratio of the "search files by name" placeholder text is "2.283:1" which is less than 4.5:1. Color contrast ratio of the "search files by name" placeholder text is "2.283:1" which is less than 4.5:1. Similar issue is also observed throughout the application. Color contrast ratio of the "search files by name" placeholder text should be greater than or equals to 4.5:1. Low vision users will not be able to see the placeholder text if color contrast ratio will be less than 4.5:1. ! !
I can't reproduce this one. With the Dark Modern theme I see a background value for inputs of which passes the 3:1 ratio with the placeholder foreground of .
Misread that the ratio should be 4.5:1. This I can fix.
Verified the issue in below environment: Visual Studio Code Insider Version: 1.87.0-insider (user setup) Issue is fixed. Hence Closing the bug. please find attachment for reference. !

"input.background": "#313131", "input.border": "#3C3C3C", "input.foreground": "#CCCCCC", <del> "input.placeholderForeground": "#818181", </del> <ins> "input.placeholderForeground": "#989898", </ins> "inputOption.activeBackground": "#2489DB82", "inputOption.activeBorder": "#2488DB", "keybindingLabel.foreground": "#CCCCCC",


Question:
]- Identify accessibility bugs before check-in and make bug fixing faster and easier. #A11yMAS; #A11yTCS; #A11ySev2; #DesktopApp; #Win32; #Visual Studio Code Client; #BM-VisualStudioCodeClient-Win32-Jan2024; #WCAG1.4.3; #Color Contrast; Visual Studio Code insider version 1.86.0 Microsoft Windows 11 Enterprise 22H2 Build .3007 Visual Studio Code Insiders editor ctrl+P or Tab till go and press ENTER then TAB till Go to File. that Color contrast ratio of the "search files by name" placeholder text is "2.283:1" which is less than 4.5:1. Color contrast ratio of the "search files by name" placeholder text is "2.283:1" which is less than 4.5:1. Similar issue is also observed throughout the application. Color contrast ratio of the "search files by name" placeholder text should be greater than or equals to 4.5:1. Low vision users will not be able to see the placeholder text if color contrast ratio will be less than 4.5:1. ! !
I can't reproduce this one. With the Dark Modern theme I see a background value for inputs of which passes the 3:1 ratio with the placeholder foreground of .
Misread that the ratio should be 4.5:1. This I can fix.
Verified the issue in below environment: Visual Studio Code Insider Version: 1.87.0-insider (user setup) Issue is fixed. Hence Closing the bug. please find attachment for reference. !

"input.background": "#FFFFFF", "input.border": "#CECECE", "input.foreground": "#3B3B3B", <del> "input.placeholderForeground": "#868686", </del> <ins> "input.placeholderForeground": "#767676", </ins> "inputOption.activeBackground": "#BED6ED", "inputOption.activeBorder": "#005FB8", "inputOption.activeForeground": "#000000",


Question:
Type: <bBug</bSince updating to 1.86, when I open a git diff in VSCode, I see the latest version of the file on both sides, showing no differences (except that word wrap is off on the left & on on the right... it's on everywhere else)... if I stage a file, open the diff, then unstage the file, then I see the correct diff like I've always seen before likely related: the new +- buttons next to Changes & Staged Changes show the same behavior (although while playing with it, I did have one time where I saw the correct diff on the first file) at one point I restarted VSCode, which seemed to resolve the issue, but it was only temporary. once I started editing files again the issue returned not sure if it's relevant or not, but... in all cases, the changes were saved to disk... the git change indicators in the left gutter of open files are not affected by this issue, they continue to work as the always have, showing up as I edit, clearing when I stage the change VS Code version: Code 1.86.0 (, 2024-01-31T10:28:19.990Z) OS version: WindowsNT x64 10.0. Modes: <details<summarySystem Info</summary </details<details<summaryExtensions (55)</summaryExtensionVersion ------ vscode-icalendar1.0.1 vscode-m3u1.0.0 vscode-caniuse0.5.0 case-change1.0.2 rtf2.7.0 spellright3.0.122 markdown-checkbox0.4.0 markdown-emoji0.3.0 markdown-mermaid1.21.0 markdown-yaml-preamble0.1.0 vscode-tldr1.0.0 gitignore0.9.0 vscode-markdownlint0.54.0 vscode-eslint2.4.4 rushcore1.0.2 rushnav1.0.2 githistory0.6.20 xml2.5.1 escaping-characters1.0.0 EditorConfig0.16.4 vscode-macros1.4.1 git-project-manager1.8.2 url-encode1.1.0 shell-format7.2.5 matlab3.0.2 vscode-pull-request-github0.80.0 gc-excelviewer4.2.58 vscode-markdown-footnote1.0.0 vscode-favorites1.11.0 rest-client0.25.1 path-autocomplete1.25.0 mediawiki2.1.0 anki1.3.1 markdown-katex0.1.4 vscode-peacock4.2.2 gpg1.1.1 zotero0.1.11 markdown-shortcuts0.12.0 debugpy2024.0.0 jupyter-keymap1.1.2 jupyter-renderers1.0.17 vscode-jupyter-cell-tags0.1.8 vscode-jupyter-slideshow0.1.5 azure-account0.11.6 azurecli0.6.0 hexeditor1.9.13 live-server0.4.13 vscode-yaml1.14.0 vscode-zipexplorer0.3.1 pdf1.2.2 intellicode-api-usage-examples0.2.8 vscodeintellicode1.2.30 vscode-icons12.7.0 org-mode1.0.0 JavaScriptSnippets1.8.0 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Please use the Start Extension Bisect command to investigate whether the problem is being caused by one of your extensions.
I can duplicate this in Insiders with no extensions loaded (... however, that opening & closing revealed more details I didn't realize previously... I only see the buggy behavior with changes made in this session... if I close & reopen VSCode, changes that were staged before VSCode opened render correctly... new changes stop rendering when they're staged (and when I say "stop rendering" I mean no red & green highlights, because both sides of the diff tab contain the new code) & start rendering again when the app is restarted (or I switch between Release & Insiders) side notes: I'm no longer seeing the no word wrap on the left in VSCode (& I never saw it in Insiders), so not sure what was up with that... I know that there are often visual artifacts in one side of the diff editor (e.g. valid relative paths get yellow squiggles on one side but not the other), so guess I'll put this one in that category... who cares? I'll see that in the main editor, I just want the diff in the diff viewer I forgot to try Insiders before I submitted because it was so obvious that only 1 thing changed, but I'll try to remember that just to make sure it hasn't been fixed already... but, I don't appreciate being asked to go on a wild goose chase bisecting extensions
one more thing I just noticed... prior to 1.86, if I stages a file, then made additional changes, so that the file is now in the Source Control panel twice... the 2 diff buttons would open 2 separate diffs, one with the staged changes & 1 with unstaged... now I get only one (with the unstaged changes) also, it makes no sense that the bot removed the label, unless there's been another Release since 1.86, and the Releases page still shows that as the newest version
I've had this issue since February too. Strangely enough, I started an Extension Bisect, stopped straight away (intending to restart) and now I don't have the issue. ¯(°_o)/¯
I'm hitting this too on two completely different machines (Windows and Linux). The issue is if you click the diff button on a staged file just after staging it, for some reason it opens the working tree diff (which has no differences). If you reload the window so it starts with the file already staged then the button correctly opens the index diff. I reproduced this with no extensions enabled. I think the reason this enormous bug has gone unnoticed for so long (I only just looked into it because I assumed that surely they would fix something as broken as this...), is that it only happens if you have this setting: Do you guys have that set?
yes, I do have that setting... and if I comment it out, I see the correct behavior
Sorry for not getting back to you on this. Could any of you experiencing this issue provide a screen recording illustrating the issue ()? Thank you very much in advance!
Ugh I can't seem to reproduce it at the moment - sometimes it does work, but I haven't found the exact pattern. So you'll have to use your imagination, but basically you click the diff button for a file (two circles connected by arrows) and it opens a diff view but there are no differences between the files on the left and right of the view. Next time it happens I'll try to record it.
Are you able to reproduce the issue if you disable the setting? Thanks!
Didn't seem to make any difference - I still can't reproduce it, sorry. What does that setting actually do? It doesn't seem to make any difference to behaviour and I don't understand the description: ! The Source Control view still automatically updates even if I have that off.
if I add to my settings I can repro, without it I can't repro... just recorded with gitcap, waiting for it to render so I can get a link
video was way over GitHub's 10MB limit... so dropped it in my OneDrive & tried to include it as an image... !Auy35hyaQsjmnpB70oGx2DvOlOjaXg?e=YLgT5J!
could you please re-upload the recording as it looks like it is not available at the link any more. Thanks!
i will try tonight... on vacay this week, so might need to wait until I'm back on the work PC Monday
any news on the recording? Thank you!
with in settings (without it I see expected behavior) !
thanks again! I have a fix but it will not make the cut for the August 2024 release so it will be in the September 2024 release.
<!-- 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!
Friendly ping! Looks like this issue requires some further steps to be verified. Please provide us with the steps necessary to verify this issue.
Verification steps: VS Code Insiders to a file, modify it and save it the Source Control view and click on "Open Changes" action Confirm that the diff is rendered correctly on the "Stage Changes" action on "Open Changes" action Confirm that the diff is rendered correctly

return -1; } <ins> if (result !== 0) { return result; } </ins> if (a.multiFileDiffEditorModifiedUri && b.multiFileDiffEditorModifiedUri) { result = comparePaths(a.multiFileDiffEditorModifiedUri.fsPath, b.multiFileDiffEditorModifiedUri.fsPath, true); } else if (a.multiFileDiffEditorModifiedUri) {


Question:
Type: <bBug</bSince updating to 1.86, when I open a git diff in VSCode, I see the latest version of the file on both sides, showing no differences (except that word wrap is off on the left & on on the right... it's on everywhere else)... if I stage a file, open the diff, then unstage the file, then I see the correct diff like I've always seen before likely related: the new +- buttons next to Changes & Staged Changes show the same behavior (although while playing with it, I did have one time where I saw the correct diff on the first file) at one point I restarted VSCode, which seemed to resolve the issue, but it was only temporary. once I started editing files again the issue returned not sure if it's relevant or not, but... in all cases, the changes were saved to disk... the git change indicators in the left gutter of open files are not affected by this issue, they continue to work as the always have, showing up as I edit, clearing when I stage the change VS Code version: Code 1.86.0 (, 2024-01-31T10:28:19.990Z) OS version: WindowsNT x64 10.0. Modes: <details<summarySystem Info</summary </details<details<summaryExtensions (55)</summaryExtensionVersion ------ vscode-icalendar1.0.1 vscode-m3u1.0.0 vscode-caniuse0.5.0 case-change1.0.2 rtf2.7.0 spellright3.0.122 markdown-checkbox0.4.0 markdown-emoji0.3.0 markdown-mermaid1.21.0 markdown-yaml-preamble0.1.0 vscode-tldr1.0.0 gitignore0.9.0 vscode-markdownlint0.54.0 vscode-eslint2.4.4 rushcore1.0.2 rushnav1.0.2 githistory0.6.20 xml2.5.1 escaping-characters1.0.0 EditorConfig0.16.4 vscode-macros1.4.1 git-project-manager1.8.2 url-encode1.1.0 shell-format7.2.5 matlab3.0.2 vscode-pull-request-github0.80.0 gc-excelviewer4.2.58 vscode-markdown-footnote1.0.0 vscode-favorites1.11.0 rest-client0.25.1 path-autocomplete1.25.0 mediawiki2.1.0 anki1.3.1 markdown-katex0.1.4 vscode-peacock4.2.2 gpg1.1.1 zotero0.1.11 markdown-shortcuts0.12.0 debugpy2024.0.0 jupyter-keymap1.1.2 jupyter-renderers1.0.17 vscode-jupyter-cell-tags0.1.8 vscode-jupyter-slideshow0.1.5 azure-account0.11.6 azurecli0.6.0 hexeditor1.9.13 live-server0.4.13 vscode-yaml1.14.0 vscode-zipexplorer0.3.1 pdf1.2.2 intellicode-api-usage-examples0.2.8 vscodeintellicode1.2.30 vscode-icons12.7.0 org-mode1.0.0 JavaScriptSnippets1.8.0 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Please use the Start Extension Bisect command to investigate whether the problem is being caused by one of your extensions.
I can duplicate this in Insiders with no extensions loaded (... however, that opening & closing revealed more details I didn't realize previously... I only see the buggy behavior with changes made in this session... if I close & reopen VSCode, changes that were staged before VSCode opened render correctly... new changes stop rendering when they're staged (and when I say "stop rendering" I mean no red & green highlights, because both sides of the diff tab contain the new code) & start rendering again when the app is restarted (or I switch between Release & Insiders) side notes: I'm no longer seeing the no word wrap on the left in VSCode (& I never saw it in Insiders), so not sure what was up with that... I know that there are often visual artifacts in one side of the diff editor (e.g. valid relative paths get yellow squiggles on one side but not the other), so guess I'll put this one in that category... who cares? I'll see that in the main editor, I just want the diff in the diff viewer I forgot to try Insiders before I submitted because it was so obvious that only 1 thing changed, but I'll try to remember that just to make sure it hasn't been fixed already... but, I don't appreciate being asked to go on a wild goose chase bisecting extensions
one more thing I just noticed... prior to 1.86, if I stages a file, then made additional changes, so that the file is now in the Source Control panel twice... the 2 diff buttons would open 2 separate diffs, one with the staged changes & 1 with unstaged... now I get only one (with the unstaged changes) also, it makes no sense that the bot removed the label, unless there's been another Release since 1.86, and the Releases page still shows that as the newest version
I've had this issue since February too. Strangely enough, I started an Extension Bisect, stopped straight away (intending to restart) and now I don't have the issue. ¯(°_o)/¯
I'm hitting this too on two completely different machines (Windows and Linux). The issue is if you click the diff button on a staged file just after staging it, for some reason it opens the working tree diff (which has no differences). If you reload the window so it starts with the file already staged then the button correctly opens the index diff. I reproduced this with no extensions enabled. I think the reason this enormous bug has gone unnoticed for so long (I only just looked into it because I assumed that surely they would fix something as broken as this...), is that it only happens if you have this setting: Do you guys have that set?
yes, I do have that setting... and if I comment it out, I see the correct behavior
Sorry for not getting back to you on this. Could any of you experiencing this issue provide a screen recording illustrating the issue ()? Thank you very much in advance!
Ugh I can't seem to reproduce it at the moment - sometimes it does work, but I haven't found the exact pattern. So you'll have to use your imagination, but basically you click the diff button for a file (two circles connected by arrows) and it opens a diff view but there are no differences between the files on the left and right of the view. Next time it happens I'll try to record it.
Are you able to reproduce the issue if you disable the setting? Thanks!
Didn't seem to make any difference - I still can't reproduce it, sorry. What does that setting actually do? It doesn't seem to make any difference to behaviour and I don't understand the description: ! The Source Control view still automatically updates even if I have that off.
if I add to my settings I can repro, without it I can't repro... just recorded with gitcap, waiting for it to render so I can get a link
video was way over GitHub's 10MB limit... so dropped it in my OneDrive & tried to include it as an image... !Auy35hyaQsjmnpB70oGx2DvOlOjaXg?e=YLgT5J!
could you please re-upload the recording as it looks like it is not available at the link any more. Thanks!
i will try tonight... on vacay this week, so might need to wait until I'm back on the work PC Monday
any news on the recording? Thank you!
with in settings (without it I see expected behavior) !
thanks again! I have a fix but it will not make the cut for the August 2024 release so it will be in the September 2024 release.
<!-- 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!
Friendly ping! Looks like this issue requires some further steps to be verified. Please provide us with the steps necessary to verify this issue.
Verification steps: VS Code Insiders to a file, modify it and save it the Source Control view and click on "Open Changes" action Confirm that the diff is rendered correctly on the "Stage Changes" action on "Open Changes" action Confirm that the diff is rendered correctly

} else if (b.multiFileDiffEditorModifiedUri) { return -1; } <ins> if (result !== 0) { return result; } </ins> if (a.multiDiffEditorOriginalUri && b.multiDiffEditorOriginalUri) { result = comparePaths(a.multiDiffEditorOriginalUri.fsPath, b.multiDiffEditorOriginalUri.fsPath, true); } else if (a.multiDiffEditorOriginalUri) {


Question: <img width="431" alt="image" src=""The debug view uses monospace font by default other than the workbench font

protected override renderBody(container: HTMLElement): void { super.renderBody(container); <ins> this.element.classList.add('debug-pane'); </ins> this.tree = <WorkbenchAsyncDataTree<INotebookScope, INotebookVariableElement>>this.instantiationService.createInstance( WorkbenchAsyncDataTree,


Question: Enable Write a long commit message that triggers validation Hover over the diagnostic squiggle <img width="405" alt="image" src=""

private renderMarkerStatusbar(context: IEditorHoverRenderContext, markerHover: MarkerHover, disposables: DisposableStore): void { if (markerHover.marker.severity === MarkerSeverity.Error || markerHover.marker.severity === MarkerSeverity.Warning || markerHover.marker.severity === MarkerSeverity.Info) { <del> context.statusBar.addAction({ label: nls.localize('view problem', "View Problem"), commandId: NextMarkerAction.ID, run: () => { context.hide(); MarkerController.get(this._editor)?.showAtMarker(markerHover.marker); this._editor.focus(); } }); </del> <ins> const markerController = MarkerController.get(this._editor); if (markerController) { context.statusBar.addAction({ label: nls.localize('view problem', "View Problem"), commandId: NextMarkerAction.ID, run: () => { context.hide(); markerController.showAtMarker(markerHover.marker); this._editor.focus(); } }); } </ins> } if (!this._editor.getOption(EditorOption.readOnly)) {


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 <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.86.1 OS Version: Ubuntu 23.04 Steps to Reproduce: an empty text editor the text opening and closing an empty text editor several times that the number of disposables increases each time Opening and closing an editor 1997 times results in 3994 disposables with this stack trace: When opening an editor, the function is called , the function calls adds a disposable to the disposable store When closing and opening the editor again, the same happens: the function is called , the function calls adds a disposable to the disposable store again This probably causes more and more disposables to be in . It seems, disposing the codeEditorContributions disposable () when a text editor model becomes detached might be a possible solution. That way, it would be registered when a model is attached and disposed when a model becomes detached:
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.86.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Thanks a lot!

import { getWindow, runWhenWindowIdle } from 'vs/base/browser/dom'; import { onUnexpectedError } from 'vs/base/common/errors'; <del> import { Disposable, DisposableMap } from 'vs/base/common/lifecycle'; </del> <ins> import { Disposable, DisposableMap, IDisposable } from 'vs/base/common/lifecycle'; </ins> import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { EditorContributionInstantiation, IEditorContributionDescription } from 'vs/editor/browser/editorExtensions'; import { IEditorContribution } from 'vs/editor/common/editorCommon';


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 <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.86.1 OS Version: Ubuntu 23.04 Steps to Reproduce: an empty text editor the text opening and closing an empty text editor several times that the number of disposables increases each time Opening and closing an editor 1997 times results in 3994 disposables with this stack trace: When opening an editor, the function is called , the function calls adds a disposable to the disposable store When closing and opening the editor again, the same happens: the function is called , the function calls adds a disposable to the disposable store again This probably causes more and more disposables to be in . It seems, disposing the codeEditorContributions disposable () when a text editor model becomes detached might be a possible solution. That way, it would be registered when a model is attached and disposed when a model becomes detached:
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.86.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Thanks a lot!

this._instantiateSome(EditorContributionInstantiation.BeforeFirstInteraction); } <del> public onAfterModelAttached(): void { this._register(runWhenWindowIdle(getWindow(this._editor?.getDomNode()), () => { </del> <ins> public onAfterModelAttached(): IDisposable { return runWhenWindowIdle(getWindow(this._editor?.getDomNode()), () => { </ins> this._instantiateSome(EditorContributionInstantiation.AfterFirstRender); <del> }, 50)); </del> <ins> }, 50); </ins> } private _instantiateSome(instantiation: EditorContributionInstantiation): void {


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 <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.86.1 OS Version: Ubuntu 23.04 Steps to Reproduce: an empty text editor the text opening and closing an empty text editor several times that the number of disposables increases each time Opening and closing an editor 1997 times results in 3994 disposables with this stack trace: When opening an editor, the function is called , the function calls adds a disposable to the disposable store When closing and opening the editor again, the same happens: the function is called , the function calls adds a disposable to the disposable store again This probably causes more and more disposables to be in . It seems, disposing the codeEditorContributions disposable () when a text editor model becomes detached might be a possible solution. That way, it would be registered when a model is attached and disposed when a model becomes detached:
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.86.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Thanks a lot!

private readonly _overflowWidgetsDomNode: HTMLElement | undefined; private readonly _id: number; private readonly _configuration: IEditorConfiguration; <ins> private _contributionsDisposable: IDisposable | undefined; </ins> protected readonly _actions = new Map<string, editorCommon.IEditorAction>();


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 <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.86.1 OS Version: Ubuntu 23.04 Steps to Reproduce: an empty text editor the text opening and closing an empty text editor several times that the number of disposables increases each time Opening and closing an editor 1997 times results in 3994 disposables with this stack trace: When opening an editor, the function is called , the function calls adds a disposable to the disposable store When closing and opening the editor again, the same happens: the function is called , the function calls adds a disposable to the disposable store again This probably causes more and more disposables to be in . It seems, disposing the codeEditorContributions disposable () when a text editor model becomes detached might be a possible solution. That way, it would be registered when a model is attached and disposed when a model becomes detached:
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.86.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Thanks a lot!

this._onDidChangeModel.fire(e); this._postDetachModelCleanup(detachedModel); <del> this._contributions.onAfterModelAttached(); </del> <ins> this._contributionsDisposable = this._contributions.onAfterModelAttached(); </ins> } private _removeDecorationTypes(): void {


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 <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.86.1 OS Version: Ubuntu 23.04 Steps to Reproduce: an empty text editor the text opening and closing an empty text editor several times that the number of disposables increases each time Opening and closing an editor 1997 times results in 3994 disposables with this stack trace: When opening an editor, the function is called , the function calls adds a disposable to the disposable store When closing and opening the editor again, the same happens: the function is called , the function calls adds a disposable to the disposable store again This probably causes more and more disposables to be in . It seems, disposing the codeEditorContributions disposable () when a text editor model becomes detached might be a possible solution. That way, it would be registered when a model is attached and disposed when a model becomes detached:
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.86.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Thanks a lot!

} private _detachModel(): ITextModel | null { <ins> this._contributionsDisposable?.dispose(); this._contributionsDisposable = undefined; </ins> if (!this._modelData) { return null; }


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 <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.86.1 OS Version: Ubuntu 23.04 Steps to Reproduce: an empty text editor the text opening and closing an empty text editor several times that the number of disposables increases each time Opening and closing an editor 1997 times results in 3994 disposables with this stack trace: When opening an editor, the function is called , the function calls adds a disposable to the disposable store When closing and opening the editor again, the same happens: the function is called , the function calls adds a disposable to the disposable store again This probably causes more and more disposables to be in . It seems, disposing the codeEditorContributions disposable () when a text editor model becomes detached might be a possible solution. That way, it would be registered when a model is attached and disposed when a model becomes detached:
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.86.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Thanks a lot!

if (this._bannerDomNode && this._domElement.contains(this._bannerDomNode)) { this._domElement.removeChild(this._bannerDomNode); } return model; }


Question:
In VS Code action items inside inputs are vertically aligned to top, in the Chat features they are centered in the middle. This happens when putting in a lot of text or pressing Shift+Enter. Panel: <img width="425" alt="image" src=""Inline: <img width="608" alt="image" src=""Quick: <img width="621" alt="image" src=""For Inline and Quick the action items to the right of the input box should also stick to the top.
Seems like we have a mix of top-aligned and overflow w/ scroll (see below). But I agree that we should be consistent as much as possible. But it does feel like a chat send button should generally but aligned to the bottom, no? We may even consider rendering the toolbar on its own row once we're into multiple lines. That would ensure the text isn't forced to fill a tiny space now that we have 2+ icons. Here's how Teams does it as an example: ! ! ! !
Would be awesome if the text could wrap around it, especially in the narrow search widget case, I've always wanted that but I think it would be a pain to implement.
Don't have a strong opinion about top or bottom, I think each can be justified on a case-by-case basis. but middle looks weird. :) For example, inline Chat may want to do top alignment as the icons would align with those outside the input field (poppet and close) Bottom would help with the wrapping.

position: relative; padding: 0 6px; margin-bottom: 4px; <del> align-items: center; </del> <ins> align-items: flex-end; </ins> justify-content: space-between; }


Question:
In VS Code action items inside inputs are vertically aligned to top, in the Chat features they are centered in the middle. This happens when putting in a lot of text or pressing Shift+Enter. Panel: <img width="425" alt="image" src=""Inline: <img width="608" alt="image" src=""Quick: <img width="621" alt="image" src=""For Inline and Quick the action items to the right of the input box should also stick to the top.
Seems like we have a mix of top-aligned and overflow w/ scroll (see below). But I agree that we should be consistent as much as possible. But it does feel like a chat send button should generally but aligned to the bottom, no? We may even consider rendering the toolbar on its own row once we're into multiple lines. That would ensure the text isn't forced to fill a tiny space now that we have 2+ icons. Here's how Teams does it as an example: ! ! ! !
Would be awesome if the text could wrap around it, especially in the narrow search widget case, I've always wanted that but I think it would be a pain to implement.
Don't have a strong opinion about top or bottom, I think each can be justified on a case-by-case basis. but middle looks weird. :) For example, inline Chat may want to do top alignment as the icons would align with those outside the input field (poppet and close) Bottom would help with the wrapping.

.interactive-session .interactive-input-part .interactive-execute-toolbar { height: 22px; <ins> /* It's bottom-aligned, make it appear centered within the container */ margin-bottom: 7px; </ins> } .interactive-session .interactive-input-part .interactive-execute-toolbar .codicon-debug-stop {


Question:
In VS Code action items inside inputs are vertically aligned to top, in the Chat features they are centered in the middle. This happens when putting in a lot of text or pressing Shift+Enter. Panel: <img width="425" alt="image" src=""Inline: <img width="608" alt="image" src=""Quick: <img width="621" alt="image" src=""For Inline and Quick the action items to the right of the input box should also stick to the top.
Seems like we have a mix of top-aligned and overflow w/ scroll (see below). But I agree that we should be consistent as much as possible. But it does feel like a chat send button should generally but aligned to the bottom, no? We may even consider rendering the toolbar on its own row once we're into multiple lines. That would ensure the text isn't forced to fill a tiny space now that we have 2+ icons. Here's how Teams does it as an example: ! ! ! !
Would be awesome if the text could wrap around it, especially in the narrow search widget case, I've always wanted that but I think it would be a pain to implement.
Don't have a strong opinion about top or bottom, I think each can be justified on a case-by-case basis. but middle looks weird. :) For example, inline Chat may want to do top alignment as the icons would align with those outside the input field (poppet and close) Bottom would help with the wrapping.

} .quick-input-widget .interactive-session .interactive-input-part .interactive-execute-toolbar { <del> bottom: 1px; </del> <ins> margin-bottom: 1px; </ins> } .quick-input-widget .interactive-session .interactive-input-and-execute-toolbar {


Question:
use generate cell in notebooks make a request while the request is active press stop a bunch of errors are printed
It seems not wise at all to maintain my own *chatcontroller. I'd love to look into how do I ensure I reuse the most of Inline Chat Controller later.
Is the generate cell feature just with using ctrl+i from within a cell body? Not sure how I can trigger it.

private _sessionCtor: CancelablePromise<void> | undefined; private _activeSession?: Session; private _warmupRequestCts?: CancellationTokenSource; <ins> private _activeRequestCts?: CancellationTokenSource; </ins> private readonly _ctxHasActiveRequest: IContextKey<boolean>; private readonly _ctxCellWidgetFocused: IContextKey<boolean>; private readonly _ctxUserDidEdit: IContextKey<boolean>;


Question:
use generate cell in notebooks make a request while the request is active press stop a bunch of errors are printed
It seems not wise at all to maintain my own *chatcontroller. I'd love to look into how do I ensure I reuse the most of Inline Chat Controller later.
Is the generate cell feature just with using ctrl+i from within a cell body? Not sure how I can trigger it.

} async acceptInput() { <del> assertType(this._activeSession); </del> assertType(this._widget); <ins> await this._sessionCtor; assertType(this._activeSession); </ins> this._warmupRequestCts?.dispose(true); this._warmupRequestCts = undefined; this._activeSession.addInput(new SessionPrompt(this._widget.inlineChatWidget.value));


Question:
use generate cell in notebooks make a request while the request is active press stop a bunch of errors are printed
It seems not wise at all to maintain my own *chatcontroller. I'd love to look into how do I ensure I reuse the most of Inline Chat Controller later.
Is the generate cell feature just with using ctrl+i from within a cell body? Not sure how I can trigger it.

//TODO: update progress in a newly inserted cell below the widget instead of the fake editor <del> const requestCts = new CancellationTokenSource(); </del> <ins> this._activeRequestCts?.cancel(); this._activeRequestCts = new CancellationTokenSource(); </ins> const progressEdits: TextEdit[][] = []; const progressiveEditsQueue = new Queue(); const progressiveEditsClock = StopWatch.create(); const progressiveEditsAvgDuration = new MovingAverage(); <del> const progressiveEditsCts = new CancellationTokenSource(requestCts.token); </del> <ins> const progressiveEditsCts = new CancellationTokenSource(this._activeRequestCts.token); </ins> let progressiveChatResponse: IInlineChatMessageAppender | undefined; const progress = new AsyncProgress<IInlineChatProgressItem>(async data => { // console.log('received chunk', data, request); <del> if (requestCts.token.isCancellationRequested) { </del> <ins> if (this._activeRequestCts?.token.isCancellationRequested) { </ins> return; }


Question:
use generate cell in notebooks make a request while the request is active press stop a bunch of errors are printed
It seems not wise at all to maintain my own *chatcontroller. I'd love to look into how do I ensure I reuse the most of Inline Chat Controller later.
Is the generate cell feature just with using ctrl+i from within a cell body? Not sure how I can trigger it.

} }); <del> const task = this._activeSession.provider.provideResponse(this._activeSession.session, request, progress, requestCts.token); </del> <ins> const task = this._activeSession.provider.provideResponse(this._activeSession.session, request, progress, this._activeRequestCts.token); </ins> let response: ReplyResponse | ErrorResponse | EmptyResponse; try {


Question:
use generate cell in notebooks make a request while the request is active press stop a bunch of errors are printed
It seems not wise at all to maintain my own *chatcontroller. I'd love to look into how do I ensure I reuse the most of Inline Chat Controller later.
Is the generate cell feature just with using ctrl+i from within a cell body? Not sure how I can trigger it.

this._widget?.inlineChatWidget.updateInfo(!this._activeSession.lastExchange ? localize('thinking', "Thinkingu2026") : ''); this._ctxHasActiveRequest.set(true); <del> const reply = await raceCancellationError(Promise.resolve(task), requestCts.token); </del> <ins> const reply = await raceCancellationError(Promise.resolve(task), this._activeRequestCts.token); </ins> if (progressiveEditsQueue.size > 0) { // we must wait for all edits that came in via progress to complete await Event.toPromise(progressiveEditsQueue.onDrained);


Question:
use generate cell in notebooks make a request while the request is active press stop a bunch of errors are printed
It seems not wise at all to maintain my own *chatcontroller. I'd love to look into how do I ensure I reuse the most of Inline Chat Controller later.
Is the generate cell feature just with using ctrl+i from within a cell body? Not sure how I can trigger it.

this._widget?.inlineChatWidget.updateInfo(''); this._widget?.inlineChatWidget.updateToolbar(true); <del> this._activeSession.addExchange(new SessionExchange(this._activeSession.lastInput, response)); </del> <ins> this._activeSession?.addExchange(new SessionExchange(this._activeSession.lastInput, response)); </ins> this._ctxLastResponseType.set(response instanceof ReplyResponse ? response.raw.type : undefined); }


Question:
use generate cell in notebooks make a request while the request is active press stop a bunch of errors are printed
It seems not wise at all to maintain my own *chatcontroller. I'd love to look into how do I ensure I reuse the most of Inline Chat Controller later.
Is the generate cell feature just with using ctrl+i from within a cell body? Not sure how I can trigger it.

this._strategy?.cancel(); } <del> if (this._activeSession) { this._inlineChatSessionService.releaseSession(this._activeSession); } this._activeSession = undefined; </del> <ins> this._activeRequestCts?.cancel(); </ins> } discard() { this._strategy?.cancel(); <ins> this._activeRequestCts?.cancel(); </ins> this._widget?.discardChange(); this.dismiss(); }


Question: This only applies in a multi-root workspace. With just 1 view: ! With N views: ! I think we should use the workspace label here. to you recall why this code is there:

const titleElement = container.querySelector('.title') as HTMLElement; const setHeader = () => { <del> const workspace = this.contextService.getWorkspace(); const title = workspace.folders.map(folder => folder.name).join(); </del> titleElement.textContent = this.name; <del> this.updateTitle(title); </del> <ins> this.updateTitle(this.name); </ins> this.ariaHeaderLabel = nls.localize('explorerSection', "Explorer Section: {0}", this.name); titleElement.setAttribute('aria-label', this.ariaHeaderLabel); };


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: 1.86.2 OS Version: Windows 10 / macOS Sonoma Steps to Reproduce: at least three windows the command least one of the windows will show a strange close icon, instead of the regular one, like the image below ! I reproduced the same error on Windows, and it also presented a strange icon, but it was a different one. A small vertical rectangle, like that missing unicode chars. I tested the on Insiders release, at least on MacOS, and didn't notice the error. I didn't have the opportunity to test in Insiders on Windows yet. I'll update the issue later with more details. Thank you
are you using a product icon extension?
Nevermind, a regression from , fyi
Hi , Glad to know you could find the fix. Let me know if you need me to verify it when released. Thank you
<!-- 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!
/verified

.monaco-workbench .interactive-input-part .monaco-action-bar .action-label.codicon-loading.codicon-modifier-spin:not(.disabled)::before, .monaco-workbench .inline-chat .monaco-action-bar .action-label.codicon-loading.codicon-modifier-spin:not(.disabled)::before { content: "ec1c"; <ins> font-family: 'codicon'; </ins> } /*


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: 1.86.2 OS Version: Windows 10 / macOS Sonoma Steps to Reproduce: at least three windows the command least one of the windows will show a strange close icon, instead of the regular one, like the image below ! I reproduced the same error on Windows, and it also presented a strange icon, but it was a different one. A small vertical rectangle, like that missing unicode chars. I tested the on Insiders release, at least on MacOS, and didn't notice the error. I didn't have the opportunity to test in Insiders on Windows yet. I'll update the issue later with more details. Thank you
are you using a product icon extension?
Nevermind, a regression from , fyi
Hi , Glad to know you could find the fix. Let me know if you need me to verify it when released. Thank you
<!-- 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!
/verified

.monaco-workbench.reduce-motion .interactive-input-part .monaco-action-bar .action-label.codicon-loading.codicon-modifier-spin:not(.disabled)::before, .monaco-workbench.reduce-motion .inline-chat .monaco-action-bar .action-label.codicon-loading.codicon-modifier-spin:not(.disabled)::before { content: "ead7"; <ins> font-family: 'codicon'; </ins> }


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: 1.86.2 OS Version: Windows 10 / macOS Sonoma Steps to Reproduce: at least three windows the command least one of the windows will show a strange close icon, instead of the regular one, like the image below ! I reproduced the same error on Windows, and it also presented a strange icon, but it was a different one. A small vertical rectangle, like that missing unicode chars. I tested the on Insiders release, at least on MacOS, and didn't notice the error. I didn't have the opportunity to test in Insiders on Windows yet. I'll update the issue later with more details. Thank you
are you using a product icon extension?
Nevermind, a regression from , fyi
Hi , Glad to know you could find the fix. Let me know if you need me to verify it when released. Thank you
<!-- 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!
/verified

.quick-input-list .quick-input-list-entry.has-actions:hover .quick-input-list-entry-action-bar .action-label.dirty-anything::before { content: "ea76"; /* Close icon flips between black dot and "X" for dirty open editors */ <ins> font-family: 'codicon'; </ins> }


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: 1.86.2 OS Version: Windows 10 / macOS Sonoma Steps to Reproduce: at least three windows the command least one of the windows will show a strange close icon, instead of the regular one, like the image below ! I reproduced the same error on Windows, and it also presented a strange icon, but it was a different one. A small vertical rectangle, like that missing unicode chars. I tested the on Insiders release, at least on MacOS, and didn't notice the error. I didn't have the opportunity to test in Insiders on Windows yet. I'll update the issue later with more details. Thank you
are you using a product icon extension?
Nevermind, a regression from , fyi
Hi , Glad to know you could find the fix. Let me know if you need me to verify it when released. Thank you
<!-- 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!
/verified

}; private readonly closeDirtyWindowAction: IQuickInputButton = { <del> iconClass: 'dirty-window ' + Codicon.closeDirty, </del> <ins> iconClass: 'dirty-window ' + ThemeIcon.asClassName(Codicon.closeDirty), </ins> tooltip: localize('close', "Close Window"), alwaysVisible: true };


Question:
To be able to reach to the files presented in a multi diff text editor the tab model should provide a corresponding TabInput (see ) May be a good idea would be to have a general composite tab input. For the multi diff text editor the elements could then be
When you listen for tab changes the input of the tab is currently .
Not sure if this is or
Related:
Thanks!
Reopening to get API approval. I'm also not sure we will be able to expose the resources in multi diff This will probably complicate your use case. pointed out that the resources can change without changing the input and this is not something any of other inputs do making supporting showing the resources for this input quite difficult.
Can you verify? To verify please ensure that you see a type now for the multi diff text editor and it properly reacts to resource changes

*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> import { DisposableStore } from 'vs/base/common/lifecycle'; import { ExtHostContext, IExtHostEditorTabsShape, MainContext, IEditorTabDto, IEditorTabGroupDto, MainThreadEditorTabsShape, AnyInputDto, TabInputKind, TabModelOperationKind, TextDiffInputDto } from 'vs/workbench/api/common/extHost.protocol'; import { extHostNamedCustomer, IExtHostContext } from 'vs/workbench/services/extensions/common/extHostCustomers'; </del> <ins> import { Event } from 'vs/base/common/event'; import { DisposableMap, DisposableStore } from 'vs/base/common/lifecycle'; import { isEqual } from 'vs/base/common/resources'; import { URI } from 'vs/base/common/uri'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ILogService } from 'vs/platform/log/common/log'; import { AnyInputDto, ExtHostContext, IEditorTabDto, IEditorTabGroupDto, IExtHostEditorTabsShape, MainContext, MainThreadEditorTabsShape, TabInputKind, TabModelOperationKind, TextDiffInputDto } from 'vs/workbench/api/common/extHost.protocol'; </ins> import { EditorResourceAccessor, GroupModelChangeKind, SideBySideEditor } from 'vs/workbench/common/editor'; import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; <ins> import { isGroupEditorMoveEvent } from 'vs/workbench/common/editor/editorGroupModel'; </ins> import { EditorInput } from 'vs/workbench/common/editor/editorInput'; <del> import { columnToEditorGroup, EditorGroupColumn, editorGroupToColumn } from 'vs/workbench/services/editor/common/editorGroupColumn'; import { GroupDirection, IEditorGroup, IEditorGroupsService, preferredSideBySideGroupDirection } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IEditorsChangeEvent, IEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService'; </del> <ins> import { SideBySideEditorInput } from 'vs/workbench/common/editor/sideBySideEditorInput'; </ins> import { AbstractTextResourceEditorInput } from 'vs/workbench/common/editor/textResourceEditorInput'; <del> import { NotebookEditorInput } from 'vs/workbench/contrib/notebook/common/notebookEditorInput'; </del> <ins> import { ChatEditorInput } from 'vs/workbench/contrib/chat/browser/chatEditorInput'; </ins> import { CustomEditorInput } from 'vs/workbench/contrib/customEditor/browser/customEditorInput'; <del> import { URI } from 'vs/base/common/uri'; import { WebviewInput } from 'vs/workbench/contrib/webviewPanel/browser/webviewEditorInput'; import { TerminalEditorInput } from 'vs/workbench/contrib/terminal/browser/terminalEditorInput'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { SideBySideEditorInput } from 'vs/workbench/common/editor/sideBySideEditorInput'; import { isEqual } from 'vs/base/common/resources'; import { isGroupEditorMoveEvent } from 'vs/workbench/common/editor/editorGroupModel'; </del> import { InteractiveEditorInput } from 'vs/workbench/contrib/interactive/browser/interactiveEditorInput'; import { MergeEditorInput } from 'vs/workbench/contrib/mergeEditor/browser/mergeEditorInput'; <del> import { ILogService } from 'vs/platform/log/common/log'; import { ChatEditorInput } from 'vs/workbench/contrib/chat/browser/chatEditorInput'; </del> import { MultiDiffEditorInput } from 'vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditorInput'; <ins> import { NotebookEditorInput } from 'vs/workbench/contrib/notebook/common/notebookEditorInput'; import { TerminalEditorInput } from 'vs/workbench/contrib/terminal/browser/terminalEditorInput'; import { WebviewInput } from 'vs/workbench/contrib/webviewPanel/browser/webviewEditorInput'; import { columnToEditorGroup, EditorGroupColumn, editorGroupToColumn } from 'vs/workbench/services/editor/common/editorGroupColumn'; import { GroupDirection, IEditorGroup, IEditorGroupsService, preferredSideBySideGroupDirection } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IEditorsChangeEvent, IEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService'; import { extHostNamedCustomer, IExtHostContext } from 'vs/workbench/services/extensions/common/extHostCustomers'; </ins> interface TabInfo { tab: IEditorTabDto;


Question:
To be able to reach to the files presented in a multi diff text editor the tab model should provide a corresponding TabInput (see ) May be a good idea would be to have a general composite tab input. For the multi diff text editor the elements could then be
When you listen for tab changes the input of the tab is currently .
Not sure if this is or
Related:
Thanks!
Reopening to get API approval. I'm also not sure we will be able to expose the resources in multi diff This will probably complicate your use case. pointed out that the resources can change without changing the input and this is not something any of other inputs do making supporting showing the resources for this input quite difficult.
Can you verify? To verify please ensure that you see a type now for the multi diff text editor and it properly reacts to resource changes

private readonly _groupLookup: Map<number, IEditorTabGroupDto> = new Map(); // Lookup table for finding tab by id private readonly _tabInfoLookup: Map<string, TabInfo> = new Map(); <ins> // Tracks the currently open MultiDiffEditorInputs to listen to resource changes private readonly _multiDiffEditorInputListeners: DisposableMap<MultiDiffEditorInput> = new DisposableMap(); </ins> constructor( extHostContext: IExtHostContext,


Question:
To be able to reach to the files presented in a multi diff text editor the tab model should provide a corresponding TabInput (see ) May be a good idea would be to have a general composite tab input. For the multi diff text editor the elements could then be
When you listen for tab changes the input of the tab is currently .
Not sure if this is or
Related:
Thanks!
Reopening to get API approval. I'm also not sure we will be able to expose the resources in multi diff This will probably complicate your use case. pointed out that the resources can change without changing the input and this is not something any of other inputs do making supporting showing the resources for this input quite difficult.
Can you verify? To verify please ensure that you see a type now for the multi diff text editor and it properly reacts to resource changes

} })); <ins> this._dispoables.add(this._multiDiffEditorInputListeners); </ins> // Structural group changes (add, remove, move, etc) are difficult to patch. // Since they happen infrequently we just rebuild the entire model this._dispoables.add(this._editorGroupsService.onDidAddGroup(() => this._createTabsModel()));


Question:
To be able to reach to the files presented in a multi diff text editor the tab model should provide a corresponding TabInput (see ) May be a good idea would be to have a general composite tab input. For the multi diff text editor the elements could then be
When you listen for tab changes the input of the tab is currently .
Not sure if this is or
Related:
Thanks!
Reopening to get API approval. I'm also not sure we will be able to expose the resources in multi diff This will probably complicate your use case. pointed out that the resources can change without changing the input and this is not something any of other inputs do making supporting showing the resources for this input quite difficult.
Can you verify? To verify please ensure that you see a type now for the multi diff text editor and it properly reacts to resource changes

if (editor instanceof MultiDiffEditorInput) { const diffEditors: TextDiffInputDto[] = []; <del> for (const resource of (editor?.initialResources ?? [])) { </del> <ins> for (const resource of (editor?.resources.get() ?? [])) { </ins> if (resource.original && resource.modified) { diffEditors.push({ kind: TabInputKind.TextDiffInput,


Question:
To be able to reach to the files presented in a multi diff text editor the tab model should provide a corresponding TabInput (see ) May be a good idea would be to have a general composite tab input. For the multi diff text editor the elements could then be
When you listen for tab changes the input of the tab is currently .
Not sure if this is or
Related:
Thanks!
Reopening to get API approval. I'm also not sure we will be able to expose the resources in multi diff This will probably complicate your use case. pointed out that the resources can change without changing the input and this is not something any of other inputs do making supporting showing the resources for this input quite difficult.
Can you verify? To verify please ensure that you see a type now for the multi diff text editor and it properly reacts to resource changes

const tabObject = this._buildTabObject(group, editorInput, editorIndex); tabs.splice(editorIndex, 0, tabObject); // Update lookup <del> this._tabInfoLookup.set(this._generateTabId(editorInput, groupId), { group, editorInput, tab: tabObject }); </del> <ins> const tabId = this._generateTabId(editorInput, groupId); this._tabInfoLookup.set(tabId, { group, editorInput, tab: tabObject }); if (editorInput instanceof MultiDiffEditorInput) { this._multiDiffEditorInputListeners.set(editorInput, Event.fromObservableLight(editorInput.resources)(() => { const tabInfo = this._tabInfoLookup.get(tabId); if (!tabInfo) { return; } tabInfo.tab = this._buildTabObject(group, editorInput, editorIndex); this._proxy.$acceptTabOperation({ groupId, index: editorIndex, tabDto: tabInfo.tab, kind: TabModelOperationKind.TAB_UPDATE }); })); } </ins> this._proxy.$acceptTabOperation({ groupId,


Question:
To be able to reach to the files presented in a multi diff text editor the tab model should provide a corresponding TabInput (see ) May be a good idea would be to have a general composite tab input. For the multi diff text editor the elements could then be
When you listen for tab changes the input of the tab is currently .
Not sure if this is or
Related:
Thanks!
Reopening to get API approval. I'm also not sure we will be able to expose the resources in multi diff This will probably complicate your use case. pointed out that the resources can change without changing the input and this is not something any of other inputs do making supporting showing the resources for this input quite difficult.
Can you verify? To verify please ensure that you see a type now for the multi diff text editor and it properly reacts to resource changes

// Update lookup this._tabInfoLookup.delete(removedTab[0]?.id ?? ''); <ins> if (removedTab[0]?.input instanceof MultiDiffEditorInput) { this._multiDiffEditorInputListeners.deleteAndDispose(removedTab[0]?.input); } </ins> this._proxy.$acceptTabOperation({ groupId, index: editorIndex,


Question:
To be able to reach to the files presented in a multi diff text editor the tab model should provide a corresponding TabInput (see ) May be a good idea would be to have a general composite tab input. For the multi diff text editor the elements could then be
When you listen for tab changes the input of the tab is currently .
Not sure if this is or
Related:
Thanks!
Reopening to get API approval. I'm also not sure we will be able to expose the resources in multi diff This will probably complicate your use case. pointed out that the resources can change without changing the input and this is not something any of other inputs do making supporting showing the resources for this input quite difficult.
Can you verify? To verify please ensure that you see a type now for the multi diff text editor and it properly reacts to resource changes

this._register(autorun((reader) => { /** @description Updates name */ <del> const resources = this._resources.read(reader); </del> <ins> const resources = this.resources.read(reader); </ins> const label = this.label ?? localize('name', "Multi Diff Editor"); if (resources) { this._name = label + localize({


Question:
To be able to reach to the files presented in a multi diff text editor the tab model should provide a corresponding TabInput (see ) May be a good idea would be to have a general composite tab input. For the multi diff text editor the elements could then be
When you listen for tab changes the input of the tab is currently .
Not sure if this is or
Related:
Thanks!
Reopening to get API approval. I'm also not sure we will be able to expose the resources in multi diff This will probably complicate your use case. pointed out that the resources can change without changing the input and this is not something any of other inputs do making supporting showing the resources for this input quite difficult.
Can you verify? To verify please ensure that you see a type now for the multi diff text editor and it properly reacts to resource changes

return false; } <del> private readonly _resources = derived(this, reader => this._resolvedSource.cachedPromiseResult.read(reader)?.data?.resources.read(reader)); private readonly _isDirtyObservables = mapObservableArrayCached(this, this._resources.map(r => r ?? []), res => { </del> <ins> public readonly resources = derived(this, reader => this._resolvedSource.cachedPromiseResult.read(reader)?.data?.resources.read(reader)); private readonly _isDirtyObservables = mapObservableArrayCached(this, this.resources.map(r => r ?? []), res => { </ins> const isModifiedDirty = res.modified ? isUriDirty(this._textFileService, res.modified) : constObservable(false); const isOriginalDirty = res.original ? isUriDirty(this._textFileService, res.original) : constObservable(false); return derived(reader => /** @description modifiedDirty||originalDirty */ isModifiedDirty.read(reader) || isOriginalDirty.read(reader));


Question: This error appears in the insiders dev tools all the time (FYI Cannot read properties of undefined (reading 'includes'): TypeError: Cannot read properties of undefined (reading 'includes') at at at at at at at at at at at

}, 500, false, true)(async (markerEvent) => { markerChanged?.dispose(); markerChanged = undefined; <del> if (!markerEvent.includes(modelEvent.uri) || (this.markerService.read({ resource: modelEvent.uri }).length !== 0)) { </del> <ins> if (!markerEvent || !markerEvent.includes(modelEvent.uri) || (this.markerService.read({ resource: modelEvent.uri }).length !== 0)) { </ins> return; } const oldLines = Array.from(this.lines);


Question: Type: <bBug</bIn the below image, clicking the link Learn More brings you to However, that section (id) does not exist on The link is most likely supposed to go to ! VS Code version: Code 1.87.2 (, 2024-03-08T15:20:17.278Z) OS version: WindowsNT x64 10.0. Modes: Remote OS version: Linux x64 5.4.0-173-generic <details<summarySystem Info</summary </details<details<summaryExtensions (32)</summaryExtensionVersion ------ yang0.1.3 jupyter-keymap1.1.2 remote-containers0.348.0 remote-ssh0.109.0 remote-ssh-edit0.86.0 remote-wsl0.86.0 vscode-remote-extensionpack0.25.0 remote-explorer0.4.3 remote-server1.5.1 vscode-openapi4.25.1 vscode-fish1.0.38 ruff2024.16.0 vale-vscode0.18.5 vscode-markdownlint0.54.0 gitlens14.9.0 prettier-vscode10.1.0 code-runner0.12.1 go0.41.1 restructuredtext189.3.0 direnv0.17.0 vscode-azureresourcegroups0.8.4 vscode-cosmosdb0.20.1 vscode-docker1.29.0 vscode-kubernetes-tools1.3.15 python2024.2.1 azure-account0.11.6 vscode-yaml1.14.0 code-spell-checker3.0.1 even-better-toml0.19.2 shellcheck0.37.0 simple-rst1.5.4 vscode-proto30.5.5 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --

if (this.extensionManagementServerService.localExtensionManagementServer === this.extension.server) { if (this.extensionManifestPropertiesService.prefersExecuteOnWorkspace(this.extension.local.manifest)) { if (this.extensionManagementServerService.remoteExtensionManagementServer) { <del> message = new MarkdownString(`${localize('Install in remote server to enable', "This extension is disabled in this workspace because it is defined to run in the Remote Extension Host. Please install the extension in '{0}' to enable.", this.extensionManagementServerService.remoteExtensionManagementServer.label)} [${localize('learn more', "Learn More")}](https://aka.ms/vscode-remote/developing-extensions/architecture)`); </del> <ins> message = new MarkdownString(`${localize('Install in remote server to enable', "This extension is disabled in this workspace because it is defined to run in the Remote Extension Host. Please install the extension in '{0}' to enable.", this.extensionManagementServerService.remoteExtensionManagementServer.label)} [${localize('learn more', "Learn More")}](https://code.visualstudio.com/api/advanced-topics/remote-extensions#architecture-and-extension-kinds)`); </ins> } } }


Question: Type: <bBug</bIn the below image, clicking the link Learn More brings you to However, that section (id) does not exist on The link is most likely supposed to go to ! VS Code version: Code 1.87.2 (, 2024-03-08T15:20:17.278Z) OS version: WindowsNT x64 10.0. Modes: Remote OS version: Linux x64 5.4.0-173-generic <details<summarySystem Info</summary </details<details<summaryExtensions (32)</summaryExtensionVersion ------ yang0.1.3 jupyter-keymap1.1.2 remote-containers0.348.0 remote-ssh0.109.0 remote-ssh-edit0.86.0 remote-wsl0.86.0 vscode-remote-extensionpack0.25.0 remote-explorer0.4.3 remote-server1.5.1 vscode-openapi4.25.1 vscode-fish1.0.38 ruff2024.16.0 vale-vscode0.18.5 vscode-markdownlint0.54.0 gitlens14.9.0 prettier-vscode10.1.0 code-runner0.12.1 go0.41.1 restructuredtext189.3.0 direnv0.17.0 vscode-azureresourcegroups0.8.4 vscode-cosmosdb0.20.1 vscode-docker1.29.0 vscode-kubernetes-tools1.3.15 python2024.2.1 azure-account0.11.6 vscode-yaml1.14.0 code-spell-checker3.0.1 even-better-toml0.19.2 shellcheck0.37.0 simple-rst1.5.4 vscode-proto30.5.5 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --

else if (this.extensionManagementServerService.remoteExtensionManagementServer === this.extension.server) { if (this.extensionManifestPropertiesService.prefersExecuteOnUI(this.extension.local.manifest)) { if (this.extensionManagementServerService.localExtensionManagementServer) { <del> message = new MarkdownString(`${localize('Install in local server to enable', "This extension is disabled in this workspace because it is defined to run in the Local Extension Host. Please install the extension locally to enable.", this.extensionManagementServerService.remoteExtensionManagementServer.label)} [${localize('learn more', "Learn More")}](https://aka.ms/vscode-remote/developing-extensions/architecture)`); </del> <ins> message = new MarkdownString(`${localize('Install in local server to enable', "This extension is disabled in this workspace because it is defined to run in the Local Extension Host. Please install the extension locally to enable.", this.extensionManagementServerService.remoteExtensionManagementServer.label)} [${localize('learn more', "Learn More")}](https://code.visualstudio.com/api/advanced-topics/remote-extensions#architecture-and-extension-kinds)`); </ins> } else if (isWeb) { <del> message = new MarkdownString(`${localize('Defined to run in desktop', "This extension is disabled because it is defined to run only in {0} for the Desktop.", this.productService.nameLong)} [${localize('learn more', "Learn More")}](https://aka.ms/vscode-remote/developing-extensions/architecture)`); </del> <ins> message = new MarkdownString(`${localize('Defined to run in desktop', "This extension is disabled because it is defined to run only in {0} for the Desktop.", this.productService.nameLong)} [${localize('learn more', "Learn More")}](https://code.visualstudio.com/api/advanced-topics/remote-extensions#architecture-and-extension-kinds)`); </ins> } } } // Extension on Web Server else if (this.extensionManagementServerService.webExtensionManagementServer === this.extension.server) { <del> message = new MarkdownString(`${localize('Cannot be enabled', "This extension is disabled because it is not supported in {0} for the Web.", this.productService.nameLong)} [${localize('learn more', "Learn More")}](https://aka.ms/vscode-remote/developing-extensions/architecture)`); </del> <ins> message = new MarkdownString(`${localize('Cannot be enabled', "This extension is disabled because it is not supported in {0} for the Web.", this.productService.nameLong)} [${localize('learn more', "Learn More")}](https://code.visualstudio.com/api/advanced-topics/remote-extensions#architecture-and-extension-kinds)`); </ins> } if (message) { this.updateStatus({ icon: warningIcon, message }, true);