Commit Graph
3990 Commits
Author SHA1 Message Date
Yichen Jiang fdf14b2bc9 docs(web): clarify session row slots and keyboard limits 2026-10-20 00:05:47 +08:00
Yichen Jiang 9dbf907f93 Merge branch 'master' into worktree/session-item-trailing-slot 2026-10-19 23:07:23 +08:00
Yichen Jiang 9153978b36 feat(web): add trailing icon slots to session rows 2026-10-19 22:55:18 +08:00
Turtle 9495663990 Merge pull request #6504 from deepseek-harness/worktree/web-fork-snapshot-order
test: stabilize fork clocks and image-only Office rendering
2026-10-19 22:43:26 +08:00
creatixchu 14a422021e Merge origin/master into feat/cua-basic-onboarding 2026-10-19 21:53:59 +08:00
creatixchu 05713edefa refactor(cua): open system settings directly from allowed permission controls 2026-10-19 21:41:33 +08:00
creatixchu 6d0ba11d2b test(cua): keep fixture opt-in coverage independent of host platform 2026-10-19 21:38:08 +08:00
creatixchu 35ba8ad66d test(cua): cover platform inference and disabled native provider in preview 2026-10-19 21:33:04 +08:00
creatixchu ecc90620a4 feat(cua): use one action per system permission row 2026-10-19 21:04:06 +08:00
turtle1999 9c8522bb64 feat(plugin-detail): show Markdown plugin details on bundle and market entry pages
Plugins bundle pages and Discover entry pages show the plugin's long
description first, as Markdown with images, in a height-limited region
without its own heading. The document is the file locale meta.detail
names, otherwise the package README, otherwise (market entries only)
the declared repository's README.

The new dsh-plugin-detail library selects documents and reads local
package directories and npm file CDNs without state. plugin-manager
reads installed and offered bundles through readBundleDetail; plugin-market
reads market entries through readEntryDetail, single-file APIs, and a
size-limited partial clone cache serialized across processes. Raw HTML is
omitted, relative links stay text, and relative images load from Host
routes with a sandbox CSP.
2026-10-19 19:13:22 +08:00
imccyu a3debca9ab Revert "feat(gui): 支持图片拖动平移与原图拖放分享" 2026-10-19 18:04:17 +08:00
std4453 54219b6288 Merge pull request #6530 from deepseek-harness/feat/image-pan-and-share
feat(gui): 支持图片拖动平移与原图拖放分享
2026-10-19 18:01:42 +08:00
zhc 54eed06c6f feat(gui): support image panning and original-file drag sharing 2026-10-19 17:43:38 +08:00
Yichen Jiang 81963e0665 Merge remote-tracking branch 'origin/master' into worktree/pi-ai-default-capacities 2026-10-19 17:31:04 +08:00
Yichen Jiang a82c4ccdd0 fix(web): remove obsolete browser clock cleanup 2026-10-19 17:17:41 +08:00
Yichen Jiang f2e0d7db1b feat(llm): raise custom model defaults to 1M context and 128K output 2026-10-19 16:59:30 +08:00
Turtle 378d0c0cc7 Merge pull request #5989 from deepseek-harness/fix/coverage-fork-exit-order
test(ci): scope the fork exit ordering claim and pin the collapse-timing clocks
2026-10-19 16:51:47 +08:00
creatixchu aa52dc48b5 test(cua): assert the replaced runtime service instance 2026-10-19 15:27:05 +08:00
_Kerman d3f486e98e fix(plan-mode): reject requests before guidance is ready 2026-10-19 15:26:30 +08:00
creatixchu 7d6a8f052f feat(cua): add an explicit persistent PTC setting 2026-10-19 15:14:09 +08:00
creatixchu 69f5a19ba7 test(cua): await toggle completion under the browser deadline 2026-10-19 14:30:34 +08:00
creatixchu 1aabce5547 test(cua): await responsive layout before measuring overflow 2026-10-19 13:00:45 +08:00
creatixchu b0e4907b10 test(cua): report permission panel overflow details 2026-10-19 12:58:28 +08:00
creatixchu 029f3d7a43 test(cua): avoid unsafe matcher assignment in preview assertions 2026-10-19 12:12:35 +08:00
creatixchu ba96a9aaea test(cua): restore consent coverage and basic preview expectations 2026-10-19 12:04:57 +08:00
creatixchu 8a90e689d8 Merge origin/master into the basic CUA entry 2026-10-19 11:29:22 +08:00
_Kerman 955e600031 Merge master into session projection registration handles 2026-10-19 11:21:16 +08:00
creatixchu ff2c6bb6be test(cua): observe the PTC provider lifecycle directly 2026-10-19 11:20:28 +08:00
creatixchu d4129cb83c test(cua): compare runtime identities without inspecting service proxies 2026-10-19 11:17:44 +08:00
creatixchu 26282b91d4 test(cua): match existing optional bundle presentation 2026-10-19 11:17:08 +08:00
creatixchu 1954e948cb feat(cua): add optional macOS setup with existing plugin interfaces 2026-10-19 11:10:31 +08:00
Tianyi Cui 36a80c41b3 test(web): explain the adjacent fork clock pins 2026-10-19 03:35:05 +08:00
Tianyi Cui bde18e994e test(web): align fork snapshot clocks 2026-10-19 03:27:12 +08:00
imccyu a8f85009e5 test(web): skip blank bands between fully transparent fold rows
The fold blank matrix counted every band that no row box covered, including
a band whose rows on both sides had already faded to opacity 0. Such a band
shows the same background as those rows. Kept intermediate replies move with
the layout while closing groups stay in place, so that band could exceed the
transient limit in side/composer/steps without any visible difference.

A band now counts when a visible row borders it on either side, with the
viewport top and the composer treated as visible. A synthetic-DOM case keeps
a band beside a visible row failing the measurement.
2026-10-19 01:14:04 +08:00
imccyu 31cca04e6c test(web): expect the 12px reply gap in seeded history
The seeded-history check measured the folded final answer 16px below the Turn control. Hidden process rows separate the two, so the answer now keeps the 12px reply gap.
2026-10-18 23:18:54 +08:00
imccyu c458eab0a0 fix(chat): keep the reply gap on a folded final answer
A folded Turn gave its final answer the control's 16px clearance through
compactAnswer and data-turn-process-answer, because hidden process rows
keep the answer from matching the control's adjacent-row rule. With every
reply kept, the final answer no longer follows the control, so that 16px
only widened the gap above it. In both choices the margin also switched
from 12px to 16px when the closing rows became hidden at the end of a
next-message fold, moving the answer down about 4px.

A reply separated from the control by folded rows now keeps the 12px reply
gap in both choices; only a row directly following the control receives
16px, and no reply changes its spacing when a fold finishes.
2026-10-18 23:01:23 +08:00
imccyu 8598307c1e test(web): cover kept replies and the replies setting
Settings goldens gain the Replies After Collapse row; folded-Turn aria
goldens for plan review, goal turns, and turn-tail actions include their
intermediate replies. The folded layout checks measure the intermediate
reply that now follows the Turn control at the 12px reply gap.
2026-10-18 23:01:23 +08:00
imccyu 586e3a3f59 Merge pull request #6321 from deepseek-harness/worktree-chatwhalepos
feat(ui-chat): anchor running status to the running turn tail
2026-10-18 16:00:42 +08:00
imccyu 11bc10f621 test(web): refresh steering snapshots for the running status position
The running status now renders after the transcript rows and before the
steering echoes that are still waiting, so the mid-steer accessibility
snapshots list the status ahead of the interjection echo. Refreshed with
DSH_SNAPSHOT=refresh on the steering scenarios; no other golden changed.
2026-10-18 15:14:16 +08:00
Tianyi Cui 4d33f27225 Prepare metadata in public library builds 2026-10-18 14:29:23 +08:00
Tianyi Cui bdba350b47 test(auto-review): align Web checks with unified user authority 2026-10-18 11:44:14 +08:00
Tianyi Cui d849cfdd15 test(web): await terminal close before checking process cleanup 2026-10-17 22:43:54 +08:00
Tianyi Cui 64be7f033b docs(web): clarify sidebar hover setup 2026-10-17 22:09:36 +08:00
Tianyi Cui 09b83c3c53 test(web): clear hover before keyboard panel snapshots 2026-10-17 22:09:36 +08:00
Tianyi Cui 6c2c466214 test(web): scope settlement timing to the released question 2026-10-17 22:09:35 +08:00
Tianyi Cui 2f58a68c61 test(web): hold question streaming until the steering snapshot 2026-10-17 22:09:35 +08:00
Tianyi Cui 4edc3e5fcb test: stabilize browser readiness and workflow observations 2026-10-17 22:08:57 +08:00
Dudu-0223 66d9f70255 Merge master and resolve subagent control package metadata 2026-10-17 15:55:44 +08:00
Yudong HanandLegGasai fda98dadd2 feat(web): add DeepSeek Search and Fetch APIs behind a settings switch (#6103)
* fix(web-search-deepseek): disable thinking for auxiliary search requests

The provider discards the generated text of the auxiliary Messages turn,
so reasoning tokens have no consumer. DeepSeek enables thinking by default,
which adds latency and output tokens to every search.

Fixes #6099.

* feat(web): add opt-in traditional Search and Fetch APIs

* test(web): verify API settings persistence and refresh Session evidence

* fix(web): require an explicit Search API base with its route prefix

* docs(web): document direct Search and Fetch API decisions

* fix(web): keep Messages search default behind the new Web Search API switch

- Rename useTraditionalApi/traditionalBaseURL to useSearchApi/searchApiBaseURL and
  label the switch "Use the new Web Search API"; Messages search stays the default.
- Default the Search / Fetch API base to https://api.deepseek.com/v1/tools.
- Authenticate the Search API with an API key only: DeepSeek Account tokens
  returned an empty HTTP 404 on /v1/tools/* when probed on 2026-10-16.
- Remove the count setting, which tool-web's maxResults always overrides, and
  the undocumented DeepSeek-API-Version header.
- Name the active API's base URL field and the current settings path in
  endpoint guidance; re-record the endpoint guidance Session.
- Keep WebFetchResult.statusCode required: DeepSeek Fetch reports HTTP 200 and
  drops the page title, so the fetch-metadata widening and its upgrade guide
  are removed.

* fix(web): accept account sign-in on the live Search API

The public Search and Fetch routes went live on 2026-10-16 and accept the
DeepSeek Account token, so account-route Sessions send it to the Search API
as they do for Messages search, and the settings copy no longer says account
sign-in does not apply.

Record the live behavior in the README and Agent Note: summaries of
1,000-2,300 characters, an HTTP 500 for an unresolvable Fetch target, and
migration notes for gateways without /v1/tools routes. Test doubles now use
the live response fields and RFC 3339 offsets.

* feat(web): configure Search API result count and send the triggering question

- Add web-search-deepseek.count (1-50, default 10, the service default) and
  show it as "Results per search" in Search API mode, where "Max searches per
  request" applies only to Messages; a smaller request maxResults still wins.
- Send the initiating Session's latest human prompt as ori_question, with
  whitespace collapsed and cut to the API's 128-character limit; blank or
  absent prompts omit it, and sendOriginalQuestion: false disables it. The
  settings hint states that the question is sent.
- Match the web search double on the request's query field, since
  ori_question now carries every query in the prompt.

* fix(client): unify web search endpoint override controls

* feat(web): configure registered search and fetch providers through shared settings

* feat(web): include Exa and Perplexity in provider settings

* test(web): cover provider settings branches and refresh plugin snapshots

* revert(web): drop the provider dropdown, schema-driven form, and Exa/Perplexity settings

Revert aed8c5cb609, d88c47dcd80, and 036a5a337d3. The Web search settings
page returns to the DeepSeek toggle; the DeepSeek Search and Fetch API split
is reintroduced as one plugin in the following commit.

* feat(web): move the DeepSeek Search and Fetch APIs into web-deepseek-api

The new web-deepseek-api plugin registers deepseek-search-api and
deepseek-fetch-api over one credential and API base, and exports the
authentication and redirect-rejecting transport that web-search-deepseek now
reuses for Messages search only. The web service reads searchProvider and
fetchProvider for each operation, so the Web search settings switch selects
both APIs together on save and restores Messages search with local HTTP fetch
when turned off. The switch hint links to the DeepSeek search and fetch guide.

* refactor(client): keep the web search endpoint fields on the shared override controls

Drop the always-visible reset and the inherited-address placeholder from the
Web search page, restoring ui-primitives to its base. Each endpoint field shows
the selected section's effective value and offers Reset to default only for an
override, like every other settings field.

* refactor(web): keep Messages search independent of web-deepseek-api

Restore dsh-web-search-deepseek to its own credential and transport code,
keeping only the disabled-thinking request and the current settings guidance,
so the Messages plugin no longer depends on the Search and Fetch API package.
dsh-web-deepseek-api keeps its transport internal; the regions that repeat the
Messages helpers carry jscpd:ignore markers, with the rationale recorded in the
Search and Fetch API Agent Note.

* refactor(web): keep the web-deepseek-api request type module-private

---------

Co-authored-by: LegGasai <[email protected]>
2026-10-17 15:08:08 +08:00
Yichen Jiang 3c937cd0ba feat(web): display a temporary 1017 badge for DeepSeek Flash 2026-10-17 13:33:35 +08:00