Commit Graph
768 Commits
Author SHA1 Message Date
Saafo 5a028f151c 🔀 merge master into narrow settings pages 2026-10-21 14:29:12 +08:00
Turtle c7be617437 Merge remote-tracking branch 'origin/master' into turtle/plugin-sentence-case-299acab3ee89
# Conflicts:
#	packages/experimental/cua/src/application-access.ts
2026-10-21 13:28:18 +08:00
Turtle b9d049d041 fix(plugins): use sentence case for built-in plugin English copy
Refs #6790
2026-10-21 11:28:26 +08:00
creatixchu 96e962bc12 Merge remote-tracking branch 'origin/master' into feat/cua-approval-format
# Conflicts:
#	packages/experimental/cua/src/client/mount.ts
2026-10-20 21:05:45 +08:00
creatixchu e77640f24d test(web): align plugin snapshots with persistent progress status 2026-10-20 20:17:53 +08:00
creatixchu 6172b26cab test(cua): cover wrapped loading and persistent diagnostics during row changes 2026-10-20 20:17:53 +08:00
creatixchu b6ea723e9e test(cua): isolate toggle regression from consent storage changes 2026-10-20 20:17:31 +08:00
Saafo 5c12422a52 🐛 fix(client): preserve settings navigation and narrow desktop layouts 2026-10-20 18:07:52 +08:00
Zrs000 aeb71f1061 feat(web): reflow the Settings panel at narrow widths
Below 768px the panel fills the viewport and the rail becomes the horizontal
section strip the Web product uses: the title shares the first row with the
header actions and close control, the registered section cells scroll sideways
on the second, and the active section fills the rest. Cells keep their labels
whole and the strip scrolls instead of truncating, so a registrant's label
length or a longer section roster cannot wrap or clip a name.

The panel places its four seats (title, header, navigation, options) on one
grid, so the desktop rail keeps its 188px track and 64px first row. Preference
rows drop their 48px control gutter and the Appearance cubes share one row at
that width.
2026-10-20 18:07:51 +08:00
Stevring b7d8943cfa Merge origin/master into fix/touch-tooltip-interactions 2026-10-20 17:12:10 +08:00
imccyu 14e5add505 Merge master into DSH 0.2.1 entry customization synchronization branch
Bring master 45d1196d3fe into the release/dsh-0.2.1 squash commit of #6247
so the release commit stays an ancestor of master.

Conflict resolutions:
- apps/web/tsconfig.json, tsconfig.host.json: keep the entry-customization
  e2e and master's Computer Use e2e entries.
- docs/subsystems/slots.{md,zh.md}: keep both added paragraphs; re-record the
  slots, ui-primitives, and ui-workspace README translation pairs.
- ui-sidebar SidebarRoot.tsx and locales.ts: keep the More menu imports and
  copy next to master's version-copy toast.
- apps/web/tests/agent-preset-selection.e2e.ts: keep the New Session
  blank-reuse assertions, read presets through master's
  sessionProjections.checkpoint() instead of the deprecated stateOf().

Follow-ups on master's side:
- ui-sidebar sidebar-root spec: give master's version-copy render the entry
  pin props that SidebarRootInjected now requires.
- snapshots/web/steering/trajectory.expected.md: add the More conversation
  views trigger to master's new Trajectory golden.
2026-10-20 15:47:29 +08:00
5ff29190ed feat(ui): add navigation entry customization (#6247)
* fix(ui): avoid tooltip trigger overlap when a side fits

* feat(ui): add navigation entry customization

* fix(test): keep tooltip geometry independent of JSX types

* fix(ui): align customization catalogs and integration fixtures

* test(ui): complete customization lifecycle and release integration coverage

* fix(ui): return entry discovery to the installed plugin list

* docs: refresh module graph for entry customization

* build: refresh workspace links for the moved entry customization package

* docs: regenerate catalogs and pairing hashes for the moved entry customization package

* test(web): cover default-loaded entry customization in the Web e2e

* test(ui): describe entry customization as a browser plugin in the host entry spec

* build: order entry customization publication files as workspace constraints require

* test(release): drop the moved entry customization package from the experimental family list

* style(ui): use the shared focus ring color on entry customization triggers

* test(web): re-record goldens for the default-loaded More navigation menus

* test(web): add the More conversation views trigger to the remaining CI-reported goldens

* docs: record region-owned pins for plugin entry customization

* refactor(ui): rebuild entry customization on region-owned pins and More menus

- Each navigation region (left sidebar, Conversation header, right sidebar
  guide) persists its own unpinned list under
  dsh.slot.manual-order.<list slot key>.v1, filters its own launchers, and
  draws its own More button and Menu around its actions slot.
- ui-entry-customization only registers the shared menu rows (entries with
  pin buttons, Browse other plugins, Create your plugin) into the three
  actions slots and keeps no state.
- Remove ctx.layout.entryVisibility, the plugin store, left-sidebar drag
  reordering, and agentPresetNavigation; ui-layout and ui-agent-preset match
  release/dsh-0.2.1 again.
- Keep the release <nav> and Conversation tab-bar visibility conditions.
- Move the More glyph into ui-primitives as IconAppsAddOutline{Regular,Medium}.

* docs: compile the entry customization owner props example

* docs(ui): describe the wrapping Conversation tab row in the header comment

* fix(ui): return New Session to the Workspace blank and its unsent draft

- New Session (startSession without options) takes the blank-reuse path
  again instead of creating a fresh Session on every call, which hid the
  previous blank and its unsent draft since a5c9c2aaeef (#5775).
- A request that names an Agent preset skips blanks listing a different
  preset, so Creator entries no longer take over an ordinary draft.
- Record the change in a v0.2.1-rc.2 upgrade guide; the Host refresh of a
  stale loaded blank stays deferred (see the Agent Note).

* docs: regenerate the Cordis inspect catalog for New Session blank reuse

* fix(ui): keep the selected entry visible while unpinned

- Left-sidebar rows and View tabs keep the selected entry, with aria-current or aria-selected, until another entry is selected.
- Entry menu Creator action takes no region argument; the registration's region selects the prompt.
- Document the 2px panel-row and 32px View-tab gaps; drop commit hashes from the New Session Agent Note.

* fix(ui): leave a blank of another preset unstaged when starting Creator

startCreatorDraft stages cordis only when the main blank lists no preset or already lists cordis; navigation opens a separate Creator blank otherwise, so a Standard draft blank keeps its preset.

* feat(ui): choose whether a draft prompt replaces, appends to, or keeps an existing draft

- DraftInitializationOptions gains whenDraftExists ('replace' | 'append' | 'keep', default 'keep'); clearPreviousDraft stays and maps to 'replace' only when whenDraftExists is omitted.
- Append adds the prompt as new paragraphs after the existing text and references; attachments stay in every mode.
- The three Create your plugin entries append their regional prompt.

* test(web): align e2e with New Session blank reuse and the visible selected entry

* refactor(ui): share the draft paragraph writer between setDraft and appendDraft

---------

Co-authored-by: Yif <[email protected]>
Co-authored-by: imccyu <[email protected]>
2026-10-20 15:17:13 +08:00
Yichen Jiang 27c1b4c56f Merge pull request #6649 from deepseek-harness/xtr/fix-trajectory-input-order
fix(web): 修复停止补发后轨迹中的输入顺序
2026-10-20 15:14:49 +08:00
Stevring dbb0d2bd83 Merge origin/master into fix/touch-tooltip-interactions 2026-10-20 14:34:15 +08:00
Turtle 8114a96ae4 Merge pull request #6623 from deepseek-harness/turtle/experimental-plugin-details-all
docs(experimental): add illustrated detail documents to the remaining experimental plugins
2026-10-20 14:11:59 +08:00
creatixchu e4b08c51d5 test(approval): refresh localized shortcut reference snapshots 2026-10-20 13:30:56 +08:00
creatixchu 6f6f889c95 Merge remote-tracking branch 'origin/master' into feat/cua-approval-format 2026-10-20 13:05:27 +08:00
Stevring 94ffdd2377 fix(client): align touch tooltips and hover affordances 2026-10-20 12:50:31 +08:00
CreatixChu 082e4c3c3e Merge pull request #6653 from deepseek-harness/worktree/experimental-cua
fix(web): 将 CUA 移到实验性插件二级页并添加标签
2026-10-20 12:50:09 +08:00
Turtle 5c4c743ff3 Merge pull request #6300 from deepseek-harness/turtle/model-picker-defaults-c7775e2d3040
feat(ui-settings-models): open model picker on the configured models
2026-10-20 12:17:05 +08:00
creatixchu 968ceefd22 test(web): update CUA secondary-page expectations 2026-10-20 12:16:39 +08:00
_Kerman bb2a0197d4 fix(trajectory): preserve request prompt update ordering 2026-10-20 12:06:14 +08:00
creatixchu b63de2f36e Merge master into application approval format 2026-10-20 11:42:54 +08:00
creatixchu 948f411a70 feat(cua): present application consent with fixed approval actions 2026-10-20 11:40:17 +08:00
Yichen Jiang 32f4993cd6 Merge pull request #6628 from deepseek-harness/worktree/session-item-trailing-slot
feat(web): add trailing icon slots to session rows
2026-10-20 10:46:10 +08:00
Yichen Jiang 83ec1b3658 fix(web): preserve session row details across pointer and touch input 2026-10-20 10:29:22 +08:00
fz b88a1c2d14 Merge pull request #6351 from deepseek-harness/fix/sdk-desktop-alignment
fix(sdk): 补齐桌面工具、上下文和原生问答
2026-10-20 01:24:13 +08:00
turtle1999 116438bcd1 docs(experimental): add illustrated detail documents to the remaining experimental bundles
Ten experimental bundles get a user-facing detail document in English and Chinese. Each starts with one 640x300 SVG feature illustration drawn to the plugin preview standard, then covers how to use the plugin and what to know before turning it on.
2026-10-19 23:50:17 +08:00
Turtle c9eb8e9349 Merge pull request #6605 from deepseek-harness/turtle/experimental-plugin-details
refactor(plugin-manager): show built-in feature previews through bundle detail documents
2026-10-19 23:23:16 +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
turtle1999 3be4701a9d refactor(plugin-manager): show built-in feature previews through bundle detail documents 2026-10-19 22:04:01 +08:00
creatixchu 14a422021e Merge origin/master into feat/cua-basic-onboarding 2026-10-19 21:53:59 +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
fz 1861316e74 fix(sdk): defer harness development context alignment 2026-10-19 16:59:40 +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
creatixchu 7d6a8f052f feat(cua): add an explicit persistent PTC setting 2026-10-19 15:14:09 +08:00
fz 1781189c31 test: sync desktop context and delivery prompt expectations 2026-10-19 12:07:48 +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 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
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 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
Turtle cd77df1e7b Merge remote-tracking branch 'origin/master' into turtle/model-picker-defaults-c7775e2d3040 2026-10-18 15:00:16 +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
Dudu-0223 4df09d37d5 refactor(subagent): register shared control tools together 2026-10-17 13:28:17 +08:00