Commit Graph
415 Commits
Author SHA1 Message Date
Tianyi Cui ec48669f48 release(dsh): 0.2.1-alpha.1 2026-10-03 10:46:11 +08:00
imccyu 0046fe3f27 test(app-boot): update captured resolution source fixture 2026-10-02 17:09:01 +08:00
imccyu abf8b760ec fix(plugin-manager): preserve live runtime resolution mappings 2026-10-02 17:09:01 +08:00
imccyu 99fce8d4ea docs(plugin-manager): clarify runtime resolution publication rules 2026-10-02 17:09:01 +08:00
imccyu 869afc493d fix(plugin-manager): refresh runtime package resolution 2026-10-02 17:09:01 +08:00
imccyu 4eb53e63ff fix(ci): cover HMR edge cases and document strict assertions 2026-10-02 16:02:37 +08:00
imccyu a59beb8ae3 fix(hmr): preserve manifest refresh with Office resolution 2026-10-02 13:55:54 +08:00
imccyu b1c5f861b6 fix(hmr): preserve loaded entry identities across manifest changes 2026-10-02 13:54:51 +08:00
imccyu 1273855237 test(hmr): cover runtime removal during dependency traversal 2026-10-02 13:54:03 +08:00
imccyu d7d2e5fd4e fix(hmr): refresh CommonJS requests without evicting modules 2026-10-02 13:54:03 +08:00
imccyu 69f555f06a docs(hmr): clarify CommonJS request refresh 2026-10-02 13:54:01 +08:00
imccyu 980b410340 fix(hmr): preserve native manifest behavior 2026-10-02 13:53:41 +08:00
imccyu 6fe4a2e184 fix(hmr): invalidate changed package manifests 2026-10-02 13:51:41 +08:00
Turtle 819eb8078e Merge origin/master into turtle/remove-invariants-ccf1396aaf61 2026-10-01 16:33:09 +08:00
Turtle 9c5fb6b0c5 Merge pull request #5550 from deepseek-harness/turtle/plugin-version-hint-66b6a2501f82
feat(plugin-manager): name the exact spec when pnpm installs an older version
2026-10-01 12:36:36 +08:00
imccyu 732dd913cf feat(inspector): embed Chrome DevTools and bundle optional diagnostics 2026-10-01 00:14:13 +08:00
Tianyi Cui c7f66d13a6 docs(notes): prune redundant active decision records 2026-09-30 23:20:22 +08:00
Turtle 43c5f1e924 fix(plugin-manager): explain another installed version only for one-registry runs 2026-09-30 18:42:32 +08:00
Turtle bab69fbec5 feat(plugin-manager): name the exact spec when pnpm installs an older version 2026-09-30 18:13:26 +08:00
Turtle c006c6c074 Merge pull request #5535 from deepseek-harness/fix/retired-schedule-bundle
fix: drop retired bundle selections and let the Plugins page remove orphans
2026-09-30 18:11:54 +08:00
Turtle 4ac4e95460 Merge pull request #5394 from deepseek-harness/fix/bundle-only-metadata
fix(plugins): read package.json only for package-root plugins
2026-09-30 18:10:34 +08:00
turtle1999 f8a274b76e fix(plugins): name declaring manifests and reject built display manifests
Manifest icon diagnostics name the package.json the author edits.
verify-package-meta rejects a package.json export that resolves to build
output instead of reading it, and PackageManifest.exports uses a narrow
export-target type.
2026-09-30 17:54:55 +08:00
turtle1999 00b363074a fix(plugin-manager): let the page remove a selection no package holds
Desktop loads its profile with `loadProfileDirectory`, so the retired
bundle removal moves there from `loadProfile` and covers every loader.

A name in `dsh.profile.bundles` that neither the profile's dependencies
nor the installation holds had no uninstall on the Plugins page: the
button required `installed`. The Host now reports such a selection as
`removable`, and `removeBundle` deselects it without running pnpm. The
page shows uninstall for `installed || removable`.
2026-09-30 17:36:56 +08:00
turtle1999 9633724b40 fix(app-boot): drop the retired schedule bundle from profile manifests
`@deepseek-ai/dsh-experimental-schedule-bundle` shipped in dsh-v0.2.0-rc.1
and rc.2 and was removed when the Web composition started mounting
Schedule itself. A profile that switched it on kept the name in
`dsh.profile.bundles`, so every start reported an unresolvable bundle and
the Plugins page showed a failed entry with no removal action.

`loadProfile` now removes names listed in `RETIRED_BUNDLES` from any
profile's bundle list, alongside the existing installation-owned tuple
normalization, and rewrites the manifest only when the list changes.
2026-09-30 15:39:25 +08:00
Chinesezjc 3e5231bc6f Merge origin/master into feat/preset-scoped-schedule-tools
Resolutions:
- `docs/subsystems/schedule.*` and `packages/client/ui-schedule/README.*` keep
  this branch's shipped-composition text with master's newer wording (Rules and
  Records tabs, the icon-button linked-session layout).
- `docs/event-producer-consumer.*` regenerated by `gen-doc-graphs`.
2026-09-30 13:49:30 +08:00
Turtle f028f25667 refactor: remove runtime invariant plugins
Delete @deepseek-ai/dsh-invariants, every package's ./invariant companion
and its tests, the invariant gates and Vitest setup, the scoped-event
resolver generator, and the INVARIANT-coded listener rethrow paths.
Update docs, READMEs, Agent Notes, and add an upgrade guide.
2026-09-30 12:52:18 +08:00
turtle1999 6c6b85e572 Merge remote-tracking branch 'origin/master' into turtle/bundle-only-metadata-5394 2026-09-30 11:41:32 +08:00
turtle1999 8339f16c1d fix(plugins): read package.json only for package-root plugins
Subpath plugins are not packages, so they never read a package.json and
take their icon from the exported <specifier>/icon resource, like locale.
Package roots keep manifest text fallback and icon, with ./icon as the
fallback image. Drop the bundle-only reader option.
2026-09-30 11:41:26 +08:00
Turtle 508e71b686 Merge pull request #5428 from deepseek-harness/turtle/plugin-source-section
feat(plugins): 在组合包详情页显示来源信息
2026-09-30 11:15:39 +08:00
Chinesezjc 4f1a4f8940 Merge origin/master into feat/preset-scoped-schedule-tools
Resolutions:
- `packages/experimental/schedule-bundle/package.json` stays deleted: master
  bumped a package this branch retires.
- `@deepseek-ai/dsh-tool-schedule` follows the release train version.
2026-09-29 17:33:43 +08:00
imccyu c1b47e41fc release(dsh): 0.2.0-rc.2 2026-09-29 16:40:57 +08:00
Chinesezjc fc395556b6 Merge remote-tracking branch 'origin/master' into feat/preset-scoped-schedule-tools 2026-09-29 16:39:19 +08:00
turtle1999 9b79f97010 fix(plugins): keep aliases and whole user information in bundle sources
Address the second ds-review-bot round on the bundle Source section:

- remove an http(s) URL's user information up to its last `@`, so a
  username containing `@` no longer leaves the password behind;
- keep the dependency name before a local or git spec when the package's
  own manifest name differs, so reinstalling restores the alias;
- accept scp-like git addresses with any user name;
- show Built in for a profile dependency whose loaded copy the
  installation supplies, instead of hiding the section;
- align the PackageView, subsystem page, and README wording with the
  shadowing rule and the kept query string, and assert the source of
  not-bundle and unreadable bundles.
2026-09-29 13:27:43 +08:00
turtle1999 6d1e12b237 fix(plugins): keep credentials and shadowed copies out of bundle sources
Address the first ds-review-bot round on the bundle Source section:

- strip the user information of http(s) and git+http(s) URLs so a private
  Git URL's token reaches neither the page nor the plugin_manager tool;
- expand `~` in file:/link: paths to the home directory as pnpm does;
- write jsr: aliases after the dependency name, like npm: aliases;
- give no source for a profile dependency the installation also supplies,
  whose installation copy is the one that loads;
- label the English row "Code source" to match the Chinese copy and hold
  for built-in bundles, and sync the subsystem page, READMEs, CSS comment,
  and tool test.
2026-09-29 12:07:56 +08:00
turtle1999 b96959ecf4 feat(plugins): show where a bundle comes from on its page
The bundle page ends with a Source section: the spec that installs the
bundle elsewhere, as `pnpm add` accepts it, or Built in for an official
bundle the installation ships, followed by its current version.

The Host's listBundles carries the new `source` field for profile
dependencies: git addresses and URLs as recorded, file:/link: paths made
absolute against the profile, and registry ranges, tags, or aliases after
the package name.
2026-09-29 10:51:33 +08:00
Tianyi Cui c194143fef test(hmr): print pending refresh state on failure and cite the libuv barrier
The case budget fires before eventually() can name the pending step, so the
native-delivery cases print the observed refresh values on failure. The
barrier JSDoc cites the libuv close-time wait and states that any directory
handle rebuilds the per-process stream; the transaction case takes the same
budget as its siblings; the hmr README records the darwin registration
window as a known limitation.
2026-09-29 02:03:10 +08:00
Tianyi Cui 7d3c9750e6 test(hmr): wait for a live native watch before the first config write
Chokidar reports ready once fs.watch() returns, but libuv on darwin builds
the per-process FSEvents stream later on its CoreFoundation thread, so a
write that lands first is never reported. The watch-config cases now close
a second fs.watch directory handle after registration, which blocks until
that stream is rebuilt with the remaining handles, and eventually() takes
the case's effective budget instead of a local 10 s constant.

Fixes #5414
2026-09-29 01:29:18 +08:00
turtle1999 d12257c959 fix(plugins): preserve manifest icon precedence 2026-09-28 23:30:05 +08:00
turtle1999 9cd8a888bb chore: merge master into bundle metadata correction 2026-09-28 22:45:57 +08:00
turtle1999 ecedbbc2e6 fix(plugins): reuse locale metadata and export bundle icons 2026-09-28 22:34:46 +08:00
Chinesezjc 00e7a85f62 Merge origin/master into feat/preset-scoped-schedule-tools
Resolutions:
- `packages/experimental/schedule-bundle/package.json` stays deleted: master
  bumped a package this branch retires.
- `@deepseek-ai/dsh-tool-schedule` follows the release train version.
2026-09-28 20:11:15 +08:00
imccyu 4878cdabd8 release(dsh): 0.2.0-rc.1 (#5387) 2026-09-28 19:48:10 +08:00
turtle1999 f30aec98b6 fix(plugins): reserve package display resources for bundles 2026-09-28 19:33:17 +08:00
Chinesezjc c6dd905972 feat(web): ship the Schedule service and task page in the Web composition
The reminder stack no longer hides behind an optional experimental bundle.
`packages/bundle/web-app/cordis.patch.yml` inserts `schedule` and
`ui-schedule`, so a shipped profile mounts the task store, the delivery
runtime, and the Automation tasks page; the
`@deepseek-ai/dsh-experimental-schedule-bundle` package and its wiring are
removed.

Preset ownership is unchanged: `standard`, `cordis`, and `ptc` declare the
clock and the four reminder tools in their own scope, and `minimal` declares
neither, so a minimal session carries no reading and no reminder tool even
though the service is mounted.

`apps/cli` depends on `@deepseek-ai/dsh-tool-schedule`, and
`packages/bundle/web-app` declares `@deepseek-ai/dsh-schedule` and
`@deepseek-ai/dsh-client-ui-schedule`: preset and profile rows resolve plugin
names from the installation anchor, so a missing declaration leaves the row
without a fiber and every session creation fails with
`agent-preset/invalid`.

Documentation, Agent Notes, and the recorded Web fixtures follow the shipped
composition.
2026-09-28 18:31:53 +08:00
turtle1999 f2af03539b perf(settings): skip unused shared compositions 2026-09-28 16:12:42 +08:00
turtle1999 3e6c104445 perf(settings): reuse composition for unoverridden entries 2026-09-28 15:58:23 +08:00
Tianyi Cui 1c0234e7b1 test(boot): isolate plugin-manager Git children from host command-line config
The self-hosted Windows serial lane failed 12 cases from one cause: the host
exported Git's indexed command-line configuration (`GIT_CONFIG_COUNT` with
`GIT_CONFIG_KEY_0` / `GIT_CONFIG_VALUE_0`), and the shared subprocess scrub
removes credential-shaped names, so a child inherited the counter without its
key and died with `error: missing config key GIT_CONFIG_KEY_0` before it read
any configuration file.

Both spec files now delete that group from their own environment before they
spawn Git, because they judge profile behavior rather than host state. The
product-side handling stays out of this change; it is preserved on the branch
`deferred/git-command-line-config-scrub-20260927` for a later product PR.

GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.bare GIT_CONFIG_VALUE_0=true pnpm exec
vitest run packages/boot/plugin-manager/tests/github-connection.spec.ts
packages/boot/plugin-manager/tests/manager.spec.ts -> 12 failed at the parent
revision, 95/95 passed with the isolation.
2026-09-27 20:03:56 +08:00
Tianyi Cui 6ad3557b1b test(boot): wait on the observed state in two Windows-lane cases
`operations.spec.ts` read the profile's run record from a 100 ms timer armed
before the refused installation whose repair it observes; a loaded runner
reached the repair run after that timer and the case failed with `null`
against the recorded run. The observing child now stays in flight until the
record appears, and the bounded wait starts at the launcher hand-over rather
than at test start.

The loader-composition case counts `stdin_read` settlements but reported only
the count, so its Windows failures could not say which tier settled which
send. The recorded reasons now ride in the assertion message; the threshold
and the assertions are unchanged.
2026-09-27 16:37:14 +08:00
zhc 1a797d0d52 merge: reconcile shared OTel service from master 2026-09-25 20:05:36 +08:00
Chinesezjc 752e366a53 Merge remote-tracking branch 'origin/master' into feat/experimental-schedule-bundle 2026-09-25 15:31:58 +08:00