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