616 Commits

Author SHA1 Message Date
晴天
f2fbd9106d chore: release v0.17.0
See CHANGELOG.md for the full notes. Highlights:

- feat(hermes): 50+ visual config panels covering session runtime, model
  management, terminal/sandbox, kanban, safety/privacy, display, browser,
  voice and toolsets — replaces hand-editing ~/.hermes/config.yaml.
- feat(hermes): maintenance/upgrade controls (Update Backup, Session Store
  Maintenance, Curator Maintenance).
- feat(channels): 14 new channels (iMessage / WhatsApp / Telegram / Discord
  plugin runtime / Signal / Microsoft Teams / LINE / Mattermost / Synology /
  Google Chat / Zalo / DingTalk / Tlon / IRC / Nostr / Twitch / Nextcloud
  Talk / ClickClack), unified channel editor, SecretRef preservation,
  multi-account save, generic diagnostics.
- fix(hermes): critical upstream 0.14.0 missing pieces compensated
  (dashboard_auth stubs + web_dist index.html injected at install/update/
  start; idempotent + self-yielding when upstream ships the real files).
- fix(hermes): upgrade path now installs runtime extras (croniter / httpx /
  openai / aiohttp / websockets) to prevent post-upgrade Gateway crashes.
- fix(hermes): hermes_venv_python now resolves uv-tool install paths so
  '可选依赖管理' / 多 Gateway 看板 stop falsely reporting 'venv not found'.
- fix(hermes): group-chat page no longer renders run_id as the reply text;
  it now listens to hermes-run-done and reads payload.output.
- fix: dashboard race condition (#301), Node.js nvm-managed version
  detection (#295), agent models sync with merged openclaw.json (#297).

Hot-update minAppVersion bumped to 0.17.0 because src-tauri/src/lib.rs
registers 40+ new Tauri commands — older desktop builds must NOT pull this
frontend via hot-update or they will hit missing-command crashes.
v0.17.0
2026-05-28 09:42:40 +08:00
晴天
30691c68cb fix(hermes): make hermes_venv_python aware of uv-tool default install path
hermes_venv_python() only looked at \HERMES_PYTHON\ and \~/.hermes-venv\
(the uv-pip layout), but ClawPanel's default \install_hermes\ runs
\uv tool install\ and lands the Python at
\<uv tool dir>/hermes-agent/{Scripts,bin}/python\. Result: any code path
that funnels through \
un_venv_python_json\ — most importantly the
'可选依赖管理 / Optional Dependencies' page (hermes_lazy_deps_*) — refused
to start with 'Hermes venv 未找到(~/.hermes-venv 不存在)。请先安装 Hermes。',
even on machines where Hermes was already installed and Profile / Channels /
Dashboard pages worked fine.

Refactor:
  - Extract \hermes_uv_tool_root()\ (resolves \<uv tool dir>/hermes-agent\).
  - Add \hermes_uv_tool_python()\ (returns Scripts/python.exe on Windows,
    bin/python on Unix).
  - Reuse \hermes_uv_tool_root()\ from the existing
    \locate_hermes_cli_package_dir()\ so the two helpers share one source
    of truth.
  - \hermes_venv_python()\ now falls through to the uv-tool path after
    \HERMES_PYTHON\ and \~/.hermes-venv\. Error message updated to list
    every probed location so users on truly-uninstalled machines still get
    actionable feedback.

Verified end-to-end: the actual installed venv at
\%APPDATA%/uv/tools/hermes-agent/Scripts/python.exe\ runs
\rom tools.lazy_deps import LAZY_DEPS\ cleanly and reports 25 features.
2026-05-28 09:16:58 +08:00
晴天
1836069b0f fix(hermes): self-host dashboard_auth + web_dist stubs to survive upstream missing pieces
Upstream hermes-agent 0.14.0 (both the PyPI wheel and the public git source
at NousResearch/hermes-agent) ships hermes_cli/web_server.py with hard imports
of hermes_cli.dashboard_auth.{audit,middleware,prefix,routes,ws_tickets} but
those source files are not included in the distribution, and the dashboard
SPA bundle (hermes_cli/web_dist/) is also missing. On Windows this makes
'hermes dashboard' crash on startup, which collapses every ClawPanel page
that talks to port 9119 (Profile / Kanban / OAuth / Channels / Sessions
detail) into a 'request rejected by target machine' error.

Per project policy we do not patch upstream. Instead, after each install /
upgrade and again before spawning the dashboard, ClawPanel now injects a
minimal pass-through stub into the installed venv:

  - hermes_cli/dashboard_auth/{__init__,audit,middleware,prefix,routes,
    ws_tickets}.py — no-op providers, safe on loopback (127.0.0.1) where
    the auth gate is intentionally disabled.
  - hermes_cli/web_dist/index.html + assets/ — so mount_spa() takes the
    token-injecting branch instead of the 'Frontend not built' 404 branch.
    Without this the panel can never scrape window.__HERMES_SESSION_TOKEN__
    from the dashboard HTML and every /api/* call fails with 401.

Injection is idempotent: if upstream eventually ships the real files, the
stub writer skips them so the real implementation wins. Failures are
logged-and-swallowed so install/upgrade is never blocked by best-effort
compatibility patches.

Group-chat page is also fixed: hermes_agent_run resolves to the run_id
string (not a result object), so the page was rendering 'run_xxx...' as
the assistant reply. It now listens to hermes-run-{started,delta,done,
error,cancelled} events and resolves to payload.output (with accumulated
delta as fallback).
2026-05-28 08:53:37 +08:00
晴天
863d7d75be fix(hermes): include all runtime extras in upgrade path
update_hermes only passed --with croniter, while install_via_uv_tool
passes --with croniter --with httpx --with openai --with aiohttp --with
websockets. After running "Upgrade Hermes" from the panel, the four
missing deps disappeared from the uv tool venv. "hermes gateway run"
then started successfully (cron-only mode) but the api_server platform
adapter failed to construct because aiohttp was absent, so port 8642
never came up and the panel hung on "starting...".

Extract HERMES_RUNTIME_EXTRA_DEPS as a single source of truth plus
append_hermes_runtime_extras and hermes_runtime_extras_log_segment
helpers, and route both install_via_uv_tool and update_hermes through
them so future dep additions cannot drift between the two paths.
2026-05-28 08:02:28 +08:00
晴天
2b2b221bbb ci: trigger workflow on ready_for_review pull requests
Default pull_request types are [opened, synchronize, reopened] which excludes ready_for_review. Draft PRs (e.g. those auto-generated by Cursor Background Agent) thus skipped CI when converted to ready, requiring close+reopen workarounds. Explicit types list now ensures CI runs on draft -> ready transitions too.
2026-05-28 07:37:47 +08:00
cursor[bot]
8568dd0d2a fix(dashboard): prevent superseded dashboard loads from mutating state (#301)
Adds two loadSeq guards in _loadDashboardDataInner: after the first await coreP and before the self-heal writeOpenclawConfig path. Prevents stale loads from polluting cache, popping toasts, or writing config after a newer load has been queued.
2026-05-28 07:27:51 +08:00
cursor[bot]
99b62ccc04 fix(config): sync agent models from merged openclaw.json after write (#297)
Fixes #127 — sync_providers_to_agent_models now uses cleaned (merged+stripped) config instead of raw frontend payload, preventing partial writes from dropping other providers from agents/*/agent/models.json.
2026-05-28 07:23:01 +08:00
friendfish
c38ca39830 fix: 修复 Node.js 版本检测优先命中系统路径而非 nvm 管理版本的问题 (#295)
Fixes #294 — Move version-manager paths (nvm/fnm) before hardcoded system paths (/usr/local/bin etc.) on macOS and Linux so the user's nvm-managed Node is detected first.

Co-authored-by: friendfish
2026-05-28 07:21:42 +08:00
晴天
91680162c6 Merge feat/hermes-channels-overhaul (#304)
Hermes Agent + multi-channel overhaul. 104 commits, 80 files, +53,808/-9,022. CI green on macOS / Linux / Windows. No release tag pushed; merging only to land long-running local work for further review tomorrow.
2026-05-28 03:53:34 +08:00
晴天
59c256a0be chore: ignore local worktrees 2026-05-28 03:42:50 +08:00
晴天
ca99e27406 feat(hermes): add display tui controls 2026-05-27 06:59:16 +08:00
晴天
b51bde929e feat(hermes): add browser camofox controls 2026-05-27 06:43:41 +08:00
晴天
3c29431be0 feat(hermes): add terminal docker advanced controls 2026-05-27 06:28:45 +08:00
晴天
63533036cf feat(hermes): add display analytics controls 2026-05-27 06:13:49 +08:00
晴天
88ac3f6cca feat(hermes): add context engine controls 2026-05-27 05:39:22 +08:00
晴天
a592b0194d feat(hermes): add x search controls 2026-05-27 05:25:42 +08:00
晴天
c9e4a380a9 feat(hermes): add model catalog controls 2026-05-27 05:06:32 +08:00
晴天
18c0164bdb feat(hermes): add lsp diagnostic controls 2026-05-27 04:49:03 +08:00
晴天
3bb3c9a7c3 feat(hermes): add web tool backend controls 2026-05-27 04:33:03 +08:00
晴天
0b4a70e7a4 feat(hermes): add terminal cloud runtime controls 2026-05-27 04:17:17 +08:00
晴天
c196cef026 feat(hermes): add tts voice controls 2026-05-27 04:02:36 +08:00
晴天
68320496b3 feat(hermes): add terminal env passthrough controls 2026-05-27 03:39:06 +08:00
晴天
8151092e0e feat(hermes): add terminal shell environment controls 2026-05-27 03:23:27 +08:00
晴天
66a23f861c feat(hermes): add update backup controls 2026-05-27 02:33:57 +08:00
晴天
77ab060e9c feat(hermes): add session store maintenance controls 2026-05-27 02:14:20 +08:00
晴天
d2236afc2d feat(hermes): add curator maintenance controls 2026-05-27 01:59:06 +08:00
晴天
ec0f7ec64a feat(hermes): add skills security controls 2026-05-27 01:40:53 +08:00
晴天
8f7f2a6e8e feat(hermes): add browser advanced controls 2026-05-27 01:27:23 +08:00
晴天
8703dffc5b feat(hermes): add kanban profile routing controls 2026-05-27 01:14:10 +08:00
晴天
ae9d6e8844 feat(hermes): add kanban worker log controls 2026-05-27 00:57:00 +08:00
晴天
1630462ccc feat(hermes): add kanban concurrency controls 2026-05-27 00:40:37 +08:00
晴天
80ed2d0e8c feat(hermes): add kanban dispatcher controls 2026-05-27 00:12:20 +08:00
晴天
425fcd847f feat(hermes): add kanban dispatch config 2026-05-26 23:57:52 +08:00
晴天
842cf83917 feat(hermes): add display tool prefix config 2026-05-26 23:37:38 +08:00
晴天
466e6c8831 feat(hermes): add telegram runtime options 2026-05-26 23:22:25 +08:00
晴天
45aadbdc63 feat(hermes): add docker env forwarding config 2026-05-26 06:52:16 +08:00
晴天
7ca586694b feat(hermes): add terminal ssh config 2026-05-26 06:34:57 +08:00
晴天
c0df3ac10c feat(hermes): add terminal sandbox image config 2026-05-26 06:25:31 +08:00
晴天
c19d6e80d9 feat(hermes): add delegation model override config 2026-05-26 06:11:25 +08:00
晴天
56519808d7 feat(hermes): add model token limits config 2026-05-26 06:01:41 +08:00
晴天
975613416d feat(hermes): add worktree session setting 2026-05-26 05:50:12 +08:00
晴天
51be3ab4ca fix(hermes): validate mcp sampling config 2026-05-26 05:39:19 +08:00
晴天
66375d2807 feat(hermes): add base model config 2026-05-26 05:25:30 +08:00
晴天
1e56a54aeb feat(hermes): add display defaults config 2026-05-26 05:06:15 +08:00
晴天
fc8f209e01 feat(hermes): add display skin config 2026-05-26 04:55:29 +08:00
晴天
2a23b682be feat(hermes): add agent quality config 2026-05-26 04:42:28 +08:00
晴天
a34d7befb6 feat(hermes): add model aliases config 2026-05-26 04:28:33 +08:00
晴天
59d7833203 feat(hermes): add shell hooks config 2026-05-26 04:04:22 +08:00
晴天
be7aca03fa feat(hermes): add mcp servers config 2026-05-26 03:48:31 +08:00
晴天
b768a14942 feat(hermes): add provider timeout overrides config 2026-05-26 03:26:46 +08:00