chore: release v0.14.0

集中发版:

新功能(10)
- 心甜Claw 引擎入口(第 3 个引擎模式)
- Hermes 22 个 Provider 注册表 + 安装/仪表盘动态加载
- Hermes .env 高级编辑(拒绝触碰托管 Provider 密钥)
- Hermes 会话与用量分析增强
- Hermes Dashboard 自动拉起 + Windows POSIX-only 兼容模态
- Hermes Skills 工具集面板
- 官网 Hermes Agent 黑金特色区 + 图文指南
- Boot Manifest 启动页(双语 + 错峰动画)
- 官网 Markdown 阅读器图片 lightbox
- Hermes Memory 概览卡

改进(9)
- Hermes 仪表盘/扩展页全面本地化
- 记忆编辑大尺寸模态
- 日志下载 Web/桌面分流
- 侧边栏导航补全
- 模型备选管理 UI(PR #232)
- 模型加载错误 UX 重做(错误卡 + 详情 + 重试)
- .page 布局 clamp + .page-narrow
- Memory 单列断点提早到 1100px
- Web 模式跳过前端热更新检查

修复(12)
- Gateway 启动 platforms.api_server.enabled 自修复(含 7 unit test)
- Memory 页 overview 卡穿模(旧 flex 列约束 → 自然块流)
- Skills 页 hero/toolsets 被压缩(flex-shrink:0)
- Web 模式 Skills ReferenceError(补 _readHermesDisabledSkills)
- 日志/记忆下载行为分流
- src/pages/models.js 5 处 typo
- 删除 56 行 .hm-memory-* 死代码 + line-clamp 标准属性
- Dependabot rustls-webpki / postcss / rand
This commit is contained in:
晴天
2026-04-25 23:47:22 +08:00
parent 8a314ff64e
commit 9ee99ead24
35 changed files with 2348 additions and 230 deletions

View File

@@ -118,6 +118,82 @@ export default {
dashNativePanelOffline: _('Gateway 未运行', 'Gateway offline', 'Gateway 未執行', 'Gateway 未実行', 'Gateway 미실행'),
dashNativePanelTooOld: _('需 v0.10.0+', 'Requires v0.10.0+', '需 v0.10.0+', 'v0.10.0+ が必要', 'v0.10.0+ 필요'),
dashNativePanelOpenFail: _('打开浏览器失败', 'Failed to open browser', '開啟瀏覽器失敗', 'ブラウザを開くのに失敗しました', '브라우저 열기 실패'),
dashNativePanelChecking: _('检测 Dashboard 端口…', 'Checking dashboard port…', '檢測 Dashboard 連接埠…', 'Dashboard ポートを確認中…', 'Dashboard 포트 확인 중…'),
dashNativePanelStarting: _('正在启动 Dashboard…', 'Starting Dashboard…', '正在啟動 Dashboard…', 'Dashboard を起動中…', 'Dashboard 시작 중…'),
dashNativePanelStartFirstHint: _('首次启动需构建前端,最长约 1-2 分钟…',
'First launch builds the frontend; this can take 1-2 minutes…',
'首次啟動需建構前端,最長約 1-2 分鐘…',
'初回起動はフロントエンドをビルドするため 1-2 分かかる場合があります…',
'첫 실행 시 프론트엔드 빌드로 1-2분 소요될 수 있습니다…'),
dashNativePanelStartTimeout: _('启动超时(端口 {port} 仍未响应)。请稍候再试,或在终端运行 hermes dashboard 查看实际错误。',
'Startup timed out (port {port} still unresponsive). Wait a bit and retry, or run hermes dashboard in a terminal to see the real error.',
'啟動逾時(連接埠 {port} 仍未回應)。請稍候再試,或在終端執行 hermes dashboard 查看實際錯誤。',
'起動タイムアウト(ポート {port} が応答しません)。少し待って再試行するか、ターミナルで hermes dashboard を実行して実際のエラーを確認してください。',
'시작 시간 초과 (포트 {port} 응답 없음). 잠시 후 다시 시도하거나 터미널에서 hermes dashboard를 실행하여 실제 오류를 확인하세요.'),
dashNativePanelStartPortBusy: _('端口 {port} 被占用,可能有别的 Hermes Dashboard 实例在运行。',
'Port {port} is in use; another Hermes Dashboard instance may be running.',
'連接埠 {port} 已被佔用,可能有另一個 Hermes Dashboard 實例在執行。',
'ポート {port} は使用中です。別の Hermes Dashboard インスタンスが実行されている可能性があります。',
'포트 {port}이(가) 사용 중입니다. 다른 Hermes Dashboard 인스턴스가 실행 중일 수 있습니다.'),
dashNativePanelStartGeneric: _('Dashboard 启动失败',
'Failed to start Dashboard',
'Dashboard 啟動失敗',
'Dashboard の起動に失敗しました',
'Dashboard 시작 실패'),
dashNativePanelWindowsTitle: _('原生 Windows 暂不支持 Hermes Dashboard',
'Hermes Dashboard not supported on native Windows',
'原生 Windows 暫不支援 Hermes Dashboard',
'ネイティブ Windows では Hermes Dashboard はサポートされていません',
'네이티브 Windows에서 Hermes Dashboard는 지원되지 않습니다'),
dashNativePanelWindowsDesc: _('Hermes Agent 在原生 Windows 上无条件导入 POSIX-only 标准库fcntl / termios导致 dashboard 启动崩溃。这是已知的上游 bug官方暂未修复。',
'Hermes Agent unconditionally imports POSIX-only stdlib modules (fcntl / termios) on native Windows, which crashes the dashboard at startup. This is a known upstream bug not yet fixed.',
'Hermes Agent 在原生 Windows 上無條件匯入 POSIX-only 標準函式庫fcntl / termios導致 dashboard 啟動崩潰。這是已知的上游 bug官方暫未修復。',
'Hermes Agent はネイティブ Windows で POSIX 専用の標準ライブラリfcntl / termiosを無条件にインポートするため、dashboard が起動時にクラッシュします。これは既知のアップストリームバグで未修正です。',
'Hermes Agent는 네이티브 Windows에서 POSIX 전용 표준 라이브러리(fcntl / termios)를 무조건 가져와 dashboard 시작 시 충돌합니다. 알려진 업스트림 버그이며 아직 수정되지 않았습니다.'),
dashNativePanelWindowsAlt1: _('继续使用 ClawPanel 内置的 Hermes 面板(推荐,体验更好)',
'Keep using ClawPanel\'s built-in Hermes panel (recommended, better experience)',
'繼續使用 ClawPanel 內建的 Hermes 面板(推薦,體驗更好)',
'ClawPanel 内蔵の Hermes パネルを使い続ける(推奨、より良い体験)',
'ClawPanel 내장 Hermes 패널을 계속 사용 (권장, 더 나은 경험)'),
dashNativePanelWindowsAlt2: _('在 WSL2 中安装并运行 Hermeshermes dashboard 在 Linux 上工作正常)',
'Install and run Hermes inside WSL2 (hermes dashboard works fine on Linux)',
'在 WSL2 中安裝並執行 Hermeshermes dashboard 在 Linux 上工作正常)',
'WSL2 内で Hermes をインストール・実行Linux 上では hermes dashboard は正常に動作)',
'WSL2 내에서 Hermes 설치 및 실행 (Linux에서는 hermes dashboard 정상 작동)'),
dashNativePanelWindowsReportLink: _('查看上游 Issue #5246', 'View upstream issue #5246', '檢視上游 Issue #5246', 'アップストリーム Issue #5246 を見る', '업스트림 Issue #5246 보기'),
dashNativePanelDown: _('Dashboard 服务未运行(端口 {port} 无响应。请在终端运行hermes dashboard',
'Dashboard service is not running (port {port} unreachable). Run in terminal: hermes dashboard',
'Dashboard 服務未執行(連接埠 {port} 無回應。請在終端執行hermes dashboard',
'Dashboard サービスが実行されていません(ポート {port} に接続できません)。ターミナルで実行: hermes dashboard',
'Dashboard 서비스가 실행 중이 아닙니다 (포트 {port} 연결 불가). 터미널에서 실행: hermes dashboard'),
dashNativePanelDownTitle: _('Hermes Dashboard 未启动', 'Hermes Dashboard not running', 'Hermes Dashboard 未啟動', 'Hermes Dashboard が実行されていません', 'Hermes Dashboard가 실행 중이 아닙니다'),
dashNativePanelStartHint: _('在终端运行下面命令启动 Dashboard 后再试:', 'Run the command below in your terminal to start the Dashboard, then retry:', '在終端執行以下命令啟動 Dashboard 後再試:', 'ターミナルで以下を実行して Dashboard を起動してから再試行してください:', '아래 명령을 터미널에서 실행하여 Dashboard를 시작한 후 다시 시도하세요:'),
dashNativePanelDepHint: _('首次使用需要先安装 Web 依赖fastapi + uvicorn。点击下方按钮自动安装或在终端运行',
'First-time use requires installing the Web dependencies (fastapi + uvicorn). Click the button below to auto-install, or run in your terminal:',
'首次使用需要先安裝 Web 依賴fastapi + uvicorn。點擊下方按鈕自動安裝或在終端執行',
'初回使用には Web 依存関係fastapi + uvicornのインストールが必要です。下のボタンで自動インストールするか、ターミナルで実行',
'처음 사용 시 Web 종속성(fastapi + uvicorn) 설치가 필요합니다. 아래 버튼으로 자동 설치하거나 터미널에서 실행:'),
dashNativePanelInstallWeb: _('安装 Web 依赖', 'Install Web Deps', '安裝 Web 依賴', 'Web 依存関係をインストール', 'Web 종속성 설치'),
dashNativePanelInstallWebTitle: _('安装 Hermes Web 依赖', 'Installing Hermes Web Dependencies', '安裝 Hermes Web 依賴', 'Hermes Web 依存関係をインストール中', 'Hermes Web 종속성 설치 중'),
dashNativePanelInstallWebDone: _('Web 依赖安装完成请在终端运行hermes dashboard',
'Web dependencies installed. Now run in your terminal: hermes dashboard',
'Web 依賴安裝完成請在終端執行hermes dashboard',
'Web 依存関係のインストールが完了しました。ターミナルで実行hermes dashboard',
'Web 종속성 설치 완료. 터미널에서 실행: hermes dashboard'),
dashNativePanelInstallWebFailed: _('安装失败', 'Install failed', '安裝失敗', 'インストールに失敗しました', '설치 실패'),
dashNativePanelInstallStoppingGw: _('⏸ 停止 Gateway 以释放 hermes.exe 文件锁…',
'⏸ Stopping Gateway to release hermes.exe file lock…',
'⏸ 停止 Gateway 以釋放 hermes.exe 檔案鎖…',
'⏸ hermes.exe ファイルロックを解放するため Gateway を停止中…',
'⏸ hermes.exe 파일 잠금 해제를 위해 Gateway 중지 중…'),
dashNativePanelInstallGwStopped: _('✓ Gateway 已停止', '✓ Gateway stopped', '✓ Gateway 已停止', '✓ Gateway を停止しました', '✓ Gateway 중지됨'),
dashNativePanelInstallRestartingGw: _('▶ 重启 Gateway…', '▶ Restarting Gateway…', '▶ 重新啟動 Gateway…', '▶ Gateway を再起動中…', '▶ Gateway 재시작 중…'),
dashNativePanelInstallGwRestarted: _('✓ Gateway 已重启', '✓ Gateway restarted', '✓ Gateway 已重新啟動', '✓ Gateway を再起動しました', '✓ Gateway 재시작됨'),
dashNativePanelInstallGwWarn: _('⚠ Gateway 操作异常',
'⚠ Gateway operation warning',
'⚠ Gateway 操作異常',
'⚠ Gateway 操作の警告',
'⚠ Gateway 작업 경고'),
dashOpenCron: _('定时任务', 'Cron Jobs', '定時任務'),
dashOpenSetup: _('重新配置', 'Reconfigure', '重新配置'),
dashNoModel: _('未配置', 'Not configured', '未配置'),
@@ -443,6 +519,36 @@ export default {
skillsFileLoadFailed: _('文件加载失败', 'File load failed', '檔案載入失敗'),
skillsAttachedFiles: _('附带资源', 'Attached Files', '附帶資源'),
skillsBackTo: _('返回', 'Back to', '返回'),
// Skills 页面 — Toolsets 区hermes tools list --platform cli
toolsetsTitle: _('内置工具集',
'Built-in Toolsets',
'內建工具集',
'組み込みツールセット',
'내장 툴셋'),
toolsetsSubtitle: _('platform: cli · 配置位于 ~/.hermes/config.yaml',
'platform: cli · configured in ~/.hermes/config.yaml',
'platform: cli · 配置位於 ~/.hermes/config.yaml',
'platform: cli · ~/.hermes/config.yaml で設定',
'platform: cli · ~/.hermes/config.yaml에서 설정'),
toolsetsLoading: _('正在读取工具集…', 'Loading toolsets…', '正在讀取工具集…', 'ツールセットを読み込み中…', '툴셋 로드 중…'),
toolsetsEmpty: _('暂无工具集数据。可能 Hermes 未安装或版本过旧。',
'No toolset data. Hermes may not be installed or the version is too old.',
'暫無工具集資料。可能 Hermes 未安裝或版本過舊。',
'ツールセットデータがありません。Hermes がインストールされていないか、バージョンが古い可能性があります。',
'툴셋 데이터가 없습니다. Hermes가 설치되지 않았거나 버전이 너무 오래되었을 수 있습니다.'),
toolsetsParseFailed: _('无法解析输出,下面显示原始内容:',
'Could not parse output. Raw content shown below:',
'無法解析輸出,下面顯示原始內容:',
'出力を解析できませんでした。下に生のコンテンツを表示します:',
'출력을 분석할 수 없습니다. 아래에 원시 콘텐츠를 표시합니다:'),
toolsetsHint: _('要切换某个工具集,运行 hermes tools 进入交互界面,或编辑 config.yaml 的 platforms.cli.toolsets 字段。',
'To toggle a toolset, run hermes tools for the interactive UI or edit platforms.cli.toolsets in config.yaml.',
'要切換某個工具集,執行 hermes tools 進入互動介面,或編輯 config.yaml 的 platforms.cli.toolsets 欄位。',
'ツールセットを切り替えるには、hermes tools で対話 UI を起動するか、config.yaml の platforms.cli.toolsets を編集します。',
'툴셋을 전환하려면 hermes tools 대화형 UI를 실행하거나 config.yaml의 platforms.cli.toolsets를 편집하세요.'),
toolsetsEnabled: _('启用', 'enabled', '啟用', '有効', '활성화'),
toolsetsDisabled: _('停用', 'disabled', '停用', '無効', '비활성화'),
toolsetsActiveCount: _('{n}/{total} 启用', '{n}/{total} active', '{n}/{total} 啟用', '{n}/{total} 有効', '{n}/{total} 활성화'),
// Memory 页面
hermesMemoryTitle: _('Agent 记忆', 'Agent Memory', 'Agent 記憶'),
memoryNotes: _('笔记', 'Notes', '筆記'),
@@ -459,6 +565,13 @@ export default {
memorySaved: _('已保存', 'Saved', '已儲存'),
memorySaveHint: _('Ctrl/⌘ + S 保存 · Esc 取消', 'Ctrl/⌘ + S to save · Esc to cancel', 'Ctrl/⌘ + S 儲存 · Esc 取消'),
memoryEyebrow: _('AGENT 长期记忆', 'AGENT PERSISTENT MEMORY', 'AGENT 長期記憶'),
memoryOverviewKicker: _('Hermes Memory Fabric', 'Hermes Memory Fabric', 'Hermes Memory Fabric'),
memoryOverviewTitle: _('三份 Markdown组成 Agent 的长期上下文', 'Three Markdown files form the Agents long-term context', '三份 Markdown組成 Agent 的長期上下文'),
memoryOverviewDesc: _('笔记记录事实用户画像沉淀偏好灵魂档案塑造人格。Hermes 会在会话中持续读取这些长期记忆。', 'Notes store facts, profile captures preferences, and soul shapes persona. Hermes continuously reads these persistent memories during conversations.', '筆記記錄事實用戶畫像沉澱偏好靈魂檔案塑造人格。Hermes 會在會話中持續讀取這些長期記憶。'),
memoryFiles: _('记忆文件', 'Memory Files', '記憶檔案'),
memoryFilled: _('已填写', 'Filled', '已填寫'),
memoryTotalWords: _('总词数', 'Total Words', '總詞數'),
memoryLatest: _('最近更新', 'Latest Update', '最近更新'),
memorySoul: _('灵魂档案', 'Soul', '靈魂檔案'),
memoryNotesDesc: _('Agent 的笔记与事实备忘——会话间持续累积的知识。', 'Agent\'s notes and factual memories — knowledge accumulated across sessions.', 'Agent 的筆記與事實備忘——會話間持續累積的知識。'),
memoryProfileDesc: _('用户偏好、身份、背景信息——每次对话都会参考。', 'User preferences, identity, context — referenced in every conversation.', '用戶偏好、身份、背景資訊——每次對話都會參考。'),