Commit Graph
344 Commits
Author SHA1 Message Date
Tianyi Cui 3f33c06f40 Merge pull request #4629 from deepseek-harness/worktree/dynamic-conversation/messages-only
Make the official DeepSeek adapter Messages-only
2026-09-20 17:10:58 +08:00
Turtle 2099andTurtle 3eab1714bc feat(web): add chat link opening preference (#4671)
* feat(web): add chat link opening preference

* docs(web): clarify preference-controlled link routing

* fix(web): hide link preference without a browser

* fix(web): make the built-in browser opt-in

* test(web): honor profile-aware browser availability

---------

Co-authored-by: Turtle <[email protected]>
2026-09-20 17:00:03 +08:00
Tianyi Cui 99e22ebbeb refactor(llm): make the official DeepSeek adapter Messages-only 2026-09-20 14:37:19 +08:00
Tianyi Cui 580bdc7258 refactor: remove redundant unknown casts 2026-09-19 20:13:58 +08:00
Yif 33d496951c feat(workspace): session pinning and the sidebar archived filter
Pin sessions to the top of the sidebar and reach archived sessions
through the view-options filter instead of a settings page; archiving
gains an undo/filter toast, and row motion stays reserved for pin jumps
and archive fades.
2026-09-19 12:04:07 +08:00
mektpoy 2c6f634771 Merge branch 'master' into yyc/web-trust-domain-reviewed
# Conflicts:
#	tsconfig.host.json
2026-09-18 18:31:17 +08:00
creatixchu 6b1808f432 release(dsh): 0.1.6-alpha.2 2026-09-17 21:11:19 +08:00
Yichen Yan b62a9f5c27 Merge branch 'master' into yyc/web-trust-domain-reviewed 2026-09-17 20:09:23 +08:00
Yichen Yan eeb9b03465 feat(web): serve the shell, API and plugin resources from the document directory 2026-09-17 16:00:15 +08:00
imccyu ef1218ac24 feat(client): refine Sidebar Browser controls 2026-09-17 15:14:11 +08:00
imccyu 1e42aec10e feat(web): ship Sidebar Browser 2026-09-17 15:14:10 +08:00
yudshj 1c9f2e3a1f Merge master into office-sidebar-preview 2026-09-17 12:05:47 +08:00
yudshj 880c186146 refactor(document): consolidate Office preview remotes 2026-09-17 11:52:46 +08:00
yudshj 11669006e6 refactor(document): consolidate Office conversion into office-to-pdf 2026-09-17 11:15:51 +08:00
yudshj a193b51c96 refactor(document): name Office PDF conversion explicitly 2026-09-17 11:15:36 +08:00
yudshj 9d2a3bf2b7 feat(document): decouple shared Office conversion from preview 2026-09-17 11:15:21 +08:00
imccyu b9b14dc05e refactor(client): bind Session UI through providers 2026-09-17 05:28:06 +08:00
yudshj 7bc0db4470 Merge remote-tracking branch 'origin/office/render-cache' into codex/office-decouple-preview 2026-09-16 20:17:24 +08:00
yudshj 2f98700396 Merge remote-tracking branch 'origin/master' into codex/office-decouple-conversion
# Conflicts:
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	pnpm-lock.yaml
2026-09-16 20:14:36 +08:00
yudshj 54d268c409 feat(preview): consume shared Office conversion independently 2026-09-16 17:06:55 +08:00
yudshj d3ed04defa refactor(document): consolidate Office conversion into office-to-pdf 2026-09-16 16:50:04 +08:00
yudshj fd3cdf539b refactor(document): name Office PDF conversion explicitly 2026-09-16 13:59:49 +08:00
yudshj 96e68ded13 feat(document): decouple shared Office conversion from preview 2026-09-16 13:43:02 +08:00
creatixchu 664190c6f9 Merge remote-tracking branch 'origin/master' into worktree/code-diff-card
# Conflicts:
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
2026-09-16 12:42:02 +08:00
creatixchu 9f219e48a9 Merge remote-tracking branch 'origin/master' into worktree/code-diff-card
# Conflicts:
#	scripts/gen-cordis-catalog.ts
2026-09-15 17:35:04 +08:00
Yichen Jiang dc9256536b Merge remote-tracking branch 'origin/master' into feat/plugin-mgmt-4-web
Master now carries the final #4182 plugin manager and the live client
module graph of #4189, so the web management layer is re-ported onto
them:

- The manager keeps master's `ManagementError` codes, `ChangeResult`
  stages, `configure()` under `hmr.runExclusive`, `reload()` warnings
  and `writePluginEnabled` name matching, and adds back `inspect`,
  request-id installs with `plugin-manager/install-log` and
  `plugin-manager/install-state`, `cancelInstall`, `listBundles` titles,
  rows and overrides, `packageResult.kind`, `pnpmCommand` and
  `inspectTimeoutMs`, and `plugin-manager/changed` after each change and
  each `profile/reconciled`. A failed or cancelled installation restores
  the snapshotted manifest and lockfile instead of master's one-shot
  `pnpm remove` cleanup, so `cleanup` and `remainingDependencies` leave
  the result.
- App boot keeps master's reconciliation diagnostics and emits
  `profile/reconciled`; `watchUserPatches` goes with the launcher's
  watcher now that HMR owns profile reloads.
- The settings Plugin list tab stays read-only with #4189's page-local
  sync failures and retry; master's bundle form and row checkboxes are
  dropped again. The sidebar page words the Host's codes through its
  dictionary, and a client bundle change follows the live module graph
  without a page reload.
- The web e2e scaffold no longer chooses a reload policy: the base
  bundle's `hmr` row turns on with the profile context and application
  readiness, and `profile.hmr: false` disables it through an overlay for
  the startup-only scenario.
2026-09-15 17:28:08 +08:00
Yichen Jiang 4d1adb8541 feat(web): manage plugins over the #4182 manager from the sidebar page
The sidebar Plugins page now drives `ctx.pluginManager` from #4182 and the
settings Plugin list tab goes back to read-only: its bundle form and row
checkboxes are removed, and the page joins `listBundles` with
`listPlugins` into one view per bundle, decides availability from the
inventory's `managementAvailable`, switches bundles and rows through
`setBundleEnabled` and `setPluginEnabled`, and confirms uninstalls.

The manager gains what the guided install dialog needs: `inspect(spec)`
reads a spec through the registry or a directory before anything installs
and refuses specs without a bundle; `installBundle` takes a request id,
streams each pnpm run as `plugin-manager/install-log`, reports its phases
as `plugin-manager/install-state`, classifies a failed run into
`packageResult.kind`, names the bundle it added, and restores
`package.json` and `pnpm-lock.yaml` when the run fails, is cancelled, or
adds a package without a bundle patch; `cancelInstall(requestId)` answers
only after pnpm exited and the files are back; `listBundles` carries
titles, one-liners, declared rows with their live entries, and the
built-in rows a bundle overrides; every completed operation and every
patch generation applied outside the manager emits
`plugin-manager/changed`. The config gains `pnpmCommand` and
`inspectTimeoutMs`. App boot emits `profile/reconciled` after each applied
patch generation and finds a root Include mounted under its pinned id by
another copy of the module.

Row diagnostics, dependency checks, and the non-bundle dependency group
are not carried over; the web e2e scaffold mounts a launcher-style
managed profile instead of the removed profile runtime.
2026-09-15 16:36:31 +08:00
Yichen Jiang b3e964c340 Merge PR #4182 (turtle/plugin-manager) into feat/plugin-mgmt-4-web
The web plugin management layer now sits on the current-profile plugin
manager from #4182 instead of the boot and manager layers of #3593 and
#3594. This merge takes #4182's host side whole — `packages/boot/hmr`,
its `packages/boot/plugin-manager`, `profileContext` in app-boot, the
vendored loader change — and drops the replaced host packages and their
app-boot, inventory, Remote, CLI, and catalog edits. The web files of
#3596 are carried over unchanged: the sidebar page package, the
ui-primitives terminal changes, the settings-section tweaks, the e2e
scenarios and fixtures, and the two web Agent Notes. They do not build
against the new host until the following commit adapts them.
2026-09-15 16:36:31 +08:00
creatixchu 1ea80b7b69 Merge remote-tracking branch 'origin/master' into worktree/code-diff-card
# Conflicts:
#	packages/client/ui-deliverables/package.json
#	snapshots/web/present-svg/ui.expected.md
2026-09-15 15:11:02 +08:00
Turtle 86497c479c Merge remote-tracking branch 'origin/master' into turtle/plugin-manager
# Conflicts:
#	packages/client/ui-settings-plugin-inventory/package.json
2026-09-15 13:09:38 +08:00
imccyu 42286726c8 perf(web): defer client combo assembly 2026-09-15 11:00:34 +08:00
creatixchu ea53423b60 release(dsh): 0.1.6-alpha.1 2026-09-15 09:35:57 +08:00
Turtle 438c862fea refactor: keep profile launch context data-only and HMR backend-scoped 2026-09-14 23:09:06 +08:00
Turtle d06e6b5519 feat: coordinate profile management through dsh-hmr 2026-09-14 23:09:06 +08:00
Turtle 98b92b683c feat: add current-profile plugin manager service and Web controls 2026-09-14 23:09:05 +08:00
Yichen Jiang 850d2882f6 Merge commit '03af7e39c641a58fd77f5b3f7b3eb089f200e519' into worktree/pr3596-global-only 2026-09-14 19:57:15 +08:00
Yichen Jiang 9dc51c4666 Merge commit '7d96a1bcda353371db935725ef3a8d228312f42e' into worktree/pr3594-manifest-mergeup
# Conflicts:
#	packages/api/remotes/src/client/index.ts
#	pnpm-lock.yaml
2026-09-14 19:55:22 +08:00
Yichen Jiang 2d660bf078 fix(web): list only installed packages on the sidebar Plugins page
The sidebar page no longer shows the profile template's own bundles
(dsh-base, dsh-web-app). The Settings Plugins section gets its read-only
Plugin list tab back for them, with both of its groups collapsed by
default. Restores @deepseek-ai/dsh-client-ui-settings-plugin-inventory
with its web bundle row, tsconfig entries, catalogs, and goldens, and
drops the built-in tag, locked switch, and source fact the page no
longer needs.
2026-09-14 16:45:13 +08:00
creatixchu dce58eaf4e Merge remote-tracking branch 'origin/master' into worktree/code-diff-card
# Conflicts:
#	apps/web/package.json
2026-09-14 14:15:04 +08:00
Yichen Jiang 673fce91e2 Merge branch 'worktree/pr3595-sep14-sync' into feat/plugin-mgmt-4-web
# Conflicts:
#	packages/client/ui-plugin-manager/README.i18n.yaml
#	packages/client/ui-settings-plugin-inventory/README.md
#	packages/client/ui-settings-plugin-inventory/tests/components.client.spec.tsx
#	scripts/verify-package-readme-model-experience.ts
#	tsconfig.base.json
#	tsconfig.client.json
2026-09-14 11:07:31 +08:00
creatixchu a27cfb9bd3 Merge remote-tracking branch 'origin/master' into worktree/code-diff-card
# Conflicts:
#	apps/web/package.json
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	docs/persistence-catalog.i18n.yaml
#	docs/persistence-catalog.md
#	docs/persistence-catalog.zh.md
#	pnpm-lock.yaml
2026-09-14 11:07:18 +08:00
Yichen Jiang 8dc899641a Merge branch 'worktree/pr3593-manifest-3899' into worktree/pr3594-manifest-mergeup
# Conflicts:
#	.agents/notes/implemented/architecture/2026-09-11-native-entry-diagnostics-and-static-plugin-declarations.i18n.yaml
#	.agents/notes/implemented/architecture/2026-09-11-native-entry-diagnostics-and-static-plugin-declarations.md
#	.agents/notes/implemented/architecture/2026-09-11-native-entry-diagnostics-and-static-plugin-declarations.zh.md
#	docs/capability-seams.i18n.yaml
#	docs/capability-seams.md
#	docs/capability-seams.zh.md
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.zh.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
#	packages/api/remotes/src/client/index.ts
#	packages/api/remotes/src/remote-events.ts
#	packages/extensions/tool-cordis/src/api-catalog.ts
#	scripts/check-workspace-constraints.ts
#	scripts/gen-cordis-catalog.ts
2026-09-14 10:49:21 +08:00
Yichen Jiang 1b7b50bbe1 Merge remote-tracking branch 'origin/master' into worktree/web-sidebar-terminal
# Conflicts:
#	apps/web/package.json
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
#	packages/api/remotes/src/client/index.ts
#	packages/e2b/subprocess-e2b/README.md
#	packages/e2b/subprocess-e2b/README.zh.md
#	packages/e2b/subprocess-e2b/src/index.ts
#	packages/e2b/subprocess-e2b/src/terminal.ts
#	packages/e2b/subprocess-e2b/tests/subprocess.spec.ts
#	packages/e2b/subprocess-e2b/tests/terminal.spec.ts
#	packages/mcp/mcp-resources/README.i18n.yaml
#	pnpm-lock.yaml
#	scripts/verify-package-readme-model-experience.ts
#	snapshots/session/cordis-inspect-jsdoc/session.v3.jsonl
#	tsconfig.base.json
#	tsconfig.client.json
#	tsconfig.host.json
2026-09-14 10:36:31 +08:00
Tianyi Cui accafa5fb2 refactor(llm): inherit Messages defaults and verify live parity 2026-09-13 20:36:50 +08:00
Tianyi Cui 5f773a0ded feat(workspace): restore archived sessions from a settings page
Sessions could be archived from the sidebar row menu but never restored:
the registry-global archive set was a one-way display filter with no
inverse RPC and no surface listing its members.

WorkspaceRegistry.unarchiveSession drops one id from archivedSessionIds in
one durable write on the same operation chain as archive, with no
session-existence probe because a removal cannot introduce an unknown
referent. The Workspace controller exposes it as workspace.unarchiveSession
returning the complete archive set, which the existing archived follow
increment already propagates, so no frame type and no persisted field
changes.

The new client package dsh-client-ui-settings-unarchive-sessions owns the
restore surface: one localized settings.section page listing the archive
set joined with loaded session summaries, newest archive first, searchable
by title or workspace, with one Unarchive action per row.
2026-09-13 16:45:45 +08:00
Tianyi Cui 35af8698c2 fix(workflow): execute orchestration in the sandboxed PTC runtime 2026-09-13 14:47:56 +08:00
Tianyi Cui d49192b6ac docs(presets): name the new id in the ralph restore recipe 2026-09-13 00:41:44 +08:00
Tianyi Cui 73985344cd feat(presets): disable ralph in the default compositions 2026-09-13 00:15:39 +08:00
Tianyi Cui 7c9bb5914c refactor(ptc): align runtime packages and services with PTC naming 2026-09-12 15:03:04 +08:00
Tianyi Cui f95f7ec8dc refactor(code-runtime): name the Node runtime provider 2026-09-12 15:03:01 +08:00