chore: v0.13.1 release prep — fix fake update, cleanup hot update, version bump

1. main.js: import package.json → __APP_VERSION__ (统一版本来源)
2. dev-api.js: check_panel_update 实现 GitHub/Gitee API 查询
   (与 Rust 端逻辑一致,Web 模式可正常检测新版本)
3. dev-api.js: 移除 check_hermes 中未使用的 enhanced 变量
4. i18n: 清理 14 个废弃的热更新相关翻译键
5. 版本号升级: 0.13.0 → 0.13.1
   (package.json, Cargo.toml, tauri.conf.json)
This commit is contained in:
晴天
2026-04-13 10:20:36 +08:00
parent 2b6f80091a
commit c88a652bc5
7 changed files with 26 additions and 21 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "clawpanel",
"version": "0.13.0",
"version": "0.13.1",
"private": true,
"description": "ClawPanel - OpenClaw 可视化管理面板,基于 Tauri v2 的跨平台桌面应用",
"type": "module",

View File

@@ -6289,7 +6289,27 @@ const handlers = {
return true
},
check_panel_update() { return { latest: null, url: 'https://github.com/qingchencloud/clawpanel/releases' } },
async check_panel_update() {
const sources = [
{ api: 'https://api.github.com/repos/qingchencloud/clawpanel/releases/latest', releases: 'https://github.com/qingchencloud/clawpanel/releases', name: 'github' },
{ api: 'https://gitee.com/api/v5/repos/QtCodeCreators/clawpanel/releases/latest', releases: 'https://gitee.com/QtCodeCreators/clawpanel/releases', name: 'gitee' },
]
let lastErr = ''
for (const src of sources) {
try {
const resp = await globalThis.fetch(src.api, {
signal: AbortSignal.timeout(8000),
headers: { 'User-Agent': 'ClawPanel' },
})
if (!resp.ok) { lastErr = `${src.name}: HTTP ${resp.status}`; continue }
const json = await resp.json()
const tag = (json.tag_name || '').replace(/^v/, '').trim()
if (!tag) { lastErr = `${src.name}: 未找到版本号`; continue }
return { latest: tag, url: json.html_url || src.releases, source: src.name, downloadUrl: 'https://claw.qt.cool' }
} catch (e) { lastErr = `${src.name}: ${e.message}`; continue }
}
return { latest: null, url: 'https://github.com/qingchencloud/clawpanel/releases', error: lastErr }
},
write_env_file({ path: p, config }) {
const expanded = p.startsWith('~/') ? path.join(homedir(), p.slice(2)) : p
@@ -6340,7 +6360,6 @@ const handlers = {
},
async check_hermes() {
const enhanced = hermesEnhancedPath()
const home = hermesHome()
const result = {}
// 1. 检测 hermes CLI

2
src-tauri/Cargo.lock generated
View File

@@ -351,7 +351,7 @@ dependencies = [
[[package]]
name = "clawpanel"
version = "0.13.0"
version = "0.13.1"
dependencies = [
"base64 0.22.1",
"chrono",

View File

@@ -1,6 +1,6 @@
[package]
name = "clawpanel"
version = "0.13.0"
version = "0.13.1"
edition = "2021"
description = "ClawPanel - OpenClaw 可视化管理面板"
authors = ["qingchencloud"]

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json",
"productName": "ClawPanel",
"version": "0.13.0",
"version": "0.13.1",
"identifier": "ai.openclaw.clawpanel",
"build": {
"frontendDist": "../dist",

View File

@@ -68,20 +68,6 @@ export default {
updateToVersion: _('更新到 v{version}', 'Update to v{version}', '更新到 v{version}', 'v{version} に更新', 'v{version}(으)로 업데이트', 'Cập nhật lên v{version}'),
runOnServer: _('在服务器上执行以下命令:', 'Run the following commands on the server:', '在伺服器上執行以下命令:', 'サーバーで次のコマンドを実行してください:', '서버에서 다음 명령을 실행하세요:', 'Hãy chạy các lệnh sau trên máy chủ:'),
updateCommandHint: _('如果 git pull 失败,可先执行 <code style="background:var(--bg-tertiary);padding:2px 6px;border-radius:4px">git checkout -- .</code> 丢弃本地修改。<br>路径请替换为实际的 ClawPanel 安装目录。', 'If <code style="background:var(--bg-tertiary);padding:2px 6px;border-radius:4px">git pull</code> fails, run <code style="background:var(--bg-tertiary);padding:2px 6px;border-radius:4px">git checkout -- .</code> first to discard local changes.<br>Replace the path with your actual ClawPanel install directory.', '如果 git pull 失敗,可先執行 <code style="background:var(--bg-tertiary);padding:2px 6px;border-radius:4px">git checkout -- .</code> 捨棄本地修改。<br>路徑請替換為實際的 ClawPanel 安裝目錄。', 'git pull に失敗した場合は、先に <code style="background:var(--bg-tertiary);padding:2px 6px;border-radius:4px">git checkout -- .</code> を実行してローカル変更を破棄してください。<br>パスは実際の ClawPanel インストールディレクトリに置き換えてください。', 'git pull 이 실패하면 먼저 <code style="background:var(--bg-tertiary);padding:2px 6px;border-radius:4px">git checkout -- .</code> 를 실행해 로컬 변경을 버리세요.<br>경로는 실제 ClawPanel 설치 디렉터리로 바꿔 주세요.', 'Nếu git pull thất bại, hãy chạy <code style="background:var(--bg-tertiary);padding:2px 6px;border-radius:4px">git checkout -- .</code> trước để bỏ các thay đổi cục bộ.<br>Hãy thay đường dẫn bằng thư mục cài đặt ClawPanel thực tế của bạn.'),
updateReady: _('已就绪', 'ready', '已就緒', '準備完了'),
reloadApp: _('重载应用', 'Reload App', '重載應用', 'アプリを再読み込み', '앱 새로고침'),
rollback: _('回退', 'Rollback', '', 'ロールバック'),
rollbackSuccess: _('已回退到内嵌版本,重载中...', 'Rolled back to embedded version, reloading...', '已回退到內嵌版本,重載中...'),
rollbackFailed: _('回退失败: ', 'Rollback failed: ', '回退失敗: '),
newVersion: _('新版本', 'New version', '', '新バージョン', '새 버전'),
hotUpdate: _('热更新', 'Hot Update', '熱更新', 'ホットアップデート', '핫 업데이트'),
fullInstaller: _('完整安装包', 'Full Installer', '完整安裝包', 'フルインストーラー', '풀 인스톨러'),
downloading: _('下载中...', 'Downloading...', '下載中...', 'ダウンロード中...', '다운로드 중...'),
downloadDone: _('更新下载完成,点击「重载应用」生效', 'Update downloaded, click "Reload App" to apply', '更新下載完成,点擊「重載應用」生效', '更新ダウンロード完了、「アプリを再読み込み」をクリックして適用'),
downloadFailedShort: _('下载失败', 'Download failed', '下載失敗', 'ダウンロード失敗', '다운로드 실패', 'Tải xuống thất bại'),
downloadFailed: _('下载失败: ', 'Download failed: ', '下載失敗: ', 'ダウンロード失敗: ', '다운로드 실패: '),
retry: _('重试', 'Retry', '重試', '再試行', '재시도'),
needFullUpdate: _('需要更新完整安装包', 'Full install package update required', '需要更新完整安裝包'),
goToWebsite: _('前往官网下载', 'Go to Website', '前往官網下載'),
downloadFromWebsite: _('官网下载', 'Website Download', '官網下載'),
downloadFromGitHub: _('GitHub 下载', 'GitHub Download', 'GitHub 下載'),

View File

@@ -11,7 +11,7 @@ import { initTheme } from './lib/theme.js'
import { detectOpenclawStatus, isOpenclawReady, isUpgrading, isGatewayRunning, isGatewayForeign, onGatewayChange, startGatewayPoll, onGuardianGiveUp, resetAutoRestart, loadActiveInstance, getActiveInstance, onInstanceChange } from './lib/app-state.js'
import { wsClient } from './lib/ws-client.js'
import { api, checkBackendHealth, isBackendOnline, isTauriRuntime, onBackendStatusChange } from './lib/tauri-api.js'
import { version as APP_VERSION } from '../package.json'
const APP_VERSION = typeof __APP_VERSION__ !== 'undefined' ? __APP_VERSION__ : '0.0.0'
import { statusIcon } from './lib/icons.js'
import { isForeignGatewayError, showGatewayConflictGuidance } from './lib/gateway-ownership.js'
import { tryShowEngagement } from './components/engagement.js'