You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pnpm package:desktop:win:x64:unsigned fails on Windows at the prepare:dsh stage. apps/desktop/tests/fixtures/runtime-payload-smoke.mjs (checkFsExt) requires fs-ext, but no package in the current dependency tree depends on it anymore.
Environment
OS: Windows 11 (10.0.26200)
Node: v24.19.0 (system; the bundled runtime is used for the smoke itself)
The prepare:runtime and prepare:packages stages complete; the failure is inside prepare:dsh before the Host smoke and descriptor verification.
Root cause
c58097a826 (Aug 31) added "fs-ext": "2.1.1" to packages/session/session-persistence-jsonl/package.json for the cross-process write-ownership lease.
d927cbff99 (Sep 7, feat(native): add prebuilt Node-API flock support) removed fs-ext and replaced it with @deepseek-ai/node-addon-system/flock.
fc7abdcfb5 (Sep 9, 优化 windows 安装包打包) added the payload smoke test whose checkFsExt() still requires fs-ext — referencing the already-removed dependency, and running on Windows where the replacement cannot apply: @deepseek-ai/node-addon-system ships platform packages only for darwin/linux (native/system/packages/); Windows keeps its koffi-based locking.
No CI workflow exercises the desktop packaging path, so this never surfaced.
Suggested fix
Make checkFsExt() skip when fs-ext cannot be resolved (POSIX keeps the existing seek assertions), or replace the check with @deepseek-ai/node-addon-system on POSIX plus the existing koffi check on Windows.
Notes
Local workaround: wrap the require in try/catch and skip on absence — packaging then completes on Windows.
Two further requirements we hit while packaging Windows locally, possibly worth documenting:
The system tar must resolve to C:\Windows\System32\tar.exe. From a Git-Bash-launched environment, tar resolves to Git's GNU tar, which mangles Windows paths (D:\... arrives as D\:\\...), and the release:pack verification (tar -tzf) fails with gzip: stdin: unexpected end of file.
DSH_DESKTOP_APP_ID must be exported even for --unsigned builds (reverse-DNS form).
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Summary
pnpm package:desktop:win:x64:unsignedfails on Windows at theprepare:dshstage.apps/desktop/tests/fixtures/runtime-payload-smoke.mjs(checkFsExt) requiresfs-ext, but no package in the current dependency tree depends on it anymore.Environment
c291e7961a(master, version 0.1.5-rc.2)pnpm package:desktop:win:x64:unsignedError
The
prepare:runtimeandprepare:packagesstages complete; the failure is insideprepare:dshbefore the Host smoke and descriptor verification.Root cause
c58097a826(Aug 31) added"fs-ext": "2.1.1"topackages/session/session-persistence-jsonl/package.jsonfor the cross-process write-ownership lease.d927cbff99(Sep 7, feat(native): add prebuilt Node-API flock support) removedfs-extand replaced it with@deepseek-ai/node-addon-system/flock.fc7abdcfb5(Sep 9, 优化 windows 安装包打包) added the payload smoke test whosecheckFsExt()still requiresfs-ext— referencing the already-removed dependency, and running on Windows where the replacement cannot apply:@deepseek-ai/node-addon-systemships platform packages only for darwin/linux (native/system/packages/); Windows keeps its koffi-based locking.Suggested fix
Make
checkFsExt()skip whenfs-extcannot be resolved (POSIX keeps the existing seek assertions), or replace the check with@deepseek-ai/node-addon-systemon POSIX plus the existing koffi check on Windows.Notes
Local workaround: wrap the
requirein try/catch and skip on absence — packaging then completes on Windows.Two further requirements we hit while packaging Windows locally, possibly worth documenting:
tarmust resolve toC:\Windows\System32\tar.exe. From a Git-Bash-launched environment,tarresolves to Git's GNU tar, which mangles Windows paths (D:\...arrives asD\:\\...), and therelease:packverification (tar -tzf) fails withgzip: stdin: unexpected end of file.DSH_DESKTOP_APP_IDmust be exported even for--unsignedbuilds (reverse-DNS form).All reactions