Change:
<!-- 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.72.2 OS Version: MacOS Monterey 12.3.1 Steps to Reproduce: any directory or workspace, empty directory in the video below for example. Extensions tab, search "volar", then add first two extensions, and into workspace recommendations. : Every time you try to add one of these two extensions, the newly extension id in is a string start with a upper case like "", and the rest of others will change to all lower case string like "", this makes further "Add to Workspace Recommendations" oprations work incorrectly. https://user- My guessing: The function and returns an array of lowercase strings, however those adding or removing functions only push the raw extensionId to config file, which causes this bug when the raw extensionId has upper case.
I am not sure what the bug is here? Since extension ids are case insensitive, we handle them correctly while reading or writing. Can you please let us know what feature is not working?
Well, a simple description: you can click twice when adding first time it will add "" string and second time "". https://user-
Got it. Thanks for providing info.

Discussion:
} async toggleRecommendation(extensionId: string): Promise<void> { <ins> extensionId = extensionId.toLowerCase(); </ins> const workspace = this.workspaceContextService.getWorkspace(); const workspaceExtensionsConfigContent = workspace.configuration ? await this.resolveWorkspaceExtensionConfig(workspace.configuration) : undefined; const workspaceFolderExtensionsConfigContents = new ResourceMap<IExtensionsConfigContent>();

workspaceFolderExtensionsConfigContents.set(workspaceFolder.uri, extensionsConfigContent); })); <del> const isWorkspaceRecommended = workspaceExtensionsConfigContent && workspaceExtensionsConfigContent.recommendations?.some(r => r === extensionId); const recommendedWorksapceFolders = workspace.folders.filter(workspaceFolder => workspaceFolderExtensionsConfigContents.get(workspaceFolder.uri)?.recommendations?.some(r => r === extensionId)); </del> <ins> const isWorkspaceRecommended = workspaceExtensionsConfigContent && workspaceExtensionsConfigContent.recommendations?.some(r => r.toLowerCase() === extensionId); const recommendedWorksapceFolders = workspace.folders.filter(workspaceFolder => workspaceFolderExtensionsConfigContents.get(workspaceFolder.uri)?.recommendations?.some(r => r.toLowerCase() === extensionId)); </ins> const isRecommended = isWorkspaceRecommended || recommendedWorksapceFolders.length > 0; const workspaceOrFolders = isRecommended