@zzp123/mcp-zentao 1.8.5 → 1.8.6
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 +19 -0
- package/dist/index.js +9 -8
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.8.6] - 2025-11-06
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **修复 uploadImageFromClipboard 工具路径依赖问题**
|
|
12
|
+
- 将 PowerShell 脚本内嵌到代码中,不再依赖外部文件
|
|
13
|
+
- 解决了 Claude Code 工作目录与包安装目录不匹配的问题
|
|
14
|
+
- 使用 Base64 编码避免转义问题
|
|
15
|
+
|
|
16
|
+
### Improved
|
|
17
|
+
- **优化 uploadImageFromClipboard 工具的用户体验**
|
|
18
|
+
- 默认行为:直接从剪贴板获取图片并上传到禅道
|
|
19
|
+
- 简化了操作流程,用户只需说"上传图片"即可
|
|
20
|
+
- 移除了对外部脚本文件的依赖,提高了可靠性
|
|
21
|
+
|
|
22
|
+
### Technical
|
|
23
|
+
- 脚本完全内嵌,提高可移植性
|
|
24
|
+
- 不再依赖 process.cwd() 路径解析
|
|
25
|
+
- 更健壮的错误处理机制
|
|
26
|
+
|
|
8
27
|
## [1.8.5] - 2025-11-06
|
|
9
28
|
|
|
10
29
|
### Improved
|
package/dist/index.js
CHANGED
|
@@ -1147,9 +1147,9 @@ server.tool("uploadFile", {
|
|
|
1147
1147
|
}
|
|
1148
1148
|
return { content: [{ type: "text", text: JSON.stringify(response, null, 2) }] };
|
|
1149
1149
|
});
|
|
1150
|
-
server.tool("uploadImageFromClipboard", {
|
|
1151
|
-
filename: z.string().optional(),
|
|
1152
|
-
uid: z.string().optional()
|
|
1150
|
+
server.tool("uploadImageFromClipboard", "上传剪贴板图片到禅道 - 自动获取剪贴板中的图片并上传", {
|
|
1151
|
+
filename: z.string().optional().describe("自定义文件名,默认为 clipboard_时间戳.png"),
|
|
1152
|
+
uid: z.string().optional().describe("禅道文件UID,用于关联需求或Bug")
|
|
1153
1153
|
}, async ({ filename, uid }) => {
|
|
1154
1154
|
if (!zentaoApi) {
|
|
1155
1155
|
return {
|
|
@@ -1171,11 +1171,12 @@ server.tool("uploadImageFromClipboard", {
|
|
|
1171
1171
|
// Windows: 使用 PowerShell 脚本读取剪贴板
|
|
1172
1172
|
if (process.platform === 'win32') {
|
|
1173
1173
|
console.log('[uploadImageFromClipboard] Windows平台,使用PowerShell脚本读取剪贴板...');
|
|
1174
|
-
//
|
|
1175
|
-
const
|
|
1176
|
-
console.log(`[uploadImageFromClipboard] 脚本路径: ${scriptPath}`);
|
|
1174
|
+
// 内嵌 PowerShell 脚本,避免依赖外部文件
|
|
1175
|
+
const psScript = `Add-Type -AssemblyName System.Windows.Forms; Add-Type -AssemblyName System.Drawing; $img = [System.Windows.Forms.Clipboard]::GetImage(); if ($img) { $ms = New-Object System.IO.MemoryStream; $img.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png); $bytes = $ms.ToArray(); $ms.Close(); $base64 = [Convert]::ToBase64String($bytes); Write-Output $base64 } else { Write-Output 'NoImage' }`;
|
|
1177
1176
|
try {
|
|
1178
|
-
|
|
1177
|
+
// 使用 Base64 编码 PowerShell 脚本以避免转义问题
|
|
1178
|
+
const psScriptBase64 = Buffer.from(psScript, 'utf16le').toString('base64');
|
|
1179
|
+
const result = execSync(`powershell -ExecutionPolicy Bypass -EncodedCommand ${psScriptBase64}`, {
|
|
1179
1180
|
encoding: 'utf8',
|
|
1180
1181
|
maxBuffer: 10 * 1024 * 1024,
|
|
1181
1182
|
stdio: ['pipe', 'pipe', 'pipe']
|
|
@@ -1205,7 +1206,7 @@ server.tool("uploadImageFromClipboard", {
|
|
|
1205
1206
|
text: JSON.stringify({
|
|
1206
1207
|
error: "读取剪贴板失败",
|
|
1207
1208
|
details: err.message,
|
|
1208
|
-
tip: "
|
|
1209
|
+
tip: "请确保已复制图片到剪贴板"
|
|
1209
1210
|
}, null, 2)
|
|
1210
1211
|
}],
|
|
1211
1212
|
isError: true
|