diff --git a/src/engines/hermes/pages/cron.js b/src/engines/hermes/pages/cron.js index 89530fa..e3b0ba8 100644 --- a/src/engines/hermes/pages/cron.js +++ b/src/engines/hermes/pages/cron.js @@ -4,6 +4,7 @@ */ import { t } from '../../../lib/i18n.js' import { api } from '../../../lib/tauri-api.js' +import { humanizeError } from '../../../lib/humanize-error.js' function esc(s) { return String(s || '').replace(/&/g, '&').replace(//g, '>') @@ -108,7 +109,7 @@ export function render() { jobs = Array.isArray(data) ? data : [] errorMsg = '' } catch (_) { - errorMsg = String(e.message || e) + errorMsg = humanizeError(e, t('engine.cronLoadFailed') || 'Load cron jobs failed') jobs = [] } } @@ -572,7 +573,7 @@ export function render() { editingJob = null await loadJobs() } catch (e) { - errorMsg = String(e.message || e) + errorMsg = humanizeError(e, t('engine.cronSaveFailed') || 'Save cron job failed') } busy = false; draw() }) diff --git a/src/engines/hermes/pages/memory.js b/src/engines/hermes/pages/memory.js index 3731c79..656e635 100644 --- a/src/engines/hermes/pages/memory.js +++ b/src/engines/hermes/pages/memory.js @@ -13,6 +13,7 @@ import { t } from '../../../lib/i18n.js' import { api } from '../../../lib/tauri-api.js' import { toast } from '../../../components/toast.js' import { showContentModal } from '../../../components/modal.js' +import { humanizeError } from '../../../lib/humanize-error.js' function escHtml(s) { return String(s).replace(/&/g, '&').replace(//g, '>') @@ -212,7 +213,7 @@ export function render() { saveBtn.disabled = false saveBtn.textContent = t('engine.memorySave') } - toast(t('engine.memorySaveFailed') + ': ' + (e?.message || e), 'error') + toast(humanizeError(e, t('engine.memorySaveFailed')), 'error') } saving = false draw() diff --git a/src/engines/hermes/pages/skills.js b/src/engines/hermes/pages/skills.js index ce899dc..964f77c 100644 --- a/src/engines/hermes/pages/skills.js +++ b/src/engines/hermes/pages/skills.js @@ -23,6 +23,7 @@ import { t } from '../../../lib/i18n.js' import { api } from '../../../lib/tauri-api.js' import { toast } from '../../../components/toast.js' +import { humanizeError } from '../../../lib/humanize-error.js' function escHtml(s) { return String(s ?? '').replace(/&/g, '&').replace(//g, '>') @@ -124,7 +125,7 @@ export function render() { } catch (e) { console.error('Failed to load skills:', e) categories = [] - toast(t('engine.skillsLoadFailed') + ': ' + (e?.message || e), 'error') + toast(humanizeError(e, t('engine.skillsLoadFailed')), 'error') } loading = false draw() @@ -247,7 +248,7 @@ export function render() { 'success', ) } catch (e) { - toast(t('engine.skillsToggleFailed') + ': ' + (e?.message || e), 'error') + toast(humanizeError(e, t('engine.skillsToggleFailed')), 'error') } finally { toggling.delete(skill.slug) draw() diff --git a/src/locales/modules/engine.js b/src/locales/modules/engine.js index 38e1632..9a2cb76 100644 --- a/src/locales/modules/engine.js +++ b/src/locales/modules/engine.js @@ -623,6 +623,8 @@ export default { extensionsRescanFailed: _('重新扫描失败', 'Rescan failed', '重新掃描失敗'), hermesConfigLoadFailed: _('加载配置失败', 'Load config failed', '載入設定失敗'), hermesConfigSaveFailed: _('保存配置失败', 'Save config failed', '儲存設定失敗'), + cronLoadFailed: _('加载定时任务失败', 'Load cron jobs failed', '載入定時任務失敗'), + cronSaveFailed: _('保存定时任务失败', 'Save cron job failed', '儲存定時任務失敗'), // Web 模式(远程浏览器)下流式聊天暂不可用 chatWebModeStreamingUnsupported: _( 'Web 模式暂不支持 Hermes 实时流式聊天(依赖桌面端事件桥)。请打开桌面客户端使用此功能。',