release: 1.3.9 - Оптимизация кодовой базы (Ponytail Audit), очистка мертвого кода и ускорение Telegram-бота

- Frontend: полное удаление неиспользуемого renderAdvancedSettings.ts (-1354 строки), очистка каталогов локализации от фантомных ключей, инкапсуляция внутренних экспортов в runtimeTags и singBoxVariant
- Backend: удаление неиспользуемого singbox/dns_prefetch.uc (-243 строки) и его вызова в lifecycle.uc, удаление устаревших заглушек Forkop-эпохи в service_check.uc
- Telegram Bot: внедрение in-memory кэша cb_map_cache для устранения избыточных дисковых чтений/записей JSON при рендеринге inline-кнопок
- Версия: bump версии до 1.3.9 в package.json и package-lock.json
This commit is contained in:
Dushnilin
2026-09-01 08:48:29 +03:00
parent 706b35328c
commit f553352e25
14 changed files with 352 additions and 2757 deletions
+33 -371
View File
@@ -64,27 +64,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8901"
]
},
{
"call": "⏹ Stop",
"key": "⏹ Stop",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:515"
]
},
{
"call": "▶ Start",
"key": "▶ Start",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:515"
]
},
{
"call": "⚙ Advanced Settings",
"key": "⚙ Advanced Settings",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1340"
]
},
{
"call": "⚠️ Benchmark completed. No working bypass found for this target.",
"key": "⚠️ Benchmark completed. No working bypass found for this target.",
@@ -194,8 +173,7 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8357",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8364",
"src/tachyon/tabs/dashboard/initController.ts:1891",
"src/tachyon/tabs/dashboard/initController.ts:1900",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:505"
"src/tachyon/tabs/dashboard/initController.ts:1900"
]
},
{
@@ -213,8 +191,7 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8357",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8364",
"src/tachyon/tabs/dashboard/initController.ts:1891",
"src/tachyon/tabs/dashboard/initController.ts:1900",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:505"
"src/tachyon/tabs/dashboard/initController.ts:1900"
]
},
{
@@ -297,13 +274,6 @@
"src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:248"
]
},
{
"call": "🔑 Generate",
"key": "🔑 Generate",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:760"
]
},
{
"call": "🗑️ Clear History",
"key": "🗑️ Clear History",
@@ -424,9 +394,9 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16607",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:349",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:355",
"src/tachyon/tabs/dashboard/initController.ts:1127",
"src/tachyon/tabs/monitoring/initController.ts:722",
"src/tachyon/tabs/monitoring/render.ts:20"
"src/tachyon/tabs/monitoring/render.ts:20",
"src/tachyon/tabs/dashboard/initController.ts:1127"
]
},
{
@@ -640,13 +610,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:85"
]
},
{
"call": "Advanced self-healing features. Requires Watchdog to be enabled.",
"key": "Advanced self-healing features. Requires Watchdog to be enabled.",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:627"
]
},
{
"call": "Advanced System",
"key": "Advanced System",
@@ -682,13 +645,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:822"
]
},
{
"call": "AI Agent REST API (12 Endpoints)",
"key": "AI Agent REST API (12 Endpoints)",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:722"
]
},
{
"call": "AI Agent REST API Bearer Token",
"key": "AI Agent REST API Bearer Token",
@@ -700,8 +656,7 @@
"call": "AI API Key",
"key": "AI API Key",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1813",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1037"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1813"
]
},
{
@@ -728,13 +683,6 @@
"src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1046"
]
},
{
"call": "AI Doctor (ChatGPT / DeepSeek API)",
"key": "AI Doctor (ChatGPT / DeepSeek API)",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:776"
]
},
{
"call": "AI Doctor Diagnosis",
"key": "AI Doctor Diagnosis",
@@ -759,8 +707,7 @@
"call": "AI Doctor Language",
"key": "AI Doctor Language",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1800",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1004"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1800"
]
},
{
@@ -783,16 +730,14 @@
"call": "AI Model",
"key": "AI Model",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1787",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:979"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1787"
]
},
{
"call": "AI Provider",
"key": "AI Provider",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1770",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:901"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1770"
]
},
{
@@ -827,20 +772,6 @@
"src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1690"
]
},
{
"call": "AI Watchdog",
"key": "AI Watchdog",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:622"
]
},
{
"call": "AI Watchdog settings saved. Restart watchdog to apply.",
"key": "AI Watchdog settings saved. Restart watchdog to apply.",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:449"
]
},
{
"call": "All",
"key": "All",
@@ -1281,8 +1212,7 @@
"call": "Auto-detects blocked domains from logs and adds them to the first section where they work via proxy.",
"key": "Auto-detects blocked domains from logs and adds them to the first section where they work via proxy.",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1976",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1197"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1976"
]
},
{
@@ -1423,13 +1353,6 @@
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:58"
]
},
{
"call": "Bearer Auth Token",
"key": "Bearer Auth Token",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:732"
]
},
{
"call": "Beginning of the schedule interval (e.g. 22:00)",
"key": "Beginning of the schedule interval (e.g. 22:00)",
@@ -2254,10 +2177,10 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10239",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1803",
"src/partials/modal/renderModal.ts:263",
"src/tachyon/tabs/dashboard/initController.ts:1267",
"src/tachyon/tabs/diagnostic/initController.ts:1553",
"src/tachyon/tabs/monitoring/initController.ts:893",
"src/tachyon/tabs/monitoring/initController.ts:948",
"src/tachyon/tabs/dashboard/initController.ts:1267",
"src/tachyon/tabs/diagnostic/initController.ts:1553",
"src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:227",
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:178",
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:871",
@@ -2373,7 +2296,7 @@
"key": "compressed",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6081",
"src/tachyon/helpers/singBoxVariant.ts:60"
"src/tachyon/helpers/singBoxVariant.ts:57"
]
},
{
@@ -2438,13 +2361,6 @@
"src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:141"
]
},
{
"call": "Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis.",
"key": "Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis.",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:781"
]
},
{
"call": "Connect through",
"key": "Connect through",
@@ -2618,8 +2534,7 @@
"call": "Custom API Endpoint URL",
"key": "Custom API Endpoint URL",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1824",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1059"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1824"
]
},
{
@@ -2672,13 +2587,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3497"
]
},
{
"call": "Custom interface/section",
"key": "Custom interface/section",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:884"
]
},
{
"call": "Custom OpenAI-Compatible API",
"key": "Custom OpenAI-Compatible API",
@@ -2772,8 +2680,7 @@
"key": "Default (Direct WAN / Default mixed proxy)",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1635",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1647",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:833"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1647"
]
},
{
@@ -2861,20 +2768,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9486"
]
},
{
"call": "Device IPs (one per line):",
"key": "Device IPs (one per line):",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1270"
]
},
{
"call": "Device IPs saved",
"key": "Device IPs saved",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:305"
]
},
{
"call": "Device or IP",
"key": "Device or IP",
@@ -2897,13 +2790,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:236"
]
},
{
"call": "Devices listed here are always routed through the assigned section, regardless of global rules.",
"key": "Devices listed here are always routed through the assigned section, regardless of global rules.",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1308"
]
},
{
"call": "DHCP has DNS server",
"key": "DHCP has DNS server",
@@ -3206,15 +3092,7 @@
"call": "DNS Turbo Cache",
"key": "DNS Turbo Cache",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:995",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:527"
]
},
{
"call": "DNS Turbo Cache saved",
"key": "DNS Turbo Cache saved",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:329"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:995"
]
},
{
@@ -3612,13 +3490,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1758"
]
},
{
"call": "Enable AI Doctor (LLM Integration)",
"key": "Enable AI Doctor (LLM Integration)",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:796"
]
},
{
"call": "Enable Anomaly Detection",
"key": "Enable Anomaly Detection",
@@ -3677,13 +3548,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1888"
]
},
{
"call": "Enable DNS Turbo Cache",
"key": "Enable DNS Turbo Cache",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:546"
]
},
{
"call": "Enable Firewall Reload Dedup",
"key": "Enable Firewall Reload Dedup",
@@ -3744,8 +3608,7 @@
"call": "Enable RAG (Knowledge Base Retrieval)",
"key": "Enable RAG (Knowledge Base Retrieval)",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1840",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:810"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1840"
]
},
{
@@ -3759,8 +3622,7 @@
"call": "Enable Smart Detect",
"key": "Enable Smart Detect",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1975",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1214"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1975"
]
},
{
@@ -4198,12 +4060,12 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19001",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19061",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19233",
"src/tachyon/methods/shell/index.ts:171",
"src/tachyon/methods/shell/index.ts:178",
"src/tachyon/tabs/updates/initController.ts:661",
"src/tachyon/tabs/updates/initController.ts:662",
"src/tachyon/tabs/updates/initController.ts:739",
"src/tachyon/tabs/updates/initController.ts:953"
"src/tachyon/tabs/updates/initController.ts:953",
"src/tachyon/methods/shell/index.ts:171",
"src/tachyon/methods/shell/index.ts:178"
]
},
{
@@ -4347,27 +4209,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2434"
]
},
{
"call": "Failed to save AI Watchdog settings",
"key": "Failed to save AI Watchdog settings",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:453"
]
},
{
"call": "Failed to save device IPs",
"key": "Failed to save device IPs",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:313"
]
},
{
"call": "Failed to save DNS Turbo Cache",
"key": "Failed to save DNS Turbo Cache",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:331"
]
},
{
"call": "Failed to save fuzzer patterns",
"key": "Failed to save fuzzer patterns",
@@ -4384,13 +4225,6 @@
"src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:796"
]
},
{
"call": "Failed to save Smart Detect settings",
"key": "Failed to save Smart Detect settings",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:279"
]
},
{
"call": "Failed to save snapshot",
"key": "Failed to save snapshot",
@@ -4894,13 +4728,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9248"
]
},
{
"call": "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer <token>.",
"key": "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer <token>.",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:767"
]
},
{
"call": "Get global check",
"key": "Get global check",
@@ -4963,13 +4790,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3237"
]
},
{
"call": "Health Checks",
"key": "Health Checks",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:630"
]
},
{
"call": "Hello! I am Tachyon AI Assistant. How can I help you today? Ask me about domain blocks, diagnostics, or router settings.",
"key": "Hello! I am Tachyon AI Assistant. How can I help you today? Ask me about domain blocks, diagnostics, or router settings.",
@@ -5234,13 +5054,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2977"
]
},
{
"call": "HTTP REST API for external AI agents (Claude, GPT, Open-WebUI) served at /cgi-bin/tachyon-agent/",
"key": "HTTP REST API for external AI agents (Claude, GPT, Open-WebUI) served at /cgi-bin/tachyon-agent/",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:727"
]
},
{
"call": "HWID",
"key": "HWID",
@@ -6398,8 +6211,7 @@
"call": "Keeps FakeIP cache persistent across reboots and pre-resolves popular blocked domains on startup so first-visit latency is 0 ms.",
"key": "Keeps FakeIP cache persistent across reboots and pre-resolves popular blocked domains on startup so first-visit latency is 0 ms.",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:996",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:532"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:996"
]
},
{
@@ -6555,8 +6367,7 @@
"call": "LM Studio (Local PC / Server)",
"key": "LM Studio (Local PC / Server)",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1779",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:964"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1779"
]
},
{
@@ -6648,13 +6459,6 @@
"src/tachyon/tabs/updates/initController.ts:1276"
]
},
{
"call": "Loading…",
"key": "Loading…",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1318"
]
},
{
"call": "Local Address",
"key": "Local Address",
@@ -6674,7 +6478,7 @@
"key": "lx",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6083",
"src/tachyon/helpers/singBoxVariant.ts:62"
"src/tachyon/helpers/singBoxVariant.ts:59"
]
},
{
@@ -6904,13 +6708,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:541"
]
},
{
"call": "Monitoring & Analytics",
"key": "Monitoring & Analytics",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:675"
]
},
{
"call": "Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour.",
"key": "Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour.",
@@ -6918,20 +6715,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1957"
]
},
{
"call": "Move down",
"key": "Move down",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1148"
]
},
{
"call": "Move up",
"key": "Move up",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1137"
]
},
{
"call": "MTU",
"key": "MTU",
@@ -7137,8 +6920,7 @@
"call": "No active routing sections found.",
"key": "No active routing sections found.",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:704",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1256"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:704"
]
},
{
@@ -7415,8 +7197,8 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19467",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19477",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19487",
"src/tachyon/helpers/singBoxVariant.ts:38",
"src/tachyon/helpers/singBoxVariant.ts:46",
"src/tachyon/helpers/singBoxVariant.ts:35",
"src/tachyon/helpers/singBoxVariant.ts:43",
"src/tachyon/tabs/updates/initController.ts:1237",
"src/tachyon/tabs/updates/initController.ts:1251",
"src/tachyon/tabs/updates/initController.ts:1265",
@@ -7585,8 +7367,7 @@
"call": "Ollama (Local PC / Server)",
"key": "Ollama (Local PC / Server)",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1778",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:956"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1778"
]
},
{
@@ -7687,13 +7468,6 @@
"src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:31"
]
},
{
"call": "OpenWrt Network Interfaces",
"key": "OpenWrt Network Interfaces",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:860"
]
},
{
"call": "Operation completed successfully!",
"key": "Operation completed successfully!",
@@ -7756,13 +7530,6 @@
"src/tachyon/methods/shell/index.ts:577"
]
},
{
"call": "Optimization",
"key": "Optimization",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:704"
]
},
{
"call": "Optimize AWG MTU",
"key": "Optimize AWG MTU",
@@ -7802,13 +7569,6 @@
"src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1018"
]
},
{
"call": "Optional for local LLM",
"key": "Optional for local LLM",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1045"
]
},
{
"call": "Optional tls-auth or tls-crypt key",
"key": "Optional tls-auth or tls-crypt key",
@@ -8088,14 +7848,6 @@
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:98"
]
},
{
"call": "Per-Device Routing",
"key": "Per-Device Routing",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1250",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1303"
]
},
{
"call": "Periodically check the current level and switch to a faster server even when the current one works.",
"key": "Periodically check the current level and switch to a faster server even when the current one works.",
@@ -8411,8 +8163,7 @@
"call": "Protection",
"key": "Protection",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:291",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:657"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:291"
]
},
{
@@ -9317,8 +9068,7 @@
"key": "Save",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3669",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:673",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1295"
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:673"
]
},
{
@@ -9328,20 +9078,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1721"
]
},
{
"call": "Save AI Watchdog Settings",
"key": "Save AI Watchdog Settings",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1097"
]
},
{
"call": "Save Smart Detect Settings",
"key": "Save Smart Detect Settings",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1235"
]
},
{
"call": "Save Snapshot",
"key": "Save Snapshot",
@@ -9350,16 +9086,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:645"
]
},
{
"call": "Saving…",
"key": "Saving…",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:550",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1095",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1235",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1295"
]
},
{
"call": "Schedule",
"key": "Schedule",
@@ -9429,13 +9155,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1746"
]
},
{
"call": "Secret token for WRITE requests",
"key": "Secret token for WRITE requests",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:738"
]
},
{
"call": "Section",
"key": "Section",
@@ -9458,13 +9177,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7262"
]
},
{
"call": "Section or network interface used for Cloudflare WARP API registration. Supports Tachyon sections (Connection, WireGuard, AmneziaWG, Interface) and OpenWrt system network devices/interfaces (awg0, wg0, tun0, etc.). Leave empty to use direct WAN / default mixed proxy.",
"key": "Section or network interface used for Cloudflare WARP API registration. Supports Tachyon sections (Connection, WireGuard, AmneziaWG, Interface) and OpenWrt system network devices/interfaces (awg0, wg0, tun0, etc.). Leave empty to use direct WAN / default mixed proxy.",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:894"
]
},
{
"call": "Section Rules Content",
"key": "Section Rules Content",
@@ -9472,13 +9184,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10231"
]
},
{
"call": "Section test order (checked = active, drag rows with △▽):",
"key": "Section test order (checked = active, drag rows with △▽):",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1222"
]
},
{
"call": "Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy.",
"key": "Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy.",
@@ -9970,9 +9675,9 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3486",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3505",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14452",
"src/tachyon/tabs/diagnostic/initController.ts:609",
"src/tachyon/methods/shell/index.ts:440",
"src/tachyon/methods/shell/index.ts:461",
"src/tachyon/tabs/diagnostic/initController.ts:609"
"src/tachyon/methods/shell/index.ts:461"
]
},
{
@@ -10248,20 +9953,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7638"
]
},
{
"call": "Smart Detect",
"key": "Smart Detect",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1192"
]
},
{
"call": "Smart Detect settings saved",
"key": "Smart Detect settings saved",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:277"
]
},
{
"call": "Snapshot name",
"key": "Snapshot name",
@@ -10554,13 +10245,6 @@
"src/tachyon/tabs/diagnostic/initController.ts:1082"
]
},
{
"call": "Start Watchdog first",
"key": "Start Watchdog first",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1098"
]
},
{
"call": "Starting…",
"key": "Starting…",
@@ -10585,7 +10269,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11403",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:333",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:733",
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:497",
"src/tachyon/tabs/dashboard/partials/renderSections.ts:670",
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481"
]
@@ -10890,13 +10573,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:6108"
]
},
{
"call": "Tachyon Sections",
"key": "Tachyon Sections",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:839"
]
},
{
"call": "Tachyon service is stopped. Start the service to display connections.",
"key": "Tachyon service is stopped. Start the service to display connections.",
@@ -11454,7 +11130,7 @@
"key": "tiny",
"places": [
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6085",
"src/tachyon/helpers/singBoxVariant.ts:64"
"src/tachyon/helpers/singBoxVariant.ts:61"
]
},
{
@@ -11927,7 +11603,7 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10170",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10171",
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18827",
"src/tachyon/helpers/singBoxVariant.ts:37",
"src/tachyon/helpers/singBoxVariant.ts:34",
"src/tachyon/services/systemInfo.service.ts:10",
"src/tachyon/services/systemInfo.service.ts:12",
"src/tachyon/services/systemInfo.service.ts:13",
@@ -12615,20 +12291,6 @@
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8430"
]
},
{
"call": "WARP Proxy Section",
"key": "WARP Proxy Section",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:814"
]
},
{
"call": "Watchdog",
"key": "Watchdog",
"places": [
"src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:494"
]
},
{
"call": "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect.",
"key": "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect.",
+14 -217
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: TACHYON\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-30 16:56+0300\n"
"PO-Revision-Date: 2026-08-30 16:56+0300\n"
"POT-Creation-Date: 2026-09-01 05:41+0300\n"
"PO-Revision-Date: 2026-09-01 05:41+0300\n"
"Last-Translator: Dushnilin <dushnilin@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
@@ -57,18 +57,6 @@ msgstr ""
msgid "+ Add URLTest"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:515
msgid "⏹ Stop"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:515
msgid "▶ Start"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1340
msgid "⚙ Advanced Settings"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13135
#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1393
msgid "⚠️ Benchmark completed. No working bypass found for this target."
@@ -136,7 +124,6 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8364
#: src/tachyon/tabs/dashboard/initController.ts:1891
#: src/tachyon/tabs/dashboard/initController.ts:1900
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:505
msgid "✔ Running"
msgstr ""
@@ -149,7 +136,6 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8364
#: src/tachyon/tabs/dashboard/initController.ts:1891
#: src/tachyon/tabs/dashboard/initController.ts:1900
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:505
msgid "✘ Stopped"
msgstr ""
@@ -203,10 +189,6 @@ msgstr ""
msgid "🔍 Combinatorial Deep Fuzzing (~40-80+)"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:760
msgid "🔑 Generate"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12904
#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1122
msgid "🗑️ Clear History"
@@ -284,9 +266,9 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16607
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:349
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:355
#: src/tachyon/tabs/dashboard/initController.ts:1127
#: src/tachyon/tabs/monitoring/initController.ts:722
#: src/tachyon/tabs/monitoring/render.ts:20
#: src/tachyon/tabs/dashboard/initController.ts:1127
msgid "Active"
msgstr ""
@@ -417,10 +399,6 @@ msgstr ""
msgid "Adult content"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:627
msgid "Advanced self-healing features. Requires Watchdog to be enabled."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:823
msgid "Advanced System"
msgstr ""
@@ -441,16 +419,11 @@ msgstr ""
msgid "AI & Watchdog"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:722
msgid "AI Agent REST API (12 Endpoints)"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1745
msgid "AI Agent REST API Bearer Token"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1813
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1037
msgid "AI API Key"
msgstr ""
@@ -469,10 +442,6 @@ msgstr ""
msgid "AI Diagnostics & Strategy Rationale"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:776
msgid "AI Doctor (ChatGPT / DeepSeek API)"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15182
#: src/tachyon/tabs/diagnostic/initController.ts:1563
msgid "AI Doctor Diagnosis"
@@ -488,7 +457,6 @@ msgid "AI Doctor failed"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1800
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1004
msgid "AI Doctor Language"
msgstr ""
@@ -503,12 +471,10 @@ msgid "AI DPI Engineer & Strategy Synthesizer"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1787
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:979
msgid "AI Model"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1770
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:901
msgid "AI Provider"
msgstr ""
@@ -532,14 +498,6 @@ msgstr ""
msgid "AI synthesis failed"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:622
msgid "AI Watchdog"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:449
msgid "AI Watchdog settings saved. Restart watchdog to apply."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12281
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16041
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16572
@@ -806,7 +764,6 @@ msgid "Auto-detected Domains"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1976
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1197
msgid "Auto-detects blocked domains from logs and adds them to the first section where they work via proxy."
msgstr ""
@@ -894,10 +851,6 @@ msgstr ""
msgid "Basic connectivity"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:732
msgid "Bearer Auth Token"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:875
msgid "Beginning of the schedule interval (e.g. 22:00)"
msgstr ""
@@ -1421,10 +1374,10 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10239
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1803
#: src/partials/modal/renderModal.ts:263
#: src/tachyon/tabs/dashboard/initController.ts:1267
#: src/tachyon/tabs/diagnostic/initController.ts:1553
#: src/tachyon/tabs/monitoring/initController.ts:893
#: src/tachyon/tabs/monitoring/initController.ts:948
#: src/tachyon/tabs/dashboard/initController.ts:1267
#: src/tachyon/tabs/diagnostic/initController.ts:1553
#: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:227
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:178
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:871
@@ -1498,7 +1451,7 @@ msgid "Components"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6081
#: src/tachyon/helpers/singBoxVariant.ts:60
#: src/tachyon/helpers/singBoxVariant.ts:57
msgid "compressed"
msgstr ""
@@ -1540,10 +1493,6 @@ msgstr ""
msgid "Conflict"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:781
msgid "Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9031
msgid "Connect through"
msgstr ""
@@ -1651,7 +1600,6 @@ msgid "Custom"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1824
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1059
msgid "Custom API Endpoint URL"
msgstr ""
@@ -1684,10 +1632,6 @@ msgstr ""
msgid "Custom header for handshake response"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:884
msgid "Custom interface/section"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1780
msgid "Custom OpenAI-Compatible API"
msgstr ""
@@ -1742,7 +1686,6 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1635
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1647
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:833
msgid "Default (Direct WAN / Default mixed proxy)"
msgstr ""
@@ -1798,14 +1741,6 @@ msgstr ""
msgid "Device filter"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1270
msgid "Device IPs (one per line):"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:305
msgid "Device IPs saved"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:6970
msgid "Device or IP"
msgstr ""
@@ -1819,10 +1754,6 @@ msgstr ""
msgid "Devices (MAC / IP)"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1308
msgid "Devices listed here are always routed through the assigned section, regardless of global rules."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9412
#: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:37
msgid "DHCP has DNS server"
@@ -2005,14 +1936,9 @@ msgid "DNS through section"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:995
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:527
msgid "DNS Turbo Cache"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:329
msgid "DNS Turbo Cache saved"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:934
msgid "DNS Unavailability Timeout"
msgstr ""
@@ -2252,10 +2178,6 @@ msgstr ""
msgid "Enable AI Doctor (ChatGPT / LLM Analysis)"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:796
msgid "Enable AI Doctor (LLM Integration)"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1956
msgid "Enable Anomaly Detection"
msgstr ""
@@ -2290,10 +2212,6 @@ msgstr ""
msgid "Enable DNS Continuous Check"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:546
msgid "Enable DNS Turbo Cache"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1901
msgid "Enable Firewall Reload Dedup"
msgstr ""
@@ -2327,7 +2245,6 @@ msgid "Enable Proxy Health Monitor"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1840
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:810
msgid "Enable RAG (Knowledge Base Retrieval)"
msgstr ""
@@ -2336,7 +2253,6 @@ msgid "Enable Smart Cooldowns"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1975
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1214
msgid "Enable Smart Detect"
msgstr ""
@@ -2609,12 +2525,12 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19001
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19061
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19233
#: src/tachyon/methods/shell/index.ts:171
#: src/tachyon/methods/shell/index.ts:178
#: src/tachyon/tabs/updates/initController.ts:661
#: src/tachyon/tabs/updates/initController.ts:662
#: src/tachyon/tabs/updates/initController.ts:739
#: src/tachyon/tabs/updates/initController.ts:953
#: src/tachyon/methods/shell/index.ts:171
#: src/tachyon/methods/shell/index.ts:178
msgid "Failed to execute"
msgstr ""
@@ -2705,18 +2621,6 @@ msgstr ""
msgid "Failed to run diagnostics — is the tachyon binary installed?"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:453
msgid "Failed to save AI Watchdog settings"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:313
msgid "Failed to save device IPs"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:331
msgid "Failed to save DNS Turbo Cache"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4145
#: src/tachyon/methods/shell/index.ts:1320
msgid "Failed to save fuzzer patterns"
@@ -2727,10 +2631,6 @@ msgstr ""
msgid "Failed to save patterns"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:279
msgid "Failed to save Smart Detect settings"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:670
msgid "Failed to save snapshot"
msgstr ""
@@ -3039,10 +2939,6 @@ msgstr ""
msgid "Germany (de)"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:767
msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer <token>."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10740
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:113
msgid "Get global check"
@@ -3081,10 +2977,6 @@ msgstr ""
msgid "Handshake timeout"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:630
msgid "Health Checks"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11750
#: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:14
msgid "Hello! I am Tachyon AI Assistant. How can I help you today? Ask me about domain blocks, diagnostics, or router settings."
@@ -3244,10 +3136,6 @@ msgstr ""
msgid "HTTP hosts"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:727
msgid "HTTP REST API for external AI agents (Claude, GPT, Open-WebUI) served at /cgi-bin/tachyon-agent/"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2473
msgid "HWID"
msgstr ""
@@ -3961,7 +3849,6 @@ msgid "Keep URLTest before latency-sorted servers"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:996
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:532
msgid "Keeps FakeIP cache persistent across reboots and pre-resolves popular blocked domains on startup so first-visit latency is 0 ms."
msgstr ""
@@ -4055,7 +3942,6 @@ msgid "Lists and rule sets successfully updated!"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1779
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:964
msgid "LM Studio (Local PC / Server)"
msgstr ""
@@ -4118,10 +4004,6 @@ msgstr ""
msgid "Loading..."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1318
msgid "Loading…"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8321
msgid "Local Address"
msgstr ""
@@ -4131,7 +4013,7 @@ msgid "Log Level"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6083
#: src/tachyon/helpers/singBoxVariant.ts:62
#: src/tachyon/helpers/singBoxVariant.ts:59
msgid "lx"
msgstr ""
@@ -4269,22 +4151,10 @@ msgstr ""
msgid "Monitoring"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:675
msgid "Monitoring & Analytics"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1957
msgid "Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1148
msgid "Move down"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1137
msgid "Move up"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8384
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3379
msgid "MTU"
@@ -4412,7 +4282,6 @@ msgid "No active DHCP clients found on local network."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:704
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1256
msgid "No active routing sections found."
msgstr ""
@@ -4593,8 +4462,8 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19467
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19477
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19487
#: src/tachyon/helpers/singBoxVariant.ts:38
#: src/tachyon/helpers/singBoxVariant.ts:46
#: src/tachyon/helpers/singBoxVariant.ts:35
#: src/tachyon/helpers/singBoxVariant.ts:43
#: src/tachyon/tabs/updates/initController.ts:1237
#: src/tachyon/tabs/updates/initController.ts:1251
#: src/tachyon/tabs/updates/initController.ts:1265
@@ -4704,7 +4573,6 @@ msgid "Obfuscation password"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1778
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:956
msgid "Ollama (Local PC / Server)"
msgstr ""
@@ -4767,10 +4635,6 @@ msgstr ""
msgid "Open Project Page"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:860
msgid "OpenWrt Network Interfaces"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18402
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:324
msgid "Operation completed successfully!"
@@ -4812,10 +4676,6 @@ msgstr ""
msgid "Operation timed out"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:704
msgid "Optimization"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14782
#: src/tachyon/tabs/diagnostic/initController.ts:1100
msgid "Optimize AWG MTU"
@@ -4840,10 +4700,6 @@ msgstr ""
msgid "Optional context (e.g. \"Rostelecom, YouTube 4K buffering is slow\")..."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1045
msgid "Optional for local LLM"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8743
msgid "Optional tls-auth or tls-crypt key"
msgstr ""
@@ -5012,11 +4868,6 @@ msgstr ""
msgid "Pending..."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1250
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1303
msgid "Per-Device Routing"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3158
msgid "Periodically check the current level and switch to a faster server even when the current one works."
msgstr ""
@@ -5203,7 +5054,6 @@ msgid "Profile Name"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:291
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:657
msgid "Protection"
msgstr ""
@@ -5758,7 +5608,6 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3669
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:673
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1295
msgid "Save"
msgstr ""
@@ -5766,26 +5615,11 @@ msgstr ""
msgid "Save a snapshot of the working config and restore it later if something breaks."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1097
msgid "Save AI Watchdog Settings"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1235
msgid "Save Smart Detect Settings"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:466
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:645
msgid "Save Snapshot"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:550
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1095
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1235
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1295
msgid "Saving…"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:655
msgid "Schedule"
msgstr ""
@@ -5828,10 +5662,6 @@ msgstr ""
msgid "Secret token for authorizing WRITE operations (POST/PUT) on /cgi-bin/tachyon-agent/. Leave empty if auth is not required."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:738
msgid "Secret token for WRITE requests"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1654
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:437
msgid "Section"
@@ -5845,18 +5675,10 @@ msgstr ""
msgid "Section name"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:894
msgid "Section or network interface used for Cloudflare WARP API registration. Supports Tachyon sections (Connection, WireGuard, AmneziaWG, Interface) and OpenWrt system network devices/interfaces (awg0, wg0, tun0, etc.). Leave empty to use direct WAN / default mixed proxy."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10231
msgid "Section Rules Content"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1222
msgid "Section test order (checked = active, drag rows with △▽):"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1631
msgid "Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy."
msgstr ""
@@ -6149,9 +5971,9 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3486
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3505
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14452
#: src/tachyon/tabs/diagnostic/initController.ts:609
#: src/tachyon/methods/shell/index.ts:440
#: src/tachyon/methods/shell/index.ts:461
#: src/tachyon/tabs/diagnostic/initController.ts:609
msgid "Service action failed"
msgstr ""
@@ -6320,14 +6142,6 @@ msgstr ""
msgid "Skipped loopback:"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1192
msgid "Smart Detect"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:277
msgid "Smart Detect settings saved"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:643
msgid "Snapshot name"
msgstr ""
@@ -6506,10 +6320,6 @@ msgstr ""
msgid "Start watchdog"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1098
msgid "Start Watchdog first"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:335
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2124
msgid "Starting…"
@@ -6524,7 +6334,6 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11403
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:333
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:733
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:497
#: src/tachyon/tabs/dashboard/partials/renderSections.ts:670
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481
msgid "Status"
@@ -6713,10 +6522,6 @@ msgstr ""
msgid "Tachyon manages the nfqws2 process lifecycle itself, so daemon mode is not allowed here."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:839
msgid "Tachyon Sections"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16822
#: src/tachyon/tabs/monitoring/initController.ts:991
msgid "Tachyon service is stopped. Start the service to display connections."
@@ -7057,7 +6862,7 @@ msgid "Time skew tolerance"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6085
#: src/tachyon/helpers/singBoxVariant.ts:64
#: src/tachyon/helpers/singBoxVariant.ts:61
msgid "tiny"
msgstr ""
@@ -7347,7 +7152,7 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10170
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10171
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18827
#: src/tachyon/helpers/singBoxVariant.ts:37
#: src/tachyon/helpers/singBoxVariant.ts:34
#: src/tachyon/services/systemInfo.service.ts:10
#: src/tachyon/services/systemInfo.service.ts:12
#: src/tachyon/services/systemInfo.service.ts:13
@@ -7796,14 +7601,6 @@ msgstr ""
msgid "WARP Private Key"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:814
msgid "WARP Proxy Section"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:494
msgid "Watchdog"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1516
msgid "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect."
msgstr ""
+137 -137
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: TACHYON\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-30 19:56+0300\n"
"PO-Revision-Date: 2026-08-30 19:56+0300\n"
"POT-Creation-Date: 2026-09-01 08:41+0300\n"
"PO-Revision-Date: 2026-09-01 08:41+0300\n"
"Last-Translator: Dushnilin\n"
"Language-Team: none\n"
"Language: ru\n"
@@ -41,15 +41,6 @@ msgstr "+ Добавить стратегию"
msgid "+ Add URLTest"
msgstr "+ Добавить URLTest"
msgid "⏹ Stop"
msgstr "⏹ Стоп"
msgid "▶ Start"
msgstr "▶ Старт"
msgid "⚙ Advanced Settings"
msgstr "⚙ Настройки"
msgid "⚠️ Benchmark completed. No working bypass found for this target."
msgstr "⚠️ Бенчмарк завершен. Не найдено рабочих стратегий для данной цели."
@@ -128,9 +119,6 @@ msgstr "🔄 Сбросить к заводским настройкам"
msgid "🔍 Combinatorial Deep Fuzzing (~40-80+)"
msgstr "🔍 Комбинаторный глубокий фаззинг (~40-80+)"
msgid "🔑 Generate"
msgstr "🔑 Сгенерировать"
msgid "🗑️ Clear History"
msgstr "🗑️ Очистить историю"
@@ -257,9 +245,6 @@ msgstr "Chat ID администраторов"
msgid "Adult content"
msgstr "Взрослый контент"
msgid "Advanced self-healing features. Requires Watchdog to be enabled."
msgstr "Расширенные функции самовосстановления. Требуется включённый Watchdog."
msgid "Advanced System"
msgstr "Расширенные настройки"
@@ -275,9 +260,6 @@ msgstr "Метод AEAD"
msgid "AI & Watchdog"
msgstr "ИИ и Watchdog"
msgid "AI Agent REST API (12 Endpoints)"
msgstr "HTTP REST API ИИ-агента (12 эндпоинтов)"
msgid "AI Agent REST API Bearer Token"
msgstr "Токен Bearer для REST API ИИ-агента"
@@ -293,9 +275,6 @@ msgstr "ИИ Чат-ассистент"
msgid "AI Diagnostics & Strategy Rationale"
msgstr "Диагностика ИИ и обоснование стратегий"
msgid "AI Doctor (ChatGPT / DeepSeek API)"
msgstr "AI Doctor (ChatGPT / DeepSeek API)"
msgid "AI Doctor Diagnosis"
msgstr "Диагностика ИИ-доктора"
@@ -329,12 +308,6 @@ msgstr "Ошибка генерации ИИ"
msgid "AI synthesis failed"
msgstr "Не удалось сгенерировать стратегии через ИИ"
msgid "AI Watchdog"
msgstr "ИИ Watchdog"
msgid "AI Watchdog settings saved. Restart watchdog to apply."
msgstr "Настройки AI Watchdog сохранены. Перезапустите watchdog для применения."
msgid "All"
msgstr "Все"
@@ -563,9 +536,6 @@ msgstr "Ошибка проверки бэкенда: %s"
msgid "Basic connectivity"
msgstr "Базовая связность"
msgid "Bearer Auth Token"
msgstr "Токен авторизации (Bearer)"
msgid "Beginning of the schedule interval (e.g. 22:00)"
msgstr "Начало интервала расписания (например, 22:00)"
@@ -932,9 +902,6 @@ msgstr "Настройте User-Agent в параметрах элемента"
msgid "Conflict"
msgstr "Конфликт"
msgid "Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis."
msgstr "Подключите ChatGPT, DeepSeek или локальную модель LLM для получения автоматических диагностических отчётов и умного анализа сетевых проблем."
msgid "Connect through"
msgstr "Подключаться через"
@@ -1022,9 +989,6 @@ msgstr "Пользовательский заголовок для инициа
msgid "Custom header for handshake response"
msgstr "Пользовательский заголовок для ответа рукопожатия"
msgid "Custom interface/section"
msgstr "Пользовательский интерфейс/секция"
msgid "Custom OpenAI-Compatible API"
msgstr "Пользовательский OpenAI-совместимый API"
@@ -1097,12 +1061,6 @@ msgstr "устр."
msgid "Device filter"
msgstr "Фильтр устройств"
msgid "Device IPs (one per line):"
msgstr "IP устройств (по одному на строку):"
msgid "Device IPs saved"
msgstr "IP устройств сохранены"
msgid "Device or IP"
msgstr "Устройство или IP"
@@ -1112,9 +1070,6 @@ msgstr "Режим устройства обновлен"
msgid "Devices (MAC / IP)"
msgstr "Устройства (MAC / IP)"
msgid "Devices listed here are always routed through the assigned section, regardless of global rules."
msgstr "Устройства из этого списка всегда маршрутизируются через назначенную секцию, независимо от глобальных правил."
msgid "DHCP has DNS server"
msgstr "DHCP содержит DNS сервер"
@@ -1235,9 +1190,6 @@ msgstr "DNS через секцию"
msgid "DNS Turbo Cache"
msgstr "Быстрый DNS-кэш"
msgid "DNS Turbo Cache saved"
msgstr "DNS Turbo Cache сохранён"
msgid "DNS Unavailability Timeout"
msgstr "Таймаут недоступности DNS"
@@ -1394,9 +1346,6 @@ msgstr "Включить адаптивные интервалы"
msgid "Enable AI Doctor (ChatGPT / LLM Analysis)"
msgstr "Включить ИИ-доктора (анализ ChatGPT / LLM)"
msgid "Enable AI Doctor (LLM Integration)"
msgstr "Включить AI Doctor (интеграция с LLM)"
msgid "Enable Anomaly Detection"
msgstr "Включить обнаружение аномалий"
@@ -1421,9 +1370,6 @@ msgstr "Включить прямой обход WAN"
msgid "Enable DNS Continuous Check"
msgstr "Непрерывная проверка DNS"
msgid "Enable DNS Turbo Cache"
msgstr "Включить быстрый DNS-кэш"
msgid "Enable Firewall Reload Dedup"
msgstr "Включить дедупликацию перезагрузки файрвола"
@@ -1676,24 +1622,12 @@ msgstr "Не удалось восстановить снапшот"
msgid "Failed to run diagnostics — is the tachyon binary installed?"
msgstr "Не удалось запустить диагностику — установлен ли бинарник tachyon?"
msgid "Failed to save AI Watchdog settings"
msgstr "Ошибка сохранения настроек AI Watchdog"
msgid "Failed to save device IPs"
msgstr "Ошибка сохранения IP устройств"
msgid "Failed to save DNS Turbo Cache"
msgstr "Не удалось сохранить DNS Turbo Cache"
msgid "Failed to save fuzzer patterns"
msgstr "Не удалось сохранить паттерны фаззера"
msgid "Failed to save patterns"
msgstr "Не удалось сохранить паттерны"
msgid "Failed to save Smart Detect settings"
msgstr "Ошибка сохранения настроек Smart Detect"
msgid "Failed to save snapshot"
msgstr "Не удалось сохранить снапшот"
@@ -1889,9 +1823,6 @@ msgstr "GeoSite / GeoIP"
msgid "Germany (de)"
msgstr "Германия (de)"
msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer <token>."
msgstr "GET-эндпоинты открыты в локальной сети. POST-эндпоинты требуют Authorization: Bearer <token>."
msgid "Get global check"
msgstr "Получить глобальную проверку"
@@ -1916,9 +1847,6 @@ msgstr "Сервис gRPC"
msgid "Handshake timeout"
msgstr "Таймаут рукопожатия"
msgid "Health Checks"
msgstr "Проверки здоровья"
msgid "Hello! I am Tachyon AI Assistant. How can I help you today? Ask me about domain blocks, diagnostics, or router settings."
msgstr "Привет! Я ИИ-ассистент Tachyon. Чем могу помочь? Задайте вопрос о блокировках, диагностике или настройках роутера."
@@ -2024,9 +1952,6 @@ msgstr "Ошибка HTTP"
msgid "HTTP hosts"
msgstr "HTTP хосты"
msgid "HTTP REST API for external AI agents (Claude, GPT, Open-WebUI) served at /cgi-bin/tachyon-agent/"
msgstr "HTTP REST API для внешних ИИ-агентов (Claude, GPT, Open-WebUI), доступен по адресу /cgi-bin/tachyon-agent/"
msgid "HWID"
msgstr "HWID"
@@ -2564,9 +2489,6 @@ msgstr "Получение списка сервисов..."
msgid "Loading..."
msgstr "Загрузка..."
msgid "Loading…"
msgstr "Загрузка…"
msgid "Local Address"
msgstr "Локальный адрес"
@@ -2669,18 +2591,9 @@ msgstr "Отслеживаемые интерфейсы"
msgid "Monitoring"
msgstr "Мониторинг"
msgid "Monitoring & Analytics"
msgstr "Мониторинг и аналитика"
msgid "Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour."
msgstr "Отслеживает частоту переподключений sing-box. Оповещает при слишком частых переподключениях."
msgid "Move down"
msgstr "Вниз"
msgid "Move up"
msgstr "Вверх"
msgid "MTU"
msgstr "MTU"
@@ -2954,9 +2867,6 @@ msgstr "Откройте настройки приоритета и введит
msgid "Open Project Page"
msgstr "Открыть страницу проекта"
msgid "OpenWrt Network Interfaces"
msgstr ""
msgid "Operation completed successfully!"
msgstr "Операция успешно завершена!"
@@ -2978,9 +2888,6 @@ msgstr "Операция запущена. Ожидание вывода лог
msgid "Operation timed out"
msgstr "Время ожидания истекло"
msgid "Optimization"
msgstr "Оптимизация"
msgid "Optimize AWG MTU"
msgstr "Оптимизировать MTU AWG"
@@ -2996,9 +2903,6 @@ msgstr "Опционально — оставьте пустым для знач
msgid "Optional context (e.g. \"Rostelecom, YouTube 4K buffering is slow\")..."
msgstr "Дополнительный контекст (напр. «Ростелеком, YouTube 4K долго буферизуется»)..."
msgid "Optional for local LLM"
msgstr "Опционально для локальных LLM"
msgid "Optional tls-auth or tls-crypt key"
msgstr "Опциональный ключ tls-auth или tls-crypt"
@@ -3110,9 +3014,6 @@ msgstr "Ожидает запуска"
msgid "Pending..."
msgstr "Ожидание..."
msgid "Per-Device Routing"
msgstr "Маршрутизация по устройствам"
msgid "Periodically check the current level and switch to a faster server even when the current one works."
msgstr "Периодически проверять текущий уровень и переключаться на более быстрый сервер, даже если текущий работает."
@@ -3596,18 +3497,9 @@ msgstr "Сохранить"
msgid "Save a snapshot of the working config and restore it later if something breaks."
msgstr "Сохранить снапшот рабочей конфигурации, чтобы восстановить её позже, если что-то сломается."
msgid "Save AI Watchdog Settings"
msgstr "Сохранить настройки AI Watchdog"
msgid "Save Smart Detect Settings"
msgstr "Сохранить настройки Smart Detect"
msgid "Save Snapshot"
msgstr "Сохранить снапшот"
msgid "Saving…"
msgstr "Сохранение…"
msgid "Schedule"
msgstr "Расписание"
@@ -3635,9 +3527,6 @@ msgstr "Секретный ключ для аутентификации удал
msgid "Secret token for authorizing WRITE operations (POST/PUT) on /cgi-bin/tachyon-agent/. Leave empty if auth is not required."
msgstr "Секретный токен для авторизации операций записи (POST/PUT) на /cgi-bin/tachyon-agent/. Оставьте пустым, если аутентификация не требуется."
msgid "Secret token for WRITE requests"
msgstr "Секретный токен для POST/PUT запросов"
msgid "Section"
msgstr "Секция"
@@ -3647,15 +3536,9 @@ msgstr "Действие секции"
msgid "Section name"
msgstr "Имя секции"
msgid "Section or network interface used for Cloudflare WARP API registration. Supports Tachyon sections (Connection, WireGuard, AmneziaWG, Interface) and OpenWrt system network devices/interfaces (awg0, wg0, tun0, etc.). Leave empty to use direct WAN / default mixed proxy."
msgstr ""
msgid "Section Rules Content"
msgstr "Содержимое правил секции"
msgid "Section test order (checked = active, drag rows with △▽):"
msgstr "Порядок проверки секций (галочка = активна, перетаскивайте △▽):"
msgid "Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy."
msgstr "Секция для регистрации Cloudflare WARP API. Если провайдер блокирует API Cloudflare на WAN, выберите секцию с прокси (с включённым смешанным прокси) или туннельный интерфейс (WireGuard / AmneziaWG / VPN). Оставьте пустым для прямого WAN / стандартного смешанного прокси."
@@ -3962,12 +3845,6 @@ msgstr "Пропущены комментарии/невалидные:"
msgid "Skipped loopback:"
msgstr "Пропущены loopback:"
msgid "Smart Detect"
msgstr "Smart Detect"
msgid "Smart Detect settings saved"
msgstr "Настройки Smart Detect сохранены"
msgid "Snapshot name"
msgstr "Имя снапшота"
@@ -4082,9 +3959,6 @@ msgstr "Время начала (ЧЧ:ММ)"
msgid "Start watchdog"
msgstr "Запустить watchdog"
msgid "Start Watchdog first"
msgstr "Сначала запустите Watchdog"
msgid "Starting…"
msgstr "Запуск…"
@@ -4211,9 +4085,6 @@ msgstr "Tachyon управляет жизненным циклом процес
msgid "Tachyon manages the nfqws2 process lifecycle itself, so daemon mode is not allowed here."
msgstr "Tachyon управляет жизненным циклом процесса nfqws2 самостоятельно, поэтому режим daemon здесь не допускается."
msgid "Tachyon Sections"
msgstr ""
msgid "Tachyon service is stopped. Start the service to display connections."
msgstr "Служба Tachyon остановлена. Запустите сервис для отображения подключений."
@@ -4853,12 +4724,6 @@ msgstr "Секция прокси для генератора WARP"
msgid "WARP Private Key"
msgstr "Приватный ключ WARP"
msgid "WARP Proxy Section"
msgstr "Секция прокси WARP"
msgid "Watchdog"
msgstr "Сторожевой таймер"
msgid "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect."
msgstr "Watchdog проверяет каждую Connection-секцию; если активная падает несколько проверок подряд, трафик переключается на живую резервную, а Telegram получает уведомление. Нужен reload конфигурации."
@@ -4958,6 +4823,141 @@ msgstr "sing-box outbound для Zapret2 настроен"
msgid "Zapret2 sing-box outbound is not configured"
msgstr "sing-box outbound для Zapret2 не настроен"
msgid "⏹ Stop"
msgstr "⏹ Стоп"
msgid "▶ Start"
msgstr "▶ Старт"
msgid "⚙ Advanced Settings"
msgstr "⚙ Настройки"
msgid "🔑 Generate"
msgstr "🔑 Сгенерировать"
msgid "Advanced self-healing features. Requires Watchdog to be enabled."
msgstr "Расширенные функции самовосстановления. Требуется включённый Watchdog."
msgid "AI Agent REST API (12 Endpoints)"
msgstr "HTTP REST API ИИ-агента (12 эндпоинтов)"
msgid "AI Doctor (ChatGPT / DeepSeek API)"
msgstr "AI Doctor (ChatGPT / DeepSeek API)"
msgid "AI Watchdog"
msgstr "ИИ Watchdog"
msgid "AI Watchdog settings saved. Restart watchdog to apply."
msgstr "Настройки AI Watchdog сохранены. Перезапустите watchdog для применения."
msgid "Bearer Auth Token"
msgstr "Токен авторизации (Bearer)"
msgid "Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis."
msgstr "Подключите ChatGPT, DeepSeek или локальную модель LLM для получения автоматических диагностических отчётов и умного анализа сетевых проблем."
msgid "Custom interface/section"
msgstr "Пользовательский интерфейс/секция"
msgid "Device IPs (one per line):"
msgstr "IP устройств (по одному на строку):"
msgid "Device IPs saved"
msgstr "IP устройств сохранены"
msgid "Devices listed here are always routed through the assigned section, regardless of global rules."
msgstr "Устройства из этого списка всегда маршрутизируются через назначенную секцию, независимо от глобальных правил."
msgid "DNS Turbo Cache saved"
msgstr "DNS Turbo Cache сохранён"
msgid "Enable AI Doctor (LLM Integration)"
msgstr "Включить AI Doctor (интеграция с LLM)"
msgid "Enable DNS Turbo Cache"
msgstr "Включить быстрый DNS-кэш"
msgid "Failed to save AI Watchdog settings"
msgstr "Ошибка сохранения настроек AI Watchdog"
msgid "Failed to save device IPs"
msgstr "Ошибка сохранения IP устройств"
msgid "Failed to save DNS Turbo Cache"
msgstr "Не удалось сохранить DNS Turbo Cache"
msgid "Failed to save Smart Detect settings"
msgstr "Ошибка сохранения настроек Smart Detect"
msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer <token>."
msgstr "GET-эндпоинты открыты в локальной сети. POST-эндпоинты требуют Authorization: Bearer <token>."
msgid "Health Checks"
msgstr "Проверки здоровья"
msgid "HTTP REST API for external AI agents (Claude, GPT, Open-WebUI) served at /cgi-bin/tachyon-agent/"
msgstr "HTTP REST API для внешних ИИ-агентов (Claude, GPT, Open-WebUI), доступен по адресу /cgi-bin/tachyon-agent/"
msgid "Loading…"
msgstr "Загрузка…"
msgid "Monitoring & Analytics"
msgstr "Мониторинг и аналитика"
msgid "Move down"
msgstr "Вниз"
msgid "Move up"
msgstr "Вверх"
msgid "OpenWrt Network Interfaces"
msgstr ""
msgid "Optimization"
msgstr "Оптимизация"
msgid "Optional for local LLM"
msgstr "Опционально для локальных LLM"
msgid "Per-Device Routing"
msgstr "Маршрутизация по устройствам"
msgid "Save AI Watchdog Settings"
msgstr "Сохранить настройки AI Watchdog"
msgid "Save Smart Detect Settings"
msgstr "Сохранить настройки Smart Detect"
msgid "Saving…"
msgstr "Сохранение…"
msgid "Secret token for WRITE requests"
msgstr "Секретный токен для POST/PUT запросов"
msgid "Section or network interface used for Cloudflare WARP API registration. Supports Tachyon sections (Connection, WireGuard, AmneziaWG, Interface) and OpenWrt system network devices/interfaces (awg0, wg0, tun0, etc.). Leave empty to use direct WAN / default mixed proxy."
msgstr ""
msgid "Section test order (checked = active, drag rows with △▽):"
msgstr "Порядок проверки секций (галочка = активна, перетаскивайте △▽):"
msgid "Smart Detect"
msgstr "Smart Detect"
msgid "Smart Detect settings saved"
msgstr "Настройки Smart Detect сохранены"
msgid "Start Watchdog first"
msgstr "Сначала запустите Watchdog"
msgid "Tachyon Sections"
msgstr ""
msgid "WARP Proxy Section"
msgstr "Секция прокси WARP"
msgid "Watchdog"
msgstr "Сторожевой таймер"
msgid "Section or tunnel interface used for Cloudflare WARP API registration. Supports Connection, WireGuard, AmneziaWG, and Interface sections. Leave empty to use direct WAN / default mixed proxy."
msgstr "Секция или туннельный интерфейс для регистрации Cloudflare WARP API. Поддерживает секции Connection, WireGuard, AmneziaWG и Interface. Оставьте пустым для прямого WAN / стандартного mixed proxy."
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "fe-app-tachyon",
"version": "1.3.8",
"version": "1.3.9",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "fe-app-tachyon",
"version": "1.3.8",
"version": "1.3.9",
"license": "MIT",
"devDependencies": {
"@babel/parser": "7.28.4",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "fe-app-tachyon",
"version": "1.3.8",
"version": "1.3.9",
"license": "MIT",
"type": "module",
"scripts": {
@@ -8,17 +8,13 @@ type SingBoxVariantFields = {
sing_box_repo_url?: string;
};
export function isExtendedSingBoxVersion(version?: string) {
function isExtendedSingBoxVersion(version?: string) {
return (
String(version || '').includes('extended') ||
String(version || '').includes('-lx')
);
}
export function isLxSingBoxVersion(version?: string) {
return String(version || '').includes('-lx');
}
function isVersionPlaceholder(version?: string) {
const normalized = String(version || '')
.trim()
+1 -1
View File
@@ -13,7 +13,7 @@ const RESERVED_RUNTIME_TAGS = new Set([
'bypass-out',
]);
export function allocateRuntimeTag(base: string, postfix: string): string {
function allocateRuntimeTag(base: string, postfix: string): string {
let suffix = 1;
let candidate = `${base}-${postfix}`;
File diff suppressed because it is too large Load Diff
+137 -137
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: TACHYON\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-30 19:56+0300\n"
"PO-Revision-Date: 2026-08-30 19:56+0300\n"
"POT-Creation-Date: 2026-09-01 08:41+0300\n"
"PO-Revision-Date: 2026-09-01 08:41+0300\n"
"Last-Translator: Dushnilin\n"
"Language-Team: none\n"
"Language: ru\n"
@@ -41,15 +41,6 @@ msgstr "+ Добавить стратегию"
msgid "+ Add URLTest"
msgstr "+ Добавить URLTest"
msgid "⏹ Stop"
msgstr "⏹ Стоп"
msgid "▶ Start"
msgstr "▶ Старт"
msgid "⚙ Advanced Settings"
msgstr "⚙ Настройки"
msgid "⚠️ Benchmark completed. No working bypass found for this target."
msgstr "⚠️ Бенчмарк завершен. Не найдено рабочих стратегий для данной цели."
@@ -128,9 +119,6 @@ msgstr "🔄 Сбросить к заводским настройкам"
msgid "🔍 Combinatorial Deep Fuzzing (~40-80+)"
msgstr "🔍 Комбинаторный глубокий фаззинг (~40-80+)"
msgid "🔑 Generate"
msgstr "🔑 Сгенерировать"
msgid "🗑️ Clear History"
msgstr "🗑️ Очистить историю"
@@ -257,9 +245,6 @@ msgstr "Chat ID администраторов"
msgid "Adult content"
msgstr "Взрослый контент"
msgid "Advanced self-healing features. Requires Watchdog to be enabled."
msgstr "Расширенные функции самовосстановления. Требуется включённый Watchdog."
msgid "Advanced System"
msgstr "Расширенные настройки"
@@ -275,9 +260,6 @@ msgstr "Метод AEAD"
msgid "AI & Watchdog"
msgstr "ИИ и Watchdog"
msgid "AI Agent REST API (12 Endpoints)"
msgstr "HTTP REST API ИИ-агента (12 эндпоинтов)"
msgid "AI Agent REST API Bearer Token"
msgstr "Токен Bearer для REST API ИИ-агента"
@@ -293,9 +275,6 @@ msgstr "ИИ Чат-ассистент"
msgid "AI Diagnostics & Strategy Rationale"
msgstr "Диагностика ИИ и обоснование стратегий"
msgid "AI Doctor (ChatGPT / DeepSeek API)"
msgstr "AI Doctor (ChatGPT / DeepSeek API)"
msgid "AI Doctor Diagnosis"
msgstr "Диагностика ИИ-доктора"
@@ -329,12 +308,6 @@ msgstr "Ошибка генерации ИИ"
msgid "AI synthesis failed"
msgstr "Не удалось сгенерировать стратегии через ИИ"
msgid "AI Watchdog"
msgstr "ИИ Watchdog"
msgid "AI Watchdog settings saved. Restart watchdog to apply."
msgstr "Настройки AI Watchdog сохранены. Перезапустите watchdog для применения."
msgid "All"
msgstr "Все"
@@ -563,9 +536,6 @@ msgstr "Ошибка проверки бэкенда: %s"
msgid "Basic connectivity"
msgstr "Базовая связность"
msgid "Bearer Auth Token"
msgstr "Токен авторизации (Bearer)"
msgid "Beginning of the schedule interval (e.g. 22:00)"
msgstr "Начало интервала расписания (например, 22:00)"
@@ -932,9 +902,6 @@ msgstr "Настройте User-Agent в параметрах элемента"
msgid "Conflict"
msgstr "Конфликт"
msgid "Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis."
msgstr "Подключите ChatGPT, DeepSeek или локальную модель LLM для получения автоматических диагностических отчётов и умного анализа сетевых проблем."
msgid "Connect through"
msgstr "Подключаться через"
@@ -1022,9 +989,6 @@ msgstr "Пользовательский заголовок для инициа
msgid "Custom header for handshake response"
msgstr "Пользовательский заголовок для ответа рукопожатия"
msgid "Custom interface/section"
msgstr "Пользовательский интерфейс/секция"
msgid "Custom OpenAI-Compatible API"
msgstr "Пользовательский OpenAI-совместимый API"
@@ -1097,12 +1061,6 @@ msgstr "устр."
msgid "Device filter"
msgstr "Фильтр устройств"
msgid "Device IPs (one per line):"
msgstr "IP устройств (по одному на строку):"
msgid "Device IPs saved"
msgstr "IP устройств сохранены"
msgid "Device or IP"
msgstr "Устройство или IP"
@@ -1112,9 +1070,6 @@ msgstr "Режим устройства обновлен"
msgid "Devices (MAC / IP)"
msgstr "Устройства (MAC / IP)"
msgid "Devices listed here are always routed through the assigned section, regardless of global rules."
msgstr "Устройства из этого списка всегда маршрутизируются через назначенную секцию, независимо от глобальных правил."
msgid "DHCP has DNS server"
msgstr "DHCP содержит DNS сервер"
@@ -1235,9 +1190,6 @@ msgstr "DNS через секцию"
msgid "DNS Turbo Cache"
msgstr "Быстрый DNS-кэш"
msgid "DNS Turbo Cache saved"
msgstr "DNS Turbo Cache сохранён"
msgid "DNS Unavailability Timeout"
msgstr "Таймаут недоступности DNS"
@@ -1394,9 +1346,6 @@ msgstr "Включить адаптивные интервалы"
msgid "Enable AI Doctor (ChatGPT / LLM Analysis)"
msgstr "Включить ИИ-доктора (анализ ChatGPT / LLM)"
msgid "Enable AI Doctor (LLM Integration)"
msgstr "Включить AI Doctor (интеграция с LLM)"
msgid "Enable Anomaly Detection"
msgstr "Включить обнаружение аномалий"
@@ -1421,9 +1370,6 @@ msgstr "Включить прямой обход WAN"
msgid "Enable DNS Continuous Check"
msgstr "Непрерывная проверка DNS"
msgid "Enable DNS Turbo Cache"
msgstr "Включить быстрый DNS-кэш"
msgid "Enable Firewall Reload Dedup"
msgstr "Включить дедупликацию перезагрузки файрвола"
@@ -1676,24 +1622,12 @@ msgstr "Не удалось восстановить снапшот"
msgid "Failed to run diagnostics — is the tachyon binary installed?"
msgstr "Не удалось запустить диагностику — установлен ли бинарник tachyon?"
msgid "Failed to save AI Watchdog settings"
msgstr "Ошибка сохранения настроек AI Watchdog"
msgid "Failed to save device IPs"
msgstr "Ошибка сохранения IP устройств"
msgid "Failed to save DNS Turbo Cache"
msgstr "Не удалось сохранить DNS Turbo Cache"
msgid "Failed to save fuzzer patterns"
msgstr "Не удалось сохранить паттерны фаззера"
msgid "Failed to save patterns"
msgstr "Не удалось сохранить паттерны"
msgid "Failed to save Smart Detect settings"
msgstr "Ошибка сохранения настроек Smart Detect"
msgid "Failed to save snapshot"
msgstr "Не удалось сохранить снапшот"
@@ -1889,9 +1823,6 @@ msgstr "GeoSite / GeoIP"
msgid "Germany (de)"
msgstr "Германия (de)"
msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer <token>."
msgstr "GET-эндпоинты открыты в локальной сети. POST-эндпоинты требуют Authorization: Bearer <token>."
msgid "Get global check"
msgstr "Получить глобальную проверку"
@@ -1916,9 +1847,6 @@ msgstr "Сервис gRPC"
msgid "Handshake timeout"
msgstr "Таймаут рукопожатия"
msgid "Health Checks"
msgstr "Проверки здоровья"
msgid "Hello! I am Tachyon AI Assistant. How can I help you today? Ask me about domain blocks, diagnostics, or router settings."
msgstr "Привет! Я ИИ-ассистент Tachyon. Чем могу помочь? Задайте вопрос о блокировках, диагностике или настройках роутера."
@@ -2024,9 +1952,6 @@ msgstr "Ошибка HTTP"
msgid "HTTP hosts"
msgstr "HTTP хосты"
msgid "HTTP REST API for external AI agents (Claude, GPT, Open-WebUI) served at /cgi-bin/tachyon-agent/"
msgstr "HTTP REST API для внешних ИИ-агентов (Claude, GPT, Open-WebUI), доступен по адресу /cgi-bin/tachyon-agent/"
msgid "HWID"
msgstr "HWID"
@@ -2564,9 +2489,6 @@ msgstr "Получение списка сервисов..."
msgid "Loading..."
msgstr "Загрузка..."
msgid "Loading…"
msgstr "Загрузка…"
msgid "Local Address"
msgstr "Локальный адрес"
@@ -2669,18 +2591,9 @@ msgstr "Отслеживаемые интерфейсы"
msgid "Monitoring"
msgstr "Мониторинг"
msgid "Monitoring & Analytics"
msgstr "Мониторинг и аналитика"
msgid "Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour."
msgstr "Отслеживает частоту переподключений sing-box. Оповещает при слишком частых переподключениях."
msgid "Move down"
msgstr "Вниз"
msgid "Move up"
msgstr "Вверх"
msgid "MTU"
msgstr "MTU"
@@ -2954,9 +2867,6 @@ msgstr "Откройте настройки приоритета и введит
msgid "Open Project Page"
msgstr "Открыть страницу проекта"
msgid "OpenWrt Network Interfaces"
msgstr ""
msgid "Operation completed successfully!"
msgstr "Операция успешно завершена!"
@@ -2978,9 +2888,6 @@ msgstr "Операция запущена. Ожидание вывода лог
msgid "Operation timed out"
msgstr "Время ожидания истекло"
msgid "Optimization"
msgstr "Оптимизация"
msgid "Optimize AWG MTU"
msgstr "Оптимизировать MTU AWG"
@@ -2996,9 +2903,6 @@ msgstr "Опционально — оставьте пустым для знач
msgid "Optional context (e.g. \"Rostelecom, YouTube 4K buffering is slow\")..."
msgstr "Дополнительный контекст (напр. «Ростелеком, YouTube 4K долго буферизуется»)..."
msgid "Optional for local LLM"
msgstr "Опционально для локальных LLM"
msgid "Optional tls-auth or tls-crypt key"
msgstr "Опциональный ключ tls-auth или tls-crypt"
@@ -3110,9 +3014,6 @@ msgstr "Ожидает запуска"
msgid "Pending..."
msgstr "Ожидание..."
msgid "Per-Device Routing"
msgstr "Маршрутизация по устройствам"
msgid "Periodically check the current level and switch to a faster server even when the current one works."
msgstr "Периодически проверять текущий уровень и переключаться на более быстрый сервер, даже если текущий работает."
@@ -3596,18 +3497,9 @@ msgstr "Сохранить"
msgid "Save a snapshot of the working config and restore it later if something breaks."
msgstr "Сохранить снапшот рабочей конфигурации, чтобы восстановить её позже, если что-то сломается."
msgid "Save AI Watchdog Settings"
msgstr "Сохранить настройки AI Watchdog"
msgid "Save Smart Detect Settings"
msgstr "Сохранить настройки Smart Detect"
msgid "Save Snapshot"
msgstr "Сохранить снапшот"
msgid "Saving…"
msgstr "Сохранение…"
msgid "Schedule"
msgstr "Расписание"
@@ -3635,9 +3527,6 @@ msgstr "Секретный ключ для аутентификации удал
msgid "Secret token for authorizing WRITE operations (POST/PUT) on /cgi-bin/tachyon-agent/. Leave empty if auth is not required."
msgstr "Секретный токен для авторизации операций записи (POST/PUT) на /cgi-bin/tachyon-agent/. Оставьте пустым, если аутентификация не требуется."
msgid "Secret token for WRITE requests"
msgstr "Секретный токен для POST/PUT запросов"
msgid "Section"
msgstr "Секция"
@@ -3647,15 +3536,9 @@ msgstr "Действие секции"
msgid "Section name"
msgstr "Имя секции"
msgid "Section or network interface used for Cloudflare WARP API registration. Supports Tachyon sections (Connection, WireGuard, AmneziaWG, Interface) and OpenWrt system network devices/interfaces (awg0, wg0, tun0, etc.). Leave empty to use direct WAN / default mixed proxy."
msgstr ""
msgid "Section Rules Content"
msgstr "Содержимое правил секции"
msgid "Section test order (checked = active, drag rows with △▽):"
msgstr "Порядок проверки секций (галочка = активна, перетаскивайте △▽):"
msgid "Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy."
msgstr "Секция для регистрации Cloudflare WARP API. Если провайдер блокирует API Cloudflare на WAN, выберите секцию с прокси (с включённым смешанным прокси) или туннельный интерфейс (WireGuard / AmneziaWG / VPN). Оставьте пустым для прямого WAN / стандартного смешанного прокси."
@@ -3962,12 +3845,6 @@ msgstr "Пропущены комментарии/невалидные:"
msgid "Skipped loopback:"
msgstr "Пропущены loopback:"
msgid "Smart Detect"
msgstr "Smart Detect"
msgid "Smart Detect settings saved"
msgstr "Настройки Smart Detect сохранены"
msgid "Snapshot name"
msgstr "Имя снапшота"
@@ -4082,9 +3959,6 @@ msgstr "Время начала (ЧЧ:ММ)"
msgid "Start watchdog"
msgstr "Запустить watchdog"
msgid "Start Watchdog first"
msgstr "Сначала запустите Watchdog"
msgid "Starting…"
msgstr "Запуск…"
@@ -4211,9 +4085,6 @@ msgstr "Tachyon управляет жизненным циклом процес
msgid "Tachyon manages the nfqws2 process lifecycle itself, so daemon mode is not allowed here."
msgstr "Tachyon управляет жизненным циклом процесса nfqws2 самостоятельно, поэтому режим daemon здесь не допускается."
msgid "Tachyon Sections"
msgstr ""
msgid "Tachyon service is stopped. Start the service to display connections."
msgstr "Служба Tachyon остановлена. Запустите сервис для отображения подключений."
@@ -4853,12 +4724,6 @@ msgstr "Секция прокси для генератора WARP"
msgid "WARP Private Key"
msgstr "Приватный ключ WARP"
msgid "WARP Proxy Section"
msgstr "Секция прокси WARP"
msgid "Watchdog"
msgstr "Сторожевой таймер"
msgid "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect."
msgstr "Watchdog проверяет каждую Connection-секцию; если активная падает несколько проверок подряд, трафик переключается на живую резервную, а Telegram получает уведомление. Нужен reload конфигурации."
@@ -4958,6 +4823,141 @@ msgstr "sing-box outbound для Zapret2 настроен"
msgid "Zapret2 sing-box outbound is not configured"
msgstr "sing-box outbound для Zapret2 не настроен"
msgid "⏹ Stop"
msgstr "⏹ Стоп"
msgid "▶ Start"
msgstr "▶ Старт"
msgid "⚙ Advanced Settings"
msgstr "⚙ Настройки"
msgid "🔑 Generate"
msgstr "🔑 Сгенерировать"
msgid "Advanced self-healing features. Requires Watchdog to be enabled."
msgstr "Расширенные функции самовосстановления. Требуется включённый Watchdog."
msgid "AI Agent REST API (12 Endpoints)"
msgstr "HTTP REST API ИИ-агента (12 эндпоинтов)"
msgid "AI Doctor (ChatGPT / DeepSeek API)"
msgstr "AI Doctor (ChatGPT / DeepSeek API)"
msgid "AI Watchdog"
msgstr "ИИ Watchdog"
msgid "AI Watchdog settings saved. Restart watchdog to apply."
msgstr "Настройки AI Watchdog сохранены. Перезапустите watchdog для применения."
msgid "Bearer Auth Token"
msgstr "Токен авторизации (Bearer)"
msgid "Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis."
msgstr "Подключите ChatGPT, DeepSeek или локальную модель LLM для получения автоматических диагностических отчётов и умного анализа сетевых проблем."
msgid "Custom interface/section"
msgstr "Пользовательский интерфейс/секция"
msgid "Device IPs (one per line):"
msgstr "IP устройств (по одному на строку):"
msgid "Device IPs saved"
msgstr "IP устройств сохранены"
msgid "Devices listed here are always routed through the assigned section, regardless of global rules."
msgstr "Устройства из этого списка всегда маршрутизируются через назначенную секцию, независимо от глобальных правил."
msgid "DNS Turbo Cache saved"
msgstr "DNS Turbo Cache сохранён"
msgid "Enable AI Doctor (LLM Integration)"
msgstr "Включить AI Doctor (интеграция с LLM)"
msgid "Enable DNS Turbo Cache"
msgstr "Включить быстрый DNS-кэш"
msgid "Failed to save AI Watchdog settings"
msgstr "Ошибка сохранения настроек AI Watchdog"
msgid "Failed to save device IPs"
msgstr "Ошибка сохранения IP устройств"
msgid "Failed to save DNS Turbo Cache"
msgstr "Не удалось сохранить DNS Turbo Cache"
msgid "Failed to save Smart Detect settings"
msgstr "Ошибка сохранения настроек Smart Detect"
msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer <token>."
msgstr "GET-эндпоинты открыты в локальной сети. POST-эндпоинты требуют Authorization: Bearer <token>."
msgid "Health Checks"
msgstr "Проверки здоровья"
msgid "HTTP REST API for external AI agents (Claude, GPT, Open-WebUI) served at /cgi-bin/tachyon-agent/"
msgstr "HTTP REST API для внешних ИИ-агентов (Claude, GPT, Open-WebUI), доступен по адресу /cgi-bin/tachyon-agent/"
msgid "Loading…"
msgstr "Загрузка…"
msgid "Monitoring & Analytics"
msgstr "Мониторинг и аналитика"
msgid "Move down"
msgstr "Вниз"
msgid "Move up"
msgstr "Вверх"
msgid "OpenWrt Network Interfaces"
msgstr ""
msgid "Optimization"
msgstr "Оптимизация"
msgid "Optional for local LLM"
msgstr "Опционально для локальных LLM"
msgid "Per-Device Routing"
msgstr "Маршрутизация по устройствам"
msgid "Save AI Watchdog Settings"
msgstr "Сохранить настройки AI Watchdog"
msgid "Save Smart Detect Settings"
msgstr "Сохранить настройки Smart Detect"
msgid "Saving…"
msgstr "Сохранение…"
msgid "Secret token for WRITE requests"
msgstr "Секретный токен для POST/PUT запросов"
msgid "Section or network interface used for Cloudflare WARP API registration. Supports Tachyon sections (Connection, WireGuard, AmneziaWG, Interface) and OpenWrt system network devices/interfaces (awg0, wg0, tun0, etc.). Leave empty to use direct WAN / default mixed proxy."
msgstr ""
msgid "Section test order (checked = active, drag rows with △▽):"
msgstr "Порядок проверки секций (галочка = активна, перетаскивайте △▽):"
msgid "Smart Detect"
msgstr "Smart Detect"
msgid "Smart Detect settings saved"
msgstr "Настройки Smart Detect сохранены"
msgid "Start Watchdog first"
msgstr "Сначала запустите Watchdog"
msgid "Tachyon Sections"
msgstr ""
msgid "WARP Proxy Section"
msgstr "Секция прокси WARP"
msgid "Watchdog"
msgstr "Сторожевой таймер"
msgid "Section or tunnel interface used for Cloudflare WARP API registration. Supports Connection, WireGuard, AmneziaWG, and Interface sections. Leave empty to use direct WAN / default mixed proxy."
msgstr "Секция или туннельный интерфейс для регистрации Cloudflare WARP API. Поддерживает секции Connection, WireGuard, AmneziaWG и Interface. Оставьте пустым для прямого WAN / стандартного mixed proxy."
+14 -217
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: TACHYON\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-30 16:56+0300\n"
"PO-Revision-Date: 2026-08-30 16:56+0300\n"
"POT-Creation-Date: 2026-09-01 05:41+0300\n"
"PO-Revision-Date: 2026-09-01 05:41+0300\n"
"Last-Translator: Dushnilin <dushnilin@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
@@ -57,18 +57,6 @@ msgstr ""
msgid "+ Add URLTest"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:515
msgid "⏹ Stop"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:515
msgid "▶ Start"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1340
msgid "⚙ Advanced Settings"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13135
#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1393
msgid "⚠️ Benchmark completed. No working bypass found for this target."
@@ -136,7 +124,6 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8364
#: src/tachyon/tabs/dashboard/initController.ts:1891
#: src/tachyon/tabs/dashboard/initController.ts:1900
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:505
msgid "✔ Running"
msgstr ""
@@ -149,7 +136,6 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8364
#: src/tachyon/tabs/dashboard/initController.ts:1891
#: src/tachyon/tabs/dashboard/initController.ts:1900
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:505
msgid "✘ Stopped"
msgstr ""
@@ -203,10 +189,6 @@ msgstr ""
msgid "🔍 Combinatorial Deep Fuzzing (~40-80+)"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:760
msgid "🔑 Generate"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12904
#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1122
msgid "🗑️ Clear History"
@@ -284,9 +266,9 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16607
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:349
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:355
#: src/tachyon/tabs/dashboard/initController.ts:1127
#: src/tachyon/tabs/monitoring/initController.ts:722
#: src/tachyon/tabs/monitoring/render.ts:20
#: src/tachyon/tabs/dashboard/initController.ts:1127
msgid "Active"
msgstr ""
@@ -417,10 +399,6 @@ msgstr ""
msgid "Adult content"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:627
msgid "Advanced self-healing features. Requires Watchdog to be enabled."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:823
msgid "Advanced System"
msgstr ""
@@ -441,16 +419,11 @@ msgstr ""
msgid "AI & Watchdog"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:722
msgid "AI Agent REST API (12 Endpoints)"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1745
msgid "AI Agent REST API Bearer Token"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1813
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1037
msgid "AI API Key"
msgstr ""
@@ -469,10 +442,6 @@ msgstr ""
msgid "AI Diagnostics & Strategy Rationale"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:776
msgid "AI Doctor (ChatGPT / DeepSeek API)"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15182
#: src/tachyon/tabs/diagnostic/initController.ts:1563
msgid "AI Doctor Diagnosis"
@@ -488,7 +457,6 @@ msgid "AI Doctor failed"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1800
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1004
msgid "AI Doctor Language"
msgstr ""
@@ -503,12 +471,10 @@ msgid "AI DPI Engineer & Strategy Synthesizer"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1787
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:979
msgid "AI Model"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1770
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:901
msgid "AI Provider"
msgstr ""
@@ -532,14 +498,6 @@ msgstr ""
msgid "AI synthesis failed"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:622
msgid "AI Watchdog"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:449
msgid "AI Watchdog settings saved. Restart watchdog to apply."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12281
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16041
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16572
@@ -806,7 +764,6 @@ msgid "Auto-detected Domains"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1976
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1197
msgid "Auto-detects blocked domains from logs and adds them to the first section where they work via proxy."
msgstr ""
@@ -894,10 +851,6 @@ msgstr ""
msgid "Basic connectivity"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:732
msgid "Bearer Auth Token"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:875
msgid "Beginning of the schedule interval (e.g. 22:00)"
msgstr ""
@@ -1421,10 +1374,10 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10239
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1803
#: src/partials/modal/renderModal.ts:263
#: src/tachyon/tabs/dashboard/initController.ts:1267
#: src/tachyon/tabs/diagnostic/initController.ts:1553
#: src/tachyon/tabs/monitoring/initController.ts:893
#: src/tachyon/tabs/monitoring/initController.ts:948
#: src/tachyon/tabs/dashboard/initController.ts:1267
#: src/tachyon/tabs/diagnostic/initController.ts:1553
#: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:227
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:178
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:871
@@ -1498,7 +1451,7 @@ msgid "Components"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6081
#: src/tachyon/helpers/singBoxVariant.ts:60
#: src/tachyon/helpers/singBoxVariant.ts:57
msgid "compressed"
msgstr ""
@@ -1540,10 +1493,6 @@ msgstr ""
msgid "Conflict"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:781
msgid "Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9031
msgid "Connect through"
msgstr ""
@@ -1651,7 +1600,6 @@ msgid "Custom"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1824
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1059
msgid "Custom API Endpoint URL"
msgstr ""
@@ -1684,10 +1632,6 @@ msgstr ""
msgid "Custom header for handshake response"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:884
msgid "Custom interface/section"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1780
msgid "Custom OpenAI-Compatible API"
msgstr ""
@@ -1742,7 +1686,6 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1635
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1647
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:833
msgid "Default (Direct WAN / Default mixed proxy)"
msgstr ""
@@ -1798,14 +1741,6 @@ msgstr ""
msgid "Device filter"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1270
msgid "Device IPs (one per line):"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:305
msgid "Device IPs saved"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:6970
msgid "Device or IP"
msgstr ""
@@ -1819,10 +1754,6 @@ msgstr ""
msgid "Devices (MAC / IP)"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1308
msgid "Devices listed here are always routed through the assigned section, regardless of global rules."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9412
#: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:37
msgid "DHCP has DNS server"
@@ -2005,14 +1936,9 @@ msgid "DNS through section"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:995
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:527
msgid "DNS Turbo Cache"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:329
msgid "DNS Turbo Cache saved"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:934
msgid "DNS Unavailability Timeout"
msgstr ""
@@ -2252,10 +2178,6 @@ msgstr ""
msgid "Enable AI Doctor (ChatGPT / LLM Analysis)"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:796
msgid "Enable AI Doctor (LLM Integration)"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1956
msgid "Enable Anomaly Detection"
msgstr ""
@@ -2290,10 +2212,6 @@ msgstr ""
msgid "Enable DNS Continuous Check"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:546
msgid "Enable DNS Turbo Cache"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1901
msgid "Enable Firewall Reload Dedup"
msgstr ""
@@ -2327,7 +2245,6 @@ msgid "Enable Proxy Health Monitor"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1840
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:810
msgid "Enable RAG (Knowledge Base Retrieval)"
msgstr ""
@@ -2336,7 +2253,6 @@ msgid "Enable Smart Cooldowns"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1975
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1214
msgid "Enable Smart Detect"
msgstr ""
@@ -2609,12 +2525,12 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19001
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19061
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19233
#: src/tachyon/methods/shell/index.ts:171
#: src/tachyon/methods/shell/index.ts:178
#: src/tachyon/tabs/updates/initController.ts:661
#: src/tachyon/tabs/updates/initController.ts:662
#: src/tachyon/tabs/updates/initController.ts:739
#: src/tachyon/tabs/updates/initController.ts:953
#: src/tachyon/methods/shell/index.ts:171
#: src/tachyon/methods/shell/index.ts:178
msgid "Failed to execute"
msgstr ""
@@ -2705,18 +2621,6 @@ msgstr ""
msgid "Failed to run diagnostics — is the tachyon binary installed?"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:453
msgid "Failed to save AI Watchdog settings"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:313
msgid "Failed to save device IPs"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:331
msgid "Failed to save DNS Turbo Cache"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4145
#: src/tachyon/methods/shell/index.ts:1320
msgid "Failed to save fuzzer patterns"
@@ -2727,10 +2631,6 @@ msgstr ""
msgid "Failed to save patterns"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:279
msgid "Failed to save Smart Detect settings"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:670
msgid "Failed to save snapshot"
msgstr ""
@@ -3039,10 +2939,6 @@ msgstr ""
msgid "Germany (de)"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:767
msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer <token>."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10740
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:113
msgid "Get global check"
@@ -3081,10 +2977,6 @@ msgstr ""
msgid "Handshake timeout"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:630
msgid "Health Checks"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11750
#: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:14
msgid "Hello! I am Tachyon AI Assistant. How can I help you today? Ask me about domain blocks, diagnostics, or router settings."
@@ -3244,10 +3136,6 @@ msgstr ""
msgid "HTTP hosts"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:727
msgid "HTTP REST API for external AI agents (Claude, GPT, Open-WebUI) served at /cgi-bin/tachyon-agent/"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2473
msgid "HWID"
msgstr ""
@@ -3961,7 +3849,6 @@ msgid "Keep URLTest before latency-sorted servers"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:996
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:532
msgid "Keeps FakeIP cache persistent across reboots and pre-resolves popular blocked domains on startup so first-visit latency is 0 ms."
msgstr ""
@@ -4055,7 +3942,6 @@ msgid "Lists and rule sets successfully updated!"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1779
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:964
msgid "LM Studio (Local PC / Server)"
msgstr ""
@@ -4118,10 +4004,6 @@ msgstr ""
msgid "Loading..."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1318
msgid "Loading…"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8321
msgid "Local Address"
msgstr ""
@@ -4131,7 +4013,7 @@ msgid "Log Level"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6083
#: src/tachyon/helpers/singBoxVariant.ts:62
#: src/tachyon/helpers/singBoxVariant.ts:59
msgid "lx"
msgstr ""
@@ -4269,22 +4151,10 @@ msgstr ""
msgid "Monitoring"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:675
msgid "Monitoring & Analytics"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1957
msgid "Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1148
msgid "Move down"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1137
msgid "Move up"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8384
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3379
msgid "MTU"
@@ -4412,7 +4282,6 @@ msgid "No active DHCP clients found on local network."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:704
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1256
msgid "No active routing sections found."
msgstr ""
@@ -4593,8 +4462,8 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19467
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19477
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19487
#: src/tachyon/helpers/singBoxVariant.ts:38
#: src/tachyon/helpers/singBoxVariant.ts:46
#: src/tachyon/helpers/singBoxVariant.ts:35
#: src/tachyon/helpers/singBoxVariant.ts:43
#: src/tachyon/tabs/updates/initController.ts:1237
#: src/tachyon/tabs/updates/initController.ts:1251
#: src/tachyon/tabs/updates/initController.ts:1265
@@ -4704,7 +4573,6 @@ msgid "Obfuscation password"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1778
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:956
msgid "Ollama (Local PC / Server)"
msgstr ""
@@ -4767,10 +4635,6 @@ msgstr ""
msgid "Open Project Page"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:860
msgid "OpenWrt Network Interfaces"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18402
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:324
msgid "Operation completed successfully!"
@@ -4812,10 +4676,6 @@ msgstr ""
msgid "Operation timed out"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:704
msgid "Optimization"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14782
#: src/tachyon/tabs/diagnostic/initController.ts:1100
msgid "Optimize AWG MTU"
@@ -4840,10 +4700,6 @@ msgstr ""
msgid "Optional context (e.g. \"Rostelecom, YouTube 4K buffering is slow\")..."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1045
msgid "Optional for local LLM"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8743
msgid "Optional tls-auth or tls-crypt key"
msgstr ""
@@ -5012,11 +4868,6 @@ msgstr ""
msgid "Pending..."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1250
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1303
msgid "Per-Device Routing"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3158
msgid "Periodically check the current level and switch to a faster server even when the current one works."
msgstr ""
@@ -5203,7 +5054,6 @@ msgid "Profile Name"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:291
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:657
msgid "Protection"
msgstr ""
@@ -5758,7 +5608,6 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3669
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:673
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1295
msgid "Save"
msgstr ""
@@ -5766,26 +5615,11 @@ msgstr ""
msgid "Save a snapshot of the working config and restore it later if something breaks."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1097
msgid "Save AI Watchdog Settings"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1235
msgid "Save Smart Detect Settings"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:466
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:645
msgid "Save Snapshot"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:550
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1095
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1235
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1295
msgid "Saving…"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:655
msgid "Schedule"
msgstr ""
@@ -5828,10 +5662,6 @@ msgstr ""
msgid "Secret token for authorizing WRITE operations (POST/PUT) on /cgi-bin/tachyon-agent/. Leave empty if auth is not required."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:738
msgid "Secret token for WRITE requests"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1654
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:437
msgid "Section"
@@ -5845,18 +5675,10 @@ msgstr ""
msgid "Section name"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:894
msgid "Section or network interface used for Cloudflare WARP API registration. Supports Tachyon sections (Connection, WireGuard, AmneziaWG, Interface) and OpenWrt system network devices/interfaces (awg0, wg0, tun0, etc.). Leave empty to use direct WAN / default mixed proxy."
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10231
msgid "Section Rules Content"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1222
msgid "Section test order (checked = active, drag rows with △▽):"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1631
msgid "Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy."
msgstr ""
@@ -6149,9 +5971,9 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3486
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3505
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14452
#: src/tachyon/tabs/diagnostic/initController.ts:609
#: src/tachyon/methods/shell/index.ts:440
#: src/tachyon/methods/shell/index.ts:461
#: src/tachyon/tabs/diagnostic/initController.ts:609
msgid "Service action failed"
msgstr ""
@@ -6320,14 +6142,6 @@ msgstr ""
msgid "Skipped loopback:"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1192
msgid "Smart Detect"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:277
msgid "Smart Detect settings saved"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:643
msgid "Snapshot name"
msgstr ""
@@ -6506,10 +6320,6 @@ msgstr ""
msgid "Start watchdog"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1098
msgid "Start Watchdog first"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:335
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2124
msgid "Starting…"
@@ -6524,7 +6334,6 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11403
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:333
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:733
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:497
#: src/tachyon/tabs/dashboard/partials/renderSections.ts:670
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481
msgid "Status"
@@ -6713,10 +6522,6 @@ msgstr ""
msgid "Tachyon manages the nfqws2 process lifecycle itself, so daemon mode is not allowed here."
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:839
msgid "Tachyon Sections"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16822
#: src/tachyon/tabs/monitoring/initController.ts:991
msgid "Tachyon service is stopped. Start the service to display connections."
@@ -7057,7 +6862,7 @@ msgid "Time skew tolerance"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6085
#: src/tachyon/helpers/singBoxVariant.ts:64
#: src/tachyon/helpers/singBoxVariant.ts:61
msgid "tiny"
msgstr ""
@@ -7347,7 +7152,7 @@ msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10170
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10171
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18827
#: src/tachyon/helpers/singBoxVariant.ts:37
#: src/tachyon/helpers/singBoxVariant.ts:34
#: src/tachyon/services/systemInfo.service.ts:10
#: src/tachyon/services/systemInfo.service.ts:12
#: src/tachyon/services/systemInfo.service.ts:13
@@ -7796,14 +7601,6 @@ msgstr ""
msgid "WARP Private Key"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:814
msgid "WARP Proxy Section"
msgstr ""
#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:494
msgid "Watchdog"
msgstr ""
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1516
msgid "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect."
msgstr ""
@@ -22,8 +22,6 @@ const DEFAULT_SING_BOX_CONFIG = "/etc/sing-box/config.json";
const NETNS_NAME = "fkpsc";
const NETNS_VETH_HOST = "fkpsc0";
const NETNS_VETH_PEER = "fkpsc1";
const XHTTP_PATCH = "";
const ICMP_TPROXY_PATCH = "";
const CONFIG_DIR = "/etc/tachyon/servicecheck";
const GEMINI_API_KEY_FILE = CONFIG_DIR + "/gemini_api_key";
@@ -92,64 +90,6 @@ function write_json(value) {
print(sprintf("%J", value), "\n");
}
function xhttp_patch() {
if (fs.stat(XHTTP_PATCH) == null) {
write_json({ success: false, message: "xHTTP-патч не установлен в пакет" });
return 1;
}
let result = capture_args([ "sh", XHTTP_PATCH ], true);
write_json({ success: result.status == 0, code: result.status, output: trim(as_string(result.output)) });
return result.status;
}
function icmp_tproxy_patch() {
if (fs.stat(ICMP_TPROXY_PATCH) == null) {
write_json({ success: false, message: "ICMP/TProxy-патч не установлен в пакет" });
return 1;
}
let result = capture_args([ "sh", ICMP_TPROXY_PATCH ], true);
write_json({ success: result.status == 0, code: result.status, output: trim(as_string(result.output)) });
return result.status;
}
function available_fixes() {
if (fs.stat(TACHYON_BIN) == null)
return [];
return [
{
id: "xhttp_import",
title: "Фикс xHTTP импорта подписок",
description: "Исправляет импорт дополнительных полей xHTTP из подписок в parser.uc Tachyon.",
risk: "Создаётся резервная копия parser.uc; патч проверяется через ucode до замены."
},
{
id: "icmp_tproxy",
title: "Фикс ping/ICMP для правил подсетей",
description: "Ограничивает метку TProxy в priority_rules протоколами TCP и UDP, чтобы ICMP не уходил в локальный TProxy-сокет.",
risk: "Создаётся резервная копия nft/apply.uc; патч проверяется через ucode. Работающий Tachyon перезапускается, live-правила проверяются, а при ошибке выполняется откат."
}
];
}
function list_fixes() {
write_json({ success: true, fixes: available_fixes() });
return 0;
}
function run_fix(id) {
if (fs.stat(TACHYON_BIN) == null) {
write_json({ success: false, message: "фиксы доступны только при установленном Tachyon" });
return 1;
}
if (as_string(id) == "xhttp_import")
return xhttp_patch();
if (as_string(id) == "icmp_tproxy")
return icmp_tproxy_patch();
write_json({ success: false, message: "неизвестный фикс Forkop" });
return 1;
}
function parse_json(value) {
try {
@@ -124,7 +124,6 @@ const PARENTAL_QUOTA_UC = LIB_DIR + "/service/parental_quota.uc";
const PACKAGES_UC = LIB_DIR + "/core/packages.uc";
const WATCHDOG_UC = LIB_DIR + "/service/watchdog.uc";
const TELEGRAM_UC = LIB_DIR + "/service/telegram.uc";
const DNS_PREFETCH_UC = LIB_DIR + "/singbox/dns_prefetch.uc";
let start_subscription_update_lock_held = false;
let subscription_caches_prepared = getenv("TACHYON_SUBSCRIPTION_CACHES_PREPARED") || "0";
@@ -813,7 +812,6 @@ function start_main() {
module_success(ZAPRET2_UC, [ "start-runtime" ]);
module_background(UPDATES_UC, [ "list-update" ]);
module_background(DNS_PREFETCH_UC, [ "prefetch" ]);
module_background(LIB_DIR + "/service/lifecycle.uc", [ "discover-awg-mtu" ]);
return 0;
}
+12 -11
View File
@@ -35,41 +35,42 @@ let t = i18n.bind("en");
// the full payload in a small on-disk map and send a short opaque token.
const CB_MAP_FILE = "/tmp/tg_cb_map.json";
const CB_MAP_MAX = 300;
let cb_map_cache = null;
function cb_map_load() {
if (cb_map_cache != null)
return cb_map_cache;
let data = fs.readfile(CB_MAP_FILE);
if (data) {
try {
let obj = json(data);
if (type(obj) == "object") return obj;
if (type(obj) == "object") {
cb_map_cache = obj;
return cb_map_cache;
}
}
catch (e) {
// A truncated map is recoverable: the tokens in it are short-lived
// and the next store rewrites the file. Starting from empty costs
// the user a "кнопка устарела" on old keyboards, which is what the
// caller reports anyway when a token is missing.
command_success_from_args([ "logger", "-t", "tachyon-telegram",
"[warn] callback map is unparseable, starting from empty: " + as_string(e) ]);
}
}
return {};
cb_map_cache = {};
return cb_map_cache;
}
function cb_map_store(token, value) {
let map = cb_map_load();
if (map[token] == value)
return;
let ks = keys(map);
if (length(ks) >= CB_MAP_MAX) {
// Drop the oldest half so long-lived keyboards keep working for a while
let pruned = {};
for (let i = int(length(ks) / 2); i < length(ks); i++)
pruned[ks[i]] = map[ks[i]];
map = pruned;
cb_map_cache = map;
}
map[token] = value;
// The token has already been embedded in the keyboard by the time this runs,
// so a failed write hands the user a button that will answer "кнопка
// устарела" the moment they press it. Silently swallowing that made the
// keyboard look intermittently broken with nothing in the log.
let stored = false;
try {
stored = fs.writefile(CB_MAP_FILE, sprintf("%J", map)) != null;
@@ -1,242 +0,0 @@
#!/usr/bin/env ucode
// DNS Turbo Cache prefetch worker.
// Resolves domains through the local DNS (127.0.0.1) to pre-populate the
// sing-box FakeIP cache so first-visit latency is 0 ms.
//
// Domain sources (in priority order):
// 1. user_domains / user_domains_text from every active tachyon section
// 2. domain / domain_suffix rule conditions from active sections
// 3. Built-in baseline list of commonly blocked services
let common = require("core.common");
let uci_core = require("core.uci");
const CONFIG_NAME = getenv("TACHYON_CONFIG_NAME") || "tachyon";
// ─── Fallback baseline list ───────────────────────────────────────────────────
// Used when a user has no custom domains configured yet. Covers the most
// popular Russian-blocked services and their CDN / API subdomains.
const BASELINE_DOMAINS = [
// ── Telegram ──────────────────────────────────────────────────────────────
"t.me", "telegram.org", "web.telegram.org", "desktop.telegram.org",
"api.telegram.org", "core.telegram.org", "cdn.telegram.org",
"updates.telegram.org", "media.telegram.org",
// ── YouTube ───────────────────────────────────────────────────────────────
"youtube.com", "www.youtube.com", "youtu.be", "m.youtube.com",
"music.youtube.com", "studio.youtube.com", "ytimg.com", "s.ytimg.com",
"i.ytimg.com", "yt3.ggpht.com", "googlevideo.com", "yt.be",
"youtubei.googleapis.com", "youtube-nocookie.com",
// ── Instagram / Meta ──────────────────────────────────────────────────────
"instagram.com", "www.instagram.com", "cdninstagram.com",
"i.instagram.com", "graph.instagram.com",
"facebook.com", "www.facebook.com", "m.facebook.com", "fbcdn.net",
"messenger.com", "www.messenger.com", "connect.facebook.net",
"whatsapp.com", "www.whatsapp.com", "web.whatsapp.com",
"media.whatsapp.net", "mmg.whatsapp.net",
// ── Twitter / X ───────────────────────────────────────────────────────────
"twitter.com", "www.twitter.com", "x.com", "www.x.com",
"t.co", "twimg.com", "abs.twimg.com", "pbs.twimg.com",
"video.twimg.com", "api.twitter.com", "api.x.com",
// ── Discord ───────────────────────────────────────────────────────────────
"discord.com", "www.discord.com", "discordapp.com", "discord.gg",
"cdn.discordapp.com", "media.discordapp.net", "gateway.discord.gg",
// ── Reddit ────────────────────────────────────────────────────────────────
"reddit.com", "www.reddit.com", "old.reddit.com", "redd.it",
"redditmedia.com", "redditstatic.com", "v.redd.it", "i.redd.it",
// ── GitHub ────────────────────────────────────────────────────────────────
"github.com", "api.github.com", "gist.github.com",
"raw.githubusercontent.com", "objects.githubusercontent.com",
"codeload.github.com", "avatars.githubusercontent.com",
"github.githubassets.com",
// ── Google ────────────────────────────────────────────────────────────────
"google.com", "www.google.com", "google.ru", "mail.google.com",
"drive.google.com", "docs.google.com", "meet.google.com",
"calendar.google.com", "photos.google.com", "accounts.google.com",
"translate.google.com", "maps.google.com", "lh3.googleusercontent.com",
// ── Netflix ───────────────────────────────────────────────────────────────
"netflix.com", "www.netflix.com", "nflxvideo.net", "nflximg.net", "nflxso.net",
// ── Spotify ───────────────────────────────────────────────────────────────
"spotify.com", "open.spotify.com", "api.spotify.com", "scdn.co",
// ── TikTok ────────────────────────────────────────────────────────────────
"tiktok.com", "www.tiktok.com", "m.tiktok.com", "tiktokcdn.com",
// ── Twitch ────────────────────────────────────────────────────────────────
"twitch.tv", "www.twitch.tv", "static-cdn.jtvnw.net", "api.twitch.tv",
// ── Wikipedia ────────────────────────────────────────────────────────────
"wikipedia.org", "ru.wikipedia.org", "en.wikipedia.org",
"upload.wikimedia.org", "wikimedia.org",
// ── LinkedIn / Pinterest / Snapchat ───────────────────────────────────────
"linkedin.com", "www.linkedin.com",
"pinterest.com", "www.pinterest.com", "i.pinimg.com",
"snapchat.com", "www.snapchat.com",
// ── Signal ────────────────────────────────────────────────────────────────
"signal.org", "www.signal.org", "cdn.signal.org",
// ── Steam / Gaming ────────────────────────────────────────────────────────
"steampowered.com", "store.steampowered.com", "steamcommunity.com",
"steamcdn-a.akamaihd.net", "cdn.cloudflare.steamstatic.com",
"epicgames.com", "www.epicgames.com",
"roblox.com", "www.roblox.com",
// ── ProtonMail / Privacy ──────────────────────────────────────────────────
"proton.me", "mail.proton.me", "protonmail.com",
// ── Medium / Substack ─────────────────────────────────────────────────────
"medium.com", "substack.com",
// ── News ──────────────────────────────────────────────────────────────────
"bbc.com", "bbc.co.uk", "reuters.com", "theguardian.com", "nytimes.com",
// ── Misc ──────────────────────────────────────────────────────────────────
"patreon.com", "canva.com", "notion.so", "figma.com",
"slack.com", "zoom.us", "dropbox.com",
];
// ─── Domain extraction from UCI sections ─────────────────────────────────────
function list_to_array(value) {
if (type(value) == "array")
return value;
let s = trim(common.as_string(value));
return s != "" ? [ s ] : [];
}
function parse_text_domains(text) {
let result = [];
for (let line in split(common.as_string(text), /[\n\r]+/)) {
// Strip full-line comments (# or // style)
line = trim(line);
if (line == "" || substr(line, 0, 1) == "#" || substr(line, 0, 2) == "//")
continue;
// Strip inline comments
line = replace(line, /[ \t]+\/\/.*$/, "");
line = replace(line, /[ \t]+#.*$/, "");
for (let token in split(line, /[,\s]+/)) {
token = trim(token);
// Strip leading dots (domain_suffix style) and wildcards
token = replace(token, /^\*?\./, "");
if (token != "" && substr(token, 0, 1) != "#" && substr(token, 0, 2) != "//")
push(result, token);
}
}
return result;
}
function collect_section_domains(section) {
let result = [];
let list_type = common.as_string(section.user_domain_list_type || "disabled");
// user_domains (UCI list, type=dynamic)
if (list_type == "dynamic") {
for (let d in list_to_array(section.user_domains))
for (let x in parse_text_domains(d))
push(result, x);
}
// user_domains_text (textarea, type=text)
if (list_type == "text") {
for (let x in parse_text_domains(common.as_string(section.user_domains_text || "")))
push(result, x);
}
// domain / domain_suffix rule conditions
for (let key in [ "domain", "domain_suffix" ]) {
for (let d in list_to_array(section[key]))
for (let x in parse_text_domains(d))
push(result, x);
let text = common.as_string(section[key + "s"] || ""); // plural textarea
if (text != "")
for (let x in parse_text_domains(text))
push(result, x);
}
return result;
}
function collect_user_domains() {
let seen = {};
let result = [];
uci_core.foreach(CONFIG_NAME, "section", function(section) {
if (section.enabled == "0")
return;
for (let domain in collect_section_domains(section)) {
domain = lc(trim(domain));
if (domain != "" && !seen[domain]) {
seen[domain] = true;
push(result, domain);
}
}
});
return result;
}
// ─── Prefetch ─────────────────────────────────────────────────────────────────
function prefetch() {
let settings = common.object_or_empty(uci_core.get_all(CONFIG_NAME, "settings"));
if (!common.bool_option(settings, "dns_turbo_cache", true))
return;
// Give sing-box time to fully initialize — poll instead of blocking sleep
let ready = false;
for (let i = 0; i < 20; i++) {
if (common.command_success_from_args(["nslookup", "localhost", "127.0.0.1"])) {
ready = true;
break;
}
common.command_success_from_args(["sleep", "1"]);
}
if (!ready) return;
// 1. Collect domains from user's actual sections (highest priority)
let seen = {};
let domains = [];
for (let d in collect_user_domains()) {
if (!seen[d]) {
seen[d] = true;
push(domains, d);
}
}
// 2. Merge baseline list (skip already queued)
for (let d in BASELINE_DOMAINS) {
d = lc(d);
if (!seen[d]) {
seen[d] = true;
push(domains, d);
}
}
// 3. Resolve all via local DNS to warm FakeIP cache (batched parallel)
let batch = [];
for (let i, domain in domains) {
push(batch, common.shell_quote(domain));
if (length(batch) >= 15 || i == length(domains) - 1) {
let batch_cmd = "for d in " + join(" ", batch) + "; do nslookup \"$d\" 127.0.0.1 >/dev/null 2>&1; done &";
common.command_success_from_args(["sh", "-c", batch_cmd]);
batch = [];
}
}
}
let mode = ARGV[0];
if (mode == "prefetch")
prefetch();