From 2142518461874bf9d4842beafaaa9991dcb7b61e Mon Sep 17 00:00:00 2001 From: 777genius Date: Thu, 16 Apr 2026 23:09:15 +0300 Subject: [PATCH] fix(extensions): avoid premature skill import folder defaults --- .../extensions/skills/SkillImportDialog.tsx | 2 +- .../skills/SkillImportDialog.test.ts | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/extensions/skills/SkillImportDialog.tsx b/src/renderer/components/extensions/skills/SkillImportDialog.tsx index 646bc760..c9ac3360 100644 --- a/src/renderer/components/extensions/skills/SkillImportDialog.tsx +++ b/src/renderer/components/extensions/skills/SkillImportDialog.tsx @@ -97,7 +97,7 @@ export const SkillImportDialog = ({ if (!open || folderNameEdited) { return; } - setFolderName(getSuggestedSkillFolderNameFromPath(sourceDir)); + setFolderName(sourceDir.trim() ? getSuggestedSkillFolderNameFromPath(sourceDir) : ''); }, [folderNameEdited, open, sourceDir]); useEffect(() => { diff --git a/test/renderer/components/extensions/skills/SkillImportDialog.test.ts b/test/renderer/components/extensions/skills/SkillImportDialog.test.ts index 367c2fac..38d23c20 100644 --- a/test/renderer/components/extensions/skills/SkillImportDialog.test.ts +++ b/test/renderer/components/extensions/skills/SkillImportDialog.test.ts @@ -120,6 +120,36 @@ describe('SkillImportDialog', () => { vi.unstubAllGlobals(); }); + it('keeps destination folder empty until a source folder is chosen', async () => { + const host = document.createElement('div'); + document.body.appendChild(host); + const root = createRoot(host); + + await act(async () => { + root.render( + React.createElement(SkillImportDialog, { + open: true, + projectPath: null, + projectLabel: null, + onClose: vi.fn(), + onImported: vi.fn(), + }) + ); + await Promise.resolve(); + }); + + const sourceInput = host.querySelector('#skill-import-source') as HTMLInputElement; + const folderInput = host.querySelector('#skill-import-folder') as HTMLInputElement; + + expect(sourceInput.value).toBe(''); + expect(folderInput.value).toBe(''); + + await act(async () => { + root.unmount(); + await Promise.resolve(); + }); + }); + it('keeps destination folder name synced with the chosen source until edited manually', async () => { const host = document.createElement('div'); document.body.appendChild(host);