Code change:
const shell = this._configurationService.getValue(TerminalSettingPrefix.Shell + platform); const shellArgs = this._configurationService.getValue(TerminalSettingPrefix.ShellArgs + platform); const profile = await this._terminalProfileResolverService.createProfileFromShellAndShellArgs(shell, shellArgs); <del> if (profile) { this._configurationService.updateValue(TerminalSettingPrefix.DefaultProfile + platform, profile.profileName); this._configurationService.updateValue(TerminalSettingPrefix.Shell + platform, undefined); this._configurationService.updateValue(TerminalSettingPrefix.ShellArgs + platform, undefined); this._logService.trace(`migrated from shell/shellArgs, ${shell} ${shellArgs} to profile ${JSON.stringify(profile)}`); </del> <ins> if (typeof profile === 'string') { await this._configurationService.updateValue(TerminalSettingPrefix.DefaultProfile + platform, profile); this._logService.trace(`migrated from shell/shellArgs, using existing profile ${profile}`); </ins> } else { <del> this._logService.trace('migration from shell/shellArgs to profile did not occur bc created profile was an exact match for existing one', shell, shellArgs); </del> <ins> const profiles = this._configurationService.inspect<{ [key: string]: ITerminalProfileObject }>(TerminalSettingPrefix.Profiles + platform).userValue || {}; const profileConfig: ITerminalProfileObject = { path: profile.path }; if (profile.args) { profileConfig.args = profile.args; } profiles[profile.profileName] = profileConfig; await this._configurationService.updateValue(TerminalSettingPrefix.Profiles + platform, profiles); await this._configurationService.updateValue(TerminalSettingPrefix.DefaultProfile + platform, profile.profileName); this._logService.trace(`migrated from shell/shellArgs, ${shell} ${shellArgs} to profile ${JSON.stringify(profile)}`); </ins> } <ins> await this._configurationService.updateValue(TerminalSettingPrefix.Shell + platform, undefined); await this._configurationService.updateValue(TerminalSettingPrefix.ShellArgs + platform, undefined); </ins> } } as IPromptChoice, ],

Related discussion:
text: Testing With the following settings: I saw the terminal migration notification and then clicked "Migrate", and my settings changed to: Which is defintely not what I expected to happen.
Perhaps if the shell/shellArgs match one of the detected profiles, the name of that profile can be used? So in the sample above,
I'm also kinda confused by this... here's what I had: and it turned it into:
The behavior should be: If there is an exact match (eg. just ), it should assign the existing profile as the default (). If there is not an exact match (eg. ), it should add the profile to the list and set it as the default. As for the name maybe something like would be best.
To verify, see and try other combinations
or could you pls verify this?
with the following: I don't get a notification. Is that expected?
If you've already said don't show again to the notification in that workspace, yes.
ah... I hit the which didn't show the notification until I reloaded the window.
that was another fix that went in to make sure we're not annoying
Migration doesn't seem to be working for me. Here's a gif: ! These are the same settings as here
Ah looks like if I already define then this migration doesn't work. If I delete that setting (and use instead as the default profile, the migration works.
Meaning if you set the to the name of a profile that already exists within your it doesn't work? I think that's by design.
Gotcha. The only thing I'll mention is this, with a defined does not prompt me: but this without it defined does prompt me:
I guess I would expect the migration to still happen (and a new profile be to my existing ) but maybe that's out of scope.
That seems wrong. It should happen as long as you haven't said don't show again. I'll try it.
ah... just opened dev tools:
it's working for me on Windows.
Hmm what does that mean?
Here's a repro on non-Windows without PowerShell:
any errors in dev tools with that repro? can you turn on trace logging? and search for 'migrat'
Beyond this: I don't see anything... which Output should I dig into specifically?
Run set log level -trace -open developer tools.