Commit Graph
19483 Commits
Author SHA1 Message Date
winewill 0126d5be20 fix(desktop): load the flock entry lazily and build native/system on demand
`package-target.ts` imported `macos-notarization-proxy.ts`, whose top-level
import of `@deepseek-ai/node-addon-system/flock` resolves through the package
`exports` to the unbuilt `lib/flock.js` on a clean checkout. The step that
emits that file runs inside the same packaging script, so `check:package`,
`package:*`, and the `restore:mac-proxy` recovery command all failed with
`ERR_MODULE_NOT_FOUND` before reaching it; running `pnpm run typecheck` first
left the host addon binary missing instead, which failed at lock time.

The proxy lock now loads the entry at first use through `flock-entry.ts`. When
the import is unresolvable or the host platform package lacks a binary listed
in its `prebuilds.json`, the loader runs `pnpm run build:native-system` and
`pnpm --dir native/system run build:ts` before importing again; other errors
and build failures propagate, and a failed load is retried by the next call.
`check:package` no longer touches the entry at all.

Tests cover the loader steps and load the proxy module from a directory where
the addon package cannot be resolved. The Desktop README records the
behavior in both languages.

(cherry picked from commit 2d74cf50310d4efbbccbbe79a105fcc3a468b19d)
2026-09-23 14:03:10 +08:00
winewill 4e41ccadcc build(desktop): check every import record and mirror the bundle step in the wine gate
The packaged-imports plugin moves from generateBundle to moduleParsed so
external dynamic import() and require() targets, which chunk metadata
omits, fail the bundle too. Each bundle now carries an import policy:
the main process allows Node builtins, sandboxed preloads only the
modules Electron's require polyfill resolves, and the failure names the
importing module and the allowed set. The wine Windows gate bundles
apps/desktop after the Host tsdown pass like build:lib:host, the
ts-build-config note lists that step, and the tsdown docs name the
workspace match exactly.

Fixes #4993
2026-09-23 12:03:48 +08:00
winewill 06717aebbb build(desktop): bundle the main process after the workspace tsdown pass
The root tsdown workspace pass builds every member concurrently, so the
Desktop main bundle could resolve its inlined workspace devDependencies
(dsh-home-paths, dsh-app-boot, dsh-deepseek-account) before their lib/
output existed. rolldown then kept them as external imports, which the
asar does not ship, and the packaged application failed at launch with
ERR_MODULE_NOT_FOUND on a clean checkout; stale lib/ output on long-lived
checkouts hid the defect.

apps/desktop leaves the root workspace list and build:lib:host bundles it
after the Host pass. Every Desktop bundle now runs a rolldown plugin that
fails the build when a chunk imports a bare specifier the packaged
application cannot resolve: electron and the manifest dependencies for
the main bundle, electron alone for sandboxed preloads.
2026-09-22 20:11:51 +08:00
winewill 84394b818c Merge pull request #4919 from deepseek-harness/fix/fatal-diagnostics-and-crash-reports
fix: contain spill failures, recover failed client batches, and write Desktop crash reports
2026-09-22 19:01:39 +08:00
winewill ec852793b5 Merge remote-tracking branch 'origin/master' into fix/fatal-diagnostics-and-crash-reports 2026-09-22 18:51:57 +08:00
winewill c22b226b18 fix: address review threads on the fatal-diagnostics PR
- Agent Notes: cross-link the new decision with the native fatal recovery
  and fail-loud release notes both ways, rewrite the older note's
  console-retention and dialog-detail facts in place, and state the report's
  actual bounds.
- crash-report: cut the rendered error section at 256 KiB and prune only
  files matching the generated crash-<time>-<source>.log syntax.
- main: backendReady follows the backend state except during shutdown, so a
  failure while tearing down a ready backend still reads as running.
- subprocess-local: the temporary-file-cleaner hint is appended only for
  ENOENT; other codes rely on the appended error.
- client-modules: describeError is module-private; BootModuleRow.url's
  JSDoc names its fallback role.
2026-09-22 18:20:12 +08:00
winewill af28c551f3 Merge pull request #4913 from deepseek-harness/fix/windows-installer-extract-diagnostics
fix(desktop): report Windows extraction failures with 7-Zip evidence
2026-09-22 18:15:40 +08:00
winewill 603a8fc7d3 Merge remote-tracking branch 'origin/master' into fix/fatal-diagnostics-and-crash-reports 2026-09-22 17:58:58 +08:00
Turtle 505559b03b Merge pull request #4955 from deepseek-harness/turtle/settings-link-copy-064fa5feb8cd
fix(client): clarify chat link-opening settings copy
2026-09-22 17:42:50 +08:00
winewill 30a7f8f787 Merge branch 'master' into fix/windows-installer-extract-diagnostics 2026-09-22 17:37:28 +08:00
Dudu-0223 7c296b3f08 Merge pull request #4951 from deepseek-harness/fix/teammate-lead-guidance
fix(agent-team): explain teammate discovery and messaging
2026-09-22 17:36:31 +08:00
Turtle b2ec54159f docs(client): name the Sidebar Browser in the link-opening row prose
The ui-chat README described the visibility rule as "while the built-in browser
is available", a phrase that now reads like an option label. Both languages name
the Sidebar Browser, matching the sentence that follows.
2026-09-22 17:33:49 +08:00
Yichen Jiang 108f767a89 Merge pull request #4949 from deepseek-harness/worktree/fix-voice-language-settings
fix(voice-input): persist recognition language settings
2026-09-22 17:31:21 +08:00
winewill 7b2094d04d fix(desktop): keep the Host's original diagnostic in startup crash reports
A Host startup failure reached the crash report as a fresh Error built from
a message string three hops away from the original: the Host sent only
error.message over the fatal IPC event, DesktopHostProcess wrapped it in a
new Error, desktopErrorState flattened it to text, and main.ts wrapped that
text again. Stack, cause, code, and path were gone, and the Host's stderr
tail arriving with the later exit was blocked by the first-failure latch.

The Host now sends its complete inspected error alongside the message
(bounded to 64 KiB; carried over IPC rather than stderr because the two
race and the shell reports the first failure it sees). DesktopHostProcess
keeps it on DesktopHostFatalError.diagnostic, the backend error state
carries the original failure object, main.ts reports that object, and the
crash report prints the Host diagnostic verbatim in its own section.
2026-09-22 17:31:17 +08:00
winewill d8924486ad fix(desktop): declare the cordis peer the packaged application needs
apps/desktop imports @deepseek-ai/dsh-api-gateway/stream-protocol, whose
import chain reaches @deepseek-ai/dsh-typert-protocol and then
@deepseek-ai/cordis. Both intermediate packages declare cordis as a
peerDependency and nothing satisfied it for the application closure, so
electron-builder omitted cordis from app.asar and the packaged main process
died before opening a window with ERR_MODULE_NOT_FOUND. A workspace checkout
resolves the peer through pnpm's own links, so development runs and the unit
lanes stayed green while every packaged build since efbc8e26b6 (2026-09-20)
failed to launch.

The lockfile additionally drops a stale duplicate [email protected] in favour of the
7.2.3 it already carries; any real pnpm install removes it.

Verified with a signed win-x64 installer built from this tree: app.asar now
ships cordis and @standard-schema/spec, and the installed application opens
its main window.
2026-09-22 17:21:06 +08:00
Dudu-0223 a79e3a2a5f fix(agent-team): explain teammate discovery and messaging 2026-09-22 17:18:08 +08:00
Turtle c81adc2569 Merge pull request #4948 from deepseek-harness/turtle/agent-experience-skill
docs(skills): add the agent-experience skill
2026-09-22 17:16:36 +08:00
Turtle a294fc55d0 Merge pull request #4930 from deepseek-harness/fix/641-unbounded-completion-wakes
fix(tool-jobs): wake an idle owner for every completion by default
2026-09-22 17:14:13 +08:00
Turtle aba3472b1d fix(client): clarify chat link-opening settings copy
The Settings → General row for Chat link destinations now reads
网页链接默认打开方式 with the description 对话中网页链接的打开位置 and the option
labels 应用内侧边栏 and 默认浏览器. English keeps the title "Open chat links in" and
now reads "Choose where to open web links", "In-App Sidebar", and "Default
Browser".

The `ui-chat.linkOpening` setting, its values, persistence, visibility rule, and
open behavior are unchanged. The row spec, the clickable-link gallery scenario,
and the two package READMEs name the new copy; the bilingual pairing records were
re-confirmed for the README pairs.
2026-09-22 17:12:43 +08:00
Dudu-0223 d257fa4af7 fix(agent-team): limit the reminder to the lead identity 2026-09-22 17:08:45 +08:00
imccyu b980fdf5df Merge pull request #4950 from deepseek-harness/worktree/release-dsh-0.1.5-rc.3-history-to-master
chore(release): record dsh 0.1.5-rc.3 history on master
2026-09-22 17:07:52 +08:00
ihsiang e420c44d60 Merge pull request #4857 from deepseek-harness/ihsiang/unify-code-block-ui
feat(web): 统一代码块样式与复制、换行控件
2026-09-22 17:06:07 +08:00
turtle1999 bada62b50b docs(skills): add the agent-experience skill
Carry the user-scoped agent-experience guidance into the repository unchanged so
project sessions discover it beside the other repository skills. The file,
including its frontmatter, is byte-identical to the personal copy.
2026-09-22 17:03:36 +08:00
Dudu-0223 6ec97fa124 fix(agent-team): tell teammates how to message the lead 2026-09-22 17:02:25 +08:00
yixiangihsiang 9c6c407da2 Merge master into ihsiang/unify-code-block-ui 2026-09-22 16:57:18 +08:00
Yichen Jiang 7c84d9d790 fix(voice-input): persist recognition language settings 2026-09-22 16:55:33 +08:00
imccyu 3ae2f687f1 merge: record dsh 0.1.5-rc.3 history on master
Keep the master tree unchanged while recording the dsh-v0.1.5-rc.3 release ancestry.
2026-09-22 16:50:58 +08:00
Yudong Han d3c5f959aa Merge pull request #4921 from deepseek-harness/fix/4918-excel-preview-resize
fix(web): resize Excel previews with their pane
2026-09-22 16:46:26 +08:00
HYD@OVERTON 58651b8359 fix(web): resize Excel previews with their pane 2026-09-22 16:33:30 +08:00
turtle1999 2d653be7b0 fix(tool-jobs): address review on the unbounded wake default
Skip the per-owner wake ledger entirely when no cap is configured.
Rewrite the 2026-08-11 Agent Note in place for the opt-in cap and add
a note recording why the default was removed. Keep `subagent`
untranslated in Chinese prose and drop change narration from the test.

Refs #4944
2026-09-22 16:33:24 +08:00
yixiangihsiang 5929af046c Merge master into ihsiang/unify-code-block-ui 2026-09-22 16:32:42 +08:00
yixiangihsiang 780e07b8ed test(web): align built boot assertions with diff layout 2026-09-22 16:28:46 +08:00
lsdsjy 32ca127565 Merge pull request #4898 from deepseek-harness/fix/contact-form-url
fix(client): update Feedback form and omit account UID
2026-09-22 16:27:23 +08:00
turtle1999 536b444f36 Merge remote-tracking branch 'origin/master' into fix/641-unbounded-completion-wakes 2026-09-22 16:26:50 +08:00
Huanqi Cao f5d7de2a01 Merge pull request #4807 from deepseek-harness/fix/pwsh-prompt-readiness
fix(pty): keep the controlled prompt so persistent pwsh settles fast
2026-09-22 16:25:59 +08:00
lsdsjy 4777947b6c fix(client): keep account UID fields out of questionnaire URLs
The Contact us action already stopped prefilling the signed-in UID, but a
configured contact form URL could still carry its own prefill_uid or hide_uid.
contactUrl now drops both query parameters unconditionally, with regression
coverage that starts from a form URL containing them.

The contact URL test also pins the shipped default form path, and the injected
contactUs documentation and the AccountProfile summary no longer describe a
support UID that is no longer sent.
2026-09-22 16:16:34 +08:00
lsdsjy 930d187e04 Merge remote-tracking branch 'origin/master' into fix/contact-form-url
# Conflicts:
#	packages/client/ui-settings-account/README.i18n.yaml
#	packages/client/ui-settings-account/README.md
#	packages/client/ui-settings-account/README.zh.md
2026-09-22 16:13:19 +08:00
Yudong Han 34a0a8e81d fix(web): preserve Excel previews across OPC paths and XML encodings (#4872)
* fix(web): resolve XLSX part relationships and namespace aliases

* fix(web): keep Excel browser scenario in the host test program

* fix(excel): preserve XML encodings and relocated workbook parts

* fix(excel): exclude installed launchers from dependency patch

* fix(excel): restore Strict and case-equivalent workbook previews
2026-09-22 08:04:13 +00:00
lsdsjy e76a5eba21 Merge pull request #4903 from deepseek-harness/fix/platform-login-theme
fix(desktop): match Platform login theme
2026-09-22 16:00:44 +08:00
lsdsjy 785a92ab03 fix(client): rename the contact menu entry to Feedback
The account menu entry that opens the questionnaire is now labeled Feedback in
English and 意见反馈 in Chinese. The menu action, contact form URL and its
configuration options keep their existing names.

Expected menu snapshots and the bilingual README record the new copy.
2026-09-22 15:49:30 +08:00
lsdsjy 3b6a5399e8 docs(desktop): clarify login theme ownership 2026-09-22 15:49:20 +08:00
yixiangihsiang fd8bed1ad0 Merge master into ihsiang/unify-code-block-ui 2026-09-22 15:45:41 +08:00
yixiangihsiang 62f816f3a5 feat(web): refine code card spacing and thinking blocks 2026-09-22 15:44:57 +08:00
Huanqi Cao 41fd0baf91 Merge remote-tracking branch 'origin/master' into fix/pwsh-prompt-readiness
# Conflicts:
#	docs/config-catalog.i18n.yaml
2026-09-22 15:36:21 +08:00
lsdsjy f50059e425 fix(desktop): theme workspace sign-in links 2026-09-22 15:34:58 +08:00
Turtle 5ca6d34ac6 Merge pull request #4924 from deepseek-harness/turtle/fix-queued-edit-newline-54bfaf4e59d7
fix(web): keep line breaks when re-editing a queued message
2026-09-22 15:33:31 +08:00
turtle1999 b6775f6d4f fix(tool-jobs): wake an idle owner for every completion by default
`maxConsecutiveWakes` no longer defaults to 3. Unset, every background
job completion wakes its idle owner; the cap is opt-in.

With the default cap, a session chaining background commands and
one-shot subagents exhausted the budget after three wakes. The fourth
notice was injected into the next-step inbox without waking the owner,
the client showed nothing, and the session stalled until the user
typed something (dsh-external/issues#641).

Closes dsh-external/issues#641
2026-09-22 15:29:23 +08:00
lsdsjy 2c098434b9 Merge remote-tracking branch 'origin/master' into fix/platform-login-theme 2026-09-22 15:27:06 +08:00
lsdsjy 13fe312e15 test(desktop): fix login theme CI fixtures 2026-09-22 15:26:39 +08:00
Turtle 753df93b85 test(web): pin the multiline queued edit in the browser lane
The recorded-session scenario edited with a single-line value, so the ARIA
golden could not catch a return to a newline-stripping editor. Edit with a
two-line value and assert the model-bound user message keeps the line break;
with the previous input element the scenario fails on that assertion. Also
refresh the stale input cast and pin that Shift+Enter is not consumed.
2026-09-22 15:12:35 +08:00