feat: harden local shell, SFTP, and desktop session reliability
Finder-launched terminals now inherit a login PATH so tools like ollama resolve, destructive SFTP/editor actions require confirmation, and terminal search plus window dragging work again. SSH forwards and RDP sessions keep listeners and survive reconnect without FastPath crashes. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
188f3556ed
commit
08696896f9
223 files changed
+13493
-3423
No files matched your search
@@ -1,9 +1,7 @@
|
||||
{
|
||||
"nav": {
|
||||
"general": "Рабочее пространство",
|
||||
"generalDesc": "Макет и ресурсы",
|
||||
"appearance": "Внешний вид",
|
||||
"appearanceDesc": "Тема и язык",
|
||||
"general": "Основные",
|
||||
"generalDesc": "Тема, язык и макет",
|
||||
"terminal": "Терминал",
|
||||
"terminalDesc": "Шрифт и цвета",
|
||||
"shortcuts": "Горячие клавиши",
|
||||
@@ -15,11 +13,13 @@
|
||||
"ai": "AI-модели",
|
||||
"aiDesc": "AI-провайдеры",
|
||||
"about": "О приложении",
|
||||
"aboutDesc": "Версия и данные"
|
||||
"aboutDesc": "Версия и данные",
|
||||
"account": "Аккаунт",
|
||||
"accountDesc": "Email, лицензия и устройство"
|
||||
},
|
||||
"title": "Настройки",
|
||||
"search": {
|
||||
"placeholder": "Поиск по настройкам..."
|
||||
"placeholder": "Поиск настроек…"
|
||||
},
|
||||
"language": {
|
||||
"label": "Язык",
|
||||
@@ -89,7 +89,7 @@
|
||||
"ssh": {
|
||||
"connection": "Подключение",
|
||||
"keepAlive": "Keep-alive",
|
||||
"keepAliveDesc": "Отправлять keep-alive при простое для уменьшения разрывов",
|
||||
"keepAliveDesc": "Отправлять SSH keep-alive в простое; отключать только после нескольких сбоев",
|
||||
"autoReconnect": "Авто-переподключение",
|
||||
"autoReconnectDesc": "Автоматически повторять после неожиданного разрыва",
|
||||
"timeout": "Тайм-аут подключения",
|
||||
@@ -102,7 +102,9 @@
|
||||
"maxBackground": "Лимит фоновых подключений",
|
||||
"maxBackgroundDesc": "Вытеснять давно не использованные подключения при превышении лимита",
|
||||
"suspend": "Фоновая приостановка",
|
||||
"suspendDesc": "Минуты до освобождения активных каналов, когда вкладка в фоне"
|
||||
"suspendDesc": "Через сколько минут приостанавливать простаивающие фоновые вкладки (активные Shell/SFTP остаются)",
|
||||
"keepAliveInterval": "Интервал keep-alive (сек)",
|
||||
"keepAliveIntervalDesc": "Как часто опрашивать сервер (как ClientAliveInterval). При нестабильной сети — ≤15 с"
|
||||
},
|
||||
"security": {
|
||||
"credentials": "Защита учётных данных",
|
||||
@@ -119,7 +121,7 @@
|
||||
"clearConfirm": "Очистить все известные ключи хостов? При следующем подключении запрос появится снова."
|
||||
},
|
||||
"about": {
|
||||
"tagline": "Лёгкий нативный терминал эксплуатации SSH / SFTP",
|
||||
"tagline": "Простой и удобный нативный терминал для эксплуатации",
|
||||
"appVersion": "Приложение v{{version}}",
|
||||
"copyVersion": "Копировать сведения о версии",
|
||||
"runtime": "Среда выполнения",
|
||||
@@ -127,8 +129,9 @@
|
||||
"localData": "Локальные данные",
|
||||
"sessionsSettings": "Сеансы и настройки",
|
||||
"masterKeyPath": "Мастер-ключ",
|
||||
"privacyNote": "Пароли и парольные фразы ключей шифруются AES-256-GCM в Rust. OpsXShell не сохраняет историю команд терминала.",
|
||||
"license": "Лицензия MIT · Rust · XTerm.js"
|
||||
"privacyNote": "Пароли и passphrase шифруются в Rust (AES-256-GCM). Без истории команд и без аудита-бастиона.",
|
||||
"license": "Лицензия MIT · Rust · XTerm.js",
|
||||
"logPath": "Журнал приложения"
|
||||
},
|
||||
"ai": {
|
||||
"presets": "Пресеты провайдеров",
|
||||
@@ -162,13 +165,42 @@
|
||||
"apiKeySaveFailed": "Не удалось сохранить API-ключ",
|
||||
"providerNotFound": "Провайдер не найден",
|
||||
"modelCatalogReadFailed": "Не удалось прочитать каталог моделей",
|
||||
"catalogUnavailable": "models.dev недоступен"
|
||||
"catalogUnavailable": "models.dev недоступен",
|
||||
"family": {
|
||||
"openai_compatible": "Совместимые с OpenAI",
|
||||
"standalone": "Нативные API",
|
||||
"plan": "Подписки",
|
||||
"local": "Локальные",
|
||||
"custom": "Свой"
|
||||
}
|
||||
},
|
||||
"family": {
|
||||
"openai_compatible": "Совместимый с OpenAI",
|
||||
"standalone": "────────",
|
||||
"plan": "План",
|
||||
"local": "Self-hosted",
|
||||
"custom": "Своё"
|
||||
"account": {
|
||||
"title": "Account",
|
||||
"email": "Email",
|
||||
"emailDesc": "Used for checkout and license claims",
|
||||
"plan": "Current plan",
|
||||
"planFree": "Free",
|
||||
"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",
|
||||
"deviceList": "Привязанные устройства",
|
||||
"loadingDevices": "Загрузка устройств…",
|
||||
"noDevices": "Нет привязанных устройств",
|
||||
"thisDevice": "Это устройство",
|
||||
"removeDevice": "Отвязать",
|
||||
"deviceRemoved": "Устройство отвязано",
|
||||
"seatFull": "Все места заняты. Отвяжите другое устройство перед активацией на новой машине."
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user