Commit Graph

618 Commits

Author SHA1 Message Date
Cursor Agent
d2fcddc04c fix(hermes): restore active profile after group chat and isolate run events
Group chat switched profiles via hermesProfileUse but never restored the
user's original active profile (comment promised restore since v0.14).
Also tighten hermes-run-* filtering so events from other concurrent runs
cannot complete a pending group-chat reply before run_id is known.

Co-authored-by: 晴天 <1186258278@users.noreply.github.com>
2026-05-30 11:06:39 +00:00
github-actions[bot]
38934fe754 ci: update latest.json for v0.17.0 2026-05-28 01:55:03 +00:00
晴天
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