Commit Graph
100 Commits
Author SHA1 Message Date
Ziya 075ebbb9f3 Merge pull request #6179 from deepseek-harness/ziya/builtin-plugin-preview-20261014
feat(plugins): 规范内置配图并补充双语语音示例
2026-10-14 02:46:15 -07:00
ZiyaandZiyaZhang ecebe2a2b3 fix(plugin): clarify DSH badge skill descriptions in English and Chinese (#6156)
* fix(plugin): clarify DSH badge skill descriptions

* fix(plugin): remove redundant badge attribution explanation

---------

Co-authored-by: ZiyaZhang <[email protected]>
2026-10-13 19:51:03 -07:00
ZiyaandZiyaZhang 9f5bc9669b fix(schedule): 简化自动化任务标题,去除时间与执行备注 (#6105)
* fix(schedule): keep timing and execution notes out of task titles

* fix(schedule): avoid repeating task title guidance

* fix(schedule): keep title guidance examples in English

---------

Co-authored-by: ZiyaZhang <[email protected]>
2026-10-13 05:38:34 -07:00
ZiyaandZiyaZhang c7d61ecc11 fix(i18n): 补充内置插件中文文案并精简清单展示 (#5506)
* fix(i18n): add Chinese names and descriptions for built-in plugins

* fix(i18n): keep built-in plugin localization metadata-only

---------

Co-authored-by: ZiyaZhang <[email protected]>
2026-10-09 17:18:26 +00:00
Ziya f197d71940 Merge pull request #5921 from deepseek-harness/fix/voice-input-component-labels
fix: localize voice input component names and descriptions
2026-10-09 00:14:36 -07:00
Ziya 640e28cd94 feat(web): reorganize plugin settings and add experimental catalog page (#5922)
Group built-in settings before optional and installed plugins, and open the full experimental catalog on a separate page.

Preserve detail navigation and unsaved configuration when installation finishes, and use the visible More label as the accessible name.
2026-10-08 23:42:56 -07:00
ZiyaandZiyaZhang 398f3f7ee3 fix(web): 弱化并左对齐思考翻译切换按钮 (#5911)
* fix(web): soften and align the reasoning translation toggle

* fix(web): scope translation toggle styles explicitly

---------

Co-authored-by: ZiyaZhang <[email protected]>
2026-10-09 05:57:02 +00:00
Ziya 76a60e0f0c Merge pull request #5891 from deepseek-harness/ux/reasoning-translation-toggle
fix(web): 简化思考原文与译文切换入口
2026-10-08 09:10:35 -07:00
Ziya bb5a418654 Merge pull request #5866 from deepseek-harness/fix/subagent-image-intake-5757
fix(ui-conversation): restore subagent image paste and drop
2026-10-07 21:08:20 -07:00
Ziya 4d59dc2dd6 Merge pull request #5399 from deepseek-harness/demo/plugin-first-ui
feat(web): add Creator entry to the plugin menu
2026-09-29 08:03:23 -07:00
Ziya 95efadbfbd Merge pull request #5413 from deepseek-harness/fix/beginner-mode-choices-20260928
fix(web): 关闭代码工作视图时隐藏开发模式并修正默认预设
2026-09-29 07:54:42 -07:00
Ziya 2bde15f551 Merge pull request #5410 from deepseek-harness/turtle/plugin-upgrade-copy-66fc552187f2
fix(ui-plugin-manager): tell users to reinstall a plugin to upgrade it
2026-09-29 00:00:44 -07:00
Ziya 9b26073eaf Merge branch 'master' into turtle/plugin-upgrade-copy-66fc552187f2 2026-09-28 11:45:51 -07:00
Ziya 5e19099593 Merge pull request #5356 from deepseek-harness/copy/preview-notice-0.2
fix(web): 更新 0.2 中英文预览版说明
2026-09-28 03:37:01 -07:00
Ziya 88967ce80a Merge pull request #5207 from deepseek-harness/ux/automation-tasks-plugin-row
fix(schedule-bundle): name the Plugins row Automation tasks with an alarm clock icon
2026-09-26 06:57:49 -07:00
Ziya d70db1ccfd Merge pull request #5210 from deepseek-harness/fix/plugin-inventory-card-align
fix(ui-settings-plugin-inventory): align and simplify plugin cards
2026-09-26 06:44:15 -07:00
Ziya 7fd5311508 Merge pull request #5212 from deepseek-harness/feat/schedule-bundle-owns-rows
feat(schedule-bundle): insert the Schedule rows from the bundle and list them on its page
2026-09-25 22:17:34 -07:00
Ziya 77f8d83363 Merge pull request #5143 from deepseek-harness/fix/schedule-record-prompt-clamp
fix(ui-schedule): clamp saved prompts in task run records to two lines
2026-09-24 03:07:56 -07:00
Ziya 90e8dfd17f Merge branch 'master' into fix/schedule-record-prompt-clamp 2026-09-24 02:58:29 -07:00
Ziya 60e69cb931 Merge pull request #5113 from deepseek-harness/fix/github-recovery-on-mirror
fix(plugin-manager): offer another way when a GitHub failure already asked the mirror
2026-09-24 01:01:22 -07:00
Ziya e68fb0bc8d Merge pull request #5022 from deepseek-harness/fix/subagent-zh-terminology
fix(i18n): 将 UI「子代理」改为「子智能体」
2026-09-23 17:08:26 +08:00
Ziya 354da32a38 Merge pull request #4979 from deepseek-harness/fix/github-install-connectivity
fix(plugin-manager): fail fast on stalled GitHub connections
2026-09-23 14:38:25 +08:00
Ziya c3afd488aa Merge pull request #4962 from deepseek-harness/ux/plugin-install-20260922
feat(plugin-manager): offer mirror recovery for GitHub install failures
2026-09-23 12:03:47 +08:00
Ziya 20e7407ff1 Merge branch 'master' into ux/plugin-install-20260922 2026-09-22 18:36:24 +08:00
Ziya d7d099c7eb Merge pull request #4772 from deepseek-harness/copy/ptc-description-20260920
fix(web): describe PTC mode by the tasks it suits
2026-09-21 14:19:44 +08:00
Ziya a95dfea48d Merge branch 'master' into copy/ptc-description-20260920 2026-09-21 14:11:33 +08:00
Ziya 63b7a0f7c1 Merge branch 'master' into copy/ptc-description-20260920 2026-09-21 12:53:07 +08:00
Ziya f206efb628 Merge branch 'master' into copy/ptc-description-20260920 2026-09-21 12:38:17 +08:00
Ziya d495b2e5f2 Merge pull request #4718 from deepseek-harness/copy/preset-language-20260920
feat(web): clarify agent presets and add mode guides
2026-09-20 18:19:26 +08:00
Ziya 1f56a2c0e0 Merge pull request #3970 from deepseek-harness/copy/ask-user-skip-20260910
fix(web): 简化提问卡片的中英文跳过文案
2026-09-11 11:54:51 +08:00
c31ac4fdfe feat(web): gate agent preset selection behind a setting (#3870)
* feat(web): gate agent preset selection behind a setting

* refactor(web): trim preset visibility diff

* refactor(web): simplify agent preset selection policy

* test(web): cover agent preset policy branches

* refactor(web): tighten agent preset policy flow

* fix(web): preserve preset default across picker toggle

* docs(web): align agent preset picker docs with the blank-task sync

Both picker transitions carry the effective default to the current blank task; started and historical sessions keep their labels, compositions, and recorded history. The Host README states the client rule and links the Web switch; the Agent Note English side matches the Chinese at line 64. Three i18n pairs re-recorded; doc-sync 34/34.

* refactor(web): simplify agent preset picker policy

* test(web): cover preset policy recovery

* docs(web): clarify disabled preset default copy

* fix(web): reconcile preset policy races

* fix(web): satisfy preset load lint

* fix(web): serialize preset roster refreshes

* fix(web): release preset refresh before notifying waiters

---------

Co-authored-by: ZiyaZhang <[email protected]>
Co-authored-by: Chinesezjc <[email protected]>
2026-09-10 07:48:06 +00:00
Ziya b4c69b0f64 Merge pull request #3337 from deepseek-harness/feat/visualizer-host-plugin
feat(visualizer): add dormant Host capability
2026-09-08 02:54:50 -07:00
ZiyaandZiyaZhang 2480bdf27a feat(web): clarify Workspace Write Chinese label (#3345)
Co-authored-by: ZiyaZhang <[email protected]>
2026-08-31 09:42:16 +00:00
ZiyaandZiyaZhang b565df3442 feat(web): show exact per-turn token usage (#3005)
* feat(web): show exact per-turn token usage

* test(runtime): refresh exact token usage snapshots

* refactor(token-meter): own per-turn usage folding

* perf(ui-chat): bound paging anchor layout reads

* test(web): align usage golden with system prompt row

* fix(test): resolve token-meter client from source

* test(token-meter): cover retry without usage

---------

Co-authored-by: ZiyaZhang <[email protected]>
2026-08-25 19:05:52 +08:00
Ziya f8c0bf9186 Merge branch 'master' into agent/onboarding-modal-flow 2026-08-13 16:40:58 +08:00
Ziya 9f8dfa7fb1 Merge branch 'master' into agent/onboarding-modal-flow 2026-08-13 16:32:47 +08:00
Ziya 101df7cf58 Merge pull request #2409 from deepseek-harness/agent/web-file-reference-prompt
fix(web): guide clickable file references
2026-08-12 23:58:07 +08:00
Ziya 8d8992c1c9 Merge branch 'master' into agent/web-file-reference-prompt 2026-08-12 23:48:30 +08:00
Ziya e5e0b47cf2 Merge branch 'master' into agent/web-file-reference-prompt 2026-08-12 23:19:35 +08:00
Ziya 2a46b6b7b3 Merge pull request #2350 from deepseek-harness/feat/web-plugin-settings-tabs
feat(web): combine plugin settings into tabs
2026-08-12 21:51:24 +08:00
Ziya 85c9aac5e9 Merge branch 'master' into feat/web-plugin-settings-tabs 2026-08-12 21:24:52 +08:00
Ziya f418d534a2 Merge branch 'master' into feat/web-plugin-settings-tabs 2026-08-12 20:23:43 +08:00
Ziya 8019949fc7 Merge branch 'master' into feat/web-plugin-settings-tabs 2026-08-12 18:40:38 +08:00
Ziya 7f058284fa Merge branch 'master' into feat/web-plugin-settings-tabs 2026-08-12 16:54:18 +08:00
Ziya d0ccbd9689 Merge pull request #2285 from deepseek-harness/feat/web-loader-plugin-inventory-settings
feat(web): add read-only Loader plugin inventory
2026-08-12 14:51:13 +08:00
Ziya 5b448ae15f Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 14:35:46 +08:00
Ziya 29a089519d Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 13:53:20 +08:00
Ziya 91305c6240 Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 13:49:57 +08:00
Ziya e568299daf Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 13:29:06 +08:00
Ziya 3ac89bcab5 Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 13:18:28 +08:00
Ziya 91e073e5e1 Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 12:51:46 +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
Ziya dd0898ad9c Merge branch 'master' into agent/black-whale-logo 2026-08-12 00:54:39 +08:00
Ziya 43b66c0a74 Merge pull request #2210 from deepseek-harness/feat/produced-files-folder
feat(web): make produced-file overflow discoverable
2026-08-11 21:45:13 +08:00
Ziya 37cdddd137 Merge branch 'master' into feat/produced-files-folder 2026-08-11 21:36:30 +08:00
Ziya ef565fe7f4 Merge branch 'master' into feat/produced-files-folder 2026-08-11 19:10:11 +08:00
Ziya 540a6b4375 Merge branch 'master' into feat/produced-files-folder 2026-08-11 18:23:31 +08:00
Ziya c92954d930 Merge branch 'master' into feat/produced-files-folder 2026-08-11 17:10:25 +08:00
Ziya 6e573475ec Merge branch 'master' into feat/produced-files-folder 2026-08-11 17:02:30 +08:00
Ziya 21a23db789 Merge branch 'master' into feat/produced-files-folder 2026-08-11 15:43:31 +08:00
Ziya 9903d38cf9 Merge branch 'master' into feat/produced-files-folder 2026-08-11 13:31:29 +08:00
Ziya b0e022c150 Merge pull request #2217 from deepseek-harness/agent/message-feedback-backend
feat(feedback): add durable message feedback backend
2026-08-11 13:29:20 +08:00
Ziya c57221a6b6 Merge branch 'master' into feat/produced-files-folder 2026-08-11 13:25:22 +08:00
Ziya 548b89c3d0 Merge branch 'master' into feat/produced-files-folder 2026-08-11 13:24:43 +08:00
Ziya d78d4a6189 Merge branch 'master' into agent/message-feedback-backend 2026-08-11 13:10:06 +08:00
Ziya 216b5eab42 Merge pull request #967 from deepseek-harness/fix/workspace-context-rendered-change-proof
fix(workspace-context): commit only represented changes
2026-08-10 05:19:17 -07:00
Ziya 45df59391a Merge pull request #1986 from deepseek-harness/fs-overwrite-diff-bound-v2
fix(fs-local): bound overwrite contextual diff bases
2026-08-10 05:18:27 -07:00
Ziya 5cdebcf5f3 Merge branch 'master' into fs-overwrite-diff-bound-v2 2026-08-10 05:10:30 -07:00
Ziya b152a39a58 Merge branch 'master' into fs-overwrite-diff-bound-v2 2026-08-09 01:26:02 -07:00
Ziya 05cbc185f0 Merge pull request #1661 from deepseek-harness/agent/task-surface-rfc
docs: propose Task Surface for structured session interaction
2026-08-08 05:37:01 -07:00
Ziya c5dd429478 Merge branch 'master' into fs-overwrite-diff-bound-v2 2026-08-08 05:17:04 -07:00
Ziya 5f9456c24f Merge pull request #1807 from deepseek-harness/feat/web-inline-file-mentions
feat(web): a prose mention of a produced file opens it
2026-08-08 04:59:16 -07:00
Ziya df2018b3df Merge branch 'master' into agent/task-surface-rfc 2026-08-08 04:49:46 -07:00
Ziya 146c98c9bb Merge pull request #1112 from deepseek-harness/feat/web-workspace-file-links
feat(web): end a turn with the files it produced
2026-08-07 02:27:25 -07:00
Ziya cb6fa78c8a Merge pull request #1533 from deepseek-harness/feat/web-preview-badge
feat(web): add preview badge to empty hero
2026-08-05 23:59:28 -07:00
Ziya 71e8132e76 Merge branch 'master' into feat/web-preview-badge 2026-08-05 23:29:04 -07:00
Ziya 012bc40f04 Merge pull request #1165 from deepseek-harness/agent/fix-remote-welcome-onboarding
fix(web): unblock remote welcome onboarding
2026-08-03 07:20:06 -04:00
Ziya 5d9a4d80e4 Merge branch 'master' into fix/session-waiting-approval 2026-08-03 05:16:42 -04:00
Ziya aaa2102246 Merge branch 'master' into agent/fix-remote-welcome-onboarding 2026-08-03 04:49:00 -04:00
Ziya b6b642fae4 Merge branch 'master' into agent/web-bash-error-expand 2026-08-03 02:30:36 -04:00
Ziya 28721e1dc5 Merge branch 'master' into agent/fix-remote-welcome-onboarding 2026-08-02 23:44:22 -04:00
Ziya 45a59ffa26 Merge pull request #1156 from deepseek-harness/fix/goal-complete-wrapup
fix(tool-goal): deliver a user-facing wrap-up message after goal-round complete/blocked
2026-08-02 11:03:22 -04:00
Ziya 2ef9c6eb41 Merge pull request #1155 from deepseek-harness/feat/web-thinking-tail-scroll
feat(web): follow live reasoning tail while collapsed
2026-08-02 09:27:12 -04:00
Ziya fff0172208 Merge pull request #1125 from deepseek-harness/agent/web-search-timeout-budget
fix(cli): give shipped web search a 60s budget
2026-08-02 05:42:41 -04:00
Ziya 7ba9059056 Merge pull request #1116 from deepseek-harness/agent/fix-frontend-plugin-loader-dependency
fix(cli): point missing frontend dist at full build
2026-08-01 07:40:01 -04:00
ZiyaZhang 8fb6c2bd69 refactor(web): open produced files through the Host, not over HTTP
Scope decision: previews for a browser that is not on the Host machine are
not supported. With that settled, host.openPath answers the supported case
completely — a file:// document in a real browser has full page capabilities
and no reach into /api — and the HTTP serving this branch had built answered
only the unsupported one.

Removed: the /f route and its listener, the workspace-file URL shape,
ApiProxy.workspaceRootOf, ConnectionHandle.fileUrl, and the port published
into the index page.

Kept, and finished:
- the produced-files row a turn ends with, derived from mutation locations;
- the path link now reads as a link at rest, not only on hover — the reported
  "I can't open what it made" was this, sitting on a working capability;
- the Host opener prefers the default BROWSER for .html/.htm/.xhtml/.svg, so
  a developer who binds .html to an editor still gets a rendered page
  (macOS via the LaunchServices https handler, Linux via $BROWSER, every
  failure falling back to the default application).

The retired designs and their measurements stay in the Agent Note, including
why same-origin serving was unsafe and why the sandbox that fixed it broke
the pages invisibly.
2026-08-01 03:15:54 -07:00
ZiyaZhang 59bfe77fb8 feat(web): serve workspace files from their own origin
A sandbox header bought isolation by taking the document's origin away, and
measuring that cost decided against it: the reported artifact throws
SecurityError on load, and because an uncaught exception aborts the rest of
its <script>, every listener declared after that line — theme toggle, mobile
menu, model tabs — never binds. Two of the four artifacts in the reporting
user's workspace were dead pages under it, and they still looked right.

A second listener on the API's host, answering /f and nothing else, is the
same boundary without the amputation: cross-origin to /api (refused by the
Origin fence and by CORS), same-origin with itself (localStorage, cookies and
fetch all work). Its port is published into the index page; the browser half
reads it to address previews, and its absence — the keyless fixture lane — is
what makes a file row fall back to the Host opener instead of a dead tab.

fileUrl moves from IWorkspaces to ConnectionHandle: the transport owns both
the listener that serves the bytes and the port that addresses it.
2026-08-01 02:17:25 -07:00
Ziya de520bee24 Merge pull request #1113 from deepseek-harness/agent/web-math-rendering
feat(web): render TeX math in Markdown
2026-08-01 05:04:40 -04:00
ZiyaZhang 1082518520 Merge remote-tracking branch 'origin/feat/web-workspace-file-links' into feat/web-workspace-file-links 2026-08-01 01:08:51 -07:00
ZiyaZhang dcf485ac5c fix(web): address the review of the workspace-file route
Isolation is restored on the premise the review corrected: a workspace file
need not be agent-authored — a read row makes every file in a cloned
repository openable — and a same-origin active document was measured driving
/api/settings.describe to a 200 with full data. Script-capable documents go
back into an opaque origin; the preview's lost localStorage is the known cost,
and a separate serving origin is the way to retire it.

- confine(): a workspace rooted at a filesystem root has a realpath already
  ending in the separator, and the doubled prefix 403'd every child.
- turnDeliverables(): reset on the turn boundary, not only at a closing
  assistant, so an interrupted turn cannot spill into the next turn's row;
  and recognize a mutation by render intent (diff card, or generic with
  kind 'edit') so str_replace_editor's insert counts.
- 405 answers name the methods it allows.
- The e2e now cold-seeds a recorded WRITE turn, so the assembled application
  covers the Produced row, its chip's served URL, and the isolation header.
- Agent Note matched to what shipped (the row is in this PR, not deferred);
  ui-conversation README documents the new destination and the row; the
  fixture lane's dead-tab quirk and the cold-path listing cost are recorded.
2026-08-01 01:08:16 -07:00
Ziya 225d1327c2 Merge branch 'master' into feat/web-workspace-file-links 2026-08-01 03:05:07 -04:00
ZiyaZhang f5d53f04b7 cleanup(web): stop sandboxing served workspace documents
A preview lost localStorage and cookies under CSP sandbox — measurably, the
reported artifact throws SecurityError on load and its theme toggle goes
dead. The capability the sandbox denied is one the file's author, an agent
already holding this user's shell, never needed the browser for, so the
header sat behind a trust boundary it had already crossed.

Isolating a preview becomes a real question when workspace content stops
being the viewer's own; the answer then is a separate origin, not a header.
2026-07-31 23:20:36 -07:00
Ziya 67b166b928 Merge pull request #1096 from deepseek-harness/fix/web-fork-interrupted-seq
fix(client): floor the fork anchor to a real event seq
2026-08-01 02:09:06 -04:00
ZiyaZhang 35e9122a65 feat(web): list a turn's produced files under its closing message
The paths come from the mutation tools' follow-along locations, not from the
closing prose, so a turn's output is listed whether or not the model named
it. Each chip opens through the same openFile the tool rows use.

Reads contribute nothing (looking at a file does not produce it), a failed
mutation contributes nothing, a file touched twice is one entry, and the row
shows six with an explicit remainder rather than burying the answer.
2026-07-31 22:13:34 -07:00
ZiyaZhang 00390ae851 feat(web): open a produced file from the conversation
Serve one file at a time out of a Session's workspace under /f on the web
transport, and point the conversation's existing file-open affordance at it.
Clicking a write/edit/read row's path now opens that file in a browser tab —
including from a LAN client, where the Host's system opener is fenced to
loopback and answered nothing.

- /f/<sessionId>/<segments> in client-connection, behind the same
  browser-trust fence as /api; realpath confinement, streamed reads,
  GET/HEAD only, nosniff + no-store.
- Script-capable documents carry CSP sandbox: model-authored markup must not
  be same-origin with /api, where events.mux is a readable GET stream.
- ApiProxy.workspaceRootOf answers where a Session's files live without
  resuming an agent; the client program cannot reach the core services.
- The /f URL shape lives in dsh-host-apiproxy/api so both ends share one
  encoding (client bundles may not value-import another plugin).
2026-07-31 12:07:43 -07:00
Ziya 3a01dc814e Merge pull request #1088 from deepseek-harness/agent/web-context-injection-auto-height
fix(web): let context injection cards fit content
2026-07-31 09:28:45 -04:00
ZiyaZhang 344ad0d6fb fix(client): floor the fork anchor to a real event seq
The fork button on a stopped assistant message was inert. Frozen
interrupted nodes carry a flow-ordering seq of turnEnd.seq - 0.9, and
session.fork takes a non-negative integer on the wire, so every such
request was rejected as invalid-params before reaching the host — where
an aborted turn's logged turn/end has always made it forkable.

SessionsService.fork floors atSeq at the wire boundary. Flooring stays
inside the anchor's own turn (every turn opens with turn/start), so the
host's first-turn/end-at-or-after cut still closes on that turn.
2026-07-31 05:41:45 -07:00
Ziya 9b1486f90f Merge pull request #1078 from deepseek-harness/fix/web-turn-error-surface
fix(web): surface terminal turn failures
2026-07-31 07:23:09 -04:00
Ziya 9473951c79 Merge branch 'master' into fix/web-turn-error-surface 2026-07-31 07:13:02 -04:00
Ziya 4f13ce7b7f Merge branch 'master' into fix/web-turn-error-surface 2026-07-31 07:07:05 -04:00