Commit Graph

348 Commits

Author SHA1 Message Date
晴天
dba69ee0fc feat(channels): 统一模型渠道——一处配置,同步 OpenClaw / Hermes / 晴辰助手
新增「模型渠道」页面(通用分组):用户只维护一份渠道配置
(服务商预设 / Base URL / API Key / 模型列表 / 默认模型),
通过显式同步推送到三个消费方,消灭重复配置。

实现要点:
- 渠道存储 src-tauri/src/commands/model_channels.rs:
  读取只回掩码(apiKeySaved/apiKeyMask),写入支持 __KEEP__ 哨兵保留旧 Key,
  明文 Key 仅经 reveal_model_channel_key 在同步时取出;
  文件位于 openclaw 数据目录下,便携迁移自动带走;含 6 个单元测试
- 同步逻辑 src/lib/model-channels.js 组合现有命令完成(各自带自动备份):
  OpenClaw 只 upsert 对应 provider 保留未知字段;
  Hermes 写 provider 环境变量 + 可选默认模型(仅 OpenAI/Anthropic/Gemini
  兼容 API Key 型,OAuth/SDK 型仍走 Hermes 向导);
  助手为一次性拷贝到 localStorage
- 页面 src/pages/model-channels.js:渠道卡片 + 三目标同步状态徽标
  (已同步/有未同步变更/未同步)+ 编辑弹窗(预设自动填充、在线拉取模型、
  默认模型联动)+ 从 OpenClaw 现有配置一键导入 + 全部操作确认弹窗
- Web 模式 dev-api.js 同构 handler + ALWAYS_LOCAL;i18n 简/繁/英 +
  侧栏 11 语言;tests/model-channels.test.js 锁定注册链与安全约束

验证:npm build / cargo fmt+check+clippy -D warnings / cargo test --lib
314 通过 / node --test 全部 427 通过

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 11:48:24 -07:00
晴天
b04deb4e54 fix(release): 0.18.6 收口——审查修复、创作中心与便携迁移加固、设置页提速
按全量代码审查(8 角度 × 对抗验证)修复 10 项确认问题并完成收口:

安全:
- 媒体资产下载仅对与服务商 Base URL 同主机的地址携带 API Key,防止密钥外泄
- 助手媒体工具默认关闭需显式开启;付费图片/视频生成在任何模式下强制确认

数据与容错:
- 媒体数据统一存放 openclaw 数据目录下,便携迁移后配置与历史直接生效
- 视频轮询 429/5xx 瞬时错误不再永久标记失败;失败任务可重新轮询找回
- 创建视频任务无法识别任务 ID 时保留任务记录与原始响应(可能已计费)
- 便携迁移失败时正确显示错误状态;便携命令加入 Web 模式 ALWAYS_LOCAL

性能与体验:
- 任务记录落盘前裁剪 base64 等超大字段,媒体历史文件不再膨胀
- 资产预览 stat 预检 + 64MB 上限 + 缓存淘汰;轮询并行化(后端 jobs 加锁)
- 初始设置页两阶段渲染:本地检测先出首屏,版本网络查询异步补充
- 创作中心删除改用统一确认弹窗(原生 confirm 在 macOS WebView 失效)
- 检查配置/获取模型列表放行 http:// 自建网关;桌面/Web 状态解析对齐
- 统一三处路径包含检查为 utils 共享 helper(Linux 大小写误判修复)
- 补充便携模式 hermes-cli-missing 警告翻译(简/繁/英)

其他:修复 web-headless-reload-policy 陈旧断言(e16ff2b 后 ws-client 已无隐式 reload)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 11:43:33 -07:00
晴天
cf2572ea99 fix(hermes): 兼容最新版 Web Search 策略 2026-06-15 14:00:07 +08:00
晴天
675ad1628b fix(openclaw): 兼容新版配置与 Node 门槛 2026-06-11 15:24:01 +08:00
晴天
d60db3b71b fix(setup): 补齐跨端 Node 检测与新手引导 2026-06-08 22:31:00 +08:00
晴天
634fe66556 fix(setup): 完善 Node 版本检测与升级引导 2026-06-08 22:04:55 +08:00
晴天
e16ff2baee fix(openclaw): stabilize windows install and pairing 2026-06-07 03:28:10 +08:00
晴天
de1531d111 feat: prepare v0.18.0 release 2026-06-06 18:32:37 +08:00
晴天
f340b64028 feat(update): integrate official site update flow 2026-06-06 13:59:52 +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
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
晴天
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
晴天
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