diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 625d756..b7c3ea2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,26 +20,48 @@ jobs: continue-on-error: true run: | # Get release ID for dev tag + echo "🔍 Looking for existing dev release..." RELEASE_ID=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ "https://api.github.com/repos/${{ github.repository }}/releases/tags/dev" | \ jq -r '.id // empty') - if [ ! -z "$RELEASE_ID" ]; then - echo "Found dev release with ID: $RELEASE_ID" - - # Get all assets and delete them - curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ - "https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets" | \ - jq -r '.[].id' | \ - while read asset_id; do - echo "Deleting asset: $asset_id" - curl -X DELETE -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ - "https://api.github.com/repos/${{ github.repository }}/releases/assets/$asset_id" + if [ ! -z "$RELEASE_ID" ] && [ "$RELEASE_ID" != "empty" ]; then + echo "✅ Found dev release with ID: $RELEASE_ID" + + # Get all assets + echo "📋 Getting list of assets..." + ASSETS=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + "https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID/assets") + + ASSET_COUNT=$(echo "$ASSETS" | jq '. | length') + echo "📦 Found $ASSET_COUNT assets to delete" + + if [ "$ASSET_COUNT" -gt 0 ]; then + # Delete each asset with detailed logging + echo "$ASSETS" | jq -r '.[].id' | while read asset_id; do + if [ ! -z "$asset_id" ]; then + echo "🗑️ Deleting asset ID: $asset_id" + RESPONSE=$(curl -s -w "HTTPSTATUS:%{http_code}" -X DELETE \ + -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + "https://api.github.com/repos/${{ github.repository }}/releases/assets/$asset_id") + + HTTP_CODE=$(echo $RESPONSE | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') + if [ "$HTTP_CODE" = "204" ]; then + echo "✅ Successfully deleted asset $asset_id" + else + echo "❌ Failed to delete asset $asset_id (HTTP: $HTTP_CODE)" + echo "Response: $(echo $RESPONSE | sed -e 's/HTTPSTATUS:.*//')" + fi + # Add small delay to avoid rate limiting + sleep 0.5 + fi done - - echo "All dev release assets deleted" + echo "🎉 Finished deleting assets" + else + echo "ℹ️ No assets found to delete" + fi else - echo "No existing dev release found" + echo "ℹ️ No existing dev release found" fi - name: Skip for Tag Release if: startsWith(github.ref, 'refs/tags/v') @@ -109,7 +131,6 @@ jobs: dist/*.sha256 dist/*setup.exe dist/*portable.7z - body: "Development build from ${{ github.sha }}" prerelease: true draft: false token: ${{ secrets.GITHUB_TOKEN }} @@ -180,7 +201,6 @@ jobs: dist/*.sha256 dist/*setup.exe dist/*portable.7z - body: "Development build from ${{ github.sha }}" prerelease: true draft: false token: ${{ secrets.GITHUB_TOKEN }} @@ -244,7 +264,6 @@ jobs: dist/*.sha256 dist/*.deb dist/*.rpm - body: "Development build from ${{ github.sha }}" prerelease: true draft: false token: ${{ secrets.GITHUB_TOKEN }} @@ -330,7 +349,6 @@ jobs: files: | dist/*.sha256 dist/*.pkg - body: "Development build from ${{ github.sha }}" prerelease: true draft: false token: ${{ secrets.GITHUB_TOKEN }} @@ -418,7 +436,6 @@ jobs: files: | dist/*.sha256 dist/*.pkg - body: "Development build from ${{ github.sha }}" prerelease: true draft: false token: ${{ secrets.GITHUB_TOKEN }} @@ -438,7 +455,15 @@ jobs: if: startsWith(github.ref, 'refs/tags/v') env: TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} + RELEASE_TYPE: release run: pnpm telegram + - name: Telegram Dev Notification + if: github.event_name == 'workflow_dispatch' + env: + TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} + GITHUB_SHA: ${{ github.sha }} + RELEASE_TYPE: dev + run: pnpm telegram:dev - name: Generate latest.yml run: pnpm updater - name: Publish Release @@ -454,7 +479,7 @@ jobs: with: tag_name: dev files: latest.yml - body: "Development build updater from ${{ github.sha }}" + body_path: changelog.md prerelease: true draft: false token: ${{ secrets.GITHUB_TOKEN }} diff --git a/changelog.md b/changelog.md index d7246c3..1cd3cc5 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,11 @@ +## 1.8.6-dev + +### 新功能 (Feat) + - 增加硬件加速开关,解决某些显卡驱动问题导致的渲染异常或崩溃 + +### 修复 (Fix) + - 修复windows 下以非管理员模式启动后,无法自动更新的权限问题 + ## 1.8.5 **🎉 本次更新增加了大家期待已久的托盘图标根据代理状态变化颜色,系统代理为蓝色,虚拟网卡为绿色,双开为红色 @@ -34,17 +42,4 @@ ### 修复 (Fix) - 修复某些系统下的悬浮窗开启崩溃的问题(开启兼容模式=关闭硬件加速) - 开机自启在非管理员模式下报错的问题 -- 解决某些 macos 系统下无法开启虚拟网卡的问题(tun device名称冲突) - -## 1.8.3 -**本次更新移除了 Windows 下启动必须管理员模式的机制,改为只在启用虚拟网卡模式的时候,申请 UAC 权限重启软件,安全性更好,更灵活,给无法使用管理员模式运行软件的企业用户提供了更大的便利** - -### 新功能 (Feat) -- 移除 Windows 下启动必须管理员模式的机制,改为只在启用虚拟网卡模式的时候,申请 UAC 权限重启软件 - -### 重构 (Refactor) -- Geodata 文件只有在源文件更新的时候才会在启动时覆盖更新 - -### 修复 (Fix) -- 修复 DNS/嗅探覆写开关逻辑,修改设置不再会直接写入运行时配置,增加了“仅保存”按钮 -- 悬浮窗改为纯矩形,修复 windows 下兼容性问题带来的白边 \ No newline at end of file +- 解决某些 macos 系统下无法开启虚拟网卡的问题(tun device名称冲突) \ No newline at end of file diff --git a/package.json b/package.json index 5f8e095..3df601a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mihomo-party", - "version": "1.8.5", + "version": "1.8.6-dev", "description": "Mihomo Party", "main": "./out/main/index.js", "author": "mihomo-party-org", @@ -14,7 +14,8 @@ "prepare": "node scripts/prepare.mjs", "updater": "node scripts/updater.mjs", "checksum": "node scripts/checksum.mjs", - "telegram": "node scripts/telegram.mjs", + "telegram": "node scripts/telegram.mjs release", + "telegram:dev": "node scripts/telegram.mjs dev", "artifact": "node scripts/artifact.mjs", "dev": "electron-vite dev", "postinstall": "electron-builder install-app-deps", diff --git a/scripts/telegram.mjs b/scripts/telegram.mjs index 283c3c0..508c853 100644 --- a/scripts/telegram.mjs +++ b/scripts/telegram.mjs @@ -5,18 +5,64 @@ const chat_id = '@MihomoPartyChannel' const pkg = readFileSync('package.json', 'utf-8') const changelog = readFileSync('changelog.md', 'utf-8') const { version } = JSON.parse(pkg) -const downloadUrl = `https://github.com/mihomo-party-org/mihomo-party/releases/download/v${version}` -let content = `🌟 Mihomo Party v${version} 正式发布\n\n` -for (const line of changelog.split('\n')) { - if (line.length === 0) { - content += '\n' - } else if (line.startsWith('### ')) { - content += `${line.replace('### ', '')}\n` - } else { - content += `${line}\n` - } + +const releaseType = process.env.RELEASE_TYPE || process.argv[2] || 'release' +const isDevRelease = releaseType === 'dev' + +function convertMarkdownToTelegramHTML(content) { + return content + .split("\n") + .map((line) => { + if (line.trim().length === 0) { + return ""; + } else if (line.startsWith("## ")) { + return `${line.replace("## ", "")}`; + } else if (line.startsWith("### ")) { + return `${line.replace("### ", "")}`; + } else if (line.startsWith("#### ")) { + return `${line.replace("#### ", "")}`; + } else { + let processedLine = line.replace( + /\[([^\]]+)\]\(([^)]+)\)/g, + (match, text, url) => { + const encodedUrl = encodeURI(url); + return `${text}`; + }, + ); + processedLine = processedLine.replace( + /\*\*([^*]+)\*\*/g, + "$1", + ); + return processedLine; + } + }) + .join("\n"); } +let content = ''; + +if (isDevRelease) { + + const commitSha = process.env.GITHUB_SHA || 'unknown' + const shortCommitSha = commitSha.substring(0, 7) + + content = `🚧 Mihomo Party Dev Build 开发版本发布\n\n` + content += `基于版本: ${version}\n` + content += `提交哈希: ${shortCommitSha}\n\n` + content += `更新日志:\n` + content += convertMarkdownToTelegramHTML(changelog) + content += '\n\n⚠️ 注意:这是开发版本,可能存在不稳定性,仅供测试使用\n' +} else { + // 正式版本通知 + content = `🌟 Mihomo Party v${version} 正式发布\n\n` + content += convertMarkdownToTelegramHTML(changelog) +} + +// 构建下载链接 +const downloadUrl = isDevRelease + ? `https://github.com/mihomo-party-org/mihomo-party/releases/download/dev` + : `https://github.com/mihomo-party-org/mihomo-party/releases/download/v${version}` + content += '\n下载地址:\nWindows10/11:\n' content += `安装版:64位 | 32位 | ARM64\n` content += `便携版:64位 | 32位 | ARM64\n` @@ -44,3 +90,5 @@ await axios.post(`https://api.telegram.org/bot${process.env.TELEGRAM_BOT_TOKEN}/ }, parse_mode: 'HTML' }) + +console.log(`${isDevRelease ? '开发版本' : '正式版本'}Telegram 通知发送成功`) \ No newline at end of file