feat(web): list custom plugin markets on the main experimental list

Developer Tools moves to the More page.
This commit is contained in:
Turtle committed 2026-10-21 13:34:13 +08:00
1 parent c266317763
commit 11589ed104
15 files changed
+34 -32

No files matched your search

@@ -32,16 +32,16 @@
- text: 实验性 在本机使用 SenseVoice 转写录音,首次使用需安装依赖。
- status
- switch "启用 语音输入"
- listitem:
- button "查看 自定义插件市场": 自定义插件市场
- text: 实验性 在插件页添加「发现」标签页,从你添加的插件市场索引浏览和安装插件。
- status
- switch "启用 自定义插件市场"
- listitem:
- button "查看 自动授权审查": 自动授权审查
- text: 实验性 提供自动审查权限模式,由模型在每次工具调用前判断是否授权。
- status
- switch "启用 自动授权审查"
- listitem:
- button "查看 开发者工具": 开发者工具
- text: 实验性 查看调试会话原始数据、聊天消息分组数据,以及调试 NodeJS 后端
- status
- switch "启用 开发者工具"
- heading "已安装插件" [level=3]
- list:
- listitem:
@@ -32,16 +32,16 @@
- text: 实验性 在本机使用 SenseVoice 转写录音,首次使用需安装依赖。
- status
- switch "启用 语音输入"
- listitem:
- button "查看 自定义插件市场": 自定义插件市场
- text: 实验性 在插件页添加「发现」标签页,从你添加的插件市场索引浏览和安装插件。
- status
- switch "启用 自定义插件市场"
- listitem:
- button "查看 自动授权审查": 自动授权审查
- text: 实验性 提供自动审查权限模式,由模型在每次工具调用前判断是否授权。
- status
- switch "启用 自动授权审查"
- listitem:
- button "查看 开发者工具": 开发者工具
- text: 实验性 查看调试会话原始数据、聊天消息分组数据,以及调试 NodeJS 后端
- status
- switch "启用 开发者工具"
- heading "已安装插件" [level=3]
- list:
- listitem:
@@ -32,16 +32,16 @@
- text: 实验性 在本机使用 SenseVoice 转写录音,首次使用需安装依赖。
- status
- switch "启用 语音输入"
- listitem:
- button "查看 自定义插件市场": 自定义插件市场
- text: 实验性 在插件页添加「发现」标签页,从你添加的插件市场索引浏览和安装插件。
- status
- switch "启用 自定义插件市场"
- listitem:
- button "查看 自动授权审查": 自动授权审查
- text: 实验性 提供自动审查权限模式,由模型在每次工具调用前判断是否授权。
- status
- switch "启用 自动授权审查"
- listitem:
- button "查看 开发者工具": 开发者工具
- text: 实验性 查看调试会话原始数据、聊天消息分组数据,以及调试 NodeJS 后端
- status
- switch "启用 开发者工具"
- heading "已安装插件" [level=3]
- list:
- listitem:
@@ -35,6 +35,7 @@ it('opens bottom DevTools after the Developer Tools bundle is enabled on an alre
await page.getByRole('navigation', { name: 'Global panels' }).getByRole('button', { name: 'Plugins', exact: true }).click()
const plugins = page.locator('[data-plugin-panel]')
await plugins.getByRole('button', { name: 'More', exact: true }).click()
const toggle = plugins.getByRole('switch', { name: 'Enable Developer Tools', exact: true })
await toggle.waitFor()
expect(await toggle.getAttribute('aria-checked')).toBe('false')
+4 -3
View File
@@ -659,11 +659,12 @@ describe('web e2e: plugin manager', () => {
expect(await panel.locator('[data-plugin-group="basic"] [data-plugin-item]').count()).toBe(4)
expect(await panel.locator('[data-plugin-package="@deepseek-ai/dsh-experimental-inspector"]').count()).toBe(0)
expect(await panel.getByRole('switch', { name: '启用 语音输入', exact: true }).getAttribute('aria-checked')).toBe('false')
expect(await panel.getByRole('switch', { name: '启用 开发者工具', exact: true }).getAttribute('aria-checked')).toBe('false')
expect(await panel.getByText('查看调试会话原始数据、聊天消息分组数据,以及调试 NodeJS 后端', { exact: true }).count()).toBe(1)
expect(await panel.getByRole('switch', { name: '启用 自定义插件市场', exact: true }).getAttribute('aria-checked')).toBe('false')
expect(await panel.getByRole('switch', { name: '启用 开发者工具', exact: true }).count()).toBe(0)
expect(await panel.getByText(/Cordis|Chrome DevTools/).count()).toBe(0)
await panel.getByRole('button', { name: '更多', exact: true }).click()
await panel.getByRole('heading', { name: '实验性插件', exact: true, level: 1 }).waitFor()
expect(await panel.getByText('查看调试会话原始数据、聊天消息分组数据,以及调试 NodeJS 后端', { exact: true }).count()).toBe(1)
const bundles = await scaffold.ctx.pluginManager.listBundles()
expect(bundles.some(bundle => bundle.name === '@deepseek-ai/dsh-experimental-terminal-bundle')).toBe(true)
expect(await panel.getByRole('switch', { name: '启用 持久终端', exact: true }).count()).toBe(0)
@@ -682,6 +683,7 @@ describe('web e2e: plugin manager', () => {
]))).toEqual([
['@deepseek-ai/dsh-experimental-agent-team-profile', 1],
['@deepseek-ai/dsh-experimental-voice-input-bundle', 1],
['@deepseek-ai/dsh-experimental-plugin-market-bundle', 1],
['@deepseek-ai/dsh-experimental-auto-review', 1],
['@deepseek-ai/dsh-experimental-inspector-profile', 1],
['@deepseek-ai/dsh-cua-bundle', 1],
@@ -689,7 +691,6 @@ describe('web e2e: plugin manager', () => {
['@deepseek-ai/dsh-experimental-cot-translation-bundle', 1],
['@deepseek-ai/dsh-experimental-session-titles-bundle', 1],
['@deepseek-ai/dsh-experimental-badge-skill-bundle', 1],
['@deepseek-ai/dsh-experimental-plugin-market-bundle', 1],
['@deepseek-ai/dsh-subagent-codex', 0],
['@deepseek-ai/dsh-subagent-claude-code', 0],
])
+2 -2
View File
@@ -12,8 +12,8 @@
en: a8d1e6785c3c3c30
zh: 7ea1eaa8204a5a1e
/plugin-markets/turn-on-discover:
en: 96b2fd994f8f3e7e
zh: 203e8460ec6aed7a
en: a5024e57052f6e36
zh: 39b84e247adc9a18
/plugin-markets/browse-and-install:
en: cf616bba26958533
zh: 1e32df16a6f4bba7
+1 -1
View File
@@ -18,7 +18,7 @@ A plugin market is one JSON index file that lists installable DSH bundles with t
<a id="turn-on"></a>
## Turn on Discover
Open **Plugins**, select **More** beside **Experimental plugins**, find **Custom plugin markets**, and switch it on. A **Discover** tab appears next to **Installed**, and Creator mode gains the read-only `plugin_market` tool. Switching the bundle off removes both again.
Open **Plugins**, find **Custom plugin markets** under **Experimental plugins**, and switch it on. A **Discover** tab appears next to **Installed**, and Creator mode gains the read-only `plugin_market` tool. Switching the bundle off removes both again.
DSH ships no index source. Select **Discover**, choose **Add index source**, and enter the URL of an index file. A URL must use `http:` or `https:` and must not contain a user name, password, or `#` fragment. Anyone on the network path can change an `http:` index, including the install specs it lists, so use `https:` for a market reached over a network you do not control. Each source belongs to the current profile.
+1 -1
View File
@@ -18,7 +18,7 @@
<a id="turn-on"></a>
## 打开「发现」
打开**插件**,点击**实验性插件**旁的**更多**,找到**自定义插件市场**并打开开关。**已安装**旁边会出现**发现**标签页,Creator 模式也会获得只读的 `plugin_market` 工具。关闭该组合包会再次移除这两者。
打开**插件**,在**实验性插件**下找到**自定义插件市场**并打开开关。**已安装**旁边会出现**发现**标签页,Creator 模式也会获得只读的 `plugin_market` 工具。关闭该组合包会再次移除这两者。
DSH 不内置任何索引源。选择**发现**,点击**添加索引源**,输入一个索引文件的 URL。URL 必须使用 `http:` 或 `https:`,并且不能包含用户名、密码或 `#` 片段。网络路径上的任何人都能修改 `http:` 索引,包括其中列出的安装 spec,因此经由不受你控制的网络访问的市场应使用 `https:`。每个索引源属于当前 profile。
@@ -113,11 +113,12 @@ const HIDDEN_BUNDLES = new Set([
const EXTENSION_BUNDLES = [
'@deepseek-ai/dsh-experimental-agent-team-profile',
'@deepseek-ai/dsh-experimental-voice-input-bundle',
'@deepseek-ai/dsh-experimental-plugin-market-bundle',
'@deepseek-ai/dsh-experimental-auto-review',
'@deepseek-ai/dsh-experimental-inspector-profile',
]
/** The optional bundles the main list holds back until selected; the More list includes eligible entries. */
const MORE_BUNDLES = [
'@deepseek-ai/dsh-experimental-inspector-profile',
'@deepseek-ai/dsh-cua-bundle',
'@deepseek-ai/dsh-experimental-tool-worktree',
'@deepseek-ai/dsh-experimental-cot-translation-bundle',
@@ -125,7 +126,6 @@ const MORE_BUNDLES = [
'@deepseek-ai/dsh-experimental-session-titles-bundle',
'@deepseek-ai/dsh-experimental-badge-skill-bundle',
'@deepseek-ai/dsh-experimental-ralph-bundle',
'@deepseek-ai/dsh-experimental-plugin-market-bundle',
'@deepseek-ai/dsh-subagent-codex',
'@deepseek-ai/dsh-subagent-claude-code',
]
@@ -15,8 +15,8 @@
en: 76368b6b1da79c80
zh: 52384aee991ac542
/deepseek-ai-dsh-experimental-inspector-profile/use-this-package:
en: 919c4baad08a10a6
zh: 0f0c82abda2f3630
en: 73b5f15988a2c49d
zh: 8a763251d5890f9a
/deepseek-ai-dsh-experimental-inspector-profile/understand-the-implementation:
en: c9afee7b01eff431
zh: c2d1209c14a42088
@@ -24,7 +24,7 @@ Enable this optional bundle to inspect Session data in the Sidebar and open Node
<a id="use-this-package"></a>
## Use this package
Enable **Developer Tools** in Plugin Manager's official group. This selects `@deepseek-ai/dsh-experimental-inspector-profile` for the current Web profile.
Open **Plugins**, select **More** beside **Experimental plugins**, and enable **Developer Tools**; once on, it also appears on the main list. This selects `@deepseek-ai/dsh-experimental-inspector-profile` for the current Web profile.
Open **Session Log** from the Sidebar's new-tab menu or guide. [Session Inspector](../session-inspector/README.md) provides one view with selectable Raw Log and Chat Group presentations; Raw Log is selected initially.
@@ -24,7 +24,7 @@ kind: "package-bundle"
<a id="use-this-package"></a>
## 使用本包
在插件管理器的官方分组中启用**开发者工具**,即可为当前 Web profile 选择 `@deepseek-ai/dsh-experimental-inspector-profile`。
打开**插件**,点击**实验性插件**旁的**更多**,启用**开发者工具**,启用后它也会出现在主列表中。这会为当前 Web profile 选择 `@deepseek-ai/dsh-experimental-inspector-profile`。
从 Sidebar 的新建 tab 菜单或引导页打开**会话数据诊断**。[Session Inspector](../session-inspector/README.zh.md) 提供一个视图,可选择原始数据或对话分组展示形式,初始选中原始数据。
@@ -15,8 +15,8 @@
en: 76368b6b1da79c80
zh: 434cf3c1f5db33cd
/deepseek-ai-dsh-experimental-plugin-market-bundle/use-this-package:
en: 4929999ed97cbcaf
zh: a815fca7044326fc
en: cbe922a8d2f319a7
zh: 5cc5f505553c4d37
/deepseek-ai-dsh-experimental-plugin-market-bundle/understand-the-implementation:
en: 6cdb2c0f794b001f
zh: f18ba67b927b09b8
@@ -24,7 +24,7 @@ This optional bundle mounts custom plugin markets: the Host [`pluginMarket`](../
<a id="use-this-package"></a>
## Use this package
Open **Plugins** in the Web sidebar, select **More** beside **Experimental plugins**, and switch on **Custom plugin markets**; once on, it also appears on the main list. The page then shows the **Installed** and **Discover** tabs; **Discover** adds index sources and installs their bundles. Switching the bundle off removes the Discover tab and the `plugin_market` tool; the saved index sources stay in the profile.
Open **Plugins** in the Web sidebar and switch on **Custom plugin markets** under **Experimental plugins**. The page then shows the **Installed** and **Discover** tabs; **Discover** adds index sources and installs their bundles. Switching the bundle off removes the Discover tab and the `plugin_market` tool; the saved index sources stay in the profile.
-----
@@ -24,7 +24,7 @@ kind: "package-bundle"
<a id="use-this-package"></a>
## 使用此包
打开 Web 侧栏中的**插件**,点击**实验性插件**旁的**更多**,启用**自定义插件市场**;启用后它也会出现在主列表中。页面随后显示**已安装**和**发现**两个标签页;**发现**用于添加索引源并安装其中的组合包。禁用此组合包会移除发现标签页和 `plugin_market` 工具;已保存的索引源保留在 profile 中。
打开 Web 侧栏中的**插件**,在**实验性插件**下启用**自定义插件市场**。页面随后显示**已安装**和**发现**两个标签页;**发现**用于添加索引源并安装其中的组合包。禁用此组合包会移除发现标签页和 `plugin_market` 工具;已保存的索引源保留在 profile 中。
-----