[Desktop 0.1.7-rc.2] File card "Show file location" is a silent no-op — root cause: windowsHide:true hides Explorer's window #7982
jk3320-ethan
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
On DSH Desktop 0.1.7-rc.2, a delivered-file card's "Show file location" (显示文件位置) appears to do nothing: no Explorer window, no error, no toast. The same action works on the 0.1.5-rc.3 web engine on the same machine.
I traced it to a single process-creation flag and reproduced it with a controlled A/B test (below).
Root cause
runNativeCommandin@deepseek-ai/dsh-native-commandcreates the child process withwindowsHide: true:runExplorer(the/select,/ open-via-shell path) goes through that same runner, and it correctly tolerates Explorer's delegated-handoff exit code 1:So: the child is created hidden, the hand-off exits 1 (which the code treats as success), the route returns 204, and the user sees nothing at all. The failure is completely silent from both the UI and any log.
Controlled A/B (same machine, same process tree, only the flag differs)
Script: spawn
explorer.exe /select,<file>with NodeexecFile; detect the window viaGet-Process explorer | MainWindowTitle.windowsHide: true(what DSH does today)err=1err=1Both runs return exit code 1 — the delegated hand-off code — so the exit code is not the differentiator; the flag is.
Proposed fix
windowsHidefor GUI hand-offs. Forexplorer.exe(and any launcher expected to show a window) omit the option, or make it per-launch: true for console tools, false for GUI launchers.launchDetachedAppforwardswindowsHide: options.windowsHidetospawn, so theshell-open/ editor / Git-GUI launches inherit the same hazard./api/present.openroute returns 204 either way, so users cannot tell a silent failure from success.Environment
dsh web), http://127.0.0.1:3080What was ruled out first
GET/POST /open-in-app/appsand/open-in-app/openreturn 401 without the GUI token while a bogus path returns 404;/api/present.openfrom the page returns 204.Process = Bypass; a.ps1runs fine).explorer.exe "<dir>"from the same session opens a window (verified via the process'sMainWindowTitle).@deepseek-ai/dsh-host-open-in-app's README documents that the catalog is fixed at build time and "the package does not enumerate an unrestricted OS application list" — that line is expected, and the reveal action does not depend on it.Why the web engine works and the desktop engine does not
Not fully explained. Both run the same plugin code, so the likely difference is the parent process context (the desktop host is Electron; the web engine is a console Node process) affecting the
STARTF_USESHOWWINDOW/SW_HIDEsemantics of the child. The A/B above was measured in the desktop process tree, which is where the bug is visible. I did not test the same A/B under the web host, so I am reporting this as an open question rather than a claim.Happy to run any additional probe you specify, or to collect a specific log.
All reactions