diff --git a/src/engines/hermes/pages/config.js b/src/engines/hermes/pages/config.js index 982c641..264fc94 100644 --- a/src/engines/hermes/pages/config.js +++ b/src/engines/hermes/pages/config.js @@ -4,6 +4,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' export function render() { const el = document.createElement('div') @@ -61,7 +62,7 @@ export function render() { const data = await api.hermesConfigRawRead() yaml = data?.yaml || '' } catch (err) { - error = String(err?.message || err).replace(/^Error:\s*/, '') + error = humanizeError(err, t('engine.hermesConfigLoadFailed') || 'Load config failed') } finally { loading = false draw() @@ -78,7 +79,7 @@ export function render() { await api.hermesConfigRawWrite(yaml) toast(t('engine.hermesConfigSaveSuccess'), 'success') } catch (err) { - error = String(err?.message || err).replace(/^Error:\s*/, '') + error = humanizeError(err, t('engine.hermesConfigSaveFailed') || 'Save failed') toast(error, 'error') } finally { saving = false diff --git a/src/engines/hermes/pages/env-editor.js b/src/engines/hermes/pages/env-editor.js index e906ad4..b369c19 100644 --- a/src/engines/hermes/pages/env-editor.js +++ b/src/engines/hermes/pages/env-editor.js @@ -9,6 +9,7 @@ */ import { api } from '../../../lib/tauri-api.js' import { toast } from '../../../components/toast.js' +import { humanizeError } from '../../../lib/humanize-error.js' // NOTE: i18n keys for this page are not yet wired up in src/locales; using // inline Chinese copy (with occasional English fallback) for now. When the @@ -214,7 +215,7 @@ export function render() { row.revealed = true renderList() } catch (err) { - toast(String(err).replace(/^Error:\s*/, ''), 'error') + toast(humanizeError(err, '读取失败'), 'error') } }) rowEl.querySelector('.env-cancel-btn')?.addEventListener('click', () => { @@ -249,7 +250,7 @@ export function render() { toast('已保存', 'success') renderList() } catch (err) { - toast(String(err).replace(/^Error:\s*/, ''), 'error') + toast(humanizeError(err, '保存失败'), 'error') } }) rowEl.querySelector('.env-delete-btn')?.addEventListener('click', async () => { @@ -260,7 +261,7 @@ export function render() { toast('已删除', 'success') renderList() } catch (err) { - toast(String(err).replace(/^Error:\s*/, ''), 'error') + toast(humanizeError(err, '删除失败'), 'error') } }) }) @@ -282,7 +283,7 @@ export function render() { isNew: false, })) } catch (err) { - loadError = String(err).replace(/^Error:\s*/, '') + loadError = humanizeError(err, '加载失败') const errEl = el.querySelector('#env-error') if (errEl) { errEl.textContent = loadError diff --git a/src/engines/hermes/pages/extensions.js b/src/engines/hermes/pages/extensions.js index 935713f..7e93b5b 100644 --- a/src/engines/hermes/pages/extensions.js +++ b/src/engines/hermes/pages/extensions.js @@ -2,6 +2,7 @@ import { api } from '../../../lib/tauri-api.js' import { icon } from '../../../lib/icons.js' import { toast } from '../../../components/toast.js' import { t } from '../../../lib/i18n.js' +import { humanizeError } from '../../../lib/humanize-error.js' function esc(value) { return String(value || '') @@ -137,14 +138,14 @@ export function render() { const probe = await api.hermesDashboardProbe().catch(() => ({ running: false, port: 9119 })) if (probe?.running) { try { await openWith(probe.port || 9119) } - catch (err) { toast(t('engine.dashNativePanelOpenFail') + ': ' + (err?.message || err), 'error') } + catch (err) { toast(humanizeError(err, t('engine.dashNativePanelOpenFail')), 'error') } return } // 2. auto-start const r = await api.hermesDashboardStart().catch(() => ({ started: false, kind: 'spawn_failed', port: probe?.port || 9119 })) if (r?.started) { try { await openWith(r.port || 9119) } - catch (err) { toast(t('engine.dashNativePanelOpenFail') + ': ' + (err?.message || err), 'error') } + catch (err) { toast(humanizeError(err, t('engine.dashNativePanelOpenFail')), 'error') } return } // 3. 失败 → toast(dashboard 页面有完整安装流程,这里只引导) @@ -166,7 +167,7 @@ export function render() { toast(t('engine.extensionsThemeSaved'), 'success') draw() } catch (err) { - toast(String(err?.message || err).replace(/^Error:\s*/, ''), 'error') + toast(humanizeError(err, t('engine.extensionsThemeSaveFailed') || 'Save theme failed'), 'error') } }) }) @@ -187,7 +188,7 @@ export function render() { plugins = Array.isArray(pluginData) ? pluginData : [] analytics = usageData || null } catch (err) { - error = String(err?.message || err).replace(/^Error:\s*/, '') + error = humanizeError(err, t('engine.extensionsLoadFailed') || 'Load failed') } finally { loading = false draw() @@ -200,7 +201,7 @@ export function render() { await load() toast(t('engine.extensionsPluginsRescanned'), 'success') } catch (err) { - toast(String(err?.message || err).replace(/^Error:\s*/, ''), 'error') + toast(humanizeError(err, t('engine.extensionsRescanFailed') || 'Rescan failed'), 'error') } } diff --git a/src/engines/hermes/pages/lazy-deps.js b/src/engines/hermes/pages/lazy-deps.js index 3c1fa10..4681021 100644 --- a/src/engines/hermes/pages/lazy-deps.js +++ b/src/engines/hermes/pages/lazy-deps.js @@ -71,7 +71,7 @@ async function loadAndRender(page) { try { featuresResp = await api.hermesLazyDepsFeatures() } catch (e) { - content.innerHTML = `