346 Commits

Author SHA1 Message Date
晴天
d397de4c52 fix: npm install后误卸载新装包(current_source=unknown时old_pkg与new pkg相同) v0.12.0 2026-04-11 05:26:27 +08:00
晴天
2f33409a8b fix: allow unused_variables for reload_gateway_internal (app unused on macOS) 2026-04-11 04:55:53 +08:00
晴天
e3af36603a fix: CI lint errors - openclaw_command import scope, clippy warnings 2026-04-11 04:51:07 +08:00
晴天
fef694a087 style: cargo fmt 2026-04-11 04:45:58 +08:00
晴天
271dc93b08 feat: OpenClaw 4.9 全面适配 (v0.12.0)
- 推荐内核统一升级至 2026.4.9 / 2026.4.9-zh.2
- standalone 安装兼容 edition 格式 latest.json + openclaw-zh- 文件名前缀
- standalone 三级降级: R2 CDN → GitHub Releases → npm
- pre_install_cleanup 所有命令加 10s 超时保护(修复安装卡死)
- npm uninstall 加 30s 超时保护
- wmic 全部迁移到 PowerShell(兼容 Windows 11)
- standalone 下载增加文字进度显示
2026-04-11 04:42:36 +08:00
晴天
70d768be17 feat: new pages + dashboard enhancements + backend improvements
New pages:
- Plugin Hub: grid cards, search, install/toggle/enable plugins
- Route Map: SVG visualization of channels→agents bindings with legends
- Diagnose: gateway connectivity diagnosis with step-by-step checks

Dashboard enhancements:
- WebSocket status indicator (connected/handshaking/reconnecting/disconnected)
- Connected channels overview with platform icons
- Colored log level badges (ERROR/WARN/INFO/DEBUG) with timestamps
- Channels data loading in dashboard secondary fetch

Splash screen:
- Multi-stage boot detection (JS not loaded vs boot slow vs timeout)
- 15s: WebView2/resource load failure
- 20s: "initializing..." hint with elapsed counter
- 90s: true timeout error

Backend (Rust):
- diagnose.rs: gateway connectivity diagnosis command
- messaging.rs: plugin management commands
- service.rs: improvements
- lib.rs: register new commands

Frontend libs:
- feature-gates.js: feature flag system
- ws-client.js: reconnect state tracking
- tauri-api.js: new API bindings
- model-presets.js: provider fixes
- Remove gateway-guardian-policy.js (unused)

Dev API (scripts/dev-api.js):
- list_all_plugins, toggle_plugin, install_plugin handlers
- probe_gateway_port, diagnose_gateway_connection handlers

i18n: dashboard, sidebar, diagnose, extensions, routeMap locale modules
CSS: plugin-hub cards, route-map SVG styles
2026-04-11 00:44:06 +08:00
晴天
c1fb674c44 chore: bump vite 6.4.1 → 6.4.2 (fix CVE-2026-39363 + path traversal) 2026-04-11 00:42:01 +08:00
晴天
56039ce932 fix: improve install/uninstall stability + dreaming animations + scan fix flow
Dreaming page:
- Restore animated hero card (stars, moon, floating Z's, deep sky gradient)
- Glass-morphism stat cards inside hero
- runAction/toggleDreaming: friendly toast for unsupported RPCs instead of raw error

Install/Uninstall (config.rs):
- pre_install_cleanup: fix Windows process kill (wmic CommandLine match instead of useless WINDOWTITLE filter), kill standalone dir processes, wait 2s
- uninstall: wait 3s after gateway stop, wmic kill standalone processes, retry deletion with 3s delay
- upgrade source-switch: standalone cleanup with process kill + retry + wait
- gateway reinstall: wait 2s after stop before install

Scan fix flow (chat-debug.js):
- 5-step fix with progress toasts (pairing, doctor, gateway, wait, websocket)
- Gateway start polling (up to 15s) instead of fixed 5s wait
- WebSocket reconnect polling (up to 12s) instead of fixed 3s wait

Frontend (modal.js + about.js):
- setProgressLabels() for custom progress text per modal usage
- Uninstall modal shows "停止服务/卸载组件/清理文件" instead of "下载依赖"

i18n: 11 locales updated with fixStep* and uninstall progress keys
2026-04-11 00:37:14 +08:00
晴天
cfd00f043e feat: add Dreaming UI and gateway auto-fix startup flow 2026-04-10 20:28:20 +08:00
晴天
3105e56fd6 fix hosted session binding and harden panel config resolution 2026-04-10 18:59:41 +08:00
github-actions[bot]
6beaa7f46a ci: update latest.json for v0.11.6 2026-04-07 08:31:51 +00:00
晴天
3c5a0d252b chore: release v0.11.6
feat: Skills multi-agent support — agent selector + per-agent skills directory (Rust/Node.js/frontend)
feat: Assistant tool mode streaming — typewriter effect + tool_calls chunk accumulation
improve: OpenClaw 4.5 compatibility — full agent event stream handling + 3-min ultimate timeout
improve: Replace hot-update with stable download links (website/GitHub)
fix: Gateway status flapping — dashboard throttle + TCP retry + debounce threshold
fix: Assistant empty gray bubbles — SSE 0-chunk detection + stream error capture + render filter
v0.11.6
2026-04-07 16:17:09 +08:00
晴天
35423f428b feat(chat): OpenClaw 4.5 compatibility — fix silent no-reply + add working state indicators
Problem:
- Sending a message with no response left users stuck with an empty typing
  indicator forever (no timeout, no error, no feedback)
- Users had no visibility into what OpenClaw was doing (thinking, planning,
  executing tools, running commands, waiting for approval)
- The response watchdog only reacted to chat delta/final events, ignoring
  all agent processing events

Root cause:
- Watchdog looped every 15s polling history but had no ultimate timeout
- Agent events (lifecycle, item, plan, approval, thinking, command_output)
  were not handled — only tool stream events updated the typing hint
- When OpenClaw processed silently (no delta), the UI showed nothing useful

Fix:
1. Handle ALL OpenClaw 4.5 agent event streams in handleEvent():
   - lifecycle: "AI is processing…" on phase start
   - item: structured execution steps (tool/command/search/analysis)
   - plan: "AI is planning…"
   - approval: "Waiting for approval…"
   - thinking: "AI is thinking…"
   - command_output: "Running command…"
   - compaction/error: appropriate indicators

2. Enhanced watchdog mechanism:
   - 3-minute ultimate timeout that persists across watchdog re-polls
   - Agent events reset the polling timer (OpenClaw is alive) but not
     the ultimate timeout
   - After 30s shows "Still waiting…" with elapsed time
   - At 3min shows clear error: "Check if OpenClaw is running"

3. Live elapsed timer in typing indicator:
   - Shows seconds elapsed since message was sent (after 5s)
   - Updates every 5s while waiting
   - Properly cleaned up on response/error/page exit

4. Config compatibility check: no changes needed — our code already uses
   canonical config paths, no legacy aliases affected by 4.5 removal.

Files: chat.js, chat.css, locales/modules/chat.js
2026-04-07 16:15:17 +08:00
github-actions[bot]
f781f2afa6 ci: update latest.json for v0.11.5 2026-04-06 19:48:32 +00:00
晴天
1b0ee6a18d fix: clippy manual_flatten in skills.rs v0.11.5 2026-04-07 03:34:56 +08:00
晴天
c968d179b1 style: cargo fmt 2026-04-07 03:30:48 +08:00
晴天
ad00ffef3d chore: release v0.11.5
feat: SkillHub skill store (SDK-based, no CLI dependency)
- Rust SDK (skillhub.rs): HTTP search, index fetch, zip download+extract
- Node.js SDK (skillhub-sdk.js): mirrors Rust SDK for Web/Docker mode
- Skills page: new "Store" tab with full index browse + client-side filter
- Remove 6 old CLI-dependent commands, add 3 SDK commands
- Migrate assistant.js skill tools from ClawHub CLI to SkillHub SDK
- Fix index decode error ({total,skills} wrapper vs bare array)
- Fix skill name display (API field 'name' vs 'display_name')
- Clean up 13 dead CSS rules from old skills hero/tips UI
2026-04-07 03:25:26 +08:00
github-actions[bot]
b57235e2a7 ci: update latest.json for v0.11.4 2026-04-05 17:20:45 +00:00
晴天
4f8ac803ce chore: release v0.11.4 v0.11.4 2026-04-06 01:07:36 +08:00
晴天
9ff91f74d8 feat: IME-aware chat input, message copy button, Git path scanning
- Fix IME composition issue: Enter during Chinese/Japanese/Korean input
  method composition no longer prematurely sends messages (assistant.js)
  Uses e.isComposing + keyCode 229 guard on keydown handler
- Add one-click copy button to chat message bubbles (both chat.js and
  assistant.js), with hover-reveal animation and checkmark feedback
- Add 'copy' icon to SVG icon library (Lucide style)
- Add CSS for msg-copy-btn in chat.css and assistant.css
- Implement scan_git_paths Rust command: scans common Git installation
  locations on Windows/macOS/Linux (Program Files, Scoop, Chocolatey,
  GitHub Desktop, VS Code, MSYS2, Homebrew, Xcode CLT, etc.)
- Register scan_git_paths in lib.rs, tauri-api.js, dev-api.js
- Add scan button + results UI in settings.js Git path section
- Add i18n keys: gitScan, gitScanning, gitScanEmpty, gitScanUse
2026-04-06 00:14:18 +08:00
晴天
42aeb8b077 fix: Gateway status discrepancy — foreign detection, claim action, banner sync
- Services page: foreign Gateway now shows warning dot (yellow) instead of green
- Add claim_gateway command (Rust + dev-api + frontend API) to adopt foreign Gateway
- Services page: add "Claim Gateway" button for foreign Gateway instances
- Top banner: distinguish foreign Gateway (warning + claim) vs stopped (info + start)
- app-state: expose isGatewayForeign(), pass foreign flag to onGatewayChange listeners
- Services page actions now immediately sync global Gateway state (no 15s poll wait)
- Relax owner matching: cli_path missing on either side no longer triggers foreign
- Add i18n keys: foreignGatewayBanner, claimGateway, claimSuccess, claimFailed, processing
2026-04-05 23:12:16 +08:00
晴天
b2ab316353 fix(settings): support custom git path and robust skills bundled scanning 2026-04-05 21:33:35 +08:00
晴天
2829be1bd2 fix(deps): patch picomatch 4.0.4 and rustls-webpki 0.103.10 (dependabot #6, #4) 2026-04-05 20:40:13 +08:00
晴天
699cf1c071 fix(models): stop auto-populating fallbacks on every save (fixes #190) 2026-04-05 20:25:33 +08:00
晴天
db1f0edc43 fix(ci): format config command 2026-04-03 00:33:28 +08:00
github-actions[bot]
40399df69b ci: update latest.json for v0.11.3 2026-04-02 16:28:56 +00:00
晴天
ce4e9ee8b0 chore: release v0.11.3 v0.11.3 2026-04-03 00:16:50 +08:00
晴天
61400397ec chore(update): sync latest manifest for v0.11.2 2026-04-02 18:32:46 +08:00
github-actions[bot]
57253e7eb2 ci: update latest.json for v0.11.2 2026-04-02 10:28:38 +00:00
晴天
c6b6707d6c fix(gateway): avoid false foreign gateway detection (#176) v0.11.2 2026-04-02 18:15:52 +08:00
github-actions[bot]
dec0bf4d82 ci: update latest.json for v0.11.1 2026-04-02 09:48:55 +00:00
晴天
3b85bc6f01 feat: Windows dual build - lightweight + full WebView2 installer v0.11.1 2026-04-02 17:33:40 +08:00
github-actions[bot]
10efe1cc0a ci: update latest.json for v0.11.0 2026-04-02 07:13:38 +00:00
晴天
8dfa1821bb fix(ci): resolve clippy bool_comparison and needless_as_bytes warnings v0.11.0 2026-04-02 15:00:34 +08:00
晴天
d7ea6177e0 style: cargo fmt 2026-04-02 14:55:27 +08:00
晴天
d178bffc21 chore: release v0.11.0 2026-04-02 14:50:41 +08:00
晴天
630f7daa74 fix(linux): replace sudo -E with pkexec for npm privilege escalation (#175)
- sudo -E is incompatible with sudo-rs (Ubuntu 25.10+)
- sudo cannot prompt for password from GUI apps (no TTY)
- Split npm_command() (read-only, no elevation) and npm_command_elevated() (write ops)
- npm_command_elevated() checks if npm prefix is user-writable (nvm/fnm/volta)
- Falls back to pkexec (graphical auth dialog) then sudo --non-interactive
- Passes env vars explicitly via /usr/bin/env instead of -E
2026-04-02 14:34:05 +08:00
晴天
0ad7a63c5a fix: confirm dialog overflow when content is too long 2026-04-02 13:52:08 +08:00
晴天
7b4640b355 feat: improve channel and setup guidance flows 2026-04-02 00:36:32 +08:00
晴天
2013ff98b9 feat: add workspace file panel to chat 2026-04-02 00:36:22 +08:00
晴天
17dbf2bc81 fix: sanitize polluted profiles fields in openclaw config 2026-04-02 00:09:03 +08:00
晴天
88d4c67ae6 fix: avoid false gateway-down status when pid lookup fails 2026-04-02 00:08:41 +08:00
晴天
aad8043196 feat(config): add config calibration repair flow 2026-04-01 22:46:36 +08:00
晴天
476b1a64b0 fix(ci): resolve cross-platform clippy warnings 2026-04-01 16:00:45 +08:00
晴天
b4350a59c4 fix(ci): satisfy clippy checks 2026-04-01 15:54:23 +08:00
晴天
f15de0cd4f fix(ci): apply rustfmt to tauri sources 2026-04-01 15:21:46 +08:00
晴天
b427a6b000 feat: improve gateway compatibility and complete i18n cleanup 2026-04-01 15:06:25 +08:00
晴天
57b8b25946 docs(readme): 新增升级/卸载教程 + 更新致谢列表
- 新增「升级面板」章节:macOS/Windows/Linux 桌面版、Linux Web 版、Docker 五种场景
- 新增「卸载面板」章节:五种场景完整卸载步骤,含数据清理警告
- 代码贡献者新增 octo-patch(#163)、SEVENTEEN-TAN(#161)、roc-xie(#162)
- 社区反馈者新增 17 位近期 Issue 提交用户
2026-03-30 23:59:54 +08:00
晴天
f5d32c377c fix: 修复多个高优 Issue (#160, #165, #156, #159, #151)
- #160 Gateway 死循環: _autoPairAndReconnect 后不调用 reconnect() 避免重置计数器
- #165 readConfig 未定义: 替换为内联 fs.readFileSync/writeFileSync
- #156 systemd PATH: findOpenclawBin 添加 npm 全局路径, systemd 服务注入 PATH
- #159 Docker 双容器冲突: 新增 DISABLE_GATEWAY_SPAWN 环境变量开关
- #151 Gateway 检测冲突: linuxCheckGateway 验证进程名, 拒绝操作非 OpenClaw 进程
2026-03-30 23:13:24 +08:00
SEVENTEEN-TAN
87d7c227d8 fix: 重构版本源检测逻辑 + standalone 目录集中化 + Linux 平台检测补全 (#161)
* fix: Windows 版本检测错误——优先从活跃 CLI 读取版本,修复源判断和包检查顺序

- get_local_version() Windows 块新增活跃 CLI 优先检测(与 macOS 一致),
  避免残留的 standalone 汉化版目录被优先扫描到
- detect_installed_source() 修复 standalone 被错误映射为 official(应为 chinese)
- read_version_from_installation() 根据 classify_cli_source 动态决定
  package.json 检查顺序,避免硬编码汉化版优先导致官方版用户看到错误版本

🤖 Generated with [Qoder][https://qoder.com]

* fix: Windows 版本检测忽略残留文件,仅当 CLI 二进制存在时才读取版本

standalone 目录和 npm 全局目录中可能存在卸载后的残留 node_modules/
package.json,导致面板误判 OpenClaw 已安装并显示错误版本号。
现在在读取版本前先检查 openclaw.cmd 是否实际存在。

🤖 Generated with [Qoder][https://qoder.com]

* fix: 重构版本源检测逻辑,修复跨源切换后显示旧源的问题

- 新增 detect_source_from_cmd_shim() 通过读取 Windows .cmd shim 内容判断
  npm 包归属,替代不可靠的文件系统残留目录扫描
- 重写 detect_installed_source() Windows 检测块,优先使用 shim 内容信号
- upgrade_openclaw_inner() 跨源切换时清理 standalone 安装目录
- get_local_version() npm 段改用 shim 内容判断活跃包
- build_enhanced_path() 三平台添加 standalone 安装目录,避免 dashboard 超时
- 所有平台 fallback 从 "official" 改为 "unknown",支持非面板安装场景
- 前端 dashboard/about 支持 official/chinese/unknown 三源显示
- 新增 unknownSource i18n key(中/英/繁/日/韩)

🤖 Generated with [Qoder][https://qoder.com]

* fix: 移除 config.rs 末尾多余的闭合括号,修复编译错误

🤖 Generated with [Qoder][https://qoder.com]

* fix: 移除 config.rs 末尾重复的 configure_git_https 和 invalidate_path_cache 定义

🤖 Generated with [Qoder][https://qoder.com]

* refactor: standalone 目录集中化、unsafe set_var 适配、Linux 平台检测补全

- 提升 all_standalone_dirs() / standalone_install_dir() 为 pub(crate),
  作为全局唯一的 standalone 路径来源
- build_enhanced_path() 三平台块改为调用 config::all_standalone_dirs()
- service.rs 三平台 candidate 函数改为调用 super::config::all_standalone_dirs()
- utils.rs common_non_windows_cli_candidates() 改为调用集中函数
- std::env::set_var 包裹 unsafe 块,附 SAFETY 注释,适配 Rust 1.83+
- 补全 Linux detect_installed_source(): CLI 路径分类 -> symlink -> standalone -> npm list
- 补全 Linux get_local_version(): 活跃 CLI -> standalone VERSION -> symlink package.json

🤖 Generated with [Qoder][https://qoder.com]

* fix: service.rs 模块路径修正 super::config -> crate::commands::config

mod platform 内部 super 指向 service 模块而非 commands,
需要完整路径 crate::commands::config 才能访问 all_standalone_dirs()

🤖 Generated with [Qoder][https://qoder.com]

---------

Co-authored-by: SEVENTEEN-TAN <SEVENTEEN-TAN@users.noreply.github.com>
2026-03-30 22:50:11 +08:00