chore: 保存工作副本——客户端授权新契约(双端点/验签/令牌/周检)与桌面会话可靠性改进

This commit is contained in:
Logan.Li committed 2026-09-14 22:10:22 +08:00
1 parent f71eef0eba
commit ae6093c9b3
163 files changed
+4911 -2494

No files matched your search

+45 -33
View File
@@ -13,7 +13,7 @@
"ai": "AI-модели",
"aiDesc": "AI-провайдеры",
"about": "О приложении",
"aboutDesc": "Версия и данные",
"aboutDesc": "Версия, контакты и диагностика",
"account": "Аккаунт",
"accountDesc": "Email, лицензия и устройство"
},
@@ -88,10 +88,10 @@
},
"ssh": {
"connection": "Подключение",
"keepAlive": "Keep-alive",
"keepAliveDesc": "Отправлять SSH keep-alive в простое; отключать только после нескольких сбоев",
"keepAlive": "Поддержание связи",
"keepAliveDesc": "В простое слать протокол SSH keep-alive (не вводить в оболочку). Защищает от NAT, не обходит удалённый TMOUT",
"autoReconnect": "Авто-переподключение",
"autoReconnectDesc": "Автоматически повторять после неожиданного разрыва",
"autoReconnectDesc": "Пока вкладка открыта, после неожиданного разрыва переподключаться (новая оболочка). Закрытие вкладки, простой и удалённый TMOUT не удерживаются силой",
"timeout": "Тайм-аут подключения",
"timeoutDesc": "Максимальное время ожидания при установке SSH (секунды)",
"maxReconnect": "Попытки переподключения",
@@ -104,7 +104,8 @@
"suspend": "Фоновая приостановка",
"suspendDesc": "Через сколько минут приостанавливать простаивающие фоновые вкладки (активные Shell/SFTP остаются)",
"keepAliveInterval": "Интервал keep-alive (сек)",
"keepAliveIntervalDesc": "Как часто опрашивать сервер (как ClientAliveInterval). При нестабильной сети — ≤15 с"
"keepAliveIntervalDesc": "Как часто опрашивать сервер (как ClientAliveInterval). При нестабильной сети — ≤15 с",
"sessionPolicyHint": "Keep-alive держит TCP-канал, а не политику удалённого сеанса. Bash TMOUT, sshd ClientAlive и простой GPO Windows по-прежнему действуют. Долгие задачи — через tmux/screen на сервере."
},
"security": {
"credentials": "Защита учётных данных",
@@ -122,16 +123,25 @@
},
"about": {
"tagline": "Простой и удобный нативный терминал для эксплуатации",
"appVersion": "Приложение v{{version}}",
"copyVersion": "Копировать сведения о версии",
"runtime": "Среда выполнения",
"system": "Система",
"localData": "Локальные данные",
"appVersion": "v{{version}}",
"copyVersion": "Скопировать версию, систему и пути для GitHub",
"copyDiagnostics": "Копировать диагностику",
"copyPath": "Копировать путь",
"resources": "Ресурсы",
"wechat": "WeChat",
"copyWechat": "Скопировать WeChat ID",
"github": "Обсуждения",
"githubDesc": "https://github.com/L00J/opsxshell/discussions",
"releases": "Релизы",
"releasesDesc": "Установщики и заметки к выпуску",
"licenseLink": "Лицензия",
"licenseLinkDesc": "MIT License",
"diagnostics": "Диагностика",
"sessionsSettings": "Сеансы и настройки",
"masterKeyPath": "Мастер-ключ",
"privacyNote": "Пароли и passphrase шифруются в Rust (AES-256-GCM). Без истории команд и без аудита-бастиона.",
"license": "Лицензия MIT · Rust · XTerm.js",
"logPath": "Журнал приложения"
"license": "MIT License · Rust · XTerm.js",
"logPath": "Журнал приложения",
"reportBug": "Сообщить об ошибке",
"reportBugDesc": "Открывает GitHub issue с текущей версией и платформой"
},
"ai": {
"presets": "Пресеты провайдеров",
@@ -151,13 +161,15 @@
"saved": "Сохранено",
"retest": "Пожалуйста, перепроверьте",
"testFailed": "Сбой проверки подключения",
"available": "OK · {{latency}} мс",
"available": "Готово · {{latency}} мс",
"savedKeepBlank": "Сохранено — оставьте пустым, чтобы сохранить",
"notRequired": "Не требуется",
"otherModels": "Другие модели…",
"customModel": "Своя модель",
"backToList": "Назад к списку",
"apiKeyOptional": "API Key (не требуется)",
"apiKey": "API-ключ",
"apiKeyOptional": "API-ключ (не требуется)",
"endpoint": "Адрес API",
"advanced": "Дополнительно",
"allowHttp": "Разрешить HTTP (localhost/LAN)",
"setActive": "Сделать активным",
@@ -175,26 +187,26 @@
}
},
"account": {
"title": "Account",
"email": "Email",
"emailDesc": "Used for checkout and license claims",
"plan": "Current plan",
"planFree": "Free",
"title": "Аккаунт",
"email": "Почта",
"emailDesc": "Контактная почта для оплаты и получения лицензии",
"plan": "Текущий план",
"planFree": "Бесплатный",
"planYearly": "Pro на год",
"planPerpetual": "Pro бессрочно",
"planTrial": "Pro пробный",
"expires": "Expires {{date}}",
"lifetime": "Lifetime",
"devices": "Seats: up to {{count}} devices",
"deviceId": "This device ID",
"saveEmail": "Save email",
"activate": "Activate license",
"pasteLicense": "Paste LIC- license key",
"clear": "Clear local license",
"deactivate": "Deactivate this device",
"upgrade": "Upgrade",
"saved": "Saved",
"activateOk": "Activated",
"expires": "Действует до {{date}}",
"lifetime": "Бессрочно",
"devices": "Места устройств: до {{count}}",
"deviceId": "ID этого устройства",
"saveEmail": "Сохранить почту",
"activate": "Активировать лицензию",
"pasteLicense": "Вставьте лицензию LIC-",
"clear": "Удалить локальную лицензию",
"deactivate": "Отключить активацию на этом устройстве",
"upgrade": "Перейти на Pro",
"saved": "Сохранено",
"activateOk": "Активировано",
"deviceList": "Привязанные устройства",
"loadingDevices": "Загрузка устройств…",
"noDevices": "Нет привязанных устройств",