2269 Commits

Author SHA1 Message Date
creatixchu
51dc55ec3d fix(web): cap default images at 5 MiB 2026-08-12 14:47:20 +08:00
Ziya
5b448ae15f Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 14:35:46 +08:00
j-xiang
2b24e938d1 Merge branch 'master' into docs/post-v3-release-proofreading 2026-08-12 14:28:58 +08:00
xjt
19c48b2ae3 Merge remote-tracking branch 'origin/master' into docs/post-v3-release-proofreading
# Conflicts:
#	packages/client/ui-models/README.i18n.yaml
#	packages/client/ui-models/README.zh.md
2026-08-12 14:28:09 +08:00
imccyu
3784607f3d Merge pull request #2035 from deepseek-harness/fix/grep-glob-web-search-row-distinction
fix(client): distinguish grep/glob rows from the web search row
2026-08-12 14:27:04 +08:00
Ziya
29a089519d Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 13:53:20 +08:00
Yichen Jiang
76805df26e Merge pull request #2326 from deepseek-harness/fix/onboarding-reads-every-provider
fix(web): 任意可用提供方即结束首次引导,setup 卡片可关闭
2026-08-12 13:52:45 +08:00
creatixchu
8d4c3f8a0a review: format check precedes limits, INVALID_IMAGE/IMAGE_TYPE_MISMATCH as format copy, tile-sized retry control 2026-08-12 13:50:07 +08:00
Ziya
91305c6240 Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 13:49:57 +08:00
pku-xht
fc68949e1a Merge pull request #2296 from deepseek-harness/codex/workflow-run-auto-disclosure
feat(workflow): auto-follow run and phase disclosures
2026-08-12 13:49:36 +08:00
creatixchu
c9a536e0c8 review: theme-owned drop mask token, overlay fade-in, stable gallery keys, close-button stacking, stale note defaults 2026-08-12 13:12:06 +08:00
creatixchu
7259252536 Merge remote-tracking branch 'origin/master' into worktree/attachment-alignment-2 2026-08-12 13:02:39 +08:00
xjt
ab140cd299 Merge remote-tracking branch 'origin/master' into docs/post-v3-release-proofreading
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-20-dsh-cli-personal-config.zh.md
#	.agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-25-session-list-browsing-and-manual-order.zh.md
#	.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-25-workspace-ui-product-flow.zh.md
#	.agents/notes/implemented/feature/2026-07-26-code-dispatch-ui-foundation.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-26-code-dispatch-ui-foundation.zh.md
#	docs/user/develop/basic/index.i18n.yaml
#	docs/user/develop/basic/index.zh.md
#	docs/user/guide/config.i18n.yaml
#	docs/user/guide/config.zh.md
#	docs/user/guide/providers.i18n.yaml
#	docs/user/guide/providers.zh.md
#	packages/bundle/base/README.i18n.yaml
#	packages/bundle/base/README.zh.md
#	packages/host/apiproxy/README.i18n.yaml
#	packages/host/apiproxy/README.zh.md
2026-08-12 12:59:38 +08:00
Yif
625711e718 fix(client): distinguish grep/glob rows from the web search row
The grep, glob, and web_search tool rows all rendered as "Search" with
the same magnifier icon, so a transcript full of local searches was
indistinguishable from web searches. Grep and glob now carry their own
command-named titles through TOOL_TITLES, and the web_search row wears
a new globe glyph (IconGlobeOutline14) while keeping its "Search" title.
2026-08-12 12:57:59 +08:00
Ziya
91e073e5e1 Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 12:51:46 +08:00
Yichen Jiang
d57463c2fb fix(web): end first-run onboarding on any usable provider
The step and the Models page both asked one question of a join that
describes every provider: is deepseek-official's credential stored? A user
who configured some other route was taken over on every blank session, and
the DeepSeek setup card opened over them on every visit to Models with a
Cancel that could not close it — while clearing the add card's draft,
because it shared the row-editor close handler.

providerUsable(row) now answers what both surfaces need: the route is
registered and whatever credential its profile names is stored. Readiness
(renamed onboardingReadiness) ends on any usable row, needsSetup takes the
same fact, and each card kind owns its own close handler.

Fixes #2325
2026-08-12 12:50:45 +08:00
_Kerman
d5ec13bdd9 Merge pull request #2250 from deepseek-harness/xtr/sidebar-workspace-controls
feat(web): improve workspace sidebar navigation
2026-08-12 12:41:53 +08:00
ZiyaZhang
46c0e3dba7 fix(ci): align plugin inventory with current contracts 2026-08-11 21:38:11 -07:00
creatixchu
2c9036b102 feat(web): whole-page image drop, projected intake limits, and thumbnail tiling
Second alignment step for #2248: document-level drag intake behind the new
DropOverlay atom, lightbox close icon and shared dialog mask, DeepSeek Chat
thumbnail rules (single 240px long edge with ratio clamp, 64px tiles, merged
consecutive assistant images), image limits raised to 20/10MiB/100MiB and
published to clients as the imageLimits projection, whole-batch intake
pre-check with product-copy banners, and attachment-error reasons mapped to
localized copy.
2026-08-12 12:31:52 +08:00
xjt
4806d94715 docs(i18n): include complete proofreading corpus 2026-08-12 12:30:19 +08:00
ZiyaZhang
eea356e785 Show module names for dynamic plugins 2026-08-11 21:10:14 -07:00
ZiyaZhang
2614a2df93 Refine plugin inventory card details 2026-08-11 21:10:14 -07:00
ZiyaZhang
4cf76f2362 Fix plugin status tag clipping 2026-08-11 21:10:14 -07:00
ZiyaZhang
6ed5df964e feat(web): add read-only Loader plugin inventory 2026-08-11 21:10:14 -07:00
_Kerman
64326cb597 refactor(ui-workspace): extract shared drag-accept and status-dot renderers
The flat-list ordering change duplicated the document-level native-drag
acceptance effect and the status-dot block across the search and session
rows, tripping the duplication gate. Extract useNativeDragAcceptance and
SessionStatusDots so both call sites share one implementation.
2026-08-12 12:01:23 +08:00
_Kerman
3a3248b31d feat(ui-workspace): support manual flat-list ordering 2026-08-12 11:14:25 +08:00
Ziya
4a8ee7674a Merge pull request #2287 from deepseek-harness/agent/black-whale-logo
style(web): use black hero whale with hover motion
2026-08-12 11:06:42 +08:00
Chinesezjc
b462d5fd69 Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui
Adapt to two contract changes master introduced:

- The generated Remote face now wraps every business result in
  RemoteResult, folding carrier failures into an ok:false branch instead
  of rejecting. The controller reads that envelope at its three call
  sites and maps a carrier failure onto the same settled shape the
  controls already render; three specs cover the new branch.
- Client packages split their tsconfig into host and client halves, and
  the host aggregate now compiles any test not named *.client.spec.*.
  Rename this package's specs to the client convention and drop the
  ../connection project reference, which pointed at a solution file that
  no longer carries the client sources.

Keep master's mount loop with its rollback-on-failure in api-remotes and
add messageFeedbackRemote to it.
2026-08-12 10:43:23 +08:00
xjt
7b450d121e docs(i18n): apply reviewed Chinese proofreading updates 2026-08-12 09:59:19 +08:00
_Kerman
3a0baa1e9d Merge remote-tracking branch 'origin/master' into dshw/pr-2250
# Conflicts:
#	packages/client/connection/tests/fake-api.client.ts
#	packages/client/runtime/tests/manager.client.spec.ts
#	packages/client/runtime/tests/workspaces-service.client.spec.ts
#	packages/host/apiproxy/tests/rpc-schemas.spec.ts
2026-08-12 04:50:51 +08:00
pku-xht
bbdeb5363b Merge commit 'a9cbb8db5009bccbd41746fc43c531b758e6a9fe' into codex/workflow-run-auto-disclosure 2026-08-12 02:53:08 +08:00
_Kerman
f7e45ae377 test(ui-trajectory): provide the settings and remote seams the locale plugin needs
The locale plugin's inject list gained 'remote' and 'settingsScope' on
2026-08-10, but the built-bundle harness mounted it without providing
those services, so the locale fiber never started and the trajectory
plugin's apply never ran — the ring assertion saw no 'trajectory' entry.
Provide the same stubs ui-layout's apply bench uses.
2026-08-12 02:52:15 +08:00
imccyu
58b6fa3ae1 fix: test constract 2026-08-12 02:30:08 +08:00
imccyu
929086fb36 fix: docs 2026-08-12 02:30:08 +08:00
imccyu
2c2d9f26e5 fix: client spec 2026-08-12 02:16:39 +08:00
pku-xht
8f308023a2 docs(workflow): align disclosure lifecycle evidence 2026-08-12 01:41:43 +08:00
imccyu
7ad54e7791 refactor(client): name the compile face in every client test filename
A test file under packages/client now says which face it covers:
`*.client.spec.{ts,tsx}` and its `*.client.{ts,tsx}` helpers belong to the
Client aggregate, `*.host.spec.ts` to the host aggregate. The carrier's four
node-half specs take the Host suffix.

The two suffixes are mutually exclusive, so each aggregate excludes the
other's and both keep one broad test glob: `exclude` wins over `include`, and
`packages/client/**` no longer has to be excluded wholesale from the host
program with per-file `files` entries carved back out of it. A Host-face spec
that reaches only Host source therefore needs no cross-face project
reference, which the split-project rule rejects.

vitest still discovers every file through `**/*.spec.{ts,tsx}`.
2026-08-12 01:41:40 +08:00
Chinesezjc
47f254a252 fix(feedback): address review findings in the controller and controls
Resolve the note-erasure race the review found: a control that rendered
before the first list read held no item and passed note=undefined, so
switching a rating silently dropped the stored note. The controller now
owns note resolution and toggle-vs-retract, deciding from the committed
item inside the serialized mutation, and clearNote expresses deletion.

Also from review:
- serialize the reconnect re-read behind queued mutations (resync), so a
  list reply cannot resurrect a version a newer mutation replaced
- re-check disposal after the seeding read, so an unloaded fiber never
  reaches the wire
- drop Object.freeze on Maps, which does not prevent set/delete
- declare the @deepseek-ai/dsh-client-connection dependency it imports
- surface a failed list load in the controls
- drop the /client value exports that had no consumer
- state the per-turn render scope in the README and subsystem pages
- align the package version with the root
2026-08-12 01:12:41 +08:00
pku-xht
33112b4957 fix(workflow): scope clean-cycle reset to phases 2026-08-12 01:09:03 +08:00
pku-xht
1b91e5b4fe fix(workflow): refold coalesced disclosure cycles 2026-08-12 01:01:25 +08:00
Ziya
dd0898ad9c Merge branch 'master' into agent/black-whale-logo 2026-08-12 00:54:39 +08:00
pku-xht
3dff212c5d feat(workflow): auto-follow run and phase disclosures 2026-08-12 00:38:46 +08:00
Chinesezjc
63e6ea1b79 Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui 2026-08-11 23:54:29 +08:00
ZiyaZhang
d5820df03b fix(web): stabilize hero whale hover 2026-08-11 08:53:39 -07:00
imccyu
b0d3686f57 fix: pkg 2026-08-11 23:33:18 +08:00
imccyu
378141bf5d fix: test 2026-08-11 23:33:18 +08:00
imccyu
6332bd3513 fix: build 2026-08-11 23:33:18 +08:00
imccyu
7a9d7d2657 chore(hygiene): restore the cordis peers and teach knip the split faces
`@deepseek-ai/cordis` returns to the peer and dev dependencies of
`dsh-client-ui-model` and `dsh-client-ui-skill`; every harness package declares
it, and the client type-assembly rename dropped it from both. The commands
manifest ships `src` alongside its generated typert faces, matching the
`./src/*` export it already declares.

knip gains the two directory-picker surface workspaces, whose specs are `.tsx`
and matched no default pattern, and ignores `zod` in the commands workspace:
that dependency belongs to the generated Remote and Host faces in `lib/`, which
knip never scans. The unused `dsh-client-test-runtime` and
`dsh-client-connection` dev dependencies are gone; the picker surface's own spec
never imported the former, and ui-settings reads the carrier's types through the
Remote assembly now.
2026-08-11 23:33:17 +08:00
imccyu
92e0e3377f test: finish the Remote-result and picker-split test migrations
Every generated Remote method resolves to `RemoteResult<T>`, so the Gateway
client spec asserts the ok and error branches instead of the unwrapped value
and a throw, and the generator fixtures declare the wrapper in the consumer
face they typecheck. The RPC-failure test splits into the Host error carried
verbatim in the error branch plus a transport throw folded into it.

The runtime client, ui-command and ui-plan benches answer the generated
commands Remote through its result branches and provide the `remote.commands`
namespace their plugins now inject; the ui-command bench also serves the `$on`
the service subscribes on construction.

The directory-picker chooser mounts a backend and its surface as a pair, so the
real-Loader composition serves both surface packages and asserts each entry
arrives and leaves with its backend.
2026-08-11 23:33:17 +08:00
imccyu
51b5f5b565 test(picker): cover the node halves of the split directory-picker faces 2026-08-11 23:33:17 +08:00