Commit Graph
15938 Commits
Author SHA1 Message Date
Yichen Jiang e1c3ec00e2 fix(web): count the scoped mutate branch and draw the breadcrumb separator as a hairline
Awaiting inside each arm of the scope ternary left v8 with a negative else
count on the response check, which the coverage gate read as an uncovered
branch; the request is now chosen first and awaited once. The breadcrumb
separator was a 1px filled divider where every other neutral line is 0.5px.
2026-09-08 23:53:56 +08:00
Yichen Jiang 654ec0d8c1 Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web 2026-09-08 17:51:02 +08:00
Yichen Jiang bb91e042d2 Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings 2026-09-08 17:51:01 +08:00
Yichen Jiang 770f239fc6 Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager 2026-09-08 17:51:01 +08:00
Yichen Jiang ea624def34 refactor(web): share the enable switch, the notice line and the form observer plumbing
The duplication gate flagged three clones the plugin manager and the scoped
settings cards had grown: the bundle enable switch on a package's card and
page, the last-operation notice on the package list and a preset's section,
and the subscribe/bind/publish plumbing of CardForm and ScopedCardForms. Each
now has one owner: EnableSwitch, NoticeLine, and the ObservableForm base.
2026-09-08 17:50:31 +08:00
Yichen Jiang a8f2e84946 fix(app-boot): keep the probe's stderr tail across reads of any size
The tail dropped a whole kept chunk whenever a later chunk pushed the total
over the limit, so a flood that arrived as one read (Linux) left only the
bytes written after it. `StreamTail` trims the oldest kept chunk instead and
is unit-tested with both read patterns.
2026-09-08 17:50:29 +08:00
Yichen Jiang 2b01edcd5e Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web 2026-09-08 17:47:17 +08:00
Yichen Jiang e5196d85ed refactor(settings): keep each event's literal dispatch at its call site, share only the delivery loop 2026-09-08 17:46:35 +08:00
Yichen Jiang 5aaf978b19 Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web 2026-09-08 17:38:35 +08:00
Yichen Jiang ff94876574 refactor(settings): share the contained event fan-out between commit and document updates 2026-09-08 17:38:33 +08:00
Yichen Jiang 7a6b69ee25 Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web 2026-09-08 17:34:07 +08:00
Yichen Jiang c7385c588a Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings 2026-09-08 17:32:15 +08:00
Yichen Jiang aee2d84cc5 docs(plugin-manager): name the disabled-bundle record the installer keeps 2026-09-08 17:30:49 +08:00
Yichen Jiang 464264aede Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager 2026-09-08 17:30:21 +08:00
Yichen Jiang 07878ae1d3 fix(app-boot): record user-disabled bundles in the profile manifest
`disableBundle` now moves a package from `dsh.profile.bundles` to
`dsh.profile.disabledBundles`, and `reconcileInstalledBundles` enables only
a bundle named in neither list, so an unrelated pnpm run never re-enables a
bundle the user turned off while an update that gives a dependency
`dsh.bundle` still activates it (the built-bin e2e scenario the previous
"new dependencies only" rule broke). The record goes when its dependency
does.

Also: `visitIdentifiedRows` in patch-rows owns the per-patch restatement
tracking that compose-stack and external-bundles had cloned (duplication
gate), and the probe spec's flood fixture retries short and EAGAIN writes
because the child's stderr pipe is non-blocking once tsx touched
process.stderr (the test raced the parent's drain).
2026-09-08 17:29:35 +08:00
Yichen Jiang 9d9b39a41b chore(client): regenerate the slot catalog after the master merge 2026-09-08 17:09:51 +08:00
Yichen Jiang f3f1c7a87d Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
# Conflicts:
#	packages/bundle/web-app/package.json
#	packages/client/ui-agent-preset/README.i18n.yaml
#	packages/client/ui-agent-preset/README.md
#	packages/client/ui-agent-preset/README.zh.md
#	packages/client/ui-settings-plugin-inventory/README.md
#	packages/client/ui-settings-plugin-inventory/README.zh.md
#	packages/client/ui-settings-plugin-manager/README.i18n.yaml
#	packages/client/ui-settings-plugin-manager/package.json
#	packages/client/ui-settings-plugins/README.i18n.yaml
#	packages/client/ui-settings-plugins/README.md
#	packages/client/ui-settings-plugins/README.zh.md
2026-09-08 17:02:09 +08:00
Yichen Jiang 6d67daf7df Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings 2026-09-08 16:56:55 +08:00
Yichen Jiang 7868fdcf3b chore(plugin-manager): follow the root version bump 2026-09-08 16:55:49 +08:00
Yichen Jiang ca291b0100 docs(plugin-manager): keep the package summaries within the summary budget
master now bounds a README Summary at 100 words; the boot group, the plugin
manager, and its host face say the same in fewer. The zh config catalog gains
the paragraph break the merge dropped.
2026-09-08 16:55:27 +08:00
Yichen Jiang bb408abe28 Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager
# Conflicts:
#	apps/cli/src/bin.ts
#	docs/config-catalog.i18n.yaml
#	docs/config-catalog.md
#	docs/config-catalog.zh.md
#	packages/api/remotes/src/client/index.ts
#	packages/boot/app-boot/src/index.ts
#	packages/boot/app-boot/src/profile.ts
#	packages/host/README.i18n.yaml
#	packages/host/README.md
#	packages/host/README.zh.md
#	scripts/verify-package-readme-model-experience.ts
2026-09-08 16:52:09 +08:00
Yichen Jiang 5a9e1760fd Merge remote-tracking branch 'origin/master' into feat/plugin-mgmt-1-boot
# Conflicts:
#	apps/cli/src/dump-config.ts
#	apps/cli/src/profile-boot.ts
#	docs/capability-seams.i18n.yaml
#	docs/capability-seams.md
#	docs/capability-seams.zh.md
#	packages/boot/app-boot/src/profile.ts
#	packages/util/launch-environment/tests/launch-environment.spec.ts
#	scripts/check-workspace-constraints.ts
#	scripts/gen-cordis-catalog.ts
2026-09-08 16:42:34 +08:00
Yichen Jiang afa57ae093 refactor(boot): keep containment and composition internals off the package root
The root entry now exports only what the CLI, the plugin inventory, the
plugin manager, and tool-cordis use, plus the parameter and result types of
those operations. The contained group and its registry, the external-layer
composition, the row-ownership helpers, the probe format number, and the
runtime option type stay module exports the package's own tests import.
2026-09-08 16:37:16 +08:00
Yichen Jiang af2ebda892 test(web): compose the scaffold's stack with its user-disabled rows
The profile runtime reads user-disabled rows from the committed composition
now, so the e2e scaffold's stack carries the empty set and no longer hands the
runtime a patch reader.
2026-09-08 16:32:20 +08:00
Turtle 189d96920c Merge pull request #3769 from deepseek-harness/turtle/auto-repair-issue-labels
fix(ci): auto-repair invalid Issue labels
2026-09-08 16:29:28 +08:00
Yichen Jiang 2f181a75ef fix(web): name the package-group title field as a key 2026-09-08 16:29:16 +08:00
Yichen Jiang 4c423bbb68 Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings 2026-09-08 16:28:49 +08:00
Yichen Jiang ec0504dc58 Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web 2026-09-08 16:28:49 +08:00
Yichen Jiang 22f92a8297 test(inventory): give the runtime its install anchor
The profile runtime takes installAnchor since the manager layer; the
user-disabled group test from the boot layer now supplies one.
2026-09-08 16:28:48 +08:00
Yichen Jiang 3787829d75 fix(web): name the confirmation copy map's fields as keys
verify-client-ui-i18n reads a title or description property holding a string
as hardcoded copy; the map holds dictionary keys, so its fields say so.
2026-09-08 16:26:09 +08:00
Yichen Jiang dcbac5ebf2 Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
# Conflicts:
#	packages/boot/app-boot/src/probe.ts
#	packages/boot/app-boot/tests/probe.spec.ts
2026-09-08 16:25:29 +08:00
Yichen Jiang 16464f5147 Merge branch 'feat/plugin-mgmt-2-manager' into feat/plugin-mgmt-3-settings 2026-09-08 16:23:34 +08:00
Yichen Jiang 5694e50548 fix(plugin-manager): ask the runtime which rows the user disabled
The view attributes a disabled row through profileRuntime.userDisables, which
walks the groups holding the entry, and the manager spec stops passing the
runtime option the profile runtime no longer takes.
2026-09-08 16:23:33 +08:00
Yichen Jiang 731804affc Merge branch 'feat/plugin-mgmt-1-boot' into feat/plugin-mgmt-2-manager
# Conflicts:
#	packages/boot/app-boot/README.i18n.yaml
#	packages/boot/app-boot/README.md
#	packages/boot/app-boot/README.zh.md
2026-09-08 16:23:03 +08:00
Yichen Jiang c73d88e4e5 fix(boot): answer user-disabled entries from the profile runtime
The inventory keeps dsh-app-boot an optional, type-only peer, so the walk
over an entry's owning groups moves behind ProfileRuntime.userDisables(): a
consumer with the runtime asks it, one without reports composition as before.
The module graph and the cordis catalog follow.
2026-09-08 16:19:42 +08:00
Yichen Jiang d6f5160591 test(boot): type the id-less group row in the ownership spec 2026-09-08 16:16:12 +08:00
Yichen Jiang 792a68468f fix(boot): judge a package's cordis copy by package directory
The probe compared two resolved URLs, which differ for one package under a
source launch (src against lib), across a symlink, and behind the proxy a
packaged executable writes; it now walks each URL up to the cordis manifest,
follows a dsh module proxy to its target, and compares real package
directories, with a probe test for the linked and the proxied case. The README
records that the probe child itself cannot run from a packaged executable.
2026-09-08 16:14:21 +08:00
Turtle 1d6b898ef6 Merge pull request #3764 from deepseek-harness/turtle/request-review-live-smoke
feat: rank review owners by changed LOC
2026-09-08 16:13:35 +08:00
Yichen Jiang 20102bcd52 fix(boot): commit user-disabled rows with the composition and name a user row's trust
The runtime's user-disabled row ids now come from the committed composition —
composeProfileStack collects them from the user layers it composed — so a
rejected or half-written patch file no longer makes the list disagree with the
running tree or fail to parse. The inventory attributes a row disabled through
a group the user disabled to the user, through the shared userDisablesEntry
walk, and lists a user-layer row the composition left out under the new user
trust instead of builtin.
2026-09-08 16:13:03 +08:00
Yichen Jiang 6bc5e978ae fix(boot): harden the package probe's child
The probe child now runs with the harness's credential-shaped variables
scrubbed — the one rule every spawner uses, now defined in
dsh-launch-environment and re-exported by dsh-subprocess — and its report is
the one message echoing a per-run token the child removes from its environment,
together with process.send, before importing anything. The failure text keeps
the last 16 KiB of stderr instead of every byte, and the probe settles only on
the child's close, so no pipe or channel outlives the call.
2026-09-08 16:05:39 +08:00
Turtle 614ff04842 fix: reconcile automated review requests 2026-09-08 16:05:09 +08:00
Turtle f8828b2ce1 fix(ci): auto-repair invalid Issue labels 2026-09-08 16:01:57 +08:00
Yichen Jiang 5f0ad7c4b1 fix(boot): keep disabled bundles disabled across runs and catch config-override duplicates
reconcileInstalledBundles now enables only the dependencies a run added, so
a bundle the user disabled keeps its state through an unrelated install or
removal. Row registration records the group each row is declared under: a
config override restates a row only under that group, while the same id twice
in one list or under another group is a duplicate — a contained bundle is left
out and a built-in layer fails loud, instead of the Loader rejecting the update
or moving the row at mount.
2026-09-08 16:01:05 +08:00
Turtle f9ec0c28ed Merge pull request #3753 from deepseek-harness/turtle/package-summary-100-word-gate
docs: constrain package README summaries
2026-09-08 15:55:30 +08:00
Turtle f96fbba2db fix: cap counted review requests at one 2026-09-08 15:50:36 +08:00
Kaige-Gao babf22b4cf Merge pull request #3557 from deepseek-harness/slash-command-i18n
feat(web): localize slash command descriptions
2026-09-08 15:38:00 +08:00
Turtle a04bffb7ed feat: rank review owners by changed LOC 2026-09-08 15:35:53 +08:00
Turtle f37eb3de47 test: exercise request-review routing 2026-09-08 15:16:08 +08:00
Turtle e19f62a553 merge: sync origin/master 2026-09-08 15:11:19 +08:00
Turtle 5e7c984663 Merge pull request #3752 from deepseek-harness/turtle/request-review-smoke
fix: reconcile automated review requests
2026-09-08 15:11:09 +08:00