Commit Graph
13134 Commits
Author SHA1 Message Date
Yudong Han f65c15a5cf feat(preview): unify document zoom controls (#4785) 2026-09-21 10:49:45 +00:00
Yudong Han d0ddf939f0 refactor(office): transfer PDFs as multipart bytes (#4830)
* refactor(office): transfer PDFs as multipart bytes

* fix(document-preview): address Office review feedback
2026-09-21 10:30:10 +00:00
Turtle 601d6761e4 feat(settings): project volatile Config through profile-backed forms (#4587) 2026-09-21 18:26:03 +08:00
Jiawei Song 08653de38a Merge branch 'master' into fix/4670-review-tab-scroll-and-filename 2026-09-21 17:59:51 +08:00
sjw1231 5847ff8721 chore: merge master into review tab fixes 2026-09-21 17:58:14 +08:00
07akioni 535cb4aae3 fix(telemetry): isolate collector transport and address review 2026-09-21 17:45:19 +08:00
07akioni 8b89200324 Merge remote-tracking branch 'origin/master' into otel/product-telemetry 2026-09-21 17:33:03 +08:00
Yichen Jiang b2db503913 Merge pull request #4458 from deepseek-harness/feat/plugin-detail-slots
feat(web): open plugin detail-page slots and move official settings pages to companions
2026-09-21 17:30:26 +08:00
Turtle 4eb26f0e71 feat(cli): export JSON Schema for Cordis configuration (#4705)
* feat(cli): dump native Cordis config schemas

* test(cli): include schema dump in launcher help snapshot

* feat(cli): export JSON Schema for Cordis configuration

* fix(cli): preserve config schema discovery and annotations

* fix(cli): conservatively project effectful config validation

* refactor(boot): encapsulate profile config schema generation

* fix(cli): follow Loader disabling and native writeback in config schema

- Dormant group/include rows (disabled without group: true) may omit
  config and are recorded as childless trees; the entry schema skips
  their child declarations, matching the Loader, which never creates them.
- Lazy builders run once per document, and a wrapped null-only projection
  keeps a deduplicated type list so the document stays compilable.
- Union widening applies only when an earlier branch can write adapted
  values back through a container; +Infinity max and -Infinity min
  without a step are treated as the native no-ops they are.
- Projection limitations repeat at every entry sharing a Config, and the
  entry schema documents the boolean/expression domain of disabled.
- Record the schema-dump validation policy as an Agent Note.
2026-09-21 09:19:24 +00:00
Yichen Jiang aba8b3a29f Merge remote-tracking branch 'origin/master' into feat/plugin-detail-slots 2026-09-21 17:15:10 +08:00
Yichen Jiang 4b54e59a52 Merge pull request #3127 from deepseek-harness/worktree/job-kill-delivery
feat(jobs): human job kill, timeout promotion, and workflow run_in_background
2026-09-21 17:13:28 +08:00
Yichen Jiang 873140cff3 test(web): follow master's slot fixture and cast rules after the merge
The Plugins page spec's configuration bodies take the view positionally
as master's fixture does, the companion and section specs read a slot
entry's injected face through a Pick of the members they assert instead
of a double assertion, and the no-unknown-casts baseline drops the
entries retired with the moved settings tests.
2026-09-21 17:13:17 +08:00
Yifffan f33b604ca2 Merge pull request #4786 from deepseek-harness/fix/4781-dedupe-open-with-apps
fix(native-command): macOS「从应用打开」菜单去重
2026-09-21 17:05:06 +08:00
Yudong Han 5b4ca4a29e Merge pull request #4808 from deepseek-harness/fix/pr4346-spreadsheet-review
fix(preview): harden spreadsheet conversion
2026-09-21 17:01:28 +08:00
Yichen Jiang ecb66a3497 Merge remote-tracking branch 'origin/master' into feat/plugin-detail-slots
# Conflicts:
#	.agents/notes/implemented/architecture/2026-09-16-plugin-configuration-on-the-plugins-page.i18n.yaml
#	.agents/notes/implemented/architecture/2026-09-16-plugin-configuration-on-the-plugins-page.md
#	.agents/notes/implemented/architecture/2026-09-16-plugin-configuration-on-the-plugins-page.zh.md
#	apps/web/tests/expected/plugin-config/row.expected.md
#	apps/web/tests/fixtures/plugins/fixture-live-client/client.js
#	apps/web/tests/plugin-config.e2e.ts
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/bundle/web-app/package.json
#	packages/client/ui-plugin-manager/README.i18n.yaml
#	packages/client/ui-plugin-manager/README.md
#	packages/client/ui-plugin-manager/README.zh.md
#	packages/client/ui-plugin-manager/src/client/PluginManagerPage.tsx
#	packages/client/ui-plugin-manager/src/client/index.ts
#	packages/client/ui-plugin-manager/src/client/slot-contract.ts
#	packages/client/ui-plugin-manager/tests/components.client.spec.tsx
#	packages/client/ui-settings-plugins/README.i18n.yaml
#	packages/client/ui-settings-plugins/README.md
#	packages/client/ui-settings-plugins/README.zh.md
#	packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
#	pnpm-lock.yaml
2026-09-21 16:59:17 +08:00
Yichen Jiang 131fb841f2 Merge remote-tracking branch 'origin/master' into worktree/job-kill-delivery
# Conflicts:
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
2026-09-21 16:39:19 +08:00
07akioni 3a3422f517 Merge remote-tracking branch 'origin/master' into otel/product-telemetry 2026-09-21 16:34:37 +08:00
Yichen Jiang 0659ded55b refactor(job-controller): drop the subagent ownership fence from job.kill
The registry's owner fence is the only access rule for a human kill: a job
is killable by the session whose list carries it, and a child session's own
jobs are no exception. The fence had pulled two implementation helpers out
of the Session Controller's package entry (plus a safe-host-export exception
for them) so the job controller could import them; both go, and the job
controller no longer depends on the agent registry or the Session Controller.
2026-09-21 16:34:15 +08:00
07akioni 910d52f717 feat(telemetry): add explicit product event OTLP exporter 2026-09-21 16:28:18 +08:00
Jiawei Song 9e87907849 Merge branch 'master' into fix/4670-review-tab-scroll-and-filename 2026-09-21 16:27:08 +08:00
Yif b631804d2b Merge remote-tracking branch 'origin/master' into fix/4781-dedupe-open-with-apps 2026-09-21 16:25:47 +08:00
Turtle d1e22a7e24 feat(preset): declare Agent compositions in profile YAML (#4569)
* feat(preset): declare Agent compositions in profile YAML

* fix(preset): share scope binding cleanup and refresh module graph

* fix(preset): use host syntax colors in the YAML editor

* fix(preset): write new profile declarations as block YAML

* fix(preset): align eager activation with browser and worker surfaces

* fix(ui-agent-preset): retain the existing preset card layout

* fix(preset): keep rows waiting for a Host service mounted and re-audit after settlement

A preset row whose Host provider was still activating at declaration time
was reported as waiting for a missing service, and the registry recorded the
definition as broken for the rest of the process. Split the mount audit into
failed and pending rows: failures and root-realm leaks still reject the
mount, while pending rows stay mounted and every read and binding re-audits
them after the Host Loader tree settles.

Remove the accidental self-dependency of @deepseek-ai/dsh-web-app and its
lockfile self-link. Archive the copy-only preset authoring note, which the
declarative-preset note fully supersedes, and update the ralph note's
restore recipe to the profile-patch mechanism.

* chore(lint): re-key and prune the unknown-cast baseline after the master merge

* refactor(web-app): ship each Agent preset as its own bundle patch file

`dsh.bundle.patch` accepts an ordered file list, so the four shipped preset
declarations move out of the 1000-line web patch into
`presets/<id>.patch.yml`, one insert per file, applied after the host patch.
The host patch keeps the preset registry row. Gates and test scaffolds that
read the web layer resolve every patch file through `bundlePatchPaths`
instead of one hardcoded path.

* refactor(preset): drop the save notice injected into live Agents

The notice duplicated the save result the Web editor already shows, and
after the producer-owned message sources it would have needed its own
persisted source kind. Saving now only persists and reports the activation
diagnostic; the persistence catalog is unchanged from master.

* docs: regenerate the module graph after dropping the registry's llm dependency

* test(ui-agent-preset): cover the guide dialog's keyboard handling on the declarative section

* fix(preset): address the remaining review comments

Apply the lowercase id rule only when creating a declaration, so presets
declared with other ids stay editable. Export `isBuiltInPreset` from the
display fold and key the client card groups on it. Remove the dead `error`
and `retry` locale keys, the JSDoc orphaned by the `trust` removal, the
`trust` fields in the plugin-inventory test fixtures, and the stale
`dsh-agent-presets` package name in comments and READMEs.

* refactor(preset): make the Web preset page view-and-select only

Remove the child-plugin YAML editor, the `agent_preset` tool and the
registry's read/save Remote methods. Presets are declared and changed only by
bundle patches; the settings page keeps the roster, the new-task default and
the mode help, and its question icon explains that and offers to start a
Creator-mode task. The `editing-cordis-compositions` skill and the Creator
persona describe the bundle-based path, and the authored skill-load Session
and Web snapshots are refreshed for it.

* docs(skill): make the composition skill self-sufficient for preset authoring

State where the shipped declarations live, list every declaration field,
inline a complete minimal bundle and an override example, and name the
verification calls, so Creator mode no longer reads DSH package sources to
infer the format. Refresh the authored skill-load Session for the new text.

* test(tools): drop the removed agent_preset tool from the catalog expectation
2026-09-21 08:24:18 +00:00
Turtle 933d3bf39e Merge pull request #4784 from deepseek-harness/turtle/chip-model-truncate-4889eecc8358
fix(web): collapse model text when composer controls cannot fit
2026-09-21 16:20:18 +08:00
sjw1231 6340df605d refactor(client): share file tree path labels and improve review tests 2026-09-21 16:19:56 +08:00
Yichen Jiang 2bba702a6e Merge remote-tracking branch 'origin/master' into worktree/job-kill-delivery 2026-09-21 16:14:21 +08:00
Yichen Jiang 7a29f57199 chore(session-controller): drop the leftover dsh-jobs type import
The import came with the session.killJob Remote that later moved to the
job controller; nothing in this package reads ctx.jobs any more, and the
package declares no dependency on the seam.
2026-09-21 16:12:14 +08:00
Yif 3cab7723e4 fix(native-command): validate macOS grouping fields without an unsafe any 2026-09-21 16:12:09 +08:00
Turtle 4a2b8486da Merge master to resolve PR #4784 conflicts 2026-09-21 16:11:41 +08:00
sjw1231 02a0c70662 fix(ui-deliverables): preserve review fixes in shared file diff 2026-09-21 16:01:02 +08:00
yudshj 57bcfac402 Merge remote-tracking branch 'origin/master' into web/excel-frontend-preview 2026-09-21 15:54:49 +08:00
Yichen Jiang 2cbf8df484 Merge pull request #4412 from deepseek-harness/worktree/experimental-voice-input
feat(voice-input): add optional local SenseVoice dictation
2026-09-21 15:53:42 +08:00
yudshj e7287e499e Merge remote-tracking branch 'origin/master' into web/excel-frontend-preview 2026-09-21 15:47:19 +08:00
Yif 1a14166d2b fix(native-command): validate the full handler list and dedupe only for display 2026-09-21 15:46:03 +08:00
Yichen Jiang 080bea0b85 Merge remote-tracking branch 'origin/master' into worktree/experimental-voice-input
# Conflicts:
#	scripts/gen-cordis-catalog.ts
2026-09-21 15:39:45 +08:00
Dudu-0223 a93aa38876 Merge branch 'master' into fix/team-task-board-read-only 2026-09-21 15:38:03 +08:00
yudshj cbe0d84fc1 Merge remote-tracking branch 'origin/master' into web/excel-frontend-preview 2026-09-21 15:37:28 +08:00
CreatixChu 683625b793 Merge pull request #4780 from deepseek-harness/ihsiang/changed-files-hover-preview
feat(web): preview changed-file diffs on hover
2026-09-21 15:36:12 +08:00
yudshj 61a0acc4da fix(preview): satisfy strict spreadsheet lint 2026-09-21 15:35:57 +08:00
Dudu-0223 3324157b7f fix(web): address Team panel review feedback 2026-09-21 15:30:18 +08:00
imccyu 85f16860f5 Merge pull request #4758 from deepseek-harness/feat/chat-step-groups
feat(web): add definition-owned conversation groups
2026-09-21 15:29:30 +08:00
creatixchu e17f505504 Merge master into ihsiang/changed-files-hover-preview 2026-09-21 15:27:19 +08:00
Yichen Jiang 4c7c7a552f Merge remote-tracking branch 'origin/master' into worktree/job-kill-delivery 2026-09-21 15:26:10 +08:00
Yichen Jiang bb20149360 refactor(shell): register foreground commands as jobs at start and drop the promotion protocol
With a job registry composed, tool-bash and tool-pwsh now register every
command with ctx.jobs as it starts and wait on the job with the registry's
own bounded wait: a command that finishes in time returns the ordinary
foreground result and its record is removed, one that outlives the timeout
returns the same job id it already had, and a kill from outside the call is
reported as `[stopped: <reason>]`. Nothing changes hands at the deadline, so
the shell seam loses `onExpiry: 'offer'`, `ShellExecution.promotion`, and
`ShellPromotionOffer`, and both local executors drop their offer arm.

The registry stays optional: the tools register a foreground-only definition
while no registry is composed and swap to the job-backed one inside a
`ctx.inject(['jobs'])` fork, so a composition without jobs keeps a plain bash
with no job tools in the model's schema. A refused registration at the start
(admission, no controller) runs under the executor's deadline kill, and a wait
that expires before the process spawned ends as the preparation timeout.

JobRegistry gains `remove(id, caller?)` and the `settled` event reports
`awaited`, so dsh-tool-jobs no longer keeps its own wait ledger; it withholds
notices for awaited settlements and for kills the model requested. The tool
catalog harvest composes the registry so the shipped schema stays documented,
and the two compaction fixtures move their context window from 10000 to 10300
tokens because the branch's larger tool schemas pushed their condensed history
over the old trigger, which requested a fourth scripted model call.
2026-09-21 15:23:08 +08:00
Yichen Jiang 262ee1bc23 fix(voice-input): address lifecycle and provider review feedback 2026-09-21 15:21:16 +08:00
sjw1231 c6e38b364f fix(client): resolve review tab conflicts and path label coverage 2026-09-21 15:19:38 +08:00
Dudu-0223 35489c0f5c fix(web): manage Team panel keyboard focus 2026-09-21 15:09:08 +08:00
Dudu-0223 253fb5e66d fix(web): make Team tasks read-only and contain the panel 2026-09-21 15:09:07 +08:00
sjw1231 795e5024bc fix(ui-deliverables): fill diff row backgrounds across scroll width 2026-09-21 15:05:43 +08:00
Turtle cf323fdaac docs(web): clarify model collapse contract and geometry ownership 2026-09-21 15:01:04 +08:00
imccyu a67ad91237 feat(client): expose indexed positions to group definitions 2026-09-21 14:56:14 +08:00