chore: 保存工作副本——客户端授权新契约(双端点/验签/令牌/周检)与桌面会话可靠性改进
This commit is contained in:
1 parent
f71eef0eba
commit
ae6093c9b3
163 files changed
+4911
-2494
No files matched your search
@@ -16,10 +16,10 @@
|
||||
"stop": "停止",
|
||||
"send": "发送",
|
||||
"placeholder": "任务或追问…(Enter 发送,Shift+Enter 换行)",
|
||||
"hintFollowUp": "继续追问将带上本轮上下文",
|
||||
"hintFollowUp": "追问会附带本轮摘要,过长会截断",
|
||||
"hintSelection": "将附带选中 {{lines}} 行",
|
||||
"hintSteps": "最多 {{max}} 步 · 不落盘",
|
||||
"footerNote": "高风险需确认 · critical 拒绝 · 会话不落盘",
|
||||
"hintSteps": "最多 {{max}} 步",
|
||||
"footerNote": "高风险先确认 · 破坏性命令直接拒绝 · 对话不保存",
|
||||
"summarize": "总结输出",
|
||||
"summarizeTitle": "用 AI 总结当前终端可见输出(优先使用选中文本),不执行任何命令",
|
||||
"summarizeRequest": "总结当前终端输出"
|
||||
@@ -59,15 +59,15 @@
|
||||
"insertedClipboard": "第 {{round}} 轮命令已复制到剪贴板(当前终端不可写入);粘贴后请检查再运行。"
|
||||
},
|
||||
"confirm": {
|
||||
"reject": "Reject",
|
||||
"once": "Once",
|
||||
"always": "Always",
|
||||
"hint": "Enter · Once Esc · Reject Always · 本会话同类命令不再确认",
|
||||
"reject": "拒绝",
|
||||
"once": "执行一次",
|
||||
"always": "本会话允许",
|
||||
"hint": "Enter · 执行一次 Esc · 拒绝 本会话允许 · 同类命令本会话不再确认",
|
||||
"insert": "插入不执行"
|
||||
},
|
||||
"error": {
|
||||
"noProvider": "请先在设置 → 大模型配置 Provider",
|
||||
"noApiKey": "「{{provider}}」尚未保存 API Key",
|
||||
"noProvider": "请先在设置 → 大模型里配置供应商",
|
||||
"noApiKey": "「{{provider}}」尚未保存 API 密钥",
|
||||
"emptyTask": "请输入任务或追问",
|
||||
"sshRequired": "需要已连接的远程 SSH",
|
||||
"modelEmpty": "模型未返回内容",
|
||||
@@ -77,7 +77,7 @@
|
||||
"invalidCommand": "模型未返回唯一的单行命令,已拒绝执行",
|
||||
"repeatLoop": "检测到重复命令循环,已停止:{{command}}",
|
||||
"criticalBlocked": "命令命中破坏性操作硬红线,不提供确认放行:{{command}}",
|
||||
"execFailed": "ssh-exec 失败:{{error}}",
|
||||
"execFailed": "远程执行失败:{{error}}",
|
||||
"execUnknown": "未知错误",
|
||||
"execNoOutput": "命令执行完成,无输出",
|
||||
"maxSteps": "已达 {{max}} 步上限,请缩小范围后重试",
|
||||
|
||||
@@ -33,8 +33,10 @@
|
||||
"error": {
|
||||
"title": "出错了",
|
||||
"body": "应用遇到意外问题",
|
||||
"bodyPane": "此标签遇到意外问题,其它标签仍可使用",
|
||||
"recoverable": "此错误可以恢复,请尝试刷新页面",
|
||||
"refreshPage": "刷新页面",
|
||||
"retryPane": "重试此标签",
|
||||
"restartApp": "重启应用",
|
||||
"supportHint": "如果问题持续存在,请检查日志或联系支持"
|
||||
},
|
||||
@@ -108,7 +110,8 @@
|
||||
"closeLeft": "关闭左侧标签",
|
||||
"closeAll": "关闭全部",
|
||||
"clone": "克隆标签",
|
||||
"openSftp": "打开 SFTP"
|
||||
"openSftp": "打开 SFTP",
|
||||
"reconnect": "重新连接"
|
||||
},
|
||||
"renameAria": "重命名标签 {{title}}",
|
||||
"renameHint": "双击重命名"
|
||||
|
||||
@@ -35,13 +35,17 @@
|
||||
"fullscreenAria": "进入全屏",
|
||||
"exitFullscreen": "退出全屏",
|
||||
"exitFullscreenAria": "退出全屏",
|
||||
"exitFullscreenHint": "Esc / F11 退出"
|
||||
"exitFullscreenHint": "Esc / F11 退出",
|
||||
"reconnect": "重新连接",
|
||||
"reconnectAria": "重新连接远程桌面"
|
||||
},
|
||||
"status": {
|
||||
"connecting": "正在连接…",
|
||||
"connected": "已连接",
|
||||
"disconnected": "已断开",
|
||||
"connectFailed": "连接失败",
|
||||
"reconnecting": "自动重连中({{attempt}}/{{max}})…",
|
||||
"reconnectLimit": "自动重连已达上限({{max}})",
|
||||
"clipboardSynced": "已同步远端剪贴板",
|
||||
"savedToDownloads": "已保存到本机下载文件夹:{{name}}",
|
||||
"pastedToRemote": "已粘贴到远端",
|
||||
|
||||
@@ -41,7 +41,10 @@
|
||||
"refused": "连接被拒绝",
|
||||
"disconnected": "连接已断开",
|
||||
"keepaliveFailed": "SSH 心跳连续失败,连接已关闭",
|
||||
"idleKicked": "远端 Shell 因空闲超时退出(TMOUT)"
|
||||
"idleKicked": "远端 Shell 因空闲超时退出(TMOUT)",
|
||||
"unexpectedDropped": "连接已断开(网络中断或服务器关闭)",
|
||||
"shellExited": "远端 Shell 已退出(exit、Ctrl+D 或服务器策略)",
|
||||
"shellReadFailed": "远端 Shell 读取失败"
|
||||
},
|
||||
"auth": {
|
||||
"failed": "认证失败,请检查用户名和密码",
|
||||
@@ -151,8 +154,8 @@
|
||||
"nativeOnly": "串口仅在 Tauri 原生应用中可用"
|
||||
},
|
||||
"ai": {
|
||||
"noProvider": "请先在设置 → 大模型配置 Provider",
|
||||
"noApiKey": "「{{provider}}」尚未保存 API Key",
|
||||
"noProvider": "请先在设置 → 大模型里配置供应商",
|
||||
"noApiKey": "「{{provider}}」尚未保存 API 密钥",
|
||||
"modelEmpty": "模型未返回内容",
|
||||
"protocolFailed": "模型连续两次未遵循协议,已停止",
|
||||
"noConclusion": "模型未返回可用结论",
|
||||
@@ -160,7 +163,7 @@
|
||||
"invalidCommand": "模型未返回唯一的单行命令,已拒绝执行",
|
||||
"repeatLoop": "检测到重复命令循环,已停止:{{command}}",
|
||||
"criticalBlocked": "命令命中破坏性操作硬红线,不提供确认放行:{{command}}",
|
||||
"execFailed": "ssh-exec 失败:{{error}}",
|
||||
"execFailed": "远程执行失败:{{error}}",
|
||||
"maxSteps": "已达 {{max}} 步上限,请缩小范围后重试",
|
||||
"sshRequired": "需要已连接的远程 SSH"
|
||||
},
|
||||
@@ -168,6 +171,12 @@
|
||||
"readFailed": "读取失败: {{name}}",
|
||||
"writeFailed": "写入失败: {{name}}"
|
||||
},
|
||||
"native": {
|
||||
"taskJoin": "后台任务失败,请重试",
|
||||
"invalidBase64": "文件数据不是有效的 Base64",
|
||||
"knownHostsPath": "无法定位 ~/.ssh/known_hosts",
|
||||
"invalidHostKeyDecision": "主机密钥决定无效"
|
||||
},
|
||||
"unknown": {
|
||||
"error": "发生未知错误"
|
||||
}
|
||||
|
||||
@@ -132,7 +132,8 @@
|
||||
"collapse": "收起",
|
||||
"protocol": "协议",
|
||||
"displayName": "显示名称(可选)",
|
||||
"displayNamePlaceholder": "自动用 user@host 或 vnc:host",
|
||||
"displayNamePlaceholder": "自动用 user@host",
|
||||
"displayNamePlaceholderVnc": "自动用主机名",
|
||||
"host": "主机",
|
||||
"hostPlaceholder": "192.168.1.10",
|
||||
"hostHint": "填写 IP 或域名;也可粘贴 host:port",
|
||||
@@ -208,7 +209,8 @@
|
||||
},
|
||||
"importExport": {
|
||||
"exportTitle": "导出会话",
|
||||
"exportDefaultPath": "opsxshell-sessions.bak",
|
||||
"exportDefaultPath": "opsxshell-hosts.oxs",
|
||||
"exportFilterOxs": "OpsXShell 主机备份",
|
||||
"exportFilterBak": "OpsXShell 备份",
|
||||
"exportFilterJson": "JSON",
|
||||
"exportSuccess": "已导出 {{count}} 个会话到:\n{{path}}",
|
||||
@@ -224,6 +226,7 @@
|
||||
"exportPasswordMismatch": "两次输入的密码不一致",
|
||||
"exportPasswordRequired": "必须设置备份密码才能导出",
|
||||
"importTitle": "导入会话",
|
||||
"importFilterOxs": "OpsXShell 主机备份",
|
||||
"importFilterBak": "OpsXShell 备份",
|
||||
"importFilterJson": "JSON",
|
||||
"importFilterSshConfig": "SSH Config",
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
"security": "安全",
|
||||
"securityDesc": "凭据与主机密钥",
|
||||
"ai": "大模型",
|
||||
"aiDesc": "AI Provider",
|
||||
"aiDesc": "AI 供应商",
|
||||
"about": "关于",
|
||||
"aboutDesc": "版本与数据",
|
||||
"aboutDesc": "版本、联系与诊断",
|
||||
"account": "账户",
|
||||
"accountDesc": "邮箱、许可证与设备"
|
||||
},
|
||||
@@ -89,9 +89,9 @@
|
||||
"ssh": {
|
||||
"connection": "连接",
|
||||
"keepAlive": "保持心跳",
|
||||
"keepAliveDesc": "空闲时发送 SSH 心跳;连续多次无响应才会断开",
|
||||
"keepAliveDesc": "空闲时发送 SSH 协议心跳(不写入 Shell)。只挡 NAT/防火墙丢连接,不会绕过远端 TMOUT",
|
||||
"autoReconnect": "自动重连",
|
||||
"autoReconnectDesc": "意外断开后自动尝试重连",
|
||||
"autoReconnectDesc": "标签还开着、意外断线时自动重连(新 Shell)。关标签、空闲挂起或远端 TMOUT 不会硬续",
|
||||
"timeout": "连接超时",
|
||||
"timeoutDesc": "建立 SSH 连接的最长等待时间(秒)",
|
||||
"maxReconnect": "自动重连次数",
|
||||
@@ -104,7 +104,8 @@
|
||||
"suspend": "后台挂起",
|
||||
"suspendDesc": "后台标签空闲多少分钟后挂起(有活跃 Shell/SFTP 时保持连接)",
|
||||
"keepAliveInterval": "心跳间隔(秒)",
|
||||
"keepAliveIntervalDesc": "向服务器发送心跳的频率(类似 ClientAliveInterval)。不稳定网络建议 ≤15 秒"
|
||||
"keepAliveIntervalDesc": "向服务器发送心跳的频率(类似 ClientAliveInterval)。不稳定网络建议 ≤15 秒",
|
||||
"sessionPolicyHint": "心跳保的是链路,不是远端会话策略。Bash TMOUT、sshd ClientAlive 和 Windows 空闲 GPO 仍会生效;长任务请在服务器上用 tmux/screen。"
|
||||
},
|
||||
"security": {
|
||||
"credentials": "凭据保护",
|
||||
@@ -122,23 +123,32 @@
|
||||
},
|
||||
"about": {
|
||||
"tagline": "简单、便捷、人性化的原生运维终端",
|
||||
"appVersion": "应用 v{{version}}",
|
||||
"copyVersion": "复制版本信息",
|
||||
"runtime": "运行环境",
|
||||
"system": "系统",
|
||||
"localData": "本地数据",
|
||||
"appVersion": "v{{version}}",
|
||||
"copyVersion": "复制版本、系统和路径,便于贴到 GitHub",
|
||||
"copyDiagnostics": "复制诊断信息",
|
||||
"copyPath": "复制路径",
|
||||
"resources": "资源",
|
||||
"wechat": "微信",
|
||||
"copyWechat": "复制微信号",
|
||||
"github": "讨论",
|
||||
"githubDesc": "https://github.com/L00J/opsxshell/discussions",
|
||||
"releases": "版本发布",
|
||||
"releasesDesc": "安装包与更新说明",
|
||||
"licenseLink": "许可证",
|
||||
"licenseLinkDesc": "MIT License",
|
||||
"diagnostics": "诊断",
|
||||
"sessionsSettings": "会话与设置",
|
||||
"masterKeyPath": "加密主密钥",
|
||||
"privacyNote": "密码与密钥口令由 Rust 使用 AES-256-GCM 加密。不保存终端命令历史,也不做堡垒审计。",
|
||||
"license": "MIT License · Rust · XTerm.js",
|
||||
"logPath": "应用日志"
|
||||
"logPath": "应用日志",
|
||||
"reportBug": "报告问题",
|
||||
"reportBugDesc": "打开 GitHub issue,并带上当前版本与系统"
|
||||
},
|
||||
"ai": {
|
||||
"presets": "供应商预设",
|
||||
"add": "添加",
|
||||
"configured": "已配置",
|
||||
"configuredHint": "选择供应商后点添加",
|
||||
"emptyHint": "添加一个 Provider 开始",
|
||||
"emptyHint": "添加一个供应商开始",
|
||||
"noModel": "未选模型",
|
||||
"name": "名称",
|
||||
"model": "模型",
|
||||
@@ -157,13 +167,15 @@
|
||||
"otherModels": "其他模型…",
|
||||
"customModel": "自定义模型",
|
||||
"backToList": "返回列表",
|
||||
"apiKeyOptional": "API Key(无需)",
|
||||
"apiKey": "API 密钥",
|
||||
"apiKeyOptional": "API 密钥(无需)",
|
||||
"endpoint": "接口地址",
|
||||
"advanced": "高级",
|
||||
"allowHttp": "允许 HTTP(本机/内网)",
|
||||
"setActive": "设为当前",
|
||||
"deleteTitle": "删除",
|
||||
"apiKeySaveFailed": "API Key 保存失败",
|
||||
"providerNotFound": "Provider 不存在",
|
||||
"apiKeySaveFailed": "API 密钥保存失败",
|
||||
"providerNotFound": "供应商不存在",
|
||||
"modelCatalogReadFailed": "模型目录读取失败",
|
||||
"catalogUnavailable": "models.dev 暂不可用",
|
||||
"family": {
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
"notConnected": "未连接",
|
||||
"connecting": "连接中...",
|
||||
"resumeHint": "重连后将回到 {{path}}",
|
||||
"reconnectingResume": "正在重连并恢复 {{path}}…"
|
||||
"reconnectingResume": "正在重连并恢复 {{path}}…",
|
||||
"autoReconnecting": "自动重连中({{attempt}}/{{max}})…"
|
||||
},
|
||||
"errors": {
|
||||
"notConnected": "SFTP 尚未连接",
|
||||
|
||||
@@ -34,7 +34,9 @@
|
||||
"reopenShell": "重新打开 Shell",
|
||||
"reopening": "正在打开…",
|
||||
"disconnected": "连接已断开",
|
||||
"disconnectedHint": "SSH 会话已结束或网络中断。点下方一键重新连接,即可继续工作。",
|
||||
"disconnectedHint": "网络中断或服务器关闭了 SSH。标签还开着时会自动重连;也可点下方立即重连。",
|
||||
"disconnectedKeepalive": "心跳失败,连接已断开",
|
||||
"disconnectedKeepaliveHint": "SSH 心跳连续无响应,多半是 NAT 或网络丢了空闲连接。不会向 Shell 发送按键。标签还开着时会自动重连。",
|
||||
"reconnect": "重新连接",
|
||||
"suspended": "连接已挂起",
|
||||
"suspendedHint": "长时间未操作,连接已进入挂起以节省资源",
|
||||
|
||||
Reference in new issue
Block a user