-
+
通用版
.AppImage
-
+
Debian / Ubuntu
.deb
diff --git a/package-lock.json b/package-lock.json
index baf7b65..28edbb2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "clawpanel",
- "version": "0.16.3",
+ "version": "0.16.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "clawpanel",
- "version": "0.16.3",
+ "version": "0.16.4",
"license": "AGPL-3.0",
"dependencies": {
"@tauri-apps/api": "^2.5.0",
diff --git a/package.json b/package.json
index 59b2b55..c56faff 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "clawpanel",
- "version": "0.16.3",
+ "version": "0.16.4",
"private": true,
"description": "ClawPanel - OpenClaw 可视化管理面板,基于 Tauri v2 的跨平台桌面应用",
"type": "module",
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index ac60dd7..c826c54 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -366,7 +366,7 @@ dependencies = [
[[package]]
name = "clawpanel"
-version = "0.16.3"
+version = "0.16.4"
dependencies = [
"base64 0.22.1",
"chrono",
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index ceb0c76..ee4e17f 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "clawpanel"
-version = "0.16.3"
+version = "0.16.4"
edition = "2021"
description = "ClawPanel - OpenClaw 可视化管理面板"
authors = ["qingchencloud"]
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index db1d47a..77d3200 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -1,7 +1,7 @@
{
"$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json",
"productName": "ClawPanel",
- "version": "0.16.3",
+ "version": "0.16.4",
"identifier": "ai.openclaw.clawpanel",
"build": {
"frontendDist": "../dist",
diff --git a/src/lib/humanize-error.js b/src/lib/humanize-error.js
index 49739de..223d300 100644
--- a/src/lib/humanize-error.js
+++ b/src/lib/humanize-error.js
@@ -26,7 +26,7 @@ const PATTERNS = [
// 网络
{
key: 'network',
- re: /(failed to fetch|networkerror|networkfailure|enetunreach|econnreset|econnrefused|ehostunreach|err_network|fetch failed|connection refused|connection reset|getaddrinfo|dns error|no route to host|aborted|broken pipe|connect timed out|tcp connect)/i,
+ re: /(failed to fetch|networkerror|networkfailure|enetunreach|econnreset|econnrefused|ehostunreach|err_network|fetch failed|connection refused|connection reset|getaddrinfo|dns error|no route to host|aborted|broken pipe|connect timed out|tcp connect|backend service is not running|web deployment mode|后端服务未运行)/i,
},
// Gateway 未启动(特殊的 connection refused / port not listen 情况)
{
diff --git a/src/lib/tauri-api.js b/src/lib/tauri-api.js
index 43c74e1..d48d10a 100644
--- a/src/lib/tauri-api.js
+++ b/src/lib/tauri-api.js
@@ -231,7 +231,13 @@ export async function checkBackendHealth() {
if (isTauriRuntime()) { _setBackendOnline(true); return true }
try {
const resp = await fetch('/__api/health', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: '{}' })
- const ok = resp.ok
+ const ct = (resp.headers.get('content-type') || '').toLowerCase()
+ if (!resp.ok || !ct.includes('application/json')) {
+ _setBackendOnline(false)
+ return false
+ }
+ const data = await resp.json().catch(() => null)
+ const ok = !!data?.ok
_setBackendOnline(ok)
return ok
} catch {
diff --git a/src/main.js b/src/main.js
index 3050095..46795e4 100644
--- a/src/main.js
+++ b/src/main.js
@@ -110,7 +110,7 @@ function showBackendDownOverlay() {
# ${t('common.devMode')}
npm run dev
# ${t('common.prodMode')}
- npm run preview
+ npm run serve