diff --git a/build/dsh-desktop.patch.yml b/build/dsh-desktop.patch.yml index 34c24083..b3af2e59 100644 --- a/build/dsh-desktop.patch.yml +++ b/build/dsh-desktop.patch.yml @@ -1,13 +1,8 @@ -# DSH Desktop delegates directory selection to Electron's system dialog. Keep -# the renderless client surface, but do not load the Koffi-based Host worker: -# on Windows it can exit before reporting a result inside packaged Electron. -- id: directory-picker - disabled: true - +# Keep the stock directory-picker (auto) row active: the native backend +# serves ctx.directoryPicker, so host-side consumers (host.pickDirectory, +# plugins reading the seam) work unmodified. The client surface keeps its +# Electron-dialog bridge via the client-ui patch in patches/. - insert: - - id: directory-picker-electron-desktop-surface - name: '@deepseek-ai/dsh-client-ui-directory-picker-native' - # DSH Desktop owns the fixed-target dsh-market installer and its lightweight # settings entry. After dshmarket is installed and Harness restarts, the # community plugin replaces the placeholder with its complete market UI. diff --git a/test/directory-picker.test.ts b/test/directory-picker.test.ts index a545f5c4..e4b1075e 100644 --- a/test/directory-picker.test.ts +++ b/test/directory-picker.test.ts @@ -26,11 +26,12 @@ describe('desktop Electron directory picker', () => { ) }) - it('keeps only the client surface and removes the crashing Host worker', async () => { + it('keeps the stock picker composition: the seam comes from the stock auto row', async () => { const desktopPatch = await readFile('build/dsh-desktop.patch.yml', 'utf8') - expect(desktopPatch).toContain("name: '@deepseek-ai/dsh-client-ui-directory-picker-native'") - expect(desktopPatch).not.toContain("name: '@deepseek-ai/dsh-host-directory-picker-native'") + // No picker rows at all - the stock auto row mounts the native backend. + expect(desktopPatch).not.toMatch(/id:\s*directory-picker/) + expect(desktopPatch).not.toContain('dsh-client-ui-directory-picker-native') }) it('captures the client bridge as a reproducible dependency patch', async () => { diff --git a/test/release.test.ts b/test/release.test.ts index feb37b80..8e8a4e0a 100644 --- a/test/release.test.ts +++ b/test/release.test.ts @@ -114,9 +114,9 @@ describe('GitHub release contract', () => { expect(splash).toContain('Starting DSH Desktop') expect(splash).toContain('src="dsh-loader.gif"') expect(splash).not.toContain('class="track"') - expect(patch).toMatch(/id: directory-picker\r?\n disabled: true/) + expect(patch).not.toMatch(/id:\s*directory-picker/) expect(patch).not.toContain("name: '@deepseek-ai/dsh-host-directory-picker-native'") - expect(patch).toContain("name: '@deepseek-ai/dsh-client-ui-directory-picker-native'") + expect(patch).not.toContain("name: '@deepseek-ai/dsh-client-ui-directory-picker-native'") }) it('routes manual restarts through the active plugin recovery flow', async () => {