Commit Graph
6103 Commits
Author SHA1 Message Date
Turtle e1a11ef09c Merge pull request #6222 from deepseek-harness/turtle/auto-review-cache-ffc00f27f914
fix(auto-review): keep review requests cacheable across calls
2026-10-20 18:05:26 +08:00
imccyu cc724905a2 Merge pull request #6658 from deepseek-harness/feat/pwa-install-assets
feat(web): ship PWA install icons and standalone metadata
2026-10-20 16:31:07 +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
EricMoin 7bc928c449 fix(web): strengthen install icon validation 2026-10-20 15:06:37 +08:00
EricMoin b9e4a29210 fix(web): preserve detail in install icon exports 2026-10-20 14:35:00 +08:00
Turtle 62e5926995 Merge pull request #6583 from deepseek-harness/turtle/copy-version-click-5d1aa11ad7b6
feat(web): copy the local-build version from the sidebar brand
2026-10-20 14:15:39 +08:00
Turtle c3e9b28845 Merge pull request #6354 from deepseek-harness/agent/web-fetch-fakeip-469be4db70d0
fix(web)!: let web_fetch reach non-public destinations
2026-10-20 14:13:24 +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
EricMoin 2138243df1 Merge branch 'master' into feat/pwa-install-assets 2026-10-20 14:10:47 +08:00
Yudong Han 5ef6d14b9b Merge pull request #6381 from deepseek-harness/feat/web-search-summary
feat(web): web_search 向模型提供 Search API 长摘要
2026-10-20 13:11:00 +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
yudshj e715991ab9 feat(web): give the model Search API summaries
The DeepSeek Search API returns a short `snippet` for display and a longer
`summary` written for model reading. Carry `summary` on `WebSearchSource`,
map it from the Search API, and render it in place of the snippet in
`web_search` output while the search card keeps the snippet.

`tool-web` collapses summary whitespace and caps each summary at the new
`searchSummaryMaxChars` setting (800 characters by default, the upper end of
the guide's typical range; live summaries measured 1,000-2,300). The cut keeps
surrogate pairs intact and ends in an ellipsis. The PTC tool output type gains
the optional field, so the affected system-prompt sidecars are refreshed, and
the web search round now exercises a multi-line summary.
2026-10-20 12:46:14 +08:00
Turtleandturtle1999 2f01ad549c fix(web)!: let web_fetch reach non-public destinations
The HTTP fetch provider resolved each hostname, rejected any non-public
answer, and pinned the connection. That refused every page behind
TUN-mode proxies with fake-IP DNS and did not confine a model that has
shell network access. Requests now go through the installed proxy
dispatcher and the system resolver with no address restriction.

HttpFetchResolver and the HttpFetchProvider resolver parameter are
removed; the upgrade guide covers the migration.

Co-authored-by: turtle1999 <[email protected]>
2026-10-20 12:44:14 +08:00
Turtle 2e527ca6f7 Merge pull request #6616 from deepseek-harness/turtle/session-search-id-7fe29ff5a47d
feat(client): 侧边栏搜索匹配 session id
2026-10-20 12:39:37 +08:00
Turtle 40e4107e25 Merge pull request #6577 from deepseek-harness/turtle/worktree-file-link-131c0891e002
fix(ui-chat): open relative file links from the current working directory
2026-10-20 12:38:52 +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
creatixchu d779dda9ab fix(web): move CUA to experimental plugins page 2026-10-20 12:16:39 +08:00
creatixchu cc2caf9631 test(web): assert experimental labels for each offered bundle 2026-10-20 12:16:12 +08:00
creatixchu 91c4ed3cd6 test(web): open workspace picker through the sidebar action 2026-10-20 12:10:07 +08:00
_Kerman bb2a0197d4 fix(trajectory): preserve request prompt update ordering 2026-10-20 12:06:14 +08:00
creatixchu f305312e84 refactor(web): classify experimental badges with an explicit list 2026-10-20 12:05:57 +08:00
EricMoin 63b3d2ce4d test(web): remove native icon test decoding 2026-10-20 12:01:49 +08:00
EricMoin 5a31bcc3e0 feat(web): ship launcher-ready install icons
A launcher masks the icon it puts on the home screen, and the install manifest
advertised the bare whale favicon: an SVG mark drawn edge to edge on a
transparent canvas, with no tile and no background of its own. Handed to a
mask it loses its fins, and iOS reads no manifest icon at all, so an installed
Web App showed a generic tile.

Ship four rasters rendered from the desktop application tile: 192px and 512px
`any`, a 512px `maskable` whose artwork is scaled into the circle a platform
mask is guaranteed to show, and a 180px `apple-touch-icon`. Request
`display: standalone` so the phone keeps its status bar, and declare `png` in
the static MIME table so a launcher receives an image.

Agent Note: .agents/notes/implemented/feature/2026-10-13-web-install-icons-and-launch-display.md
2026-10-20 11:58:08 +08:00
_Kerman 7e405ec818 chore: drop unrelated browser harness documentation edits 2026-10-20 11:51:15 +08:00
_Kerman 4aaaec34ef test(web): pin trajectory preview workspace path length 2026-10-20 11:46:32 +08:00
Yichen Jiang f5f60ac47a Merge pull request #6418 from deepseek-harness/worktree/session-agent-controller-refactor-ff892d
feat(agent): admit Web prompts through the agent controller
2026-10-20 11:43:45 +08:00
_Kerman f56820cabf fix(web): preserve consumed input order in trajectory steps 2026-10-20 11:31:48 +08:00
imccyu 07a4a1713a Merge pull request #6618 from deepseek-harness/worktree-pluginassets
feat(client): serve plugin package assets by URL instead of data URLs
2026-10-20 10:51:26 +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
imccyu 8965a798c6 test(web): assert scroll continuity when folding an opened process group
Refs #6637
2026-10-20 02:35:11 +08:00
imccyu c1d9f141b9 feat(client): resolve package assets through require.asset so the WebWorker preview can map them 2026-10-20 02:14:33 +08:00
imccyu 43a80da55c Revert "feat(webworker-packer): serve package assets beside the preview page"
This reverts commit 6e28e787d564ee4933f7a560808fb05ed635e776.
2026-10-20 02:14:32 +08:00
imccyu 18065b8178 fix(client): follow master's plugin detail previews after rebase 2026-10-20 02:14:32 +08:00
imccyu 508567de89 feat(webworker-packer): serve package assets beside the preview page 2026-10-20 02:14:31 +08:00
imccyu ce84953e46 feat(client): serve plugin package assets by URL instead of data URLs 2026-10-20 02:13:37 +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
Yichen Jiang fdf14b2bc9 docs(web): clarify session row slots and keyboard limits 2026-10-20 00:05:47 +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
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
Yichen Jiang 55d00a08fc Merge remote-tracking branch 'origin/master' into worktree/session-agent-controller-refactor-ff892d
# Conflicts:
#	docs/capability-seams.i18n.yaml
2026-10-19 22:34:29 +08:00
Yichen Jiang 1d51715aca Merge remote-tracking branch 'origin/master' into worktree/session-agent-controller-refactor-ff892d
# Conflicts:
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	docs/persistence-catalog.i18n.yaml
#	docs/persistence-catalog.md
#	docs/persistence-catalog.zh.md
#	docs/persistence-schema.json
#	packages/api/session-controller/README.i18n.yaml
#	packages/api/session-controller/tests/commands-upload-file.host.spec.ts
#	scripts/gen-cordis-catalog.ts
2026-10-19 22:25:55 +08:00
Turtle 5e99b92884 test(web): cover session id search in navigation e2e 2026-10-19 22:06:42 +08:00
turtle1999 3be4701a9d refactor(plugin-manager): show built-in feature previews through bundle detail documents 2026-10-19 22:04:01 +08:00