diff --git a/desktop/renderer/src/i18n/en-US.ts b/desktop/renderer/src/i18n/en-US.ts index 826b4ca..842a252 100644 --- a/desktop/renderer/src/i18n/en-US.ts +++ b/desktop/renderer/src/i18n/en-US.ts @@ -263,6 +263,7 @@ export default { "settings.notInstalled": "Not Installed", "settings.connectionStatus": "Connection status", "settings.gateway": "Gateway", + "settings.restartGateway": "Restart Gateway", "settings.logs": "Logs", "settings.privacy": "Data & Privacy", "settings.privacyProtection": "Privacy protection", @@ -282,19 +283,20 @@ export default { "settings.piiBankCard": "Bank card numbers", "settings.piiEmail": "Email addresses", "settings.piiApiKey": "API keys & secrets", - "settings.sensitiveFiles": "Sensitive file protection", + "settings.sensitiveFiles": "Sensitive file access", "settings.sensitiveFilesDesc": - "Ask for confirmation before the agent reads files that match these patterns.", - "settings.sensitiveFilePatterns": ".env, *_key*, *.pem, *.p12, *.pfx, id_rsa, credentials", + "MicroClaw asks for permission before an agent reads files that may contain private data.", + "settings.sensitiveFilePatterns": "Includes .env files, keys, certificates, and cloud credentials", + "settings.permissionRequired": "Permission required", "settings.security": "Security sandbox", "settings.sandboxEnabled": "Tool sandbox (AppContainer)", "settings.externalApps": "Apps allowed outside the sandbox", "settings.externalAppsHint": "These apps run outside the sandbox when AI tools invoke them, because they need COM/RPC access. Only add apps you trust.", "settings.addApp": "App name", - "settings.sandboxDirs": "Folder access", + "settings.sandboxDirs": "Sandbox folder access", "settings.sandboxDirsHint": - "Grant the sandbox read-only or read-write access to additional directories. Changes take effect immediately. Adding a parent directory automatically removes redundant child entries. A child directory can be read-write under a read-only parent, but not the reverse. Note: changing permissions on a drive root (e.g. C:\\) requires administrator privileges and may be slow while files are enumerated.", + "Grant sandboxed tools read-only or read-write access to specific folders. Changes take effect immediately.", "settings.sandboxDirsRW": "Read and write", "settings.sandboxDirsRO": "Read only", "settings.sandboxAddDir": "Add folder", @@ -324,8 +326,8 @@ export default { "settings.cap.appointments": "Calendar appointments", "settings.cap.contacts": "Contacts", "settings.chatHistory": "Chat history", - "settings.savedChatHistory": "Saved chat history", - "settings.clearAllHistory": "Clear history", + "settings.savedChatHistory": "Clear all chat history", + "settings.clearAllHistory": "Clear", "settings.about": "About", "settings.version": "Version 1.0.0", "settings.copyright": "Copyright", @@ -341,7 +343,7 @@ export default { "Microsoft Store will download and install updates for this version of MicroClaw.", "settings.updateCheckFailed": "Could not check for updates", "settings.downloadUpdate": "Download update", - "settings.gatewayLog": "Gateway logs", + "settings.gatewayLog": "Export Gateway logs", "settings.export": "Export", "settings.gatewayLogsExported": "Gateway logs exported.", "settings.gatewayLogsExportFailed": "Could not export Gateway logs: {error}", diff --git a/desktop/renderer/src/i18n/zh-CN.ts b/desktop/renderer/src/i18n/zh-CN.ts index 3bc0396..9ee6cdb 100644 --- a/desktop/renderer/src/i18n/zh-CN.ts +++ b/desktop/renderer/src/i18n/zh-CN.ts @@ -249,6 +249,7 @@ export default { "settings.notInstalled": "未安装", "settings.connectionStatus": "连接状态", "settings.gateway": "网关", + "settings.restartGateway": "重启网关", "settings.logs": "日志", "settings.privacy": "数据与隐私", "settings.privacyProtection": "隐私防护", @@ -266,18 +267,19 @@ export default { "settings.piiBankCard": "银行卡号", "settings.piiEmail": "电子邮箱", "settings.piiApiKey": "API 密钥", - "settings.sensitiveFiles": "敏感文件保护", - "settings.sensitiveFilesDesc": "智能体读取匹配以下模式的文件前,需要用户确认。", - "settings.sensitiveFilePatterns": ".env, *_key*, *.pem, *.p12, *.pfx, id_rsa, credentials", + "settings.sensitiveFiles": "敏感文件访问", + "settings.sensitiveFilesDesc": "智能体读取可能包含隐私数据的文件前,MicroClaw 会请求你的许可。", + "settings.sensitiveFilePatterns": "包括 .env 文件、密钥、证书和云凭据", + "settings.permissionRequired": "需要许可", "settings.security": "安全沙箱", "settings.sandboxEnabled": "工具沙箱(AppContainer)", "settings.externalApps": "允许在沙箱外运行的应用", "settings.externalAppsHint": "以下应用在被 AI 工具调用时将在沙箱外运行,因为它们需要 COM/RPC 等系统访问。仅添加你信任的应用。", "settings.addApp": "输入应用名", - "settings.sandboxDirs": "文件夹访问权限", + "settings.sandboxDirs": "沙箱文件夹访问权限", "settings.sandboxDirsHint": - "为沙箱授予对额外目录的只读或读写权限。更改立即生效。添加上级目录时,已被覆盖的子目录权限将自动移除。子目录可以在只读上级目录下设置为读写,但反之不行(上级目录读写时,子目录无法降级为只读)。注意:对磁盘根目录(如 C:\\)的权限修改需要管理员权限,且因需遍历大量文件可能较慢,请耐心等待。", + "为沙箱内工具授予对指定文件夹的只读或读写权限。更改立即生效。", "settings.sandboxDirsRW": "读写", "settings.sandboxDirsRO": "只读", "settings.sandboxAddDir": "添加文件夹", @@ -305,8 +307,8 @@ export default { "settings.cap.appointments": "日历约会", "settings.cap.contacts": "联系人", "settings.chatHistory": "聊天记录", - "settings.savedChatHistory": "已保存的聊天记录", - "settings.clearAllHistory": "清除记录", + "settings.savedChatHistory": "清除所有聊天记录", + "settings.clearAllHistory": "清除", "settings.about": "关于", "settings.version": "版本 1.0.0", "settings.copyright": "版权", @@ -321,7 +323,7 @@ export default { "settings.updateManagedByStoreDetail": "Microsoft Store 将下载并安装此版本的 MicroClaw 更新。", "settings.updateCheckFailed": "无法检查更新", "settings.downloadUpdate": "下载更新", - "settings.gatewayLog": "网关日志", + "settings.gatewayLog": "导出网关日志", "settings.export": "导出", "settings.gatewayLogsExported": "网关日志已导出。", "settings.gatewayLogsExportFailed": "无法导出网关日志:{error}", diff --git a/desktop/renderer/src/views/ChannelsView.vue b/desktop/renderer/src/views/ChannelsView.vue index 0f35e76..32d46f9 100644 --- a/desktop/renderer/src/views/ChannelsView.vue +++ b/desktop/renderer/src/views/ChannelsView.vue @@ -436,6 +436,23 @@ function goToWeixinChat() { margin-bottom: 8px; } +.channels-view.embedded .plugin-header { + gap: 12px; + padding: 12px 16px; +} + +.channels-view.embedded .plugin-icon { + width: 28px; + height: 28px; + border-radius: 0; + background: transparent; +} + +.channels-view.embedded .plugin-icon img { + width: 24px; + height: 24px; +} + .view-header h2 { font-size: 20px; font-weight: 600; diff --git a/desktop/renderer/src/views/SettingsView.vue b/desktop/renderer/src/views/SettingsView.vue index 4de3800..c7ba0fe 100644 --- a/desktop/renderer/src/views/SettingsView.vue +++ b/desktop/renderer/src/views/SettingsView.vue @@ -61,20 +61,22 @@ -
{{ t("settings.gateway") }}
+
+ {{ t("settings.gateway") }} + + + {{ gateway.status === "running" ? t("settings.connected") : gateway.status }} + +
- {{ t("settings.connectionStatus") }} + {{ t("settings.restartGateway") }}
- - - {{ gateway.status === "running" ? t("settings.connected") : gateway.status }} - {{ t("settings.restart") }} @@ -101,9 +103,31 @@
@@ -733,17 +757,12 @@
{{ t("settings.sensitiveFiles") }}
- - {{ t("settings.sensitiveFilePatterns") }} +
+ {{ t("settings.sensitiveFilePatterns") }} +
+ + + {{ t("settings.permissionRequired") }}
@@ -762,46 +781,45 @@
-
+
-
- MicroClaw -
{{ t("app.name") }}
-
{{ t("settings.version") }}
- - {{ updateChecking ? t("settings.updateChecking") : t("settings.checkForUpdates") }} - -
-
-
{{ updateStatusTitle }}
-
{{ updateStatusDetail }}
-
    -
  • {{ note }}
  • -
- - {{ t("settings.downloadUpdate") }} - -
-
-
- {{ t("settings.copyright") }} - © 2026 {{ t("app.name") }} +
+
+
+ MicroClaw +
{{ t("app.name") }}
+
{{ t("settings.version") }}
+ + {{ updateChecking ? t("settings.updateChecking") : t("settings.checkForUpdates") }} + +
+ +
+
+
{{ updateStatusTitle }}
+
{{ updateStatusDetail }}
+
    +
  • {{ note }}
  • +
+ + {{ t("settings.downloadUpdate") }} +
@@ -1782,8 +1800,6 @@ async function persistSearchConfig(): Promise { await window.openclaw.config.write(config); } -// Single save for the Web search section: commits both provider keys and the selected default -// provider in one action. The gateway hot-reloads the tools config on write. async function saveSearchSettings(): Promise { searchSavingAll.value = true; try { @@ -2055,10 +2071,15 @@ async function clearChatHistory() { width: 140px; height: 32px; flex-shrink: 0; - padding: 0 10px; + padding: 0 32px 0 10px; border: 1px solid var(--border-strong); border-radius: 8px; - background: var(--bg-input); + appearance: none; + background-color: var(--bg-input); + background-image: url("data:image/svg+xml,%3Csvg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3.5 5.25L7 8.75L10.5 5.25' stroke='%236B7280' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); + background-position: right 12px center; + background-repeat: no-repeat; + background-size: 14px 14px; color: var(--text-primary); font: inherit; font-size: 13px; @@ -2107,14 +2128,37 @@ async function clearChatHistory() { } /* About card */ +.about-section { + min-height: 100%; + display: flex; + flex-direction: column; +} + +.about-main { + flex: 1; + min-height: 0; + display: flex; + flex-direction: column; +} + .about-card { + flex: 1; background: var(--bg-grouped); - border-radius: 12px; border: 1px solid var(--border); + border-radius: 12px; padding: 28px 16px; display: flex; flex-direction: column; align-items: center; + justify-content: center; +} + +.about-card-content { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; gap: 6px; } @@ -2141,6 +2185,14 @@ async function clearChatHistory() { margin-top: 10px; } +.copyright-notice { + margin: 0; + padding-top: 16px; + color: var(--text-muted); + font-size: 12px; + text-align: center; +} + .update-card { margin-top: 16px; padding: 14px 16px; @@ -2210,6 +2262,11 @@ async function clearChatHistory() { margin: 0; } +.sub-label-row > .status-indicator, +.sub-label-actions > .status-indicator { + margin-right: 12px; +} + .custom-model-info { display: flex; flex-direction: column; @@ -2302,6 +2359,20 @@ async function clearChatHistory() { flex-shrink: 0; } +.sensitive-file-info { + min-width: 0; + display: flex; + flex-direction: column; + gap: 4px; +} + +.sensitive-file-examples { + color: var(--text-muted); + font-family: "Cascadia Code", "Fira Code", Consolas, monospace; + font-size: 11px; + line-height: 1.4; +} + .provider-link { display: inline-flex; align-items: center; @@ -2461,6 +2532,51 @@ async function clearChatHistory() { } /* Usage section */ +.usage-refresh-btn { + width: 28px; + height: 28px; + margin-right: 12px; + padding: 0; + border: 0; + border-radius: 6px; + background: transparent; + color: var(--text-secondary); + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.usage-refresh-btn:hover:not(:disabled) { + background: var(--settings-action-hover); + color: var(--text-primary); +} + +.usage-refresh-btn:disabled { + cursor: default; + opacity: 0.65; +} + +.usage-refresh-btn:focus-visible { + outline: 2px solid var(--settings-action-focus); + outline-offset: 2px; +} + +.usage-refresh-btn svg { + width: 16px; + height: 16px; +} + +.usage-refresh-btn svg.is-spinning { + animation: usage-refresh-spin 0.8s linear infinite; +} + +@keyframes usage-refresh-spin { + to { + transform: rotate(360deg); + } +} + .usage-spend { font-weight: 600; font-variant-numeric: tabular-nums;