dsh-mcp-connector 0.2.50 → 0.2.52
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 +12 -0
- package/CONTRIBUTING.md +2 -1
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/lib/client.js +33 -8
- package/package.json +1 -1
- package/ui/index.html +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.2.52] - 2026-09-20
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- 修复侧边栏 MCP 连接器入口鼠标悬停时出现额外粗边框的问题;统一入口留白与图标/文字间距,保留键盘焦点提示和折叠侧栏入口(#86)。
|
|
12
|
+
|
|
13
|
+
## [0.2.51] - 2026-09-16
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- 恢复市场卡片的紧凑信息量:名称、两行简介与操作按钮;提供方、授权和权限长说明保留在详情与连接确认框,仅为 CLI/本地服务显示短标签。
|
|
18
|
+
|
|
7
19
|
## [0.2.50] - 2026-09-16
|
|
8
20
|
|
|
9
21
|
### Fixed
|
package/CONTRIBUTING.md
CHANGED
|
@@ -6,7 +6,8 @@ Thank you for contributing. Never put tokens, API keys, cookies, OAuth credentia
|
|
|
6
6
|
|
|
7
7
|
## 参与方式
|
|
8
8
|
|
|
9
|
-
-
|
|
9
|
+
- 报告安全漏洞:请遵循 [安全报告政策](https://github.com/duhu2000/dsh-mcp-connector/blob/main/SECURITY.md),使用 [私密报告入口](https://github.com/duhu2000/dsh-mcp-connector/security/advisories/new),勿公开提交利用细节。
|
|
10
|
+
- 报告普通缺陷或提交功能建议:[GitHub Issues](https://github.com/duhu2000/dsh-mcp-connector/issues)
|
|
10
11
|
- 为公共市场增加连接器:阅读 [Connector onboarding](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/docs/ONBOARDING.md),连接器描述与插件代码分仓管理。
|
|
11
12
|
- 修复插件或改进文档:Fork 本仓库,从最新 `main` 创建单一目的的分支并提交 PR。
|
|
12
13
|
- 第一次参与:从带有 [`good first issue`](https://github.com/duhu2000/dsh-mcp-connector/labels/good%20first%20issue) 标签的任务开始,并按[首次贡献路径](docs/FIRST-CONTRIBUTION.md)完成本地校验。
|
package/README.en.md
CHANGED
|
@@ -190,7 +190,7 @@ npm run dev:ui
|
|
|
190
190
|
|
|
191
191
|
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.
|
|
192
192
|
|
|
193
|
-
The current public version is [`dsh-mcp-connector@0.2.
|
|
193
|
+
The current public version is [`dsh-mcp-connector@0.2.52`](https://www.npmjs.com/package/dsh-mcp-connector), with [GitHub Release v0.2.52](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.52).
|
|
194
194
|
|
|
195
195
|
See [CHANGELOG.md](CHANGELOG.md) for version history and [docs/DESKTOP-E2E.md](docs/DESKTOP-E2E.md) for the Desktop release checklist.
|
|
196
196
|
|
package/README.md
CHANGED
|
@@ -185,7 +185,7 @@ npm run dev:ui
|
|
|
185
185
|
|
|
186
186
|
公共 Registry 每次合并后会生成 `catalog-stats.json`;本仓库的定时工作流每小时同步中英文介绍和统计快照。npm 页面中的静态正文随版本发布更新,上方动态统计徽标则直接读取 Registry,可在不发布新 npm 版本时保持实时数量一致。
|
|
187
187
|
|
|
188
|
-
当前公开版本为 [`dsh-mcp-connector@0.2.
|
|
188
|
+
当前公开版本为 [`dsh-mcp-connector@0.2.52`](https://www.npmjs.com/package/dsh-mcp-connector),对应 [GitHub Release v0.2.52](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.52)。
|
|
189
189
|
|
|
190
190
|
版本能力与变更记录见 [CHANGELOG.md](CHANGELOG.md)。
|
|
191
191
|
Desktop 发版回归见 [docs/DESKTOP-E2E.md](docs/DESKTOP-E2E.md)。
|
package/lib/client.js
CHANGED
|
@@ -57,10 +57,11 @@ window.__ModuleLoader__.load({
|
|
|
57
57
|
display: flex;
|
|
58
58
|
align-items: center;
|
|
59
59
|
box-sizing: border-box;
|
|
60
|
-
width:
|
|
60
|
+
width: 100%;
|
|
61
61
|
height: 42px;
|
|
62
|
-
margin: 4px
|
|
63
|
-
padding: 0
|
|
62
|
+
margin: 4px 0;
|
|
63
|
+
padding: 0 var(--dsh-sidebar-inline-padding, 12px);
|
|
64
|
+
gap: 8px;
|
|
64
65
|
justify-content: flex-start;
|
|
65
66
|
overflow: hidden;
|
|
66
67
|
border: 0;
|
|
@@ -72,11 +73,32 @@ window.__ModuleLoader__.load({
|
|
|
72
73
|
cursor: pointer;
|
|
73
74
|
}
|
|
74
75
|
|
|
75
|
-
.mcpConnectorLauncher:hover
|
|
76
|
+
.mcpConnectorLauncher:hover {
|
|
77
|
+
background: rgba(127, 127, 127, 0.12);
|
|
78
|
+
outline: none;
|
|
79
|
+
}
|
|
80
|
+
|
|
76
81
|
.mcpConnectorLauncher:focus-visible {
|
|
77
82
|
background: rgba(127, 127, 127, 0.12);
|
|
78
83
|
outline: 2px solid currentColor;
|
|
79
|
-
outline-offset:
|
|
84
|
+
outline-offset: -2px;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.mcpConnectorLauncherIcon {
|
|
88
|
+
display: inline-flex;
|
|
89
|
+
align-items: center;
|
|
90
|
+
justify-content: center;
|
|
91
|
+
flex: 0 0 20px;
|
|
92
|
+
width: 20px;
|
|
93
|
+
height: 20px;
|
|
94
|
+
font-size: 18px;
|
|
95
|
+
line-height: 1;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.mcpConnectorLauncherLabel {
|
|
99
|
+
min-width: 0;
|
|
100
|
+
overflow: hidden;
|
|
101
|
+
text-overflow: ellipsis;
|
|
80
102
|
}
|
|
81
103
|
|
|
82
104
|
.mcpConnectorLauncher[data-wide="false"] {
|
|
@@ -1607,7 +1629,7 @@ window.__ModuleLoader__.load({
|
|
|
1607
1629
|
return modal;
|
|
1608
1630
|
}
|
|
1609
1631
|
|
|
1610
|
-
/**
|
|
1632
|
+
/** 左栏入口:固定图标列与文字间距,键盘焦点与鼠标悬停分别处理。 */
|
|
1611
1633
|
function SidebarEntry(props) {
|
|
1612
1634
|
const { wide, useStore, actions } = props;
|
|
1613
1635
|
const open = useStore((state) => state.open);
|
|
@@ -1641,7 +1663,7 @@ window.__ModuleLoader__.load({
|
|
|
1641
1663
|
};
|
|
1642
1664
|
}, [visible]);
|
|
1643
1665
|
if (!visible) return null;
|
|
1644
|
-
const launcher = /* @__PURE__ */ (0, react_jsx_runtime.
|
|
1666
|
+
const launcher = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
1645
1667
|
type: "button",
|
|
1646
1668
|
className: "mcpConnectorLauncher",
|
|
1647
1669
|
"data-wide": wide,
|
|
@@ -1649,7 +1671,10 @@ window.__ModuleLoader__.load({
|
|
|
1649
1671
|
"aria-haspopup": "dialog",
|
|
1650
1672
|
"aria-expanded": open,
|
|
1651
1673
|
onClick: () => { try { actions.open(); } catch (error) { console.error('[mcp-connector] open failed:', error); } },
|
|
1652
|
-
children:
|
|
1674
|
+
children: [
|
|
1675
|
+
(0, react_jsx_runtime.jsx)("span", { className: "mcpConnectorLauncherIcon", "aria-hidden": true, children: "🧩" }),
|
|
1676
|
+
wide ? (0, react_jsx_runtime.jsx)("span", { className: "mcpConnectorLauncherLabel", children: "MCP连接器" }) : null
|
|
1677
|
+
]
|
|
1653
1678
|
});
|
|
1654
1679
|
if (topMount === null || typeof react_dom.createPortal !== "function") return launcher;
|
|
1655
1680
|
return react_dom.createPortal(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-mcp-connector",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.52",
|
|
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",
|
package/ui/index.html
CHANGED
|
@@ -157,6 +157,7 @@
|
|
|
157
157
|
.card .content { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
|
|
158
158
|
.card .name { font-weight: 600; font-size: 14px; line-height: 1.4; }
|
|
159
159
|
.card .summary { color: var(--text-2); font-size: 12px; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
|
|
160
|
+
.card .runtime-tag { display: inline-block; white-space: nowrap; font-size: 10px; line-height: 1.4; font-weight: 400; color: var(--text-2); background: var(--bg); border-radius: 4px; padding: 1px 4px; vertical-align: middle; }
|
|
160
161
|
.card .actions { display: flex; gap: 6px; align-items: center; flex-shrink: 0; align-self: center; }
|
|
161
162
|
.card:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
162
163
|
.badge { display: inline-flex; align-items: center; border-radius: 999px; padding: 1px 7px; background: var(--bg); color: var(--muted); font-size: 10px; font-weight: 600; }
|
|
@@ -1170,12 +1171,13 @@
|
|
|
1170
1171
|
: `<span>${esc(d.icon || '🔌')}</span>`;
|
|
1171
1172
|
const actions = actionHtml(d);
|
|
1172
1173
|
const probe = d.probeStatus && d.probeStatus !== 'unverified' ? `<span class="badge ${esc(d.probeStatus)}">${d.probeStatus}</span>` : '';
|
|
1174
|
+
const runtimeLabel = d.id === 'dingtalk' ? '本地 CLI' : (d.servers || []).some((s) => s.transport === 'stdio') ? '本地运行' : '';
|
|
1175
|
+
const runtimeTag = runtimeLabel ? `<span class="runtime-tag" title="包含运行于 DSH 主机的服务;授权和权限要求请查看详情">${runtimeLabel}</span>` : '';
|
|
1173
1176
|
return `<div class="card ${d.featured ? 'featured' : ''}" data-id="${esc(d.id)}" role="button" tabindex="0" aria-label="查看 ${esc(d.name)} 详情" onclick="window.__mcp.showDetail('${esc(d.id)}')" onkeydown="if(event.key==='Enter'||event.key===' '){event.preventDefault();window.__mcp.showDetail('${esc(d.id)}')}">
|
|
1174
1177
|
<div class="icon">${icon}</div>
|
|
1175
1178
|
<div class="content">
|
|
1176
|
-
<div class="name">${esc(d.name)} ${probe}</div>
|
|
1179
|
+
<div class="name">${esc(d.name)} ${probe} ${runtimeTag}</div>
|
|
1177
1180
|
<div class="summary">${esc(d.summary || '')}</div>
|
|
1178
|
-
<div class="hint">${connectionLabels(d).map(esc).join(' · ')}</div>
|
|
1179
1181
|
</div>
|
|
1180
1182
|
<div class="actions">${actions}</div>
|
|
1181
1183
|
</div>`;
|