dsh-mcp-connector 0.2.82 → 0.2.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  本项目遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/);首个公开版本从 `0.1.0` 开始。
4
4
 
5
+ ## [0.2.83] - 2026-10-26
6
+
7
+ ### Fixed
8
+
9
+ - #190 / PR #191:连接范围变更和回退的确认框限制最大高度,正文独立滚动,标题与确认、取消按钮保持可见;工具列表只展示前 12 项并注明总数。
10
+ - 不修改连接范围应用、回退、乐观锁或凭据处理语义。
11
+
12
+ ### Documentation and verification
13
+
14
+ - 同步当前版本文档,并重新采集本版本无凭据 Mock 截图及 GIF;素材不代表真实授权或业务调用成功。
15
+ - macOS 浏览器组件验收覆盖 360×400、640×300、1000×720 视口、8 个 Server 各 125 个长工具名、正文滚动、键盘确认/取消及焦点恢复;不等同于 Windows Desktop 实机验收。
16
+ - #178、#181 保持开放,继续等待原报告者 Windows 复测。
17
+
5
18
  ## [0.2.82] - 2026-10-26
6
19
 
7
20
  ### Added
@@ -1097,7 +1110,8 @@
1097
1110
  - 外部 URL 与导入 Header 执行安全校验。
1098
1111
  - iframe 消息校验同源和消息来源。
1099
1112
 
1100
- [Unreleased]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.82...HEAD
1113
+ [Unreleased]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.83...HEAD
1114
+ [0.2.83]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.82...v0.2.83
1101
1115
  [0.2.82]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.81...v0.2.82
1102
1116
  [0.2.48]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.47...v0.2.48
1103
1117
  [0.2.47]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.46...v0.2.47
package/README.en.md CHANGED
@@ -106,7 +106,7 @@ As of 2026-10-24, the public Registry publishes 112 connector descriptors. After
106
106
  | Connection diagnostics and last-success cache | |
107
107
  | ![Connection diagnostics](https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/main/docs/screenshots/07-connection-diagnostics.png) | |
108
108
 
109
- Assets `01`, `02`, `04`, and `07` are `v0.2.73` demos captured on 2026-10-16; `03` retains a historical `v0.2.37` snapshot; `05`, `06`, and the 43-second GIF retain `v0.2.46` demos. All are credential-free Mock UI harness assets, not evidence of real business acceptance on the current version. They contain no credentials, local paths, or query results. See [`docs/screenshots/README.md`](docs/screenshots/README.md) for provenance.
109
+ <!-- generated:media -->Screenshots and GIF were captured from v0.2.83 (2026-10-26), using the credential-free Mock harness. They demonstrate UI, not real business acceptance; counts are fixtures. See [asset provenance](docs/screenshots/README.md).<!-- /generated:media -->
110
110
 
111
111
  ## Installation
112
112
 
@@ -231,7 +231,7 @@ npm run dev:ui
231
231
 
232
232
  Every Registry merge regenerates `catalog-stats.json`; an hourly workflow in this repository synchronizes the Chinese and English product copy plus a local stats snapshot. The static npm README updates with package releases, while the live badges above read the Registry directly and therefore stay current without another npm release.
233
233
 
234
- The current public version is [`dsh-mcp-connector@0.2.82`](https://www.npmjs.com/package/dsh-mcp-connector), with [GitHub Release v0.2.82](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.82).
234
+ <!-- generated:version -->The current public version is [`dsh-mcp-connector@0.2.83`](https://www.npmjs.com/package/dsh-mcp-connector), with [GitHub Release v0.2.83](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.83).<!-- /generated:version -->
235
235
 
236
236
  See [CHANGELOG.md](CHANGELOG.md) for version history and [docs/DESKTOP-E2E.md](docs/DESKTOP-E2E.md) for the Desktop release checklist.
237
237
 
package/README.md CHANGED
@@ -108,7 +108,7 @@ Desktop 需要完全退出并重新启动应用;Web 需要停止原 `dsh web`
108
108
  | 连接诊断与最后成功缓存 | |
109
109
  | ![连接诊断](https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/main/docs/screenshots/07-connection-diagnostics.png) | |
110
110
 
111
- `01`、`02`、`04`、`07` 为 2026-10-16 的 `v0.2.73` 演示;`03` 保留 `v0.2.37` 历史快照;`05`、`06` 与 43 秒 GIF 保留 `v0.2.46` 演示。全部来自无凭据 Mock UI harness,不是当前版本的真实业务验收证据,不包含凭据、本机路径或查询结果。详见 [`docs/screenshots/README.md`](docs/screenshots/README.md)。
111
+ <!-- generated:media -->截图与 GIF 采集自 v0.2.83(2026-10-26)无凭据 Mock 页面,展示界面而非真实业务验收;市场数量是测试夹具。来源与更新方法见 [素材说明](docs/screenshots/README.md)。<!-- /generated:media -->
112
112
 
113
113
  ## 安装
114
114
 
@@ -226,7 +226,7 @@ npm run dev:ui
226
226
 
227
227
  公共 Registry 每次合并后会生成 `catalog-stats.json`;本仓库的定时工作流每小时同步中英文介绍和统计快照。npm 页面中的静态正文随版本发布更新,上方动态统计徽标则直接读取 Registry,可在不发布新 npm 版本时保持实时数量一致。
228
228
 
229
- 当前公开版本为 [`dsh-mcp-connector@0.2.82`](https://www.npmjs.com/package/dsh-mcp-connector),对应 [GitHub Release v0.2.82](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.82)。
229
+ <!-- generated:version -->当前公开版本为 [`dsh-mcp-connector@0.2.83`](https://www.npmjs.com/package/dsh-mcp-connector),对应 [GitHub Release v0.2.83](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.83)。<!-- /generated:version -->
230
230
 
231
231
  版本能力与变更记录见 [CHANGELOG.md](CHANGELOG.md)。
232
232
  Desktop 发版回归见 [docs/DESKTOP-E2E.md](docs/DESKTOP-E2E.md)。
Binary file
@@ -1,29 +1,30 @@
1
- # UI 素材说明
1
+ # 产品截图与演示的来源及更新
2
2
 
3
- 本目录保存 `dsh-mcp-connector` 的公开界面截图。所有素材均来自无凭据 UI harness:外层浏览器视口为 1280×720,harness 复刻 `lib/client.js` 中定义的 800px 产品面板,因此桌面端稳定为一行 2 张卡片。画面只展示公开目录元数据、示例 Prompt 和明确标识为 Mock 的工具数据,不包含 OAuth Token、API Key、本机路径、用户会话或查询结果。
3
+ <!-- generated:media -->本组 7 张截图和 GIF 均从 v0.2.83 于 2026-10-26 重新采集,未修改截图中的版本文字。<!-- /generated:media -->
4
4
 
5
- 素材分为三组,避免把历史截图误写成当前版本:
5
+ 全部素材由真实产品 UI 的无凭据 Mock harness 渲染:1280×720 浏览器视口、800px 产品面板、桌面两列卡片。顶部保留“无凭据 Mock”标识;目录数、连接数与工具数是演示夹具,不代表生产统计或真实授权、业务验收。不会读取用户 profile、调用服务商或上传业务数据。
6
6
 
7
- - `01`、`02`、`04` 和 `07` 是 2026-10-16 从 `v0.2.73` 隔离 UI harness 采集的当前 Mock 素材,分别展示市场、OAuth 连接器详情、JSON 导入和故障诊断。
8
- - `03` 是 2026-09-06 从 `v0.2.37` 采集的历史工具发现快照。
9
- - `05`、`06` 和 `../demo.gif` 是 2026-09-14 从 `v0.2.46` UI harness 采集的历史工具搜索、参数和演示素材。harness 中的目录数量、连接数量和工具数量属于测试夹具,不代表生产市场统计。
7
+ 根目录 [screenshots.json](../../screenshots.json) 保持外部市场兼容的 7 张图片路径与顺序;[assets.json](assets.json) 是采集版本、日期、源码指纹、SHA-256、尺寸和 GIF 时长的唯一记录。
10
8
 
11
- 旧素材曾直接以 1280px 打开内部 iframe,绕过真实产品的 800px 宿主面板,因此触发 `auto-fill/minmax(300px)` 的 3 列布局;这是采集 harness/视口过期,不是产品 CSS 漂移。当前全部登记素材都从浏览器中的真实页面状态直接截取,没有后期重排卡片或修改连接状态。
9
+ | 文件 | 内容 |
10
+ |---|---|
11
+ | 01-market-overview.jpg | 初始市场与未连接卡片 |
12
+ | 02-connector-detail.jpg | 连接器详情、权限与示例 |
13
+ | 03-tool-discovery.jpg | Mock 连接后的工具发现 |
14
+ | 04-json-import.jpg | JSON 导入与作用域 |
15
+ | 05-unified-tool-search.png | 跨连接工具查询 |
16
+ | 06-tool-parameters.png | 参数结构详情 |
17
+ | 07-connection-diagnostics.png | 模拟发现失败与诊断 |
12
18
 
13
- 仓库根目录的 [`screenshots.json`](../../screenshots.json) 按市场总览、连接器详情、工具发现、JSON 导入、统一工具搜索、参数详情和连接诊断的顺序声明 7 张图片,供 awesome-dsh-plugin 和 DSH Market 的 App Store 风格详情页采集。根清单保持外部消费者兼容的路径数组;[`assets.json`](assets.json) 记录采集版本、视口、产品面板、无凭据状态,以及每张截图和 `demo.gif` 的 SHA-256、尺寸与 GIF 时长。
19
+ `docs/demo.gif` 由当前截图状态顺序编码,仅缩放和调色,不修改版本号或连接状态。旧素材可通过 Git 历史查看,不继续用作当前产品首屏。
14
20
 
15
- | 文件 | 展示内容 |
16
- |---|---|
17
- | `01-market-overview.jpg` | `v0.2.73` 当前 Mock 市场:800px 面板、桌面两列、推荐章节和 9 分类;未连接企查查卡片显示“连接” |
18
- | `02-connector-detail.jpg` | `v0.2.73` 当前 Mock OAuth 连接器详情:权限边界、试用 Prompt 和未连接工具状态 |
19
- | `03-tool-discovery.jpg` | `v0.2.37` Context7 无凭据 Mock 健康状态、Mock 工具数量/描述、搜索和独立滚动区 |
20
- | `04-json-import.jpg` | `v0.2.73` 当前 Mock Streamable HTTP / stdio JSON 导入、格式化、作用域和本机凭据提示 |
21
- | `05-unified-tool-search.png` | `v0.2.46` 统一工具搜索:跨连接结果、来源、发现失败和最后成功缓存 |
22
- | `06-tool-parameters.png` | `v0.2.46` 参数详情:必填、类型、枚举、嵌套结构和原始安全 Schema |
23
- | `07-connection-diagnostics.png` | `v0.2.73` 当前 Mock 连接诊断:成功缓存、模拟网络与传输失败、建议、“检查连接”和“重新发现工具” |
21
+ ## 更新与发布
24
22
 
25
- `../demo.gif` 由 6 个真实浏览器状态顺序编码:市场、连接器详情、工具详情、统一搜索、参数 Schema、连接诊断。时长 43 秒,分辨率 960×540;编码只做等比例缩放和 GIF 调色,不改变布局或状态。
23
+ GitHub Markdown 不执行变量。`package.json.version` 是版本唯一源,运行 `npm run docs:sync` 生成有标记的当前版本文案;历史 Changelog、验收日期、最低支持版本和已发布文章记录不作全局替换。
26
24
 
27
- `npm run storefront:check` 校验路径、顺序、格式、文件存在性、哈希、尺寸和采集约束;`npm run check` 已包含该门禁。更新 UI 后继续使用 1280×720 浏览器视口、800px 产品面板和无凭据初始状态采集,并检查桌面两列、企查查卡片不出现“需重新授权”,且画面不包含凭据、本机路径、真实会话、查询结果或其他不应公开的内容。
25
+ 1. 修改版本或产品 UI 后,安装开发采集依赖:`npm install --no-save --legacy-peer-deps playwright@1.62.1`,并运行 `npx playwright install chromium`;另需 ffmpeg 和中文字体。
26
+ 2. 执行 `npm run storefront:capture`。脚本只启动随机回环端口,隔离浏览器不加载外部资源;支持 `CHROMIUM_EXECUTABLE` 指定本机 Chromium,`PLAYWRIGHT_MODULE` 指定开发依赖路径。
27
+ 3. 执行 `npm run docs:sync && npm run storefront:freshness && npm run check`,人工查看全部截图及 GIF,再随 PR 提交。不要仅修改 assets.json 的版本或日期。
28
+ 4. Release 工作流在发布前验证采集版本、源码指纹和 14 天有效期;旧图不会静默进入新的正式版本。先准备素材再打 Tag,不在不可变 Tag 上改图。
28
29
 
29
- 截图顶部“无凭据 Mock”标识和工具名中的 `mock_` 前缀用于明确区分验收数据与真实授权。真实用户的已安装数量、授权状态和服务健康度会因本机环境而不同。
30
+ 产品素材工作流在 UI 主线更新、正式 Release 后、每周及手动触发时检查;需要更新时生成截图与文案,并更新同一个维护 PR。自动化只提出 PR,不自动合并,不向社交平台发布。GitHub/npm/CDN 缓存可能延迟,外部市场同步仍需复核。
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "capture": {
4
- "capturedOn": "2026-10-16",
5
- "sourceVersion": "0.2.73",
4
+ "capturedOn": "2026-10-26",
5
+ "sourceVersion": "0.2.83",
6
+ "sourceFingerprint": "4a677c677d57b6389199d2bf6dfd5b376182444dd1105ba7afd34c335eb3b29e",
6
7
  "browserViewport": {
7
8
  "width": 1280,
8
9
  "height": 720
@@ -10,74 +11,73 @@
10
11
  "productPanelWidth": 800,
11
12
  "desktopCardColumns": 2,
12
13
  "state": "credential-free-mock",
13
- "preservedLegacyScreenshots": 1,
14
- "notes": "01, 02, 04 and 07 were captured from the v0.2.73 credential-free UI harness on 2026-10-16; 03 preserves the 2026-09-06 v0.2.37 snapshot; 05, 06 and demo.gif preserve the 2026-09-14 v0.2.46 harness capture."
14
+ "notes": "All assets re-rendered from the current credential-free harness; no production profile, credentials or provider calls."
15
15
  },
16
16
  "screenshots": [
17
17
  {
18
18
  "path": "docs/screenshots/01-market-overview.jpg",
19
- "sha256": "2f681896cf8a6af274483d8e3a1b422062830d25373d088296641d7c65710900",
19
+ "sha256": "97265e2142b290c8ffdf75a402e65da6c1c34939adaba28ea4175d834a4252fa",
20
20
  "width": 1280,
21
21
  "height": 720,
22
- "capturedOn": "2026-10-16",
23
- "sourceVersion": "0.2.73"
22
+ "capturedOn": "2026-10-26",
23
+ "sourceVersion": "0.2.83"
24
24
  },
25
25
  {
26
26
  "path": "docs/screenshots/02-connector-detail.jpg",
27
- "sha256": "388090d0aecbfde81973b4841401ab31c73c36d67b8939a2476ba59cf99b11b2",
27
+ "sha256": "5c4433afc32d5ff629f3ce13c546ac8ed0ee7a09cfa321dadb691aae980192db",
28
28
  "width": 1280,
29
29
  "height": 720,
30
- "capturedOn": "2026-10-16",
31
- "sourceVersion": "0.2.73"
30
+ "capturedOn": "2026-10-26",
31
+ "sourceVersion": "0.2.83"
32
32
  },
33
33
  {
34
34
  "path": "docs/screenshots/03-tool-discovery.jpg",
35
- "sha256": "5eeb896db75a5f141a8463f128f7733ffe89af6a447cecb2d1b19f8287a3e1ec",
35
+ "sha256": "058f5aea7d11845677fb77937af82b4ad2957db363fde412e45aa9e579d7b586",
36
36
  "width": 1280,
37
37
  "height": 720,
38
- "capturedOn": "2026-09-06",
39
- "sourceVersion": "0.2.37"
38
+ "capturedOn": "2026-10-26",
39
+ "sourceVersion": "0.2.83"
40
40
  },
41
41
  {
42
42
  "path": "docs/screenshots/04-json-import.jpg",
43
- "sha256": "72634174da158d39bdf796466cf3852b1fc4445fad1c17e2ee23e98a44ccaf1f",
43
+ "sha256": "1d40f4d02b0338c192419f7f71dbf420faa8c92d4d0a5fd9f7676b7822bfcdb8",
44
44
  "width": 1280,
45
45
  "height": 720,
46
- "capturedOn": "2026-10-16",
47
- "sourceVersion": "0.2.73"
46
+ "capturedOn": "2026-10-26",
47
+ "sourceVersion": "0.2.83"
48
48
  },
49
49
  {
50
50
  "path": "docs/screenshots/05-unified-tool-search.png",
51
- "sha256": "a75119afeccdb666e1496917ab1cac50e368882412fe5ce16cfdb268c2a6595b",
51
+ "sha256": "e172da60d9abcf77639287180a4fd6b4b5dca1a95ba0f3967d7d36488fdae795",
52
52
  "width": 1280,
53
53
  "height": 720,
54
- "capturedOn": "2026-09-14",
55
- "sourceVersion": "0.2.46"
54
+ "capturedOn": "2026-10-26",
55
+ "sourceVersion": "0.2.83"
56
56
  },
57
57
  {
58
58
  "path": "docs/screenshots/06-tool-parameters.png",
59
- "sha256": "199a960e6c07c84ff2e3b99acf64536b6875f2ebf08b5a86a1df971cc120da70",
59
+ "sha256": "f09f04513af0f3ee40c455df5c537b1635ae42e83073c455bfd25db0e35625b7",
60
60
  "width": 1280,
61
61
  "height": 720,
62
- "capturedOn": "2026-09-14",
63
- "sourceVersion": "0.2.46"
62
+ "capturedOn": "2026-10-26",
63
+ "sourceVersion": "0.2.83"
64
64
  },
65
65
  {
66
66
  "path": "docs/screenshots/07-connection-diagnostics.png",
67
- "sha256": "810ea245b4f41a850b99a6cd302b9f03b10bdb50498401635fdb16befe8d07e8",
67
+ "sha256": "457898c3a256c06f613cc602dcd69193f54fcc59b5ca278228e66fc31a7e32cc",
68
68
  "width": 1280,
69
69
  "height": 720,
70
- "capturedOn": "2026-10-16",
71
- "sourceVersion": "0.2.73"
70
+ "capturedOn": "2026-10-26",
71
+ "sourceVersion": "0.2.83"
72
72
  }
73
73
  ],
74
74
  "demo": {
75
75
  "path": "docs/demo.gif",
76
- "sha256": "69250ef0d6730d2c708c1fea6a3c8041d495008a40f53a02a894238601f165ec",
76
+ "sha256": "7501018e2e32d565a309473c666f1cf02601746ce78e04d2452a4368f851c1f1",
77
77
  "width": 960,
78
78
  "height": 540,
79
- "durationSeconds": 43,
80
- "capturedOn": "2026-09-14",
81
- "sourceVersion": "0.2.46"
79
+ "capturedOn": "2026-10-26",
80
+ "sourceVersion": "0.2.83",
81
+ "durationSeconds": 36
82
82
  }
83
83
  }
@@ -8,7 +8,7 @@
8
8
 
9
9
  | 项目 | 验收要求 |
10
10
  |---|---|
11
- | 前提 | 正式 `dsh-mcp-connector@0.2.59+`;当前 Workspace;企查查 OAuth 可用;测试账号具有目标企业数据权限 |
11
+ | 前提 | <!-- generated:version -->正式 `dsh-mcp-connector@0.2.83`<!-- /generated:version -->;当前 Workspace;企查查 OAuth 可用;测试账号具有目标企业数据权限 |
12
12
  | 权限/管理员 | 账号权限、组织授权和可见字段由服务商控制;企业组织可能需要管理员开通,当前文档不能替代审批 |
13
13
  | 费用 | 可能受套餐、次数或字段权限影响;MCP连接器无法确认本次费用,调用前在服务商侧核对 |
14
14
  | 运行/数据去向 | 远程 MCP Server;企业名称、查询参数和调用结果经 DSH Host 发送到/返回自 `agent.qcc.com` |
@@ -6,7 +6,7 @@
6
6
 
7
7
  | 素材 | 证据类别 | 已证明 | 未证明 | 公开使用边界 |
8
8
  |---|---|---|---|---|
9
- | [企业简介首次成功案例](ONE-SUCCESS-CASE.md) | 历史真实只读调用的脱敏摘要 | 2026-10-16 已有 `qcc-company` 连接完成一次 `get_company_profile` 只读调用,返回主体名称一致 | v0.2.81 当前流程、首次安装、首次 OAuth、JSON 迁移、连接恢复 | 可引用文档中的脱敏结论;不得复制原始业务正文、账号或凭据 |
9
+ | [企业简介首次成功案例](ONE-SUCCESS-CASE.md) | 历史真实只读调用的脱敏摘要 | 2026-10-16 已有 `qcc-company` 连接完成一次 `get_company_profile` 只读调用,返回主体名称一致 | 当前版本流程、首次安装、首次 OAuth、JSON 迁移、连接恢复 | 可引用文档中的脱敏结论;不得复制原始业务正文、账号或凭据 |
10
10
  | [JSON 迁移教程](JSON-MIGRATION.md) | 流程文档 + localhost/合成测试 | 导入标准化、连接记录、Host 透传等代码路径有自动化覆盖 | 获授权真实 Server 的导入、发现和业务调用端到端成功 | 必须写“自动测试通过;真实 E2E 未测试/待验收” |
11
11
  | [工具查找与恢复教程](TOOL-SEARCH-RECOVERY.md) | 流程文档 + localhost/合成测试 | 失败保留最后成功缓存、重新发现恢复、筛选/分页/限流等代码路径有自动化覆盖 | 真实连接从故障到恢复,以及恢复后的真实业务调用 | 缓存、健康检查和重新发现都不能写成业务调用成功 |
12
12
  | [社区分享素材包](SHARING-KIT.md) | 作者指引 | 提供可复现提纲、披露和人工记录方法 | 尚未发生的发帖、转化或业务成功 | 不要求好评、Star 或转发;当前没有自动公开发布 |
@@ -17,9 +17,7 @@
17
17
 
18
18
  | 资产 | 来源版本 | 可以说明 | 不能说明 | 建议图注 |
19
19
  |---|---|---|---|---|
20
- | `01`、`02`、`04`、`07` | v0.2.73 | 市场、OAuth 详情、JSON 导入、连接诊断的界面结构 | 真实授权、真实连接或业务调用成功 | “MCP连接器界面演示,v0.2.73 无凭据 Mock;实际界面以安装版本为准。” |
21
- | `03` | v0.2.37 | 历史工具发现界面 | 当前版本行为或业务可用性 | “历史界面演示,v0.2.37 无凭据 Mock。” |
22
- | `05`、`06`、`demo.gif` | v0.2.46 | 历史统一搜索、参数和演示流程 | 当前版本行为、真实恢复或业务成功 | “历史界面演示,v0.2.46 无凭据 Mock。” |
20
+ | `01`–`07`、`demo.gif` | 见 [assets.json](../screenshots/assets.json) | 无凭据 Mock 界面与操作流程 | 真实授权、真实恢复或业务成功 | 引用素材清单中的采集版本与日期,标注“无凭据 Mock”。 |
23
21
 
24
22
  `workspace/p0-evidence-2026-10-16/` 中的图片是本机真实 DSH Market 搜索页面,但仅用于搜索排名复核,未上传公共仓库且仍需隐私审查;它们不能证明连接、恢复或业务调用成功。
25
23
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  ## 图片与视频素材
20
20
 
21
- 使用[截图目录及来源说明](../screenshots/README.md),不要重制或抹掉 Mock 标记。`01`、`02`、`04`、`07` 为 `v0.2.73`,`03` 为 `v0.2.37`,`05`、`06` 与 GIF 为 `v0.2.46`;它们用于解释界面,不是最新版本的真实调用截图。
21
+ 使用[截图目录及来源说明](../screenshots/README.md),不要重制或抹掉 Mock 标记。采集版本与日期统一以[素材清单](../screenshots/assets.json)为准;不能把界面演示当作真实调用截图。
22
22
 
23
23
  可用图注:“MCP连接器界面演示,Mock 数据;素材版本见来源说明,实际界面以安装版本为准。”
24
24
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-mcp-connector",
3
- "version": "0.2.82",
3
+ "version": "0.2.83",
4
4
  "description": "DeepSeek Harness MCP Connector: connect servers, search tools across active connections, and troubleshoot discovery. Includes a continuously updated catalog; supports OAuth 2.0 PKCE, API keys, Streamable HTTP/stdio, and mcpServers JSON import.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -55,7 +55,7 @@
55
55
  "market:check": "node scripts/check-market-registration.mjs",
56
56
  "distribution:check:live": "node scripts/check-distribution-sync.mjs --strict-sync",
57
57
  "registry:stats:sync": "node scripts/sync-registry-stats.mjs",
58
- "docs:check": "node scripts/check-readme-version.mjs",
58
+ "docs:check": "node scripts/check-readme-version.mjs && node scripts/sync-product-docs.mjs --check",
59
59
  "docs:first-use:check": "node scripts/check-first-use-docs.mjs",
60
60
  "marketing:check": "node scripts/check-marketing-metadata.mjs",
61
61
  "marketing:check:github": "node scripts/check-marketing-metadata.mjs --live-github",
@@ -65,7 +65,10 @@
65
65
  "verify-pack": "node scripts/verify-pack.mjs",
66
66
  "docs:tutorial-links:check": "node scripts/check-tutorial-links.mjs",
67
67
  "check": "npm run lint && npm run docs:check && npm run docs:first-use:check && npm run marketing:check && npm run storefront:check && npm test && npm run verify-pack && npm run docs:tutorial-links:check",
68
- "prepublishOnly": "npm run check"
68
+ "prepublishOnly": "npm run check",
69
+ "docs:sync": "node scripts/sync-product-docs.mjs",
70
+ "storefront:capture": "node scripts/capture-storefront.mjs",
71
+ "storefront:freshness": "node scripts/check-media-freshness.mjs"
69
72
  },
70
73
  "keywords": [
71
74
  "deepseek-harness",
package/ui/index.html CHANGED
@@ -389,12 +389,22 @@
389
389
  /* 页面内确认框(替代原生 confirm)。原生 confirm 在桌面壳里走 Win32 TaskDialog,
390
390
  关闭后不会把键盘焦点还给页面,用户必须切一次窗口才能继续输入;因此所有确认
391
391
  都改走这里。z-index 高于 .modal(200),因为多处确认是在模态内部触发的。 */
392
- .confirm-mask { position: fixed; inset: 0; background: rgba(0,0,0,0.52); display: none; align-items: center; justify-content: center; z-index: 300; }
392
+ /* 遮罩本身可滚动兜底:内容再高也能滚到按钮,不会把确认框顶出视口。 */
393
+ .confirm-mask { position: fixed; inset: 0; background: rgba(0,0,0,0.52); display: none; align-items: center; justify-content: center; z-index: 300; overflow-y: auto; padding: 24px 0; }
393
394
  .confirm-mask.show { display: flex; }
394
- .confirm-box { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 22px 24px; width: 460px; max-width: 92vw; box-shadow: var(--shadow-lg); }
395
- .confirm-box h3 { margin: 0 0 12px; font-size: 15px; }
396
- .confirm-message { margin: 0; white-space: pre-wrap; word-break: break-word; color: var(--text-2); font-size: 13px; line-height: 1.6; }
397
- .confirm-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 18px; }
395
+ /* 弹窗自身限高并内部滚动,操作按钮始终可见(工具清单可能有上百条)。 */
396
+ .confirm-box {
397
+ background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
398
+ padding: 22px 24px; width: 460px; max-width: 92vw; box-shadow: var(--shadow-lg);
399
+ max-height: calc(100vh - 48px); display: flex; flex-direction: column;
400
+ }
401
+ .confirm-box h3 { margin: 0 0 12px; font-size: 15px; flex: 0 0 auto; }
402
+ .confirm-message {
403
+ margin: 0; white-space: pre-wrap; word-break: break-word; color: var(--text-2); font-size: 13px; line-height: 1.6;
404
+ flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain;
405
+ padding-right: 4px;
406
+ }
407
+ .confirm-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 18px; flex: 0 0 auto; }
398
408
 
399
409
  .modal .m-actions {
400
410
  position: sticky; bottom: 0; z-index: 2;
@@ -1372,6 +1382,21 @@
1372
1382
  pending.resolve(result);
1373
1383
  }
1374
1384
 
1385
+ // 工具清单可能上百条:只列前若干项再补计数,避免确认框里堆一屏工具名。
1386
+ const SCOPE_TOOLS_INLINE_LIMIT = 12;
1387
+
1388
+ function scopeAffectedText(servers) {
1389
+ return (servers || []).map((server) => {
1390
+ const tools = server.tools || [];
1391
+ if (!tools.length) return `${server.serverName}:工具清单尚未观察`;
1392
+ const shown = tools.slice(0, SCOPE_TOOLS_INLINE_LIMIT).join('、');
1393
+ const rest = tools.length > SCOPE_TOOLS_INLINE_LIMIT
1394
+ ? `、…等共 ${tools.length} 个`
1395
+ : '';
1396
+ return `${server.serverName}:${shown}${rest}`;
1397
+ }).join('\n');
1398
+ }
1399
+
1375
1400
  function confirmDialog(options = {}) {
1376
1401
  // 后到的确认先让前一个以"取消"收尾,避免它的 await 永远挂起。
1377
1402
  if (activeConfirm) closeConfirm(false);
@@ -2103,10 +2128,7 @@
2103
2128
  });
2104
2129
  setModalBusy(false);
2105
2130
  if (!preview.ok || !preview.detail?.canApply) { showModalError(preview.message); return; }
2106
- const affected = (preview.detail.impact?.servers || []).map((server) => {
2107
- const toolText = server.tools?.length ? server.tools.join('、') : '工具清单尚未观察';
2108
- return `${server.serverName}:${toolText}`;
2109
- }).join('\n');
2131
+ const affected = scopeAffectedText(preview.detail.impact?.servers);
2110
2132
  if (!await confirmDialog({
2111
2133
  title: '变更连接范围',
2112
2134
  message: `${preview.message}\n${affected}\n\n确认${mode === 'copy' ? '复制到' : '移动到'}所选范围?`,
@@ -2132,10 +2154,7 @@
2132
2154
  if (scopeRollbackRevision === null) return;
2133
2155
  const preview = await call('previewConnectionScopeRollback', { rollbackRevision: scopeRollbackRevision });
2134
2156
  if (!preview.ok) { showToast(preview.message, false); return; }
2135
- const affected = (preview.detail?.impact?.servers || []).map((server) => {
2136
- const toolText = server.tools?.length ? server.tools.join('、') : '工具清单尚未观察';
2137
- return `${server.serverName}:${toolText}`;
2138
- }).join('\n');
2157
+ const affected = scopeAffectedText(preview.detail?.impact?.servers);
2139
2158
  if (!await confirmDialog({
2140
2159
  title: '回滚连接范围',
2141
2160
  message: `${preview.message}\n${affected}\n\n确认将全部连接范围恢复到 revision=${scopeRollbackRevision}?`,