diff --git a/static/i18n.js b/static/i18n.js
index 6dfe42d3..671afbf6 100644
--- a/static/i18n.js
+++ b/static/i18n.js
@@ -200,7 +200,46 @@ const LOCALES = {
empty_dir: '(empty)',
upload_failed: 'Upload failed: ',
all_uploads_failed: (n) => `All ${n} upload(s) failed`,
+ session_pin: 'Pin conversation',
+ session_unpin: 'Unpin conversation',
+ session_pin_desc: 'Keep this conversation at the top',
+ session_unpin_desc: 'Remove from pinned',
+ session_pin_failed: 'Pin failed: ',
+ session_move_project: 'Move to project',
+ session_move_project_desc_has: 'Change the project for this conversation',
+ session_move_project_desc_none: 'Assign a project to this conversation',
+ session_archive: 'Archive conversation',
+ session_restore: 'Restore conversation',
+ session_archive_desc: 'Hide this conversation until archived is shown',
+ session_restore_desc: 'Bring this conversation back into the main list',
+ session_archived: 'Session archived',
+ session_restored: 'Session restored',
+ session_archive_failed: 'Archive failed: ',
+ session_duplicate: 'Duplicate conversation',
+ session_duplicate_desc: 'Create a copy with the same workspace and model',
+ session_duplicated: 'Session duplicated',
+ session_duplicate_failed: 'Duplicate failed: ',
+ session_delete: 'Delete conversation',
+ session_delete_desc: 'Permanently remove this conversation',
// settings panel
+ settings_heading_title: 'Control Center',
+ settings_heading_subtitle: 'Preferences, conversation tools, and system controls.',
+ settings_section_conversation_title: 'Conversation',
+ settings_section_appearance_title: 'Appearance',
+ settings_section_appearance_meta: 'Theme, accent colors, and visual style.',
+ settings_section_preferences_title: 'Preferences',
+ settings_section_preferences_meta: 'Defaults and UI behavior for Hermes Web UI.',
+ settings_section_system_title: 'System',
+ settings_section_system_meta: 'Instance version and access controls.',
+ settings_dropdown_conversation: 'Conversation',
+ settings_dropdown_appearance: 'Appearance',
+ settings_dropdown_preferences: 'Preferences',
+ settings_dropdown_providers: 'Providers',
+ settings_dropdown_system: 'System',
+ settings_tab_conversation: 'Conversation',
+ settings_tab_appearance: 'Appearance',
+ settings_tab_preferences: 'Preferences',
+ settings_tab_system: 'System',
settings_title: 'Settings',
settings_save_btn: 'Save Settings',
settings_label_model: 'Default Model',
@@ -566,6 +605,9 @@ const LOCALES = {
profile_api_key_label: 'API key',
},
+ cmd_status: '\u986f\u793a\u6703\u8a71\u8cc7\u8a0a',
+ memory_saved: '\u8a18\u61b6\u5df2\u5132\u5b58',
+ profile_delete_title: '\u522a\u9664\u6b64\u8a2d\u5b9a\u6a94',
ru: {
_lang: 'ru',
_label: 'Русский',
@@ -1096,6 +1138,47 @@ const LOCALES = {
profile_name_label: 'Имя',
profile_base_url_label: 'Базовый URL',
profile_api_key_label: 'API-ключ',
+
+ // Session management and settings keys (en fallback — pending translation)
+ session_archive: 'Archive conversation',
+ session_archive_desc: 'Hide this conversation until archived is shown',
+ session_archive_failed: 'Archive failed: ',
+ session_archived: 'Session archived',
+ session_delete: 'Delete conversation',
+ session_delete_desc: 'Permanently remove this conversation',
+ session_duplicate: 'Duplicate conversation',
+ session_duplicate_desc: 'Create a copy with the same workspace and model',
+ session_duplicate_failed: 'Duplicate failed: ',
+ session_duplicated: 'Session duplicated',
+ session_move_project: 'Move to project',
+ session_move_project_desc_has: 'Change the project for this conversation',
+ session_move_project_desc_none: 'Assign a project to this conversation',
+ session_pin: 'Pin conversation',
+ session_pin_desc: 'Keep this conversation at the top',
+ session_pin_failed: 'Pin failed: ',
+ session_restore: 'Restore conversation',
+ session_restore_desc: 'Bring this conversation back into the main list',
+ session_restored: 'Session restored',
+ session_unpin: 'Unpin conversation',
+ session_unpin_desc: 'Remove from pinned',
+ settings_dropdown_appearance: 'Appearance',
+ settings_dropdown_conversation: 'Conversation',
+ settings_dropdown_preferences: 'Preferences',
+ settings_dropdown_providers: 'Providers',
+ settings_dropdown_system: 'System',
+ settings_heading_subtitle: 'Preferences, conversation tools, and system controls.',
+ settings_heading_title: 'Control Center',
+ settings_section_appearance_meta: 'Theme, accent colors, and visual style.',
+ settings_section_appearance_title: 'Appearance',
+ settings_section_conversation_title: 'Conversation',
+ settings_section_preferences_meta: 'Defaults and UI behavior for Hermes Web UI.',
+ settings_section_preferences_title: 'Preferences',
+ settings_section_system_meta: 'Instance version and access controls.',
+ settings_section_system_title: 'System',
+ settings_tab_appearance: 'Appearance',
+ settings_tab_conversation: 'Conversation',
+ settings_tab_preferences: 'Preferences',
+ settings_tab_system: 'System',
},
es: {
@@ -1594,6 +1677,48 @@ const LOCALES = {
profile_name_label: 'Nombre',
profile_base_url_label: 'URL base',
profile_api_key_label: 'Clave API',
+
+ cmd_status: 'Show session info',
+ // Session management and settings keys (en fallback — pending translation)
+ session_archive: 'Archive conversation',
+ session_archive_desc: 'Hide this conversation until archived is shown',
+ session_archive_failed: 'Archive failed: ',
+ session_archived: 'Session archived',
+ session_delete: 'Delete conversation',
+ session_delete_desc: 'Permanently remove this conversation',
+ session_duplicate: 'Duplicate conversation',
+ session_duplicate_desc: 'Create a copy with the same workspace and model',
+ session_duplicate_failed: 'Duplicate failed: ',
+ session_duplicated: 'Session duplicated',
+ session_move_project: 'Move to project',
+ session_move_project_desc_has: 'Change the project for this conversation',
+ session_move_project_desc_none: 'Assign a project to this conversation',
+ session_pin: 'Pin conversation',
+ session_pin_desc: 'Keep this conversation at the top',
+ session_pin_failed: 'Pin failed: ',
+ session_restore: 'Restore conversation',
+ session_restore_desc: 'Bring this conversation back into the main list',
+ session_restored: 'Session restored',
+ session_unpin: 'Unpin conversation',
+ session_unpin_desc: 'Remove from pinned',
+ settings_dropdown_appearance: 'Appearance',
+ settings_dropdown_conversation: 'Conversation',
+ settings_dropdown_preferences: 'Preferences',
+ settings_dropdown_providers: 'Providers',
+ settings_dropdown_system: 'System',
+ settings_heading_subtitle: 'Preferences, conversation tools, and system controls.',
+ settings_heading_title: 'Control Center',
+ settings_section_appearance_meta: 'Theme, accent colors, and visual style.',
+ settings_section_appearance_title: 'Appearance',
+ settings_section_conversation_title: 'Conversation',
+ settings_section_preferences_meta: 'Defaults and UI behavior for Hermes Web UI.',
+ settings_section_preferences_title: 'Preferences',
+ settings_section_system_meta: 'Instance version and access controls.',
+ settings_section_system_title: 'System',
+ settings_tab_appearance: 'Appearance',
+ settings_tab_conversation: 'Conversation',
+ settings_tab_preferences: 'Preferences',
+ settings_tab_system: 'System',
},
de: {
@@ -1877,7 +2002,48 @@ const LOCALES = {
profile_name_label: 'Name',
profile_base_url_label: 'Basis-URL',
profile_api_key_label: 'API-Schlüssel',
- },
+
+ // Session management and settings keys (en fallback — pending translation)
+ session_archive: 'Archive conversation',
+ session_archive_desc: 'Hide this conversation until archived is shown',
+ session_archive_failed: 'Archive failed: ',
+ session_archived: 'Session archived',
+ session_delete: 'Delete conversation',
+ session_delete_desc: 'Permanently remove this conversation',
+ session_duplicate: 'Duplicate conversation',
+ session_duplicate_desc: 'Create a copy with the same workspace and model',
+ session_duplicate_failed: 'Duplicate failed: ',
+ session_duplicated: 'Session duplicated',
+ session_move_project: 'Move to project',
+ session_move_project_desc_has: 'Change the project for this conversation',
+ session_move_project_desc_none: 'Assign a project to this conversation',
+ session_pin: 'Pin conversation',
+ session_pin_desc: 'Keep this conversation at the top',
+ session_pin_failed: 'Pin failed: ',
+ session_restore: 'Restore conversation',
+ session_restore_desc: 'Bring this conversation back into the main list',
+ session_restored: 'Session restored',
+ session_unpin: 'Unpin conversation',
+ session_unpin_desc: 'Remove from pinned',
+ settings_dropdown_appearance: 'Appearance',
+ settings_dropdown_conversation: 'Conversation',
+ settings_dropdown_preferences: 'Preferences',
+ settings_dropdown_providers: 'Providers',
+ settings_dropdown_system: 'System',
+ settings_heading_subtitle: 'Preferences, conversation tools, and system controls.',
+ settings_heading_title: 'Control Center',
+ settings_section_appearance_meta: 'Theme, accent colors, and visual style.',
+ settings_section_appearance_title: 'Appearance',
+ settings_section_conversation_title: 'Conversation',
+ settings_section_preferences_meta: 'Defaults and UI behavior for Hermes Web UI.',
+ settings_section_preferences_title: 'Preferences',
+ settings_section_system_meta: 'Instance version and access controls.',
+ settings_section_system_title: 'System',
+ settings_tab_appearance: 'Appearance',
+ settings_tab_conversation: 'Conversation',
+ settings_tab_preferences: 'Preferences',
+ settings_tab_system: 'System',
+},
zh: {
_lang: 'zh',
@@ -2373,7 +2539,48 @@ const LOCALES = {
profile_name_label: '名称',
profile_base_url_label: '基础 URL',
profile_api_key_label: 'API 密钥',
- },
+
+ // Session management and settings keys (en fallback — pending translation)
+ session_archive: 'Archive conversation',
+ session_archive_desc: 'Hide this conversation until archived is shown',
+ session_archive_failed: 'Archive failed: ',
+ session_archived: 'Session archived',
+ session_delete: 'Delete conversation',
+ session_delete_desc: 'Permanently remove this conversation',
+ session_duplicate: 'Duplicate conversation',
+ session_duplicate_desc: 'Create a copy with the same workspace and model',
+ session_duplicate_failed: 'Duplicate failed: ',
+ session_duplicated: 'Session duplicated',
+ session_move_project: 'Move to project',
+ session_move_project_desc_has: 'Change the project for this conversation',
+ session_move_project_desc_none: 'Assign a project to this conversation',
+ session_pin: 'Pin conversation',
+ session_pin_desc: 'Keep this conversation at the top',
+ session_pin_failed: 'Pin failed: ',
+ session_restore: 'Restore conversation',
+ session_restore_desc: 'Bring this conversation back into the main list',
+ session_restored: 'Session restored',
+ session_unpin: 'Unpin conversation',
+ session_unpin_desc: 'Remove from pinned',
+ settings_dropdown_appearance: 'Appearance',
+ settings_dropdown_conversation: 'Conversation',
+ settings_dropdown_preferences: 'Preferences',
+ settings_dropdown_providers: 'Providers',
+ settings_dropdown_system: 'System',
+ settings_heading_subtitle: 'Preferences, conversation tools, and system controls.',
+ settings_heading_title: 'Control Center',
+ settings_section_appearance_meta: 'Theme, accent colors, and visual style.',
+ settings_section_appearance_title: 'Appearance',
+ settings_section_conversation_title: 'Conversation',
+ settings_section_preferences_meta: 'Defaults and UI behavior for Hermes Web UI.',
+ settings_section_preferences_title: 'Preferences',
+ settings_section_system_meta: 'Instance version and access controls.',
+ settings_section_system_title: 'System',
+ settings_tab_appearance: 'Appearance',
+ settings_tab_conversation: 'Conversation',
+ settings_tab_preferences: 'Preferences',
+ settings_tab_system: 'System',
+},
// Traditional Chinese (zh-Hant)
'zh-Hant': {
@@ -2405,7 +2612,7 @@ const LOCALES = {
reconnect_active: '\u56de\u8986\u4ecd\u5728\u751f\u6210\u4e2d\uff0c\u6e96\u5099\u597d\u5f8c\u8981\u91cd\u65b0\u52a0\u8f09\u55ce\uff1f',
reconnect_finished: '\u4f60\u96e2\u958b\u6642\u6709\u56de\u8986\u6b63\u5728\u751f\u6210\uff0c\u8a0a\u606f\u5167\u5bb9\u53ef\u80fd\u5df2\u7d93\u66f4\u65b0\u3002',
// approval card
- approval_heading: '\u9700\u8981\u5ba1\u6838',
+ approval_heading: '\u9700\u8981\u5be9\u6838',
approval_desc_prefix: '\u6aa2\u6e2c\u5230\u5371\u96aa\u547d\u4ee4',
approval_btn_once: '\u5141\u8a31\u4e00\u6b21',
approval_btn_once_title: '\u5141\u8a31\u57f7\u884c\u6b64\u547d\u4ee4\u4e00\u6b21\uff08Enter\uff09',
@@ -2413,10 +2620,10 @@ const LOCALES = {
approval_btn_session_title: '\u672c\u6b21\u6703\u8a71\u671f\u9593\u5141\u8a31',
approval_btn_always: '始終允許',
approval_btn_always_title: '始終允許此命令模式',
- approval_btn_deny: '\u62d2\u7edd',
+ approval_btn_deny: '\u62d2\u7d55',
approval_btn_deny_title: '\u62d2\u7edd — \u4e0d\u57f7\u884c\u6b64\u547d\u4ee4',
approval_responding: '\u8655\u7406\u4e2d\u2026',
- clarify_heading: '\u9700\u8981\u91cb\u6e05',
+ clarify_heading: '\u9700\u8981\u91d0\u6e05',
clarify_hint: '\u8acb\u9078\u64c7\u4e00\u500b\u9078\u9805\uff0c\u6216\u5728\u4e0b\u65b9\u8f38\u5165\u4f60\u81ea\u5df1\u7684\u56de\u7b54\u3002',
clarify_other: '\u5176\u4ed6',
clarify_send: '\u9001\u51fa',
@@ -2501,29 +2708,68 @@ const LOCALES = {
folder_created: '\u5df2\u5275\u5efa\u6587\u4ef6\u593e ',
folder_create_failed: '\u5275\u5efa\u6587\u4ef6\u593e\u5931\u6557\uff1a',
remove_title: '\u79fb\u9664',
- empty_dir: '(\u7a7a)',
- upload_failed: '\u4e0a\u50b3\u5931\u6557\uff1a',
- all_uploads_failed: (n) => `${n} \u500b\u6587\u4ef6\u5168\u90e8\u4e0a\u50b3\u5931\u6557`,
+ empty_dir: '(空)',
+ upload_failed: '上傳失敗:',
+ all_uploads_failed: (n) => `${n} 個檔案全部上傳失敗`,
+ session_pin: '釘選對話',
+ session_unpin: '取消釘選',
+ session_pin_desc: '將此對話置頂',
+ session_unpin_desc: '從置頂移除',
+ session_pin_failed: '釘選失敗:',
+ session_move_project: '移至專案',
+ session_move_project_desc_has: '變更此對話的專案',
+ session_move_project_desc_none: '為此對話指定專案',
+ session_archive: '封存對話',
+ session_restore: '還原對話',
+ session_archive_desc: '隱藏此對話,直到開啟顯示封存',
+ session_restore_desc: '將此對話移回主清單',
+ session_archived: '對話已封存',
+ session_restored: '對話已還原',
+ session_archive_failed: '封存失敗:',
+ session_duplicate: '複製對話',
+ session_duplicate_desc: '建立一個相同工作區與模型的副本',
+ session_duplicated: '對話已複製',
+ session_duplicate_failed: '複製失敗:',
+ session_delete: '刪除對話',
+ session_delete_desc: '永久移除這個對話',
// settings panel
+ settings_heading_title: '控制中心',
+ settings_heading_subtitle: '偏好設定、對話工具與系統控制。',
+ settings_section_conversation_title: '對話',
+ settings_section_appearance_title: '外觀',
+ settings_section_appearance_meta: '主題、強調色與視覺風格。',
+ settings_section_preferences_title: '偏好設定',
+ settings_section_preferences_meta: 'Hermes Web UI 的預設值與介面行為。',
+ settings_section_system_title: '系統',
+ settings_section_system_meta: '實例版本與存取控制。',
+ settings_dropdown_conversation: '對話',
+ settings_dropdown_appearance: '外觀',
+ settings_dropdown_preferences: '偏好設定',
+ settings_dropdown_providers: '供應商',
+ settings_dropdown_system: '系統',
+ settings_tab_conversation: '對話',
+ settings_tab_appearance: '外觀',
+ settings_tab_preferences: '偏好設定',
+ settings_tab_system: '系統',
settings_title: '\u8a2d\u5b9a',
settings_save_btn: '\u5132\u5b58\u8a2d\u5b9a',
settings_label_model: '\u9ed8\u8a8d\u6a21\u578b',
settings_label_send_key: '\u767c\u9001\u5feb\u6377\u9375',
settings_label_theme: '\u4e3b\u984c',
- settings_label_skin: '\u76ae\u819a',
+ settings_label_skin: '佈景',
settings_label_font_size: '\u5b57\u9ad4\u5927\u5c0f',
font_size_small: '\u5c0f',
font_size_default: '\u9810\u8a2d',
font_size_large: '\u5927',
- settings_label_language: '\u8a9d\u8a00',
+ settings_label_language: '\u8a9e\u8a00',
settings_label_token_usage: '\u986f\u793a token \u7528\u91cf',
settings_label_sidebar_density: '側邊欄密度',
- cmd_reasoning: 'Toggle thinking visibility (show/hide), set effort level, or check current status',
+ cmd_reasoning: '切換思考區塊可見性(顯示/隱藏)或設定努力等級',
settings_label_cli_sessions: '\u986f\u793a CLI \u6703\u8a71',
settings_label_sync_insights: '\u540c\u6b65\u5230 insights',
settings_label_check_updates: '\u6aa2\u67e5\u66f4\u65b0',
settings_label_bot_name: '\u52a9\u624b\u540d\u7a31',
- settings_label_password: '\u8a2a\u8aad\u5bc6\u78bc',
+ settings_label_password: '\u8a2a\u554f\u5bc6\u78bc',
settings_saved: '\u8a2d\u5b9a\u5df2\u5132\u5b58',
settings_save_failed: '\u5132\u5b58\u5931\u6557\uff1a',
settings_load_failed: '\u8a2d\u5b9a\u52a0\u8f09\u5931\u6557\uff1a',
@@ -2549,11 +2795,11 @@ const LOCALES = {
tab_memory: '\u8a18\u61b6',
tab_skills: '\u6280\u80fd',
tab_tasks: '\u4efb\u52d9',
- tab_todos: '\u5f85\u8e29',
+ tab_todos: '待辦',
tab_workspaces: '\u5de5\u4f5c\u5340',
- new_conversation: '\u65b0\u5b58\u5c0d\u8a71',
- filter_conversations: '\u7b5c\u9078\u5b58\u5c0d\u8a71',
- scheduled_jobs: '\u5b58\u5287\u4efb\u52d9',
+ new_conversation: '新對話',
+ filter_conversations: '篩選對話',
+ scheduled_jobs: '排程任務',
new_job: '\u65b0\u4efb\u52d9',
search_skills: '\u641c\u5c0b\u6280\u80fd',
new_skill: '\u65b0\u6280\u80fd',
@@ -2566,49 +2812,29 @@ const LOCALES = {
download_transcript: '\u4e0b\u8f09\u8a18\u9304',
import: '\u5c0e\u5165',
editing: '\u7de8\u8f2f\u4e2d',
- empty_title: '\u7a7a\u767c\u5b58\u7a7a\u9593',
- empty_subtitle: '\u9ede\u64ca\u4e0a\u65b9\u6309\u9215\u958b\u59cb\u5c0d\u8a71',
+ empty_title: '有什麼可以幫忙?',
+ empty_subtitle: '點擊上方按鈕開始對話',
cancel: '\u53d6\u6d88',
loading: '\u52a0\u8f09\u4e2d',
create_job: '\u5efa\u7acb\u4efb\u52d9',
- suggest_plan: '\u5efa\u8b70\u8a08\u5287',
- suggest_schedule: '\u5efa\u8b70\u6642\u7a0b',
- suggest_files: '\u5efa\u8b70\u6a94\u6848',
+ suggest_plan: '幫我規劃一個小專案',
+ suggest_schedule: '今天的時程如何?',
+ suggest_files: '這個工作區有哪些檔案?',
sign_out: '\u767b\u51fa',
- // Providers panel (English fallback — native translations welcome in follow-up PRs)
- providers_tab_title: 'Providers',
- providers_section_title: 'Providers',
- providers_section_meta: 'Manage API keys for AI providers. Changes take effect immediately.',
- providers_status_configured: 'API key configured',
- providers_status_not_configured: 'No API key',
- providers_status_oauth: 'OAuth',
- providers_status_api_key: 'API key',
- providers_status_not_configured_label: 'Not configured',
- providers_oauth_hint: 'Authenticated via OAuth. No API key needed.',
- providers_save: 'Save',
- providers_remove: 'Remove',
- providers_saving: 'Saving…',
- providers_removing: 'Removing…',
- providers_enter_key: 'Please enter an API key',
- providers_empty: 'No configurable providers found.',
- providers_key_updated: 'API key saved',
- providers_key_removed: 'API key removed',
- providers_key_placeholder_new: 'sk-...',
- providers_key_placeholder_replace: 'Enter new key to replace…',
password_placeholder: '\u5bc6\u78bc',
disable_auth: '\u505c\u7528\u9a57\u8b49',
settings_label_sound: '\u901a\u77e5\u8072\u97f3',
settings_label_notifications: '\u700f\u89bd\u901a\u77e5',
- settings_desc_sound: '\u52a9\u624b\u5b8c\u6210\u56de\u7b54\u6642\u64a9\u653e\u8072\u97f3\u3002',
- settings_desc_notifications: '\u7576\u5206\u9801\u5728\u5f8c\u81ea\u6642\uff0c\u6709\u56de\u7b54\u5b8c\u6210\u6e05\u55ae\u6703\u986f\u793a\u7cfb\u7d71\u901a\u77e5\u3002',
+ settings_desc_sound: '助手完成回答時播放聲音。',
+ settings_desc_notifications: '當分頁在後台時,有回答完成時會顯示系統通知。',
settings_desc_token_usage: '\u5728\u52a9\u624b\u6bcf\u6b21\u56de\u7b54\u4e0b\u65b9\u986f\u793a Input/Output token \u6578\u91cf\u3002\u4e5f\u53ef\u4ee5\u7528 /usage \u5207\u63db\u3002',
settings_sidebar_density_compact: '精簡',
settings_sidebar_density_detailed: '詳細',
settings_desc_sidebar_density: '控制左側對話清單要顯示多少額外資訊。',
- settings_desc_cli_sessions: '\u5c07 Hermes CLI (\u7684 state.db) \u4e2d\u7684\u6703\u8a71\u6dfb\u52a0\u5230\u6703\u8a71\u6e05\u55ae\u3002\u9ede\u64ca\u4e00\u500b CLI \u6703\u8a71\u5c07\u5c0e\u5165\u5b83\u7a0b\u5f0f\u4e26\u7e7c\u7e8c\u5b58\u5c0d\u8a71\u3002',
- settings_desc_sync_insights: '\u5c07 WebUI token \u4f7f\u7528\u60c5\u6cc1\u540c\u6b65\u5230 state.db\uff0c\u8a93 hermes /insights \u5305\u542b\u700f\u89bd\u5668\u6703\u8a71\u6578\u64da\u3002\u9810\u8a2d\u70b8\u555f\u7528\u3002',
- settings_desc_check_updates: '\u7576\u6709\u66f4\u65b0\u7684 WebUI \u6216\u52a9\u624b\u7248\u672c\u6642\u986f\u793a\u6a19\u8a18\u3002\u5c07\u5728\u5f8c\u81ea\u6b63\u5e38\u57f7\u884c Git-Fetch\u3002',
- settings_desc_bot_name: '\u52a9\u624b\u5728 UI \u4e2d\u7684\u986f\u793a\u540d\u7a31\u3002\u9810\u8a2d\u70b8\u7528\u6539\u3002',
+ settings_desc_cli_sessions: '將 Hermes CLI (的 state.db) 中的會話添加到會話清單。點擊一個 CLI 會話將導入它並繼續對話。',
+ settings_desc_sync_insights: '將 WebUI token 使用情況同步到 state.db,使 hermes /insights 包含瀏覽器會話數據。預設未啟用。',
+ settings_desc_check_updates: '當有更新的 WebUI 或助手版本時顯示標記。將在後台正常執行 Git-Fetch。',
+ settings_desc_bot_name: '助手在 UI 中的顯示名稱。預設未更改。',
settings_desc_password: '\u8a2d\u5b9a WebUI \u767b\u5165\u5bc6\u78bc\u3002\u5047\u5982\u5df2\u8a2d\u7f6e\uff0c\u6bcf\u6b21\u52a0\u8f09\u90fd\u9700\u8981\u767b\u5165\u3002',
onboarding_password_will_enable: '\u5c07\u6703\u555f\u7528',
onboarding_password_will_replace: '\u5c07\u6703\u53d6\u4ee3',
@@ -2638,6 +2864,312 @@ const LOCALES = {
profile_delete_confirm_message: '\u6b64\u914d\u7f6e\u6a94\u7684\u6240\u6709\u6703\u8a71\u3001\u8a2d\u5b9a\u3001\u6280\u80fd\u548c\u8a18\u61b6\u5c07\u88ab\u6c38\u4e45\u522a\u9664\u3002\u6b64\u64cd\u4f5c\u7121\u6cd5\u64a4\u92b7\u3002',
workspace_renamed: '\u5de5\u4f5c\u5340\u5df2\u91cd\u65b0\u547d\u540d',
cron_name_placeholder: '\u9078\u586b',
+ active_conversation_meta: (n) => `${n} 則訊息`,
+ all_uploads_failed: (n) => `${n} 個上傳失敗`,
+ cron_job_name_placeholder: '\u4efb\u52d9\u540d\u7a31',
+ cron_prompt_placeholder: '\u63d0\u793a\u8a5e',
+ cron_schedule_placeholder: '\u6392\u7a0b',
+ delete_confirm: (name) => `刪除「${name}」?`,
+ downloading: (filename) => `正在下載 ${filename}…`,
+ n_messages: (n) => `${n} 則訊息`,
+ onboarding_api_key_help_prefix: '\u900f\u904e\u4ee5\u4e0b\u65b9\u5f0f\u5132\u5b58\u70ba Hermes .env \u6a94\u6848\u4e2d\u7684\u6a5f\u5bc6',
+ onboarding_api_key_label: 'API \u91d1\u9470',
+ onboarding_api_key_placeholder: '\u7559\u7a7a\u4ee5\u4fdd\u7559\u5df2\u5132\u5b58\u7684\u91d1\u9470',
+ onboarding_back: '\u4e0a\u4e00\u6b65',
+ onboarding_badge: '\u9996\u6b21\u57f7\u884c',
+ onboarding_base_url_help: '\u7528\u65bc OpenAI \u76f8\u5bb9\u8def\u7531\u5668\u3001\u81ea\u67b6\u4f3a\u670d\u5668\u3001LiteLLM\u3001Ollama\u3001LM Studio\u3001vLLM \u7b49\u7aef\u9ede\u3002',
+ onboarding_base_url_label: '\u57fa\u790e URL',
+ onboarding_base_url_placeholder: 'https://your-endpoint.example/v1',
+ onboarding_check_agent: 'Hermes Agent',
+ onboarding_check_agent_missing: '\u907a\u5931\u6216\u50c5\u90e8\u5206\u53ef\u7528',
+ onboarding_check_agent_ready: '\u5df2\u5075\u6e2c\u5230\u4e26\u53ef\u4f9b\u532f\u5165',
+ onboarding_check_password: '\u5bc6\u78bc',
+ onboarding_check_password_disabled: '\u5c1a\u672a\u555f\u7528',
+ onboarding_check_password_enabled: '\u5df2\u555f\u7528',
+ onboarding_check_provider: '\u63d0\u4f9b\u8005\u914d\u7f6e',
+ onboarding_check_provider_partial: '\u5df2\u5132\u5b58\u4f46\u672a\u5b8c\u6210',
+ onboarding_check_provider_pending: '\u9700\u8981\u9a57\u8b49',
+ onboarding_check_provider_ready: '\u53ef\u958b\u59cb\u804a\u5929',
+ onboarding_complete: '\u521d\u59cb\u8a2d\u5b9a\u5b8c\u6210',
+ onboarding_config_file: '\u8a2d\u5b9a\u6a94\uff1a',
+ onboarding_continue: '\u7e7c\u7e8c',
+ onboarding_current_provider: '\u76ee\u524d\u914d\u7f6e\uff1a',
+ onboarding_custom_model_help: '\u5c0d\u65bc\u81ea\u8a02\u7aef\u9ede\uff0c\u8acb\u6307\u5b9a\u60a8\u7684\u4f3a\u670d\u5668\u9810\u671f\u7684\u6a21\u578b ID\u3002',
+ onboarding_custom_model_placeholder: 'your_model_name',
+ onboarding_env_file: '.env \u6a94\u6848\uff1a',
+ onboarding_error_base_url_required: '\u81ea\u8a02\u7aef\u9ede\u9700\u8981\u57fa\u790e URL\u3002',
+ onboarding_error_choose_model: '\u8acb\u5148\u9078\u64c7\u6a21\u578b\u518d\u7e7c\u7e8c\u3002',
+ onboarding_error_choose_workspace: '\u8acb\u5148\u9078\u64c7\u5de5\u4f5c\u5340\u518d\u7e7c\u7e8c\u3002',
+ onboarding_error_model_required: '\u9700\u8981\u6a21\u578b\u3002',
+ onboarding_error_provider_required: '\u8acb\u5148\u9078\u64c7\u8a2d\u5b9a\u6a21\u5f0f\u518d\u7e7c\u7e8c\u3002',
+ onboarding_error_workspace_required: '\u9700\u8981\u5de5\u4f5c\u5340\u3002',
+ onboarding_finish_help: '\u5b8c\u6210\u5f8c\uff0conboarding_completed \u5c07\u5132\u5b58\u5728\u8a2d\u5b9a\u4e2d\uff0c\u60a8\u5c07\u9032\u5165\u6b63\u5e38\u61c9\u7528\u7a0b\u5f0f\u3002',
+ onboarding_lead: '\u5feb\u901f\u9010\u6b65\u8a2d\u5b9a\uff1a\u6aa2\u67e5 Hermes\u3001\u5132\u5b58\u63d0\u4f9b\u8005\u914d\u7f6e\u3001\u9078\u64c7\u5de5\u4f5c\u5340\u8207\u6a21\u578b\uff0c\u4e26\u53ef\u9078\u64c7\u52a0\u5165\u5bc6\u78bc\u4fdd\u8b77\u3002',
+ onboarding_missing_imports: '\u7f3a\u5c11\u7684\u532f\u5165\uff1a',
+ onboarding_model_label: '\u9810\u8a2d\u6a21\u578b',
+ onboarding_not_set: '\u672a\u8a2d\u5b9a',
+ onboarding_notice_finish: '\u60a8\u4e4b\u5f8c\u53ef\u4ee5\u96a8\u6642\u56de\u5230\u8a2d\u5b9a\u9801\u9762\u8b8a\u66f4\u9019\u4e9b\u503c\u3002',
+ onboarding_notice_password_enabled: '\u5bc6\u78bc\u5df2\u8a2d\u5b9a\u3002\u50c5\u5728\u9700\u8981\u53d6\u4ee3\u6642\u8f38\u5165\u65b0\u5bc6\u78bc\u3002',
+ onboarding_notice_password_recommended: '\u9078\u586b\uff0c\u4f46\u5efa\u8b70\u5728\u975e localhost \u74b0\u5883\u4f7f\u7528\u3002',
+ onboarding_notice_setup_already_ready: '\u5df2\u5075\u6e2c\u5230\u53ef\u7528\u7684 Hermes \u63d0\u4f9b\u8005\u914d\u7f6e\u3002\u60a8\u53ef\u4ee5\u4fdd\u7559\u6216\u5728\u6b64\u53d6\u4ee3\u3002',
+ onboarding_notice_setup_required: '\u5728\u6b64\u9078\u64c7\u5feb\u901f\u63d0\u4f9b\u8005\u8a2d\u5b9a\u8def\u5f91\u3002\u9032\u968e OAuth \u8a2d\u5b9a\u4ecd\u8acb\u4f7f\u7528 Hermes CLI\u3002',
+ onboarding_notice_system_ready: 'Hermes Agent \u53ef\u5f9e Web UI \u5b58\u53d6\u3002',
+ onboarding_notice_system_unavailable: 'Hermes Agent \u5c1a\u672a\u5b8c\u5168\u53ef\u7528\u3002\u5f15\u5c0e\u7a0b\u5f0f\u53ef\u80fd\u5b89\u88dd\u5b83\uff0c\u4f46\u63d0\u4f9b\u8005\u8a2d\u5b9a\u53ef\u80fd\u4ecd\u9700\u7d42\u7aef\u6a5f\u3002',
+ onboarding_notice_workspace: '\u9019\u4e9b\u503c\u4f7f\u7528\u8207\u4e00\u822c\u61c9\u7528\u7a0b\u5f0f\u76f8\u540c\u7684\u8a2d\u5b9a API\u3002',
+ onboarding_oauth_provider_not_ready_body: '\u6b64\u5be6\u4f8b\u8a2d\u5b9a\u4f7f\u7528 {provider}\uff0c\u5b83\u4f7f\u7528 OAuth \u800c\u975e API \u91d1\u9470\u3002\u8acb\u5728\u7d42\u7aef\u6a5f\u4e2d\u57f7\u884c hermes auth \u6216 hermes model \u9032\u884c\u6388\u6b0a\uff0c\u7136\u5f8c\u91cd\u65b0\u6574\u7406 Web UI\u3002',
+ onboarding_oauth_provider_not_ready_title: 'OAuth \u63d0\u4f9b\u8005\u5c1a\u672a\u6388\u6b0a',
+ onboarding_oauth_provider_ready_body: '\u6b64\u5be6\u4f8b\u8a2d\u5b9a\u4f7f\u7528\u900f\u904e Hermes CLI \u914d\u7f6e\u7684 OAuth \u63d0\u4f9b\u8005\uff08{provider}\uff09\u3002\u7121\u9700 API \u91d1\u9470 \u2014 \u6309\u7e7c\u7e8c\u5b8c\u6210\u8a2d\u5b9a\u3002',
+ onboarding_oauth_provider_ready_title: '\u63d0\u4f9b\u8005\u5df2\u6388\u6b0a',
+ onboarding_oauth_switch_hint: '\u6216\u9078\u64c7\u4e0b\u65b9\u5176\u4ed6\u63d0\u4f9b\u8005\u4ee5\u5207\u63db\u5230 API \u91d1\u9470\u8a2d\u5b9a\uff1a',
+ onboarding_open: '\u958b\u555f Hermes',
+ onboarding_password_help: '\u5bc6\u78bc\u900f\u904e\u73fe\u6709\u8a2d\u5b9a API \u5132\u5b58\uff0c\u4e26\u5728\u4f3a\u670d\u5668\u7aef\u9032\u884c\u96dc\u6e4a\u8655\u7406\u3002',
+ onboarding_password_label: '\u5bc6\u78bc\uff08\u9078\u586b\uff09',
+ onboarding_password_placeholder: '\u7559\u7a7a\u4ee5\u8df3\u904e',
+ onboarding_password_remains_disabled: '\u5c07\u4fdd\u6301\u505c\u7528',
+ onboarding_password_skipped: '\u66ab\u6642\u8df3\u904e',
+ onboarding_password_will_enable: '\u5c07\u555f\u7528',
+ onboarding_password_will_replace: '\u5c07\u53d6\u4ee3',
+ onboarding_provider_label: '\u8a2d\u5b9a\u6a21\u5f0f',
+ onboarding_quick_setup_badge: '\u5feb\u901f\u8a2d\u5b9a',
+ onboarding_skip: '\u8df3\u904e\u8a2d\u5b9a',
+ onboarding_skipped: '\u5df2\u8df3\u904e\u8a2d\u5b9a \u2014 \u4f7f\u7528\u73fe\u6709\u914d\u7f6e\u3002',
+ onboarding_step_finish_desc: '\u6aa2\u8996\u8a2d\u5b9a\u4e26\u9032\u5165\u61c9\u7528\u7a0b\u5f0f\u3002',
+ onboarding_step_finish_title: '\u5b8c\u6210',
+ onboarding_step_password_desc: '\u5206\u4eab\u524d\u4fdd\u8b77 Web UI\u3002',
+ onboarding_step_password_title: '\u9078\u586b\u5bc6\u78bc',
+ onboarding_step_setup_desc: '\u5132\u5b58\u6700\u5c0f\u53ef\u7528\u7684 Hermes \u63d0\u4f9b\u8005\u914d\u7f6e\u3002',
+ onboarding_step_setup_title: '\u63d0\u4f9b\u8005\u8a2d\u5b9a',
+ onboarding_step_system_desc: '\u9a57\u8b49 Hermes Agent \u8207\u914d\u7f6e\u53ef\u898b\u6027\u3002',
+ onboarding_step_system_title: '\u7cfb\u7d71\u6aa2\u67e5',
+ onboarding_step_workspace_desc: '\u70ba\u65b0\u6703\u8a71\u9078\u64c7\u9810\u8a2d\u503c\u3002',
+ onboarding_step_workspace_title: '\u5de5\u4f5c\u5340\u8207\u6a21\u578b',
+ onboarding_title: '\u6b61\u8fce\u4f7f\u7528 Hermes Web UI',
+ onboarding_unknown: '\u672a\u77e5',
+ onboarding_workspace_help: '\u9078\u64c7 Hermes \u5728\u8a2d\u5b9a\u5b8c\u6210\u5f8c\u7528\u65bc\u65b0\u804a\u5929\u5ba4\u7684\u6a21\u578b\u3002',
+ onboarding_workspace_label: '\u5de5\u4f5c\u5340',
+ onboarding_workspace_or_path: '\u6216\u8f38\u5165\u5de5\u4f5c\u5340\u8def\u5f91',
+ onboarding_workspace_placeholder: '/home/you/workspace',
+ project_name_prompt: '\u5c08\u6848\u540d\u7a31\uff1a',
+ provider_mismatch_warning: (provider) => `提供者不符:會話使用 ${provider}`,
+ session_meta_messages: (n) => `${n} 則訊息`,
+ settings_label_model: '\u9810\u8a2d\u6a21\u578b',
+ skill_created: '\u6280\u80fd\u5df2\u5efa\u7acb',
+ skill_file_load_failed: '\u8f09\u5165\u6a94\u6848\u5931\u6557\uff1a',
+ skill_load_failed: '\u8f09\u5165\u6280\u80fd\u5931\u6557\uff1a',
+ skill_name_required: '\u9700\u8981\u6280\u80fd\u540d\u7a31',
+ skill_updated: '\u6280\u80fd\u5df2\u66f4\u65b0',
+ skills_no_match: '\u627e\u4e0d\u5230\u7b26\u5408\u7684\u6280\u80fd\u3002',
+ slash_skill_badge: '\u6280\u80fd',
+ slash_skill_desc: '\u547c\u53eb\u6b64\u6280\u80fd',
+ title_change_hint: '\u4f7f\u7528 /title <\u65b0\u540d\u7a31> \u91cd\u65b0\u547d\u540d\u3002',
+ title_current: '\u76ee\u524d\u6a19\u984c',
+ title_set: '\u6a19\u984c\u5df2\u8a2d\u70ba',
+ todos_no_active: '\u6b64\u6703\u8a71\u4e2d\u7121\u6d3b\u8e8d\u4efb\u52d9\u6e05\u55ae\u3002',
+ upload_failed: '\u4e0a\u50b3\u5931\u6557\uff1a',
+ active_conversation_none: '\u672a\u9078\u53d6\u6d3b\u8e8d\u6703\u8a71\u3002',
+ add: '\u65b0\u589e',
+ add_failed: '\u65b0\u589e\u5931\u6557\uff1a',
+ auth_disabled: '\u9a57\u8b49\u5df2\u505c\u7528 \u2014 \u5bc6\u78bc\u4fdd\u8b77\u5df2\u95dc\u9589',
+ cancel_unavailable: '\u7121\u6cd5\u53d6\u6d88\u3002',
+ clear_conversation_message: '\u6e05\u9664\u6240\u6709\u8a0a\u606f\uff1f\u6b64\u64cd\u4f5c\u7121\u6cd5\u5fa9\u539f\u3002',
+ clear_conversation_title: '\u6e05\u9664\u5c0d\u8a71',
+ clear_failed: '\u6e05\u9664\u5931\u6557\uff1a',
+ content_required: '\u9700\u8981\u5167\u5bb9',
+ create_failed: '\u5efa\u7acb\u5931\u6557\uff1a',
+ delete_failed: '\u522a\u9664\u5931\u6557\uff1a',
+ disable: '\u505c\u7528',
+ disable_auth: '\u505c\u7528\u9a57\u8b49',
+ disable_auth_confirm_message: '\u4efb\u4f55\u4eba\u90fd\u53ef\u4ee5\u5b58\u53d6\u6b64\u5be6\u4f8b\u3002',
+ disable_auth_confirm_title: '\u505c\u7528\u5bc6\u78bc\u4fdd\u8b77',
+ disable_auth_failed: '\u505c\u7528\u9a57\u8b49\u5931\u6557\uff1a',
+ discard_file_edits_message: '\u5207\u63db\u5de5\u4f5c\u5340\u5c07\u653e\u68c4\u672a\u5132\u5b58\u7684\u9810\u89bd\u8b8a\u66f4\u3002',
+ discard_file_edits_title: '\u653e\u68c4\u6a94\u6848\u7de8\u8f2f\uff1f',
+ dismiss: '\u95dc\u9589',
+ edit: '\u7de8\u8f2f',
+ error_prefix: '\u932f\u8aa4\uff1a',
+ linked_files: '\u95dc\u806f\u6a94\u6848',
+ manage_profiles: '\u7ba1\u7406\u8a2d\u5b9a\u6a94',
+ memory_notes_label: '\u8a18\u61b6\uff08\u5099\u8a3b\uff09',
+ model_custom_label: '\u81ea\u8a02\u6a21\u578b ID',
+ model_custom_placeholder: '\u4f8b\u5982 openai/gpt-5.4',
+ model_search_no_results: '\u627e\u4e0d\u5230\u6a21\u578b',
+ model_search_placeholder: '\u641c\u5c0b\u6a21\u578b\u2026',
+ my_notes: '\u6211\u7684\u5099\u8a3b',
+ name_required: '\u9700\u8981\u540d\u7a31',
+ never: '\u5f9e\u4e0d',
+ no_active_session: '\u7121\u6d3b\u8e8d\u6703\u8a71',
+ no_active_task: '\u7121\u57f7\u884c\u4e2d\u7684\u4efb\u52d9\u53ef\u505c\u6b62\u3002',
+ no_notes_yet: '\u5c1a\u7121\u5099\u8a3b\u3002',
+ no_profile_yet: '\u5c1a\u7121\u8a2d\u5b9a\u6a94\u3002',
+ not_available: '\u7121',
+ profile_active: '\u555f\u7528\u4e2d',
+ profile_api_key_placeholder: 'API \u91d1\u9470\uff08\u9078\u586b\uff09',
+ profile_api_keys_configured: 'API \u91d1\u9470\u5df2\u8a2d\u5b9a',
+ profile_base_url_placeholder: '\u57fa\u672c URL\uff08\u9078\u586b\uff0c\u4f8b\u5982 http://localhost:11434\uff09',
+ profile_base_url_rule: '\u57fa\u672c URL \u5fc5\u9808\u4ee5 http:// \u6216 https:// \u958b\u982d',
+ profile_clone_label: '\u5f9e\u555f\u7528\u4e2d\u7684\u8a2d\u5b9a\u6a94\u8907\u88fd\u914d\u7f6e',
+ profile_created: (name) => `設定檔 ${name} 已建立`,
+ profile_default_label: '\uff08\u9810\u8a2d\uff09',
+ profile_delete_confirm_title: (name) => `刪除設定檔「${name}」?`,
+ profile_deleted: (name) => `設定檔 ${name} 已刪除`,
+ profile_gateway_running: 'Gateway \u57f7\u884c\u4e2d',
+ profile_gateway_stopped: 'Gateway \u5df2\u505c\u6b62',
+ profile_name_placeholder: '\u8a2d\u5b9a\u6a94\u540d\u7a31\uff08\u5c0f\u5beb\u5b57\u6bcd\u3001\u6578\u5b57\u3001\u9023\u5b57\u865f\uff09',
+ profile_name_rule: '\u50c5\u9650\u5c0f\u5beb\u5b57\u6bcd\u3001\u6578\u5b57\u3001\u9023\u5b57\u865f\u548c\u5e95\u7dda',
+ profile_no_configuration: '\u7121\u914d\u7f6e',
+ profile_skill_count: (n) => `${n} 個技能`,
+ profile_switch_title: '\u5207\u63db\u5230\u6b64\u8a2d\u5b9a\u6a94',
+ profile_switched: (name) => `已切換到 ${name}`,
+ profile_switched_new_conversation: (name) => `已切換到 ${name}(新會話)`,
+ profile_use: '\u4f7f\u7528',
+ profiles_busy_switch: 'Agent \u57f7\u884c\u4e2d\u7121\u6cd5\u5207\u63db\u8a2d\u5b9a\u6a94',
+ profiles_load_failed: '\u8f09\u5165\u8a2d\u5b9a\u6a94\u5931\u6557',
+ profiles_no_profiles: '\u627e\u4e0d\u5230\u8a2d\u5b9a\u6a94\u3002',
+ remove: '\u79fb\u9664',
+ remove_failed: '\u79fb\u9664\u5931\u6557\uff1a',
+ rename_failed: '\u91cd\u65b0\u547d\u540d\u5931\u6557\uff1a',
+ retry_failed: '\u91cd\u8a66\u5931\u6557\uff1a',
+ save: '\u5132\u5b58',
+ save_failed: '\u5132\u5b58\u5931\u6557\uff1a',
+ session_time_bucket_last_week: '\u4e0a\u9031',
+ session_time_bucket_older: '\u66f4\u65e9',
+ session_time_bucket_this_week: '\u672c\u9031',
+ session_time_bucket_today: '\u4eca\u5929',
+ session_time_bucket_yesterday: '\u6628\u5929',
+ session_time_days_ago: (d) => `${d} 天前`,
+ session_time_hours_ago: (h) => `${h} 小時前`,
+ session_time_just_now: '\u525b\u525b',
+ session_time_last_week: '\u4e0a\u9031',
+ session_time_minutes_ago: (m) => `${m} 分鐘前`,
+ session_time_unknown: '\u672a\u77e5',
+ settings_unsaved_changes: '\u60a8\u6709\u672a\u5132\u5b58\u7684\u8b8a\u66f4\u3002',
+ sign_out_failed: '\u767b\u51fa\u5931\u6557\uff1a',
+ stream_stopped: '\u56de\u61c9\u5df2\u505c\u6b62\u3002',
+ switch_failed: '\u5207\u63db\u5931\u6557\uff1a',
+ undid_messages_suffix: '\u5247\u8a0a\u606f\u3002',
+ undid_n_messages: '\u5df2\u79fb\u9664',
+ undo_exchange: '\u5fa9\u539f\u6700\u5f8c\u4e00\u8f2a',
+ undo_failed: '\u5fa9\u539f\u5931\u6557\uff1a',
+ user_profile: '\u4f7f\u7528\u8005\u8a2d\u5b9a\u6a94',
+ view: '\u6aa2\u8996',
+ workspace_add_path_placeholder: '\u65b0\u589e\u5de5\u4f5c\u5340\u8def\u5f91\uff08\u4f8b\u5982 /Users/you/project\uff09',
+ workspace_added: '\u5de5\u4f5c\u5340\u5df2\u65b0\u589e',
+ workspace_already_saved: '\u5de5\u4f5c\u5340\u5df2\u5132\u5b58 \u2014 \u5f9e\u6e05\u55ae\u4e2d\u9078\u53d6',
+ workspace_busy_switch: 'Agent \u57f7\u884c\u4e2d\u7121\u6cd5\u5207\u63db\u5de5\u4f5c\u5340',
+ workspace_choose_path: '\u9078\u64c7\u5de5\u4f5c\u5340\u8def\u5f91',
+ workspace_choose_path_meta: '\u65b0\u589e\u9a57\u8b49\u904e\u7684\u8def\u5f91\u4e26\u5207\u63db\u6b64\u6703\u8a71',
+ workspace_manage: '\u7ba1\u7406\u5de5\u4f5c\u5340',
+ workspace_manage_meta: '\u958b\u555f Spaces \u9762\u677f',
+ workspace_not_added: '\u5de5\u4f5c\u5340\u672a\u65b0\u589e',
+ workspace_paths_validated_hint: '\u8def\u5f91\u6703\u5148\u9a57\u8b49\u662f\u5426\u5b58\u5728\u518d\u5132\u5b58\u3002',
+ workspace_remove_confirm_message: (name) => `移除工作區「${name}」?`,
+ workspace_remove_confirm_title: '\u79fb\u9664\u5de5\u4f5c\u5340',
+ workspace_removed: '\u5de5\u4f5c\u5340\u5df2\u79fb\u9664',
+ workspace_switch_prompt_confirm: '\u5207\u63db',
+ workspace_switch_prompt_message: '\u8f38\u5165\u5de5\u4f5c\u5340\u7684\u7d55\u5c0d\u8def\u5f91\u4ee5\u65b0\u589e\u4e26\u5207\u63db\u6b64\u6703\u8a71\u3002',
+ workspace_switch_prompt_placeholder: '/Users/you/project',
+ workspace_switch_prompt_title: '\u5207\u63db\u5de5\u4f5c\u5340',
+ workspace_switched_to: (name) => `已切換到 ${name}`,
+ workspace_use: '\u4f7f\u7528',
+ workspace_use_title: '\u5728\u7576\u524d\u6703\u8a71\u4e2d\u4f7f\u7528',
+ bg_complete: '\u80cc\u666f\u4efb\u52d9\u5b8c\u6210',
+ bg_error_multi: (n) => `${n} 個背景任務失敗`,
+ cmd_status: '顯示會話資訊',
+ memory_saved: '記憶已儲存',
+ profile_delete_title: '刪除此設定檔',
+ bg_error_single: (n) => `${n} 個背景任務失敗`,
+ bg_failed: '\u80cc\u666f\u4efb\u52d9\u5931\u6557\uff1a',
+ bg_label: '\u80cc\u666f\u7d50\u679c\uff1a',
+ bg_no_answer: '\uff08\u7121\u56de\u61c9\uff09',
+ bg_running: '\u80cc\u666f\u57f7\u884c\u4e2d\u2026',
+ btw_asking: '\u6b63\u5728\u8a62\u554f\u9644\u5e36\u554f\u984c\u2026',
+ btw_done: '\u9644\u5e36\u554f\u984c\u5df2\u56de\u7b54',
+ btw_failed: '\u9644\u5e36\u554f\u984c\u5931\u6557\uff1a',
+ btw_label: '\u9644\u5e36\u554f\u984c \u2014 \u4e0d\u5728\u6b77\u53f2\u8a18\u9304\u4e2d',
+ btw_no_answer: '\u672a\u6536\u5230\u56de\u61c9\u3002',
+ cmd_background: '\u5728\u80cc\u666f\u57f7\u884c\u63d0\u793a\u8a5e',
+ cmd_background_usage: '/background <\u63d0\u793a\u8a5e> \u2014 \u5e73\u884c\u57f7\u884c\u4e0d\u963b\u585e',
+ cmd_btw: '\u63d0\u51fa\u9644\u5e36\u554f\u984c\uff08\u66ab\u6642\u6027\uff09',
+ cmd_btw_usage: '/btw <\u554f\u984c> \u2014 \u4f7f\u7528\u7576\u524d\u6703\u8a71\u80cc\u666f\u63d0\u554f',
+ cmd_compact: '\u58d3\u7e2e\u5c0d\u8a71\u4e0a\u4e0b\u6587',
+ cmd_retry: '\u91cd\u65b0\u767c\u9001\u6700\u5f8c\u4e00\u689d\u8a0a\u606f',
+ cmd_stop: '\u505c\u6b62\u7576\u524d\u56de\u61c9',
+ cmd_title: '\u53d6\u5f97\u6216\u8a2d\u5b9a\u6703\u8a71\u6a19\u984c',
+ cmd_undo: '\u79fb\u9664\u6700\u5f8c\u4e00\u8f2a\u5c0d\u8a71',
+ cmd_voice: '\u5207\u63db\u9ea5\u514b\u98a8\u8f38\u5165',
+ cmd_voice_use_mic: '\u9ede\u64ca\u7de8\u8f2f\u5668\u4e2d\u7684\u9ea5\u514b\u98a8\u6309\u9215\u3002',
+ cmd_webui_only_session: '\u6b64\u6307\u4ee4\u4e0d\u9069\u7528\u65bc CLI \u532f\u5165\u7684\u6703\u8a71\u3002',
+ cron_all_runs: '\u6240\u6709\u57f7\u884c',
+ cron_completion_status: (n) => `${n} 次完成`,
+ cron_delete_confirm_message: '\u6b64\u64cd\u4f5c\u7121\u6cd5\u5fa9\u539f\u3002',
+ cron_delete_confirm_title: '\u522a\u9664\u6392\u7a0b\u4efb\u52d9',
+ cron_hide_runs: '\u96b1\u85cf\u57f7\u884c\u8a18\u9304',
+ cron_job_created: '\u6392\u7a0b\u4efb\u52d9\u5df2\u5efa\u7acb',
+ cron_job_deleted: '\u6392\u7a0b\u4efb\u52d9\u5df2\u522a\u9664',
+ cron_job_name_placeholder: '\u4efb\u52d9\u540d\u7a31',
+ cron_job_paused: '\u6392\u7a0b\u4efb\u52d9\u5df2\u66ab\u505c',
+ cron_job_resumed: '\u6392\u7a0b\u4efb\u52d9\u5df2\u6062\u5fa9',
+ cron_job_triggered: '\u6392\u7a0b\u4efb\u52d9\u5df2\u89f8\u767c',
+ cron_job_updated: '\u6392\u7a0b\u4efb\u52d9\u5df2\u66f4\u65b0',
+ cron_last: '\u4e0a\u6b21',
+ cron_last_output: '\u6700\u5f8c\u8f38\u51fa',
+ cron_next: '\u4e0b\u6b21',
+ cron_no_jobs: '\u627e\u4e0d\u5230\u6392\u7a0b\u4efb\u52d9\u3002',
+ cron_no_runs_yet: '\uff08\u5c1a\u7121\u57f7\u884c\u8a18\u9304\uff09',
+ cron_pause: '\u66ab\u505c',
+ cron_prompt_placeholder: '\u63d0\u793a\u8a5e',
+ cron_prompt_required: '\u9700\u8981\u63d0\u793a\u8a5e',
+ cron_resume: '\u6062\u5fa9',
+ cron_run_now: '\u7acb\u5373\u57f7\u884c',
+ cron_schedule_placeholder: '\u6392\u7a0b',
+ cron_schedule_required: '\u9700\u8981\u6392\u7a0b',
+ cron_schedule_required_example: '\u9700\u8981\u6392\u7a0b\uff08\u4f8b\u5982 "0 9 * * *" \u6216 "every 1h"\uff09',
+ cron_status_active: '\u6d3b\u8e8d\u4e2d',
+ cron_status_error: '\u932f\u8aa4',
+ cron_status_off: '\u672a\u555f\u7528',
+ cron_status_paused: '\u5df2\u66ab\u505c',
+ providers_empty: '\u627e\u4e0d\u5230\u53ef\u8a2d\u5b9a\u7684\u63d0\u4f9b\u8005\u3002',
+ providers_enter_key: '\u8acb\u8f38\u5165 API \u91d1\u9470',
+ providers_key_placeholder_new: 'sk-...',
+ providers_key_placeholder_replace: '\u8f38\u5165\u65b0\u91d1\u9470\u4ee5\u53d6\u4ee3\u2026',
+ providers_key_removed: 'API \u91d1\u9470\u5df2\u79fb\u9664',
+ providers_key_updated: 'API \u91d1\u9470\u5df2\u5132\u5b58',
+ providers_oauth_hint: '\u5df2\u900f\u904e OAuth \u9a57\u8b49\u3002\u7121\u9700 API \u91d1\u9470\u3002',
+ providers_remove: '\u79fb\u9664',
+ providers_removing: '\u79fb\u9664\u4e2d\u2026',
+ providers_save: '\u5132\u5b58',
+ providers_saving: '\u5132\u5b58\u4e2d\u2026',
+ providers_section_meta: '管理 AI 提供者的 API 金鑰。變更會立即生效。',
+ providers_section_title: '供應商',
+ providers_status_api_key: 'API 金鑰',
+ providers_status_configured: 'API \u91d1\u9470\u5df2\u8a2d\u5b9a',
+ providers_status_not_configured: '\u7121 API \u91d1\u9470',
+ providers_status_not_configured_label: '\u672a\u8a2d\u5b9a',
+ providers_status_oauth: 'OAuth',
+ providers_tab_title: '供應商',
+ status_agent_running: 'Agent 執行中',
+ status_completed: '\u5df2\u5b8c\u6210',
+ status_failed: '\u5931\u6557',
+ status_heading: '\u6703\u8a71\u72c0\u614b',
+ status_load_failed: '\u8f09\u5165\u72c0\u614b\u5931\u6557\uff1a',
+ status_messages: '\u8a0a\u606f\u6578',
+ status_model: '\u6a21\u578b',
+ status_no: '\u5426',
+ status_personality: '\u4eba\u8a2d',
+ status_session_id: '\u6703\u8a71 ID',
+ status_title: '\u6a19\u984c',
+ status_workspace: '\u5de5\u4f5c\u5340',
+ status_yes: '\u662f',
+ usage_default_model: '\u9810\u8a2d',
+ usage_estimated_cost: '\u9810\u4f30\u8cbb\u7528',
+ usage_heading: 'Token \u7528\u91cf',
+ usage_input_tokens: '\u8f38\u5165 Token',
+ usage_load_failed: '\u8f09\u5165\u7528\u91cf\u5931\u6557\uff1a',
+ usage_output_tokens: '\u8f38\u51fa Token',
+ usage_personality_none: '\u7121',
+ usage_settings_tip: '\u6ce8\u610f\uff1a\u8cbb\u7528\u70ba\u9810\u4f30\u503c\u3002',
+ usage_total: '\u7e3d Token \u6578',
+ usage_unknown: '\u672a\u77e5',
},
};
diff --git a/static/index.html b/static/index.html
index f49f4bc0..5cd43e22 100644
--- a/static/index.html
+++ b/static/index.html
@@ -510,8 +510,8 @@