Commit Graph
6462 Commits
Author SHA1 Message Date
imccyu 8a01b8360b Merge master into DSH 0.2.1-rc.3 synchronization branch 2026-10-23 13:38:11 +08:00
Ziya 0da2e7e48a Merge pull request #6631 from deepseek-harness/feat/plugin-recommendations
feat(experimental): 实验性插件「插件推荐」:在回答末尾推荐官方插件
2026-10-22 22:04:34 -07:00
imccyu 37faa05ffa Merge master into DSH 0.2.1-rc.3 synchronization branch 2026-10-23 12:55:47 +08:00
Turtle 2d130c7e61 Merge pull request #5610 from deepseek-harness/turtle/image-cache-stale-0a243f674e12
fix(client): reload overwritten local Markdown images in new renders
2026-10-23 12:44:17 +08:00
ZiyaZhang 935d9f178a Merge feat/creation-recommendations into plugin recommendation experiment
Takes master's move of the official plugin lists into
@deepseek-ai/dsh-official-bundles. The Plugins page files come from master,
and the plugin recommendations bundle follows the personalized pages bundle
in OPTIONAL_BUNDLES, MORE_BUNDLES and EXPERIMENTAL_BUNDLES.
2026-10-22 21:41:49 -07:00
ZiyaZhang beb23ac093 Merge remote-tracking branch 'origin/master' into pr-6635-ci
# Conflicts:
#	packages/client/ui-plugin-manager/src/client/PluginManagerPage.tsx
#	packages/client/ui-plugin-manager/src/client/presentation.ts
2026-10-22 21:37:10 -07:00
ZiyaZhang 72c104e099 Merge feat/creation-recommendations into plugin recommendation experiment
Takes master 020a053a120 through the base, which ships Spanish, French,
German, Russian and Portuguese and requires them in every package. The page
card fixture takes the base's eight-language plugin catalog.
2026-10-22 21:26:27 -07:00
Turtle 9b4aacb41a refactor(util): collect hardcoded official plugin lists in dsh-official-bundles
Move @deepseek-ai/dsh-official-bundles from packages/boot to packages/util
and move the plugin manager's protected plugin list and the Web plugin
page's hidden, ordered, and experimental bundle lists into it, so editing
any of these lists no longer touches app-boot or either plugin manager
package.
2026-10-23 12:12:38 +08:00
ZiyaZhang a34a4524e5 Merge remote-tracking branch 'origin/master' into pr-6635-ci 2026-10-22 21:12:11 -07:00
imccyu 5259c1e103 Merge master into DSH 0.2.1-rc.3 synchronization branch 2026-10-23 12:10:59 +08:00
ZiyaZhang b5d4e93861 refactor(experimental): drop experimental from the plugin recommendation package names
The two packages keep their directories under packages/experimental and are
registered as experimental name exceptions:

- @deepseek-ai/dsh-plugin-recommendations
- @deepseek-ai/dsh-client-ui-plugin-recommendations

Loader row ids, the Remote service name, locale namespaces and the
enable_official_plugin action are unchanged. Generated catalogs are
regenerated, and both card Web fixtures record the renamed bundle in their
skills' plugin catalogs.
2026-10-22 21:02:23 -07:00
ZiyaZhang 30dafd2106 Merge feat/creation-recommendations into plugin recommendation experiment
Takes the card packages' new names and master up to e115cc98d65. The plugin
recommendation packages and their bundle rows now name
@deepseek-ai/dsh-action-cards and @deepseek-ai/dsh-client-ui-action-cards;
generated catalogs are regenerated, and both card Web fixtures record the
renamed bundles in their skills' plugin catalogs.
2026-10-22 20:58:11 -07:00
07akioni e1d9697f6c test: match the neutral task cleanup confirmation title 2026-10-23 11:57:29 +08:00
imccyu 14f0b2aafe Merge master into DSH 0.2.1-rc.3 synchronization branch 2026-10-23 11:56:34 +08:00
ZiyaZhang 57195d1934 refactor(experimental): drop experimental from the card package names
The four packages keep their directories under packages/experimental and
are registered as experimental name exceptions:

- @deepseek-ai/dsh-action-cards
- @deepseek-ai/dsh-client-ui-action-cards
- @deepseek-ai/dsh-creation-recommendations
- @deepseek-ai/dsh-client-ui-creation-recommendations

Loader row ids, plugin record names, message source kinds, the Remote
service name and locale namespaces are unchanged. Generated catalogs are
regenerated, and the page card Web fixture records the renamed bundle in
the skill's plugin catalog.
2026-10-22 20:48:18 -07:00
ZiyaZhang 0d97af58b5 Merge commit 'e115cc98d65' into pr-6635-ci 2026-10-22 20:40:34 -07:00
imccyu b049cd257c Merge pull request #6980 from deepseek-harness/07akioni/more-locales
feat(i18n): add Spanish, French, German, Russian and Portuguese
2026-10-23 11:22:55 +08:00
Chinesezjc 7bf0640c13 Merge pull request #6734 from deepseek-harness/feat/schedule-clear-ended
feat(schedule): remove every ended task from the automation page
2026-10-23 11:20:28 +08:00
Turtle a0cbe9331c Merge pull request #6887 from deepseek-harness/turtle/trace-tab-indicator-clip-bede5ab93d0f
fix(ui-conversation): keep the active tab bar visible over Trajectory and widen tab targets
2026-10-23 10:14:02 +08:00
Turtle 06f960d705 Merge pull request #6984 from deepseek-harness/turtle/hover-truncated-text-e74d638a44b5
feat(ui-chat): show cut-off composer statistics in a tooltip
2026-10-23 08:40:51 +08:00
imccyu d02ea370ee release(dsh): 0.2.1-rc.3 2026-10-23 01:11:35 +08:00
ZiyaZhang 39fa48b074 Merge feat/creation-recommendations into plugin recommendation experiment
Takes current master through the base, including the runtime-context
approval sentence that recorded Web fixtures replay against.
2026-10-22 09:27:46 -07:00
ZiyaZhang 1e9600be15 Merge remote-tracking branch 'origin/master' into pr-6635-ci 2026-10-22 09:14:14 -07:00
Tianyi Cui 5219b36110 Merge pull request #6498 from deepseek-harness/turtle/approval-never-wording-7e59b56e7f5c
fix(user-approval): describe approval policies by meaning in model-visible text
2026-10-22 23:47:16 +08:00
imccyu 261f2db185 Merge master into DSH 0.2.1 navigation and model listing sync 2026-10-22 23:22:35 +08:00
TurtleandTianyi Cui 747cbf13b6 Describe the ask approval policy by its meaning
Replace the literal "Approval policy: ask." runtime-context sentence
with a statement parallel to the never-policy sentence, and refresh the
current-generation fixtures that persist it.

Co-authored-by: Tianyi Cui <[email protected]>
2026-10-22 23:13:19 +08:00
07akioni 07ef8a20b8 Merge master and sync plugin index translations 2026-10-22 22:24:15 +08:00
ZiyaZhang ad482a45ec test(web): replay the plugin card through propose_action
The plugin fixture now offers the card with a propose_action call, the
tool schema pin records the tool addition after the skill load, and the
card goldens name the region after the card title as the shared frame does.
The page fixture's skill catalog lists the plugin recommendation bundle.
2026-10-22 07:18:05 -07:00
07akioni 1552f524f7 fix(i18n): address translation, installer and coverage review findings 2026-10-22 22:14:47 +08:00
ZiyaZhang c6d9a964d3 Merge feat/creation-recommendations into plugin recommendation experiment 2026-10-22 06:50:25 -07:00
ZiyaZhang 2756d7b922 Merge remote-tracking branch 'origin/feat/creation-recommendations' into pr-6635-ci 2026-10-22 06:36:52 -07:00
ZiyaZhang 1fbebc433f test(web): replay the page card through propose_action
The creation fixture now offers the card with a propose_action call, the
tool schema pin records the tool addition after the skill load, and the
card goldens follow the shared frame and its Show more and Show less
controls.
2026-10-22 06:36:30 -07:00
Chinesezjc d82234116b feat(ui-schedule): align bulk cleanup with the search-row More menu 2026-10-22 21:22:11 +08:00
ZiyaZhang b8e16bef91 Merge origin/master into personalized pages experiment 2026-10-22 06:17:15 -07:00
Yichen Jiang c48f8523f2 feat(llm): follow the official /models listing on the DeepSeek API-key route (#6944)
* refactor(llm-deepseek): share the /models listing machinery

Move the account route's `/models` request and decoding, its
credential-scoped listing cache, and listed-catalog resolution with the
version gate into the shared DeepSeek Messages library, so a second
route can follow the same listing. Names drop the account prefix, the
cache takes each access's endpoint settings with the call, and it gains
`invalidate()` for a forced reload. `isBuiltInCatalog()` recognizes the
catalog an uncustomized `models` setting resolves to.

The account route keeps its behavior; only its imports and the
override diagnostic wording ("model listing") change.

* feat(llm-deepseek-api-key): follow the official /models listing

While `models` equals the built-in catalog and the Messages origin is
https://api.deepseek.com, `deepseek-official` serves the official
`GET /models` listing, authenticated with the API key in `x-api-key`.
Loading, refresh, fallback, merging, and the client-version gate match
the account route: the first access waits up to `modelsTimeoutMs`, a
listing older than `modelsMaxAgeMs` refreshes in the background on the
next access, a failure keeps the last good listing or the built-in
catalog, and listed models this build cannot serve are refused before
network I/O.

A customized `models` list replaces the catalog and requests nothing.
Switching between a customized catalog and the listing discards the
cached listing, so Restore defaults reloads it on the next access.

Suites that boot the route on the official endpoint now answer the
listing themselves instead of reaching the network.

* docs: describe the official route model listing

Document when `deepseek-official` follows the official `/models`
listing, its timing fields, customization precedence, and the forced
reload after Restore defaults in the API-key README, the shared
transport README, and the provider guide. Record the decision in a new
Agent Note, keep the account note's statement of where the shared
listing code lives current, and regenerate the configuration catalog.

* test(llm-deepseek-api-key): pin the once-per-listing hidden-entry diagnostic

* docs: regenerate module and event graphs for the shared listing

* fix(llm-deepseek-api-key): report credential failures on the model request

On the official endpoint, `connect` waited for the listing view, whose
credential lookup rethrew a malformed key or a credential-store failure
before the agent loop recorded the prompt. A failed lookup now resolves
the connection from the current listing view, so `resolveAuth` reports
the failure on the model request and the turn keeps the prompt and the
failed attempt. A caller abort still rejects.

* docs(llm-deepseek-api-key): name which hidden listing entries are logged

* test: keep unit suites off the official model listing

Suites that boot the DeepSeek routes with a dummy or inherited key now
request `GET https://api.deepseek.com/models` on the official endpoint.
A unit-lane setup file rejects that request at once, so such a suite
serves the built-in catalog instead of reaching production or waiting
out the listing deadline on a network that never answers; suites that
exercise the listing answer `fetch` themselves. Other requests pass
through unchanged.

* feat(llm-deepseek): read tool_update from the model listing

Both DeepSeek routes now take a listed model's Messages tool update mode
from `api_capabilities.anthropic_messages.tool_update`, alongside the
system prompt mode. `in-history` and `addition-only` replace the
bundled mode; any other value reads as `leading-only` and removes it.
An absent or `null` mode keeps the bundled one, so a listing that does
not declare the field leaves `deepseek-flash` on `addition-only`.

`system_prompt_update: null` likewise keeps the bundled mode now; it
previously read as `leading-only`, which a serializer writing empty
values as null would have turned into a cache-unfriendly downgrade.

* fix(llm-deepseek): sync the built-in context window with the official listing

The official `/models` listing declares a 1,048,576-token context window
for `deepseek-flash` and `deepseek-v4-pro`; the built-in catalog said
1,000,000, a decimal-versus-binary mismatch. Both built-in entries now
carry the listed value, so offline starts and listing failures size the
context the same way the listing does. The Models page shows the exact
count for these rows, since 1,048,576 has no decimal K/M spelling.

`defaultContextWindow`, the fallback for model ids the catalog does not
describe, stays 1,000,000.

* test(llm-deepseek-api-key): reject the stubbed listing request with an Error

* test(cli): keep the built SDK smoke off the official model listing

The SDK profile's initialize now resolves the deepseek-official catalog,
which requests GET https://api.deepseek.com/models on the official
endpoint. With the smoke's fixture key that request answers 401 and the
route warns on stderr, so the test's empty-stderr assertion failed in the
e2e and snapshots lanes. Point the run at a loopback mock and assert it
received no model call.

* test(llm-deepseek): compose the malformed-key turn without the native executor

release/dsh-0.2.1 predates @deepseek-ai/dsh-tool-executor-native; its tool
runtime executes tools itself. Compose the official-route turn the way
account-routing.spec.ts does on this branch.

* fix(llm-deepseek-api-key): gate nothing when the credential lookup fails

The listing cache switches scope only after it reads a credential, so a
failed lookup left `connect` serving the previous credential's listing.
After a key whose listing refuses a model was replaced by a malformed one,
`admit` refused that model with CLIENT_UPGRADE_REQUIRED before the turn
recorded the prompt, instead of `resolveAuth` reporting the credential
error on the request. Serve the built-in catalog without listing gates
when the lookup fails.

* test(llm-deepseek-api-key): pin the once-per-listing diagnostic across request preparation

The hidden-entry diagnostic test repeated the same discovery assertion to
prove a second pass reports nothing new, which read as a duplicate. Assert
the single warning after the request preparations instead; they resolve
the same listing, so dropping the per-listing deduplication still fails
the test.

* docs(llm-deepseek-api-key): note that a list matching an earlier built-in catalog counts as customized

Customization is judged against the running version's built-in catalog,
so a saved `models` list equal to an earlier version's catalog stops
following the listing once the built-in catalog changes, until Restore
defaults. Record the consequence in the Agent Note and the README's known
limitations.
2026-10-22 20:42:19 +08:00
TurtleandZiyaZhang 9ede8f237d feat(ui-chat): show cut-off composer statistics in a tooltip
Co-authored-by: ZiyaZhang <[email protected]>
2026-10-22 20:40:28 +08:00
Turtle 5b0e089f40 fix(plugin-market): present custom plugin markets as custom plugin indexes 2026-10-22 20:19:30 +08:00
imccyu 39d2903841 fix(ui): separate navigation pins from selection and show menu icons (#6883)
* fix(ui): separate navigation pins from selection and show menu icons

* fix(ui): simplify More menus and fold conversation views on resize

* test(ui): fix navigation CI regressions and refresh catalogs

* refactor(ui): render sidebar panel icons directly

* fix(ui): keep Chat visible and stop persisting navigation pins

* refactor(ui): drop unreachable pin validation from in-memory stores
2026-10-22 20:05:33 +08:00
07akioni 84edeadc2b feat(i18n): add Spanish French German Russian and Portuguese 2026-10-22 19:53:52 +08:00
Chinesezjc 358d1c096d feat(schedule): lighten the bulk cleanup and clarify its copy 2026-10-22 19:35:23 +08:00
imccyu f185b5fa6d Revert "fix(session-controller): 在 Web 操作中等待本地 Agent 初始化" 2026-10-22 18:18:01 +08:00
_Kerman a3d5e4f9e3 Merge pull request #6959 from deepseek-harness/xtr/fix-web-agent-initialization
fix(session-controller): 在 Web 操作中等待本地 Agent 初始化
2026-10-22 18:12:26 +08:00
Chinesezjc ccdd737fd4 Merge remote-tracking branch 'origin/master' into feat/schedule-clear-ended
# Conflicts:
#	packages/client/ui-schedule/README.i18n.yaml
2026-10-22 17:59:12 +08:00
ZiyaZhang caa5535dee Merge feat/creation-recommendations into plugin recommendation experiment 2026-10-22 02:47:01 -07:00
_Kerman d3972b1af5 fix(session-controller): handle initialization join failures 2026-10-22 17:44:40 +08:00
ZiyaZhang 80997ea36a Merge master into personalized pages experiment 2026-10-22 02:34:47 -07:00
_Kerman e5b68798b9 fix(session-controller): wait for initializing local agents 2026-10-22 17:04:51 +08:00
Shigma 90499e2e61 Merge branch 'master' into feat/cordis-loader-resolver 2026-10-22 16:35:55 +08:00
Feiyu Xia 904a1caa2d Merge pull request #6664 from deepseek-harness/feat/mobile-input-viewport
fix(client): improve mobile input focus and caret scrolling
2026-10-22 15:58:15 +08:00
Yichen Jiang c1238b8792 Merge pull request #5263 from deepseek-harness/worktree/web-search-dynamic-tool-e26c2b
feat(web): withhold web_search and web_fetch from requests without credentials
2026-10-22 15:53:05 +08:00