Change:
Pre-req: Settings Sync on brand new empty profile a theme Settings sync asks this strange question: ! Additionally: this dialog Theme is still applied but not installed
I tried and can't repro. Are there any specific steps you followed?
were there specific steps to repro this?
I can verify that cancelling the dialog no longer leaves the theme applied, thanks I can still reproduce the main issue though. Why would I not want to synchronize the theme I just picked for my brand new profile, given the profile is being synced?
I think is using the general extension install command that will ask user to sync or not before installing. If it is in core, one can use the API directly to install.
I think we still want an install confirmation dialog, but I agree that there should be no question about syncing.

Discussion:
import { CommandsRegistry } from 'vs/platform/commands/common/commands'; import { FileIconThemeData } from 'vs/workbench/services/themes/browser/fileIconThemeData'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; <ins> import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; </ins> export const manageExtensionIcon = registerIcon('theme-selection-manage-extension', Codicon.gear, localize('manageExtensionIcon', 'Icon for the 'Manage' action in the theme selection quick pick.'));

@IQuickInputService private readonly quickInputService: IQuickInputService, @ILogService private readonly logService: ILogService, @IProgressService private readonly progressService: IProgressService, <del> @IPaneCompositePartService private readonly paneCompositeService: IPaneCompositePartService </del> <ins> @IPaneCompositePartService private readonly paneCompositeService: IPaneCompositePartService, @IDialogService private readonly dialogService: IDialogService </ins> ) { this._installedExtensions = extensionManagementService.getInstalled().then(installed => { const result = new Set<string>();

} private async installExtension(galleryExtension: IGalleryExtension) { <ins> openExtensionViewlet(this.paneCompositeService, `@id:${galleryExtension.identifier.id}`); const result = await this.dialogService.confirm({ message: localize('installExtension.confirm', "This will install extension '{0}' published by '{1}'. Do you want to continue?", galleryExtension.displayName, galleryExtension.publisherDisplayName), primaryButton: localize('installExtension.button.ok', "OK"), secondaryButton: localize('installExtension.button.cancel', "Cancel") }); if (!result.confirmed) { return false; } </ins> try { <del> openExtensionViewlet(this.paneCompositeService, `@id:${galleryExtension.identifier.id}`); </del> await this.progressService.withProgress({ location: ProgressLocation.Notification, title: localize('installing extensions', "Installing Extension {0}...", galleryExtension.displayName) }, async () => { <del> await this.extensionManagementService.installFromGallery(galleryExtension); </del> <ins> await this.extensionManagementService.installFromGallery(galleryExtension, { // Setting this to false is how you get the extension to be synced with Settings Sync (if enabled). isMachineScoped: false, }); </ins> }); return true; } catch (e) {