Skip to content

Commit ce4e9ee

Browse files
committed
chore: release v0.11.3
1 parent 6140039 commit ce4e9ee

File tree

19 files changed

+268
-75
lines changed

19 files changed

+268
-75
lines changed

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,19 @@
55
格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/)
66
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)
77

8+
## [0.11.3] - 2026-04-03
9+
10+
### 修复 (Fixes)
11+
12+
- **推荐稳定版映射**`0.11.1` / `0.11.2` 现在会正确继承并显示 OpenClaw `2026.3.28` / `2026.3.28-zh.2`,不再错误回退到旧的 `2026.3.13` 默认值;桌面端 Rust 后端和 Web 模式 `dev-api` 统一采用同一套 panel patch 版本兜底匹配逻辑
13+
- **多安装提示误报** — 仪表盘检测到多个 OpenClaw 安装时,若用户已经显式绑定 CLI,则不再继续显示橙色告警和“去配置”按钮,避免误导已经完成绑定的用户
14+
- **托管 Agent 地址校验** — 托管 Agent 现在会规范化并校验第三方模型地址,自动清理 `/chat/completions``/models``/api` 等尾部路径,兼容 OpenAI / Anthropic / Gemini / Ollama,并拦截无效的 `tauri.localhost` 或非 `http(s)` 地址
15+
16+
### 改进 (Improvements)
17+
18+
- **多安装引导弹窗重构** — “检测到多个 OpenClaw 安装”对话框改为更适合新手理解的卡片式布局,新增“为什么会看到这个提示”、当前绑定/自动检测信息卡、步骤化建议和高亮的安装列表
19+
- **Tauri 运行时检测统一** — 抽出 `isTauriRuntime()` 统一判断桌面端环境,减少 `window.__TAURI_INTERNALS__` 直判带来的分支分散问题,改善主入口、聊天页和调试页的 WebSocket/桌面环境兼容性
20+
821
## [0.11.2] - 2026-04-02
922

1023
### 修复 (Fixes)

docs/index.html

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"description": "OpenClaw AI Agent 可视化管理面板,基于 Tauri v2 的跨平台桌面应用。内置晴辰助手支持工具调用,晴辰云 AI 接口一键接入。支持仪表盘监控、多模型配置、消息渠道管理、内置 QQ 机器人、实时 AI 聊天、记忆管理、Agent 管理、网关配置、内网穿透等功能。支持 11 种语言。",
3535
"url": "https://claw.qt.cool/",
3636
"downloadUrl": "https://github.com/qingchencloud/clawpanel/releases/latest",
37-
"softwareVersion": "0.11.2",
37+
"softwareVersion": "0.11.3",
3838
"author": {
3939
"@type": "Organization",
4040
"name": "晴辰云 QingchenCloud",
@@ -1155,7 +1155,7 @@ <h2 class="reveal section-title" data-i18n="eco.title"><span class="gradient-tex
11551155
<div class="orb orb-2" style="top:auto;bottom:-100px"></div>
11561156
<div class="container-sm" style="position:relative;z-index:10">
11571157
<div class="section-header">
1158-
<div class="reveal download-version"><span class="pulse"></span> <span id="dl-badge" data-i18n="dl.badge">v0.11.2 最新版</span></div>
1158+
<div class="reveal download-version"><span class="pulse"></span> <span id="dl-badge" data-i18n="dl.badge">v0.11.3 最新版</span></div>
11591159
<h2 class="reveal section-title" data-i18n="dl.title"><span class="gradient-text">下载安装</span></h2>
11601160
<p class="reveal section-desc" data-i18n="dl.desc">选择你的操作系统,一键下载安装</p>
11611161
</div>
@@ -1165,11 +1165,11 @@ <h2 class="reveal section-title" data-i18n="dl.title"><span class="gradient-text
11651165
<h3>macOS</h3>
11661166
<p class="dl-desc" data-i18n="dl.mac.d">支持 Apple Silicon 和 Intel 芯片</p>
11671167
<div class="dl-links">
1168-
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.2_aarch64.dmg" target="_blank" rel="noopener">
1168+
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.3_aarch64.dmg" target="_blank" rel="noopener">
11691169
Apple Silicon (M1/M2/M3/M4)
11701170
<span class="dl-format">.dmg</span>
11711171
</a>
1172-
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.2_x64.dmg" target="_blank" rel="noopener">
1172+
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.3_x64.dmg" target="_blank" rel="noopener">
11731173
<span data-i18n="dl.mac.intel">Intel 芯片</span>
11741174
<span class="dl-format">.dmg</span>
11751175
</a>
@@ -1187,15 +1187,15 @@ <h3>macOS</h3>
11871187
<h3>Windows</h3>
11881188
<p class="dl-desc" data-i18n="dl.win.d">支持 Windows 10 及以上版本</p>
11891189
<div class="dl-links">
1190-
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.2_x64-setup.exe" target="_blank" rel="noopener">
1190+
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.3_x64-setup.exe" target="_blank" rel="noopener">
11911191
<span data-i18n="dl.win.exe">安装程序</span>
11921192
<span class="dl-format">.exe</span>
11931193
</a>
1194-
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.2_x64-setup-full.exe" target="_blank" rel="noopener">
1194+
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.3_x64-setup-full.exe" target="_blank" rel="noopener">
11951195
<span data-i18n="dl.win.full">完整包(含 WebView2)</span>
11961196
<span class="dl-format">.exe</span>
11971197
</a>
1198-
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.2_x64_en-US.msi" target="_blank" rel="noopener">
1198+
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.3_x64_en-US.msi" target="_blank" rel="noopener">
11991199
<span data-i18n="dl.win.msi">MSI 安装包</span>
12001200
<span class="dl-format">.msi</span>
12011201
</a>
@@ -1206,11 +1206,11 @@ <h3>Windows</h3>
12061206
<h3>Linux</h3>
12071207
<p class="dl-desc" data-i18n="dl.linux.d">支持主流 Linux 发行版</p>
12081208
<div class="dl-links">
1209-
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.2_amd64.AppImage" target="_blank" rel="noopener">
1209+
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.3_amd64.AppImage" target="_blank" rel="noopener">
12101210
<span data-i18n="dl.linux.ai">通用版</span>
12111211
<span class="dl-format">.AppImage</span>
12121212
</a>
1213-
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.2_amd64.deb" target="_blank" rel="noopener">
1213+
<a class="dl-link" href="https://claw.qt.cool/proxy/dl/github.com/qingchencloud/clawpanel/releases/latest/download/ClawPanel_0.11.3_amd64.deb" target="_blank" rel="noopener">
12141214
Debian / Ubuntu
12151215
<span class="dl-format">.deb</span>
12161216
</a>

openclaw-version-policy.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,22 @@
111111
"chinese": {
112112
"recommended": "2026.3.28-zh.2"
113113
}
114+
},
115+
"0.11.1": {
116+
"official": {
117+
"recommended": "2026.3.28"
118+
},
119+
"chinese": {
120+
"recommended": "2026.3.28-zh.2"
121+
}
122+
},
123+
"0.11.2": {
124+
"official": {
125+
"recommended": "2026.3.28"
126+
},
127+
"chinese": {
128+
"recommended": "2026.3.28-zh.2"
129+
}
114130
}
115131
}
116132
}

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "clawpanel",
3-
"version": "0.11.2",
3+
"version": "0.11.3",
44
"private": true,
55
"description": "ClawPanel - OpenClaw 可视化管理面板,基于 Tauri v2 的跨平台桌面应用",
66
"type": "module",

scripts/dev-api.js

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,38 @@ function standaloneConfig() {
511511
return policy?.standalone || { enabled: false }
512512
}
513513

514+
function findPanelPolicyEntry(policy, currentVersion) {
515+
const exact = policy?.panels?.[currentVersion]
516+
if (exact) return exact
517+
518+
const currentParts = parseVersion(currentVersion)
519+
if (currentParts.length < 2) return null
520+
521+
let matched = null
522+
let matchedParts = null
523+
for (const [version, entry] of Object.entries(policy?.panels || {})) {
524+
const parts = parseVersion(version)
525+
if (parts.length < 2) continue
526+
if (parts[0] !== currentParts[0] || parts[1] !== currentParts[1]) continue
527+
if (versionCompare(version, currentVersion) > 0) continue
528+
if (!matchedParts || compareParsedVersion(parts, matchedParts) > 0) {
529+
matched = entry
530+
matchedParts = parts
531+
}
532+
}
533+
return matched
534+
}
535+
536+
function compareParsedVersion(a = [], b = []) {
537+
const len = Math.max(a.length, b.length)
538+
for (let i = 0; i < len; i++) {
539+
const av = Number(a[i] || 0)
540+
const bv = Number(b[i] || 0)
541+
if (av !== bv) return av > bv ? 1 : -1
542+
}
543+
return 0
544+
}
545+
514546
function standalonePlatformKey() {
515547
const arch = process.arch
516548
const plat = process.platform
@@ -746,7 +778,8 @@ async function _tryR2Install(version, source, logs) {
746778

747779
function recommendedVersionFor(source = 'chinese') {
748780
const policy = loadVersionPolicy()
749-
return policy?.panels?.[PANEL_VERSION]?.[source]?.recommended
781+
const panelEntry = findPanelPolicyEntry(policy, PANEL_VERSION)
782+
return panelEntry?.[source]?.recommended
750783
|| policy?.default?.[source]?.recommended
751784
|| null
752785
}

src-tauri/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "clawpanel"
3-
version = "0.11.2"
3+
version = "0.11.3"
44
edition = "2021"
55
description = "ClawPanel - OpenClaw 可视化管理面板"
66
authors = ["qingchencloud"]

src-tauri/src/commands/config.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,36 @@ fn panel_version() -> &'static str {
101101
env!("CARGO_PKG_VERSION")
102102
}
103103

104+
fn find_panel_policy_entry<'a>(policy: &'a VersionPolicy, current_version: &str) -> Option<&'a VersionPolicyEntry> {
105+
if let Some(entry) = policy.panels.get(current_version) {
106+
return Some(entry);
107+
}
108+
109+
let current_parts = parse_version(current_version);
110+
if current_parts.len() < 2 {
111+
return None;
112+
}
113+
114+
policy
115+
.panels
116+
.iter()
117+
.filter_map(|(version, entry)| {
118+
let parts = parse_version(version);
119+
if parts.len() < 2 {
120+
return None;
121+
}
122+
if parts[0] != current_parts[0] || parts[1] != current_parts[1] {
123+
return None;
124+
}
125+
if parts > current_parts {
126+
return None;
127+
}
128+
Some((parts, entry))
129+
})
130+
.max_by(|(left, _), (right, _)| left.cmp(right))
131+
.map(|(_, entry)| entry)
132+
}
133+
104134
fn parse_version(value: &str) -> Vec<u32> {
105135
value
106136
.split(|c: char| !c.is_ascii_digit())
@@ -231,7 +261,7 @@ pub(crate) fn all_standalone_dirs() -> Vec<PathBuf> {
231261

232262
fn recommended_version_for(source: &str) -> Option<String> {
233263
let policy = load_version_policy();
234-
let panel_entry = policy.panels.get(panel_version());
264+
let panel_entry = find_panel_policy_entry(&policy, panel_version());
235265
match source {
236266
"official" => panel_entry
237267
.and_then(|entry| entry.official.recommended.clone())

src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json",
33
"productName": "ClawPanel",
4-
"version": "0.11.2",
4+
"version": "0.11.3",
55
"identifier": "ai.openclaw.clawpanel",
66
"build": {
77
"frontendDist": "../dist",

0 commit comments

Comments
 (0)