From 23618953ea31c9d03230d76b368c7c2b90bf7538 Mon Sep 17 00:00:00 2001 From: Kevin Date: Wed, 7 Jan 2026 20:54:42 -0800 Subject: [PATCH] fix: clears invalid preferredEditor instead of spamming the user with an error message Closes #16091 --- .../components/EditorSettingsDialog.test.tsx | 32 +++++++++++++++++++ .../ui/components/EditorSettingsDialog.tsx | 1 + 2 files changed, 33 insertions(+) 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 6886d43319a..8876bc2eb5f 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; }