diff --git a/packages/cli/src/ui/components/EditorSettingsDialog.test.tsx b/packages/cli/src/ui/components/EditorSettingsDialog.test.tsx index ac5a16580bb..53a21792a12 100644 --- a/packages/cli/src/ui/components/EditorSettingsDialog.test.tsx +++ b/packages/cli/src/ui/components/EditorSettingsDialog.test.tsx @@ -174,4 +174,36 @@ describe('EditorSettingsDialog', () => { } expect(frame).toContain('(Also modified'); }); + + it('clears user scoped preferredEditor when invalid editor is provided', async () => { + const settingsWithInvalidEditor = { + forScope: (_scope: string) => ({ + settings: { + general: { + preferredEditor: 'invalid-editor', + }, + }, + }), + merged: { + general: { + preferredEditor: null, + }, + }, + } as unknown as LoadedSettings; + + const onSelect = vi.fn(); + const { lastFrame } = renderWithProvider( + , + ); + + expect(lastFrame()).toContain('Your preferred editor is: None'); + + await waitFor(() => { + expect(onSelect).toHaveBeenCalledExactlyOnceWith(undefined, 'User'); + }); + }); }); diff --git a/packages/cli/src/ui/components/EditorSettingsDialog.tsx b/packages/cli/src/ui/components/EditorSettingsDialog.tsx index 671d3067cf5..4c8d32a35fd 100644 --- a/packages/cli/src/ui/components/EditorSettingsDialog.tsx +++ b/packages/cli/src/ui/components/EditorSettingsDialog.tsx @@ -73,6 +73,7 @@ export function EditorSettingsDialog({ 'error', `Editor is not supported: ${currentPreference}`, ); + onSelect(undefined, selectedScope); editorIndex = 0; }