Commit Graph
115 Commits
Author SHA1 Message Date
Turtle 589790d6e9 Merge remote-tracking branch 'origin/master' into turtle/plugin-market-entry-8303d8c92886
# Conflicts:
#	apps/web/tests/inspector-late-enable.e2e.ts
#	packages/experimental/inspector-profile/README.i18n.yaml
#	packages/experimental/inspector-profile/README.md
2026-10-21 15:12:43 +08:00
Turtle 11589ed104 feat(web): list custom plugin markets on the main experimental list
Developer Tools moves to the More page.
2026-10-21 13:34:13 +08:00
Turtle c7be617437 Merge remote-tracking branch 'origin/master' into turtle/plugin-sentence-case-299acab3ee89
# Conflicts:
#	packages/experimental/cua/src/application-access.ts
2026-10-21 13:28:18 +08:00
ZiyaandZiyaZhang e819a7126b feat(web): hide persistent terminal bundle controls (#6753)
Co-authored-by: ZiyaZhang <[email protected]>
2026-10-21 03:52:24 +00:00
Turtle b9d049d041 fix(plugins): use sentence case for built-in plugin English copy
Refs #6790
2026-10-21 11:28:26 +08:00
ZiyaandZiyaZhang 5e9bb51724 feat(plugins): Ralph 循环和会话搜索默认从 GUI 隐藏 (#6754)
* feat(plugins): hide Ralph and session search from default discovery

* fix: keep hidden bundled plugins explicitly activatable

---------

Co-authored-by: ZiyaZhang <[email protected]>
2026-10-20 10:26:31 -07:00
creatixchu b6ea723e9e test(cua): isolate toggle regression from consent storage changes 2026-10-20 20:17:31 +08:00
Stevring dbb0d2bd83 Merge origin/master into fix/touch-tooltip-interactions 2026-10-20 14:34:15 +08:00
Stevring 11e4b3f52f test(client): fix touch input and hover coverage checks 2026-10-20 14:34:03 +08:00
Turtle 8114a96ae4 Merge pull request #6623 from deepseek-harness/turtle/experimental-plugin-details-all
docs(experimental): add illustrated detail documents to the remaining experimental plugins
2026-10-20 14:11:59 +08:00
Stevring 94ffdd2377 fix(client): align touch tooltips and hover affordances 2026-10-20 12:50:31 +08:00
creatixchu d779dda9ab fix(web): move CUA to experimental plugins page 2026-10-20 12:16:39 +08:00
creatixchu cc2caf9631 test(web): assert experimental labels for each offered bundle 2026-10-20 12:16:12 +08:00
creatixchu f305312e84 refactor(web): classify experimental badges with an explicit list 2026-10-20 12:05:57 +08:00
turtle1999 116438bcd1 docs(experimental): add illustrated detail documents to the remaining experimental bundles
Ten experimental bundles get a user-facing detail document in English and Chinese. Each starts with one 640x300 SVG feature illustration drawn to the plugin preview standard, then covers how to use the plugin and what to know before turning it on.
2026-10-19 23:50:17 +08:00
turtle1999 3be4701a9d refactor(plugin-manager): show built-in feature previews through bundle detail documents 2026-10-19 22:04:01 +08:00
turtle1999 9c8522bb64 feat(plugin-detail): show Markdown plugin details on bundle and market entry pages
Plugins bundle pages and Discover entry pages show the plugin's long
description first, as Markdown with images, in a height-limited region
without its own heading. The document is the file locale meta.detail
names, otherwise the package README, otherwise (market entries only)
the declared repository's README.

The new dsh-plugin-detail library selects documents and reads local
package directories and npm file CDNs without state. plugin-manager
reads installed and offered bundles through readBundleDetail; plugin-market
reads market entries through readEntryDetail, single-file APIs, and a
size-limited partial clone cache serialized across processes. Raw HTML is
omitted, relative links stay text, and relative images load from Host
routes with a sandbox CSP.
2026-10-19 19:13:22 +08:00
Yichen Jiang 5d7d13289c test(web): decouple plugin snapshots from release versions 2026-10-14 20:59:15 +08:00
ZiyaZhang c1269a8f75 feat(plugins): standardize built-in previews and illustrate voice input 2026-10-14 02:19:42 -07:00
turtle1999andZiyaZhang a2141868de fix(plugin-manager): reset a failed preview by source instead of a key
Co-authored-by: ZiyaZhang <[email protected]>
2026-10-14 16:55:21 +08:00
turtle1999andZiyaZhang 7fcaf07051 feat(plugin-manager): show a built-in feature preview for the badge skill
Plugin Manager hardcodes feature previews by package name, like its
experimental bundle lists, instead of reading a package manifest field.
The DSH badge skill bundle shows an English or Chinese illustration
below its description. Client bundles embed imported SVG, PNG, and
WebP files as data URLs through the shared tsdown preset, which
replaces the account package's own asset loader.

Co-authored-by: ZiyaZhang <[email protected]>
2026-10-14 16:22:56 +08:00
turtle1999 879ad372ac feat(hmr): replace plugins whose package files changed during profile recomposition
With HMR, installing, enabling, disabling and removing bundles take effect live. Each profile recomposition compares
the loaded modules below the profile directory and its linked targets with disk, stops the plugins whose files
changed, and recomposes the profile through app-boot's recomposeProfile(): the rows the next generation drops are
removed first, the latest runtime resolution is published once, and the generation is applied and judged. Afterwards
HMR evicts the modules below the mappings the recomposition dropped.

- app-boot: recomposeProfile(); PluginPackages.resolution; ResolutionRestartRequired; the resolver accepts in-place
  version changes and relinks, and relocates Node's cached link real paths.
- plugin-manager: with HMR, installBundle refuses an installed package (already-installed), so an upgrade is a
  removal and an installation; every restart-required result carries a restartReason; removal uses the registry the
  package was installed from.
- ui-plugin-manager: the Official Update removes and then installs; restart prompts name their reason.
2026-10-13 22:15:57 +08:00
imccyu b67cf4d381 test(web): verify plugin header wrapping by intrinsic fit 2026-10-13 01:44:18 +08:00
Yif 9e62c1c229 fix(web): restore the plugin header subtitle row to its flex layout
The responsive change had moved `.pageIntro` off flex, which put the information
icon 1.06px off the subtitle's vertical centre and failed the existing geometry
assertion in `plugin-manager.e2e.ts`. Restore the flex row and the button's
`flex: none`, which keeps the 4px gap and the centring. The header still wraps
its action group onto another line, which is what this change is for.

Pin the wrap threshold in both header scenarios. Each records whether the action
group sits beside or below the heading, the plugin scenario asserts the wide and
narrow sides explicitly, and the plugin scenario launches its own scaffold so an
install task left by an earlier test cannot move the threshold between runs.
2026-10-12 23:15:20 +08:00
Yif ee558c82d7 feat(web): reflow the Plugins page header at narrow widths
The page header wraps its action group onto another line when the title and the
actions no longer fit together, so the title keeps its width and the actions keep
their labels on one line. The information button follows the subtitle text
instead of a flex row, which keeps it beside the copy at every width.

Cover the header in the plugin-manager browser scenario: the action group stays
inline when it fits, moves below when it does not, keeps its labels on one line,
stays inside the header, and retains focus across the change.
2026-10-12 21:56:08 +08:00
Ziya 640e28cd94 feat(web): reorganize plugin settings and add experimental catalog page (#5922)
Group built-in settings before optional and installed plugins, and open the full experimental catalog on a separate page.

Preserve detail navigation and unsaved configuration when installation finishes, and use the visible More label as the accessible name.
2026-10-08 23:42:56 -07:00
Tianyi Cui c13e225301 test(web): budget the remaining plugin switch writes
Review found the same Host profile write plus inventory reload chain still
uncovered in worktree-opt-in.e2e.ts, and still written as 10_000 literals in
plugin-manager.e2e.ts. Both now use PLUGIN_TOGGLE_SETTLE_MS, the README keeps
only the convention, and the constant's JSDoc names the store's load() as the
reader that republishes the switch.
2026-10-07 12:28:36 +08:00
Tianyi Cui 530c4d67aa test(web): bound plugin-card switch polls by the profile write chain
A plugin-card switch republishes `aria-checked` only after the Host writes
the profile and the panel re-reads its inventory. That chain measured
0.5-0.8 s on an idle host and 2.0-4.8 s across 32 samples in a 16-worker
lane, so Vitest's 1-second `expect.poll` default truncated it and failed
the switch assertions of the CoT translation scenarios in CI.

Every poll that follows a plugin-card switch click now passes the shared
PLUGIN_TOGGLE_SETTLE_MS budget; assertions, retries, and product code are
unchanged.
2026-10-07 12:11:03 +08:00
Tianyi Cui c135bdf483 test(plugin): refresh official discovery browser and API evidence 2026-10-07 01:26:00 +08:00
Tianyi Cui de27882007 test(plugin): refresh optional bundle inventory and browser evidence 2026-10-06 23:48:59 +08:00
Tianyi Cui cfc6be809c feat(reasoning): persist opt-in machine translations 2026-10-06 15:36:14 +08:00
Tianyi Cui a1363f7f47 fix(worktree): offer GUI opt-in through official plugins 2026-10-06 01:39:47 +08:00
imccyu 732dd913cf feat(inspector): embed Chrome DevTools and bundle optional diagnostics 2026-10-01 00:14:13 +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 d9d9ad3716 test(web): expect Uninstall on an unresolvable bundle selection 2026-09-30 17:54:03 +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
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
Ziya 4d59dc2dd6 Merge pull request #5399 from deepseek-harness/demo/plugin-first-ui
feat(web): add Creator entry to the plugin menu
2026-09-29 08:03:23 -07:00
ZiyaZhang 57383630a6 Merge updated Creator mode parent and keep shared entry flow 2026-09-29 02:30:07 -07:00
Chinesezjc fc395556b6 Merge remote-tracking branch 'origin/master' into feat/preset-scoped-schedule-tools 2026-09-29 16:39:19 +08:00
Ziya 2bde15f551 Merge pull request #5410 from deepseek-harness/turtle/plugin-upgrade-copy-66fc552187f2
fix(ui-plugin-manager): tell users to reinstall a plugin to upgrade it
2026-09-29 00:00:44 -07:00
Yif fd4cd8b348 docs(web): correct the install guide's stale comments, JSDoc, and README
Review follow-up: the guide shows one package-name entry, so the comments
and copy that still described three forms or a displayed Git/local-path
example no longer match. The Git and local-path template strings keep their
replacement reminder for a field that still holds them; the constants' JSDoc
and the package READMEs now say that instead of claiming a displayed example.

Also moves .installSafetyText below the rule its comment heads, and pins the
upgrade assertion to the trust box rather than the whole dialog text.
2026-09-29 12:04:21 +08:00
Yif 7a0c6ebd9e refine(web): show only the package-name example in the install guide
The install guide listed the package name, a GitHub address, and a local
directory as numbered steps; only the package name needs an example. Keep
that entry and drop the index badge, give the item's hint and example the
title's text color, and balance the container's vertical padding.

The trust box above Install also states that installed plugins do not update
automatically, that upgrading means uninstalling and installing the new
version, and that later releases will keep improving that experience.
2026-09-29 11:57:21 +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
ZiyaZhang 66f00a9170 test(web): verify plugin entry across modes and session states 2026-09-28 12:21:45 -07:00
turtle1999 d12257c959 fix(plugins): preserve manifest icon precedence 2026-09-28 23:30:05 +08:00
Turtle de1ec63678 fix(ui-plugin-manager): tell users to reinstall a plugin to upgrade it
The already-installed refusal and the incompatible-version reason now say
that upgrading an installed plugin means uninstalling and installing again.
2026-09-28 22:46:51 +08:00