Commit Graph
1088 Commits
Author SHA1 Message Date
Yichen Jiang ce113eb86a Merge pull request #4376 from deepseek-harness/feat/plugin-page-config-items
feat(web): host plugin configuration on the Plugins page
2026-09-16 22:35:24 +08:00
Dudu-0223 e55093b47d feat(subagent): migrate direct catalog consumers to parent projections 2026-09-16 22:05:17 +08:00
Yichen Jiang 90af3110b7 feat(web): host plugin configuration on the Plugins page
The Plugins page declares three slots as children of its main entry:
`plugins.item` lists an official plugin's page in the Official group,
`plugins.bundle.config` renders a bundle's own form on its page, and
`plugins.row.config` gives a row a configure control opening the row's
page. Every entry renders in the `summary` and `page` views the page
passes as owner props; the page draws the title, icon, and crumb and
projects the ledgers beside its store, naming no configurable plugin.

`ui-settings-plugins` registers its four host-plane pages into
`plugins.item` while the Host serves their namespaces and withdraws them
when it stops; the forms keep edits until a save and drop them on leaving
the page, so the discard control and the unsaved marker are gone. The
Settings section becomes the Built-in plugins shell around the inventory
tab, and `settings.plugin.item` is retired.

The Official group opens with the optional bundles the installation
ships, tagged Beta where the feature is one and without an official tag,
followed by the configuration pages. Auto review leaves the optional
bundles and the CLI's dependencies; the install guide names it as its
example spec. The version tag is a capsule like the other tags.

The `plugin-config` web lane drives the pages through the real wire and
opens a community fixture's row page after switching its bundle on; the
settings lanes re-record the renamed navigation entry.
2026-09-16 21:05:34 +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 8ed7d7fde5 Merge remote-tracking branch 'origin/office/render-cache' into codex/office-decouple-preview 2026-09-16 18:54:47 +08:00
yudshj 07e398cc15 Merge remote-tracking branch 'origin/master' into codex/office-decouple-conversion 2026-09-16 18:51:09 +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
creatixchu 142ca8b956 Merge remote-tracking branch 'origin/worktree/code-diff-card' into worktree/changes-diff-preview 2026-09-16 16:49:48 +08:00
creatixchu 9a74f173d3 Merge remote-tracking branch 'origin/master' into worktree/code-diff-card 2026-09-16 16:31:23 +08:00
Yichen Jiang cb731e26e9 Merge master into worktree/model-input-checkboxes 2026-09-16 16:03:24 +08:00
yudshj 14f375168d Merge master with released Office skills into shared conversion 2026-09-16 15:59:07 +08:00
yudshj 82ab876331 fix(office): validate strict and corrupt OOXML 2026-09-16 15:21:18 +08:00
yudshj fcf9f4cfa2 fix(document): select Office engines from declared native targets 2026-09-16 14:55:38 +08:00
yudshj fd3cdf539b refactor(document): name Office PDF conversion explicitly 2026-09-16 13:59:49 +08:00
Yichen Jiang ab695ef4cf feat(web): give user terminals system-user permissions 2026-09-16 13:52:23 +08:00
Yichen Jiang cc394230bf feat(web): unify model input controls and catalog inheritance 2026-09-16 13:48:07 +08:00
yudshj 96e68ded13 feat(document): decouple shared Office conversion from preview 2026-09-16 13:43:02 +08:00
creatixchu fac80a84fb Merge remote-tracking branch 'origin/worktree/code-diff-card' into worktree/changes-diff-preview 2026-09-16 13:39:21 +08:00
Dudu-0223 0eed02d447 fix(subagent): map capacity refusal and clarify one-shot scope 2026-09-16 13:11:47 +08:00
Dudu-0223 a69bcf3636 feat(subagent): own editable delegation limits in the backend 2026-09-16 12:51:50 +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
winewill 63dd8fb80d feat(desktop): add ordinary and mandatory update flows 2026-09-16 10:48:23 +08:00
Yichen Jiang a9fe93fc0b refactor(plugins): name bundles by their package name only
`dsh.title` was a manifest field this branch introduced: the manager read
it for `listBundles` and `inspect`, and the Web page showed it over the
package name. A bundle is named by its package name now, so `DshManifest`
keeps only its shipped fields, the page derives every heading from the
name, and the install dialog's subject line reads the name the Host
answered. The two e2e fixtures drop their titles and the manager lane's
goldens follow.
2026-09-15 23:31:54 +08:00
Yichen Jiang f04c265725 refactor(plugins): stop announcing patch generations applied outside the manager
app-boot no longer emits profile/reconciled after a reload, and the plugin
manager no longer turns such a generation into a plugin-manager/changed
notice: the Web page learns of a CLI or hand edit on its next read. The
change event keeps only the reasons a manager operation produces.
2026-09-15 22:21:06 +08:00
Yichen Jiang 075aab54a7 Merge remote-tracking branch 'origin/master' into feat/plugin-mgmt-4-web
# Conflicts:
#	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
#	docs/subsystems/boot.i18n.yaml
#	docs/subsystems/boot.md
#	docs/subsystems/boot.zh.md
#	packages/api/remotes/src/client/index.ts
#	packages/boot/plugin-manager/README.i18n.yaml
#	packages/boot/plugin-manager/README.md
#	packages/boot/plugin-manager/README.zh.md
#	packages/boot/plugin-manager/src/index.ts
#	packages/boot/plugin-manager/src/types.ts
#	packages/boot/plugin-manager/tests/manager.spec.ts
#	packages/client/ui-settings-plugin-inventory/src/client/locales.ts
#	packages/client/ui-settings-plugin-inventory/src/client/management.tsx
#	packages/client/ui-settings-plugin-inventory/tests/components.client.spec.tsx
#	packages/extensions/tool-cordis/src/api-catalog.ts
#	pnpm-lock.yaml
#	scripts/verify-default-product-isolation.spec.ts
2026-09-15 21:15:15 +08:00
Turtle faf8da83f0 Merge pull request #4277 from deepseek-harness/turtle/plugin-build-approval
fix(plugin-manager): approve blocked dependency builds before retrying
2026-09-15 20:59:02 +08:00
Yichen Jiang bc0ecae21f feat(plugins): ship optional bundles switched off and guide the install dialog
The dsh installation lists under `dsh.optionalBundles` the bundles it
ships for a person to switch on. The plugin manager reports them as
`optional`, and the Web plugin page shows them first, in a built-in
group with an official tag, off until selected and never removable.
Agent Teams ships this way, so a blank profile offers both of its
layers. Default-product isolation, the workspace constraints, and the
packed-install check accept that one dependency edge and nothing else
experimental.

A bundle's title and one-liner come from `dsh.title` and the new
`dsh.description`, else from the package name and `description`. A
dependency without a bundle patch is no longer listed unless the
profile selects it. The install dialog asks for a package name or
address; a guide under the field shows the three accepted forms with
an example each and ends in a security warning, and the copy no longer
speaks of a plugin ID.
2026-09-15 20:51:12 +08:00
imccyu 7fb4cb4c8e fix(client): version lazy chunks by build generation 2026-09-15 20:45:49 +08:00
imccyu 7f5385bf01 revert(client): remove eager chunk scanning 2026-09-15 20:45:49 +08:00
imccyu d28807e05c fix(client): preserve lazy chunk runtime semantics 2026-09-15 20:45:49 +08:00
imccyu ee9f43bc5d fix(client): align lazy chunk metadata 2026-09-15 20:45:49 +08:00
imccyu a5c224f9b1 feat(client): lazy-load PDF and terminal runtimes 2026-09-15 20:45:49 +08:00
Turtle a5dea502a6 fix(plugin-manager): address approval review and remove agent notices 2026-09-15 20:37:36 +08:00
Yichen Jiang 96136c0282 Merge remote-tracking branch 'origin/master' into feat/plugin-mgmt-4-web 2026-09-15 19:17:09 +08:00
creatixchu a79b97ecca feat(deliverables): compare each changed file from the card
Rows of the changed-files card open a `changes-diff` right-Sidebar tab that compares the file at turn start and turn end. The workspace-changes recorder copies every file a file tool edits into the Session's temporary directory before the first edit and again at turn end, so files git does not cover are compared without git and counted first-to-last; `maxFileBytes` caps copies and snapshot reads, and `diffTimeoutMs` degrades a slow line comparison to whole-file replacement.
2026-09-15 18:38:33 +08:00
Turtle ffffac3cba fix(plugin-manager): approve blocked dependency builds before retrying 2026-09-15 18:09:28 +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
creatixchu c8bc10440b fix(workspace-changes): review round on the served summaries
A repository whose baseline snapshot failed records nothing instead of
degrading to a file-tool summary; the write tool persists whether it
created or updated, so an unchanged overwrite outside snapshot coverage
no longer counts its content as added; hunks inside nested repositories
are dropped before check-ignore, which refused them with exit 128 and
lost the whole turn; a temporary root inside the work tree keeps the
recorder's own directory out of the snapshots; numstat keeps tabs in
file names; the summary carries line totals over the uncapped list and
the snapshot tree ids; the client's summary store abandons reads that
began before a connection reset. Docs and fixtures follow.
2026-09-15 17:28:14 +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
_Kerman 992a932a16 Merge remote-tracking branch 'origin/master' into xtr/durable-inbox-web-recovery
# Conflicts:
#	packages/api/session-controller/README.i18n.yaml
#	packages/api/session-controller/README.md
#	packages/api/session-controller/README.zh.md
#	packages/client/ui-conversation/README.i18n.yaml
#	packages/client/ui-conversation/README.md
#	packages/client/ui-conversation/README.zh.md
#	packages/client/ui-conversation/src/client/contract/input.ts
#	packages/client/ui-conversation/src/client/input/facade.ts
2026-09-15 16:52:24 +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
Turtle 311156b1c2 Merge master and preserve profile-managed HMR 2026-09-15 16:20:47 +08:00
Turtle 08021a16d8 fix(plugin-manager): keep package operations outside HMR 2026-09-15 16:08:22 +08:00
creatixchu 8f0cdc9a98 Merge remote-tracking branch 'origin/master' into worktree/code-diff-card 2026-09-15 16:05:29 +08:00
creatixchu c48f4203d9 feat(workspace-changes): summarize file-tool edits outside a git repository
A working directory outside any repository, or a Host without git, no
longer loses the card: the recorder skips the snapshots and builds the
summary from the hunks the file tools persisted, with the working
directory as the workspace, so shell edits are the only gap. The
sidebar e2e scopes its chip clicks to the prose mention now that the
card offers the same open, and the present-svg and permission-policy
scenarios gain the card their write calls earn.
2026-09-15 15:44:11 +08:00
Yichen Jiang 3e24e501cd Merge remote-tracking branch 'origin/master' into worktree/client-modules-live 2026-09-15 15:43:42 +08:00
07akioni 05fb7b90e8 Merge pull request #3981 from deepseek-harness/07akioni/thin-electron-webui
refactor(desktop): run shared Web UI in a thin Electron shell
2026-09-15 15:39:43 +08:00
Yichen Jiang c28fcc6cdb Merge remote-tracking branch 'origin/master' into worktree/client-modules-live
# Conflicts:
#	docs/subsystems/client-modules.i18n.yaml
#	docs/subsystems/client-modules.md
#	docs/subsystems/client-modules.zh.md
#	packages/client/hmr/package.json
#	packages/client/modules/README.i18n.yaml
#	packages/client/modules/README.md
#	packages/client/modules/README.zh.md
2026-09-15 15:31:14 +08:00