diff --git a/fe-app-tachyon/locales/calls.json b/fe-app-tachyon/locales/calls.json index 5c9243d3..a41c43e4 100644 --- a/fe-app-tachyon/locales/calls.json +++ b/fe-app-tachyon/locales/calls.json @@ -25,7 +25,7 @@ "call": "(provider default)", "key": "(provider default)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1767" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1771" ] }, { @@ -49,6 +49,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8960" ] }, + { + "call": "+ Add Strategy", + "key": "+ Add Strategy", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12509", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:803" + ] + }, { "call": "+ Add URLTest", "key": "+ Add URLTest", @@ -60,29 +68,29 @@ "call": "⏹ Stop", "key": "⏹ Stop", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:483" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:508" ] }, { "call": "▶ Start", "key": "▶ Start", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:483" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:508" ] }, { "call": "⚙ Advanced Settings", "key": "⚙ Advanced Settings", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1245" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1306" ] }, { "call": "⚠️ Benchmark completed. No working bypass found for this target.", "key": "⚠️ Benchmark completed. No working bypass found for this target.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12195", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:586" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12848", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1197" ] }, { @@ -103,38 +111,71 @@ "call": "⚡ DPI Strategy Fuzzer", "key": "⚡ DPI Strategy Fuzzer", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10582", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10668", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:162" ] }, + { + "call": "⚡ Fast (>1MB/s)", + "key": "⚡ Fast (>1MB/s)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12142", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:383" + ] + }, + { + "call": "⚡ QUIC / HTTP/3 (UDP 443)", + "key": "⚡ QUIC / HTTP/3 (UDP 443)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11970", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:187" + ] + }, { "call": "⚡ Quick Benchmark (Presets ~12-14)", "key": "⚡ Quick Benchmark (Presets ~12-14)", "places": [ - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:223" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12007", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:232" ] }, { "call": "⚡ Strategy Fuzzer & Auto-Tuner", "key": "⚡ Strategy Fuzzer & Auto-Tuner", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12346", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:768" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13028", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1418" ] }, { "call": "✅ Benchmark completed! Optimal strategy identified.", "key": "✅ Benchmark completed! Optimal strategy identified.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12195", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:585" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12848", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1196" + ] + }, + { + "call": "✅ Working only", + "key": "✅ Working only", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12133", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:374" + ] + }, + { + "call": "✈️ Telegram Suite (Web + Bot API)", + "key": "✈️ Telegram Suite (Web + Bot API)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11967", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:184" ] }, { "call": "✔ Online", "key": "✔ Online", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8219", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8305", "src/tachyon/tabs/dashboard/initController.ts:1941" ] }, @@ -142,18 +183,18 @@ "call": "✔ Running", "key": "✔ Running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8176", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8183", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8262", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8269", "src/tachyon/tabs/dashboard/initController.ts:1891", "src/tachyon/tabs/dashboard/initController.ts:1900", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:498" ] }, { "call": "✘ Offline", "key": "✘ Offline", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8219", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8305", "src/tachyon/tabs/dashboard/initController.ts:1941" ] }, @@ -161,79 +202,138 @@ "call": "✘ Stopped", "key": "✘ Stopped", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8176", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8183", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8262", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8269", "src/tachyon/tabs/dashboard/initController.ts:1891", "src/tachyon/tabs/dashboard/initController.ts:1900", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:498" ] }, { - "call": "🏆 Apply Best Strategy", - "key": "🏆 Apply Best Strategy", + "call": "🌐 Custom Target URL...", + "key": "🌐 Custom Target URL...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12081", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:447" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11971", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:188" ] }, { - "call": "🔍 Combinatorial Deep Fuzzing (~40-60)", - "key": "🔍 Combinatorial Deep Fuzzing (~40-60)", + "call": "🎬 YouTube Suite (Web + 4K Stream)", + "key": "🎬 YouTube Suite (Web + 4K Stream)", "places": [ - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:228" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11952", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:169" + ] + }, + { + "call": "🏆 Apply Best Match", + "key": "🏆 Apply Best Match", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12099", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:337" + ] + }, + { + "call": "🏴‍☠️ RuTracker Suite", + "key": "🏴‍☠️ RuTracker Suite", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11969", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:186" + ] + }, + { + "call": "💬 Discord Suite (API + WSS + CDN)", + "key": "💬 Discord Suite (API + WSS + CDN)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11957", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:174" + ] + }, + { + "call": "💾 Save Custom Patterns", + "key": "💾 Save Custom Patterns", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12458", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:743" + ] + }, + { + "call": "📸 Instagram / Meta (Web + CDN)", + "key": "📸 Instagram / Meta (Web + CDN)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11962", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:179" + ] + }, + { + "call": "🔄 Reset to Factory Defaults", + "key": "🔄 Reset to Factory Defaults", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12470", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:756" + ] + }, + { + "call": "🔍 Combinatorial Deep Fuzzing (~40-80+)", + "key": "🔍 Combinatorial Deep Fuzzing (~40-80+)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12012", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:237" ] }, { "call": "🔑 Generate", "key": "🔑 Generate", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:728" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:753" ] }, { "call": "🧠 Synthesize with AI", "key": "🧠 Synthesize with AI", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11919", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12315", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:263", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:730" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12662", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12972", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:979", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1344" ] }, { "call": "🧠 Synthesizing...", "key": "🧠 Synthesizing...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12272", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:679" - ] - }, - { - "call": "🚀 Run Benchmark Again", - "key": "🚀 Run Benchmark Again", - "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12221", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:618" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12927", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1290" ] }, { "call": "🚀 Start Benchmark", "key": "🚀 Start Benchmark", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12076", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12266", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:441", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:672" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12227", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12874", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12921", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:483", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1229", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1283" ] }, { "call": "🛑 Stop Benchmark", "key": "🛑 Stop Benchmark", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12250", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12296", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:652", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:709" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12903", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12953", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1263", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1323" + ] + }, + { + "call": "🛠️ My Custom Strategies Only", + "key": "🛠️ My Custom Strategies Only", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12014", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:239" ] }, { @@ -254,17 +354,15 @@ "call": "Action", "key": "Action", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12051", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7245", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7275", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:413" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7275" ] }, { "call": "Action failed", "key": "Action failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9182", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9268", "src/tachyon/helpers/notifyActionFailure.ts:40" ] }, @@ -275,13 +373,23 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:467" ] }, + { + "call": "Actions", + "key": "Actions", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12202", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12575", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:455", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:879" + ] + }, { "call": "Active", "key": "Active", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7578", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14918", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15503", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7664", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15600", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16185", "src/tachyon/tabs/dashboard/initController.ts:1127", "src/tachyon/tabs/monitoring/initController.ts:722", "src/tachyon/tabs/monitoring/render.ts:20" @@ -307,7 +415,7 @@ "call": "Active Bootstrap DNS", "key": "Active Bootstrap DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9277", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9363", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:56" ] }, @@ -325,7 +433,7 @@ "call": "Active Connections", "key": "Active Connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8162", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8248", "src/tachyon/tabs/dashboard/initController.ts:1876" ] }, @@ -333,7 +441,7 @@ "call": "Active Main DNS", "key": "Active Main DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9284", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9370", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67" ] }, @@ -341,7 +449,7 @@ "call": "Active routes", "key": "Active routes", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10988", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11074", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:245" ] }, @@ -375,6 +483,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:166" ] }, + { + "call": "Add Custom DPI Strategy", + "key": "Add Custom DPI Strategy", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12543", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:843" + ] + }, { "call": "Add prefix to nodes", "key": "Add prefix to nodes", @@ -421,7 +537,7 @@ "call": "Additional marking rules found", "key": "Additional marking rules found", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9619", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:106" ] }, @@ -466,7 +582,7 @@ "call": "Administrator Chat IDs", "key": "Administrator Chat IDs", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2186" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2190" ] }, { @@ -480,7 +596,7 @@ "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:595" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:620" ] }, { @@ -522,29 +638,29 @@ "call": "AI Agent REST API (12 Endpoints)", "key": "AI Agent REST API (12 Endpoints)", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:690" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:715" ] }, { "call": "AI Agent REST API Bearer Token", "key": "AI Agent REST API Bearer Token", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1718" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1722" ] }, { "call": "AI API Key", "key": "AI API Key", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1786", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:942" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1790", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1003" ] }, { "call": "AI Chat & Tachyon Assistant", "key": "AI Chat & Tachyon Assistant", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11732", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:235" ] }, @@ -552,7 +668,7 @@ "call": "AI Chat Assistant", "key": "AI Chat Assistant", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10572", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10658", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:152" ] }, @@ -560,22 +676,22 @@ "call": "AI Diagnostics & Strategy Rationale", "key": "AI Diagnostics & Strategy Rationale", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11937", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:284" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12680", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1000" ] }, { "call": "AI Doctor (ChatGPT / DeepSeek API)", "key": "AI Doctor (ChatGPT / DeepSeek API)", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:744" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:769" ] }, { "call": "AI Doctor Diagnosis", "key": "AI Doctor Diagnosis", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14078", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14760", "src/tachyon/tabs/diagnostic/initController.ts:1563" ] }, @@ -583,9 +699,9 @@ "call": "AI Doctor failed", "key": "AI Doctor failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13539", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14081", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14089", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14221", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14763", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14771", "src/tachyon/tabs/diagnostic/initController.ts:857", "src/tachyon/tabs/diagnostic/initController.ts:1569", "src/tachyon/tabs/diagnostic/initController.ts:1577" @@ -595,39 +711,47 @@ "call": "AI Doctor Language", "key": "AI Doctor Language", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1773", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:909" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1777", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:970" ] }, { - "call": "AI DPI Engineer & Strategy Synthesizer (RAG-Powered)", - "key": "AI DPI Engineer & Strategy Synthesizer (RAG-Powered)", + "call": "AI Doctor RAG", + "key": "AI Doctor RAG", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11962", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:312" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11891", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:91" + ] + }, + { + "call": "AI DPI Engineer & Strategy Synthesizer", + "key": "AI DPI Engineer & Strategy Synthesizer", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12702", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1025" ] }, { "call": "AI Model", "key": "AI Model", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1760", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:884" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1764", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:945" ] }, { "call": "AI Provider", "key": "AI Provider", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1743", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:806" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1747", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:867" ] }, { "call": "AI service error", "key": "AI service error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11659", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11745", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:151" ] }, @@ -635,55 +759,57 @@ "call": "AI successfully synthesized custom strategies!", "key": "AI successfully synthesized custom strategies!", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12288", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:698" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12943", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1309" ] }, { "call": "AI Synthesis Error", "key": "AI Synthesis Error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12309", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:724" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12966", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1338" ] }, { "call": "AI synthesis failed", "key": "AI synthesis failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12308", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:723" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12965", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1337" ] }, { "call": "AI Watchdog", "key": "AI Watchdog", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:590" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:615" ] }, { "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:417" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:442" ] }, { "call": "All", "key": "All", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14937", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15468", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12124", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15619", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16150", "src/tachyon/tabs/monitoring/initController.ts:681", - "src/tachyon/tabs/monitoring/render.ts:40" + "src/tachyon/tabs/monitoring/render.ts:40", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:365" ] }, { "call": "All checks passed — Telegram bot should work correctly", "key": "All checks passed — Telegram bot should work correctly", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2398" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2402" ] }, { @@ -698,8 +824,8 @@ "call": "All Engines (Full Matrix)", "key": "All Engines (Full Matrix)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11790", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:73" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11927", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:140" ] }, { @@ -749,8 +875,8 @@ "call": "All Routes", "key": "All Routes", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14945", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15441", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15627", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16123", "src/tachyon/tabs/monitoring/initController.ts:644", "src/tachyon/tabs/monitoring/render.ts:49" ] @@ -766,8 +892,8 @@ "call": "All services", "key": "All services", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10997", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11100", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11083", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11186", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:257", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:376" ] @@ -847,7 +973,7 @@ "call": "Allows Tachyon to send diagnostic snapshots to ChatGPT or DeepSeek API for intelligent root-cause analysis and auto-repair recommendations.", "key": "Allows Tachyon to send diagnostic snapshots to ChatGPT or DeepSeek API for intelligent root-cause analysis and auto-repair recommendations.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1732" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1736" ] }, { @@ -882,7 +1008,7 @@ "call": "Anonymized support report copied to clipboard", "key": "Anonymized support report copied to clipboard", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13614", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14296", "src/tachyon/tabs/diagnostic/initController.ts:970" ] }, @@ -890,7 +1016,7 @@ "call": "Another component action is already running", "key": "Another component action is already running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18088", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18770", "src/tachyon/tabs/updates/initController.ts:906" ] }, @@ -898,23 +1024,23 @@ "call": "API Key for OpenAI (sk-...) or DeepSeek (optional for Ollama / LM Studio)", "key": "API Key for OpenAI (sk-...) or DeepSeek (optional for Ollama / LM Studio)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1787" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1791" ] }, { "call": "Applied", "key": "Applied", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12326", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:742" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12983", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1356" ] }, { "call": "Apply", "key": "Apply", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12168", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:551" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12817", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1158" ] }, { @@ -935,15 +1061,15 @@ "call": "Apply Strategy To", "key": "Apply Strategy To", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11904", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:208" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12050", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:280" ] }, { "call": "Applying fix", "key": "Applying fix", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13744", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14426", "src/tachyon/tabs/diagnostic/initController.ts:1181" ] }, @@ -951,15 +1077,23 @@ "call": "Applying...", "key": "Applying...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13742", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14424", "src/tachyon/tabs/diagnostic/initController.ts:1179" ] }, + { + "call": "Arguments", + "key": "Arguments", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12569", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:872" + ] + }, { "call": "Ask Tachyon AI Assistant a question...", "key": "Ask Tachyon AI Assistant a question...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11583", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11669", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:60" ] }, @@ -967,7 +1101,7 @@ "call": "At least one Admin Chat ID is required", "key": "At least one Admin Chat ID is required", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2197" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2201" ] }, { @@ -996,20 +1130,28 @@ "key": "Auto", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2280", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7418", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7758", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10815", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7504", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7844", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10901", "src/tachyon/tabs/dashboard/initController.ts:923", "src/tachyon/tabs/dashboard/initController.ts:1355", "src/tachyon/tabs/dashboard/partials/renderSections.ts:452", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:35" ] }, + { + "call": "Auto Modes (--auto)", + "key": "Auto Modes (--auto)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12432", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:715" + ] + }, { "call": "Auto refresh", "key": "Auto refresh", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10401", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10487", "src/partials/modal/renderModal.ts:286" ] }, @@ -1024,7 +1166,7 @@ "call": "Auto-detected domains", "key": "Auto-detected domains", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1989" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1993" ] }, { @@ -1038,8 +1180,8 @@ "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:1949", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1102" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1953", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1163" ] }, { @@ -1060,7 +1202,7 @@ "call": "Auto-Heal Network Stack", "key": "Auto-Heal Network Stack", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13672", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14354", "src/tachyon/tabs/diagnostic/initController.ts:1094" ] }, @@ -1071,14 +1213,6 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7987" ] }, - { - "call": "Automated DPI Strategy Fuzzer & Auto-Tuner", - "key": "Automated DPI Strategy Fuzzer & Auto-Tuner", - "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11762", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:40" - ] - }, { "call": "Automatic component update checks", "key": "Automatic component update checks", @@ -1118,14 +1252,22 @@ "call": "Automatically increase check intervals when healthy (to 5 min) and decrease on problems (to 120s).", "key": "Automatically increase check intervals when healthy (to 5 min) and decrease on problems (to 120s).", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1923" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1927" + ] + }, + { + "call": "Automatically runs a diagnostic probe against the target service, queries the built-in DPI Knowledge Base, and synthesizes 3-5 custom bypass strategies tailored to your ISP.", + "key": "Automatically runs a diagnostic probe against the target service, queries the built-in DPI Knowledge Base, and synthesizes 3-5 custom bypass strategies tailored to your ISP.", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12713", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1036" ] }, { "call": "Automatically select the fastest node in the current level", "key": "Automatically select the fastest node in the current level", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7838", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7924", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3157", "src/tachyon/tabs/dashboard/initController.ts:1458" ] @@ -1141,8 +1283,8 @@ "call": "Available", "key": "Available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10885", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11075", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10971", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11161", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:125", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:346" ] @@ -1151,7 +1293,7 @@ "call": "Available actions", "key": "Available actions", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10478", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10564", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:58" ] }, @@ -1159,7 +1301,7 @@ "call": "Avg. latency", "key": "Avg. latency", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11077", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11163", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:348" ] }, @@ -1176,7 +1318,7 @@ "call": "Basic connectivity", "key": "Basic connectivity", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10832", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10918", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:58" ] }, @@ -1184,7 +1326,7 @@ "call": "Bearer Auth Token", "key": "Bearer Auth Token", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:700" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:725" ] }, { @@ -1201,28 +1343,28 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9258" ] }, + { + "call": "Benchmark & Test", + "key": "Benchmark & Test", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11888", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:88" + ] + }, { "call": "Benchmark stopped", "key": "Benchmark stopped", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12244", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:645" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12897", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1256" ] }, { "call": "Benchmarking in progress...", "key": "Benchmarking in progress...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11993", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:347" - ] - }, - { - "call": "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput.", - "key": "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput.", - "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11770", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:48" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12071", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:306" ] }, { @@ -1294,7 +1436,7 @@ "call": "Blocked resources", "key": "Blocked resources", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10833", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10919", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:59" ] }, @@ -1316,7 +1458,7 @@ "call": "Bootstrap DNS", "key": "Bootstrap DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9277", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9363", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:57" ] }, @@ -1331,15 +1473,15 @@ "call": "Bot Status", "key": "Bot Status", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2148" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2152" ] }, { "call": "Browser FakeIP check could not be completed", "key": "Browser FakeIP check could not be completed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9657", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9676", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9743", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9762", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:51", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:79" ] @@ -1348,7 +1490,7 @@ "call": "Browser is not using FakeIP", "key": "Browser is not using FakeIP", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9676", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9762", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:82" ] }, @@ -1356,7 +1498,7 @@ "call": "Browser is using FakeIP correctly", "key": "Browser is using FakeIP correctly", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9676", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9762", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:81" ] }, @@ -1364,7 +1506,7 @@ "call": "Bug report downloaded", "key": "Bug report downloaded", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14228", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14910", "src/tachyon/tabs/diagnostic/initController.ts:1745" ] }, @@ -1386,12 +1528,12 @@ "call": "ByeDPI (ciadpi)", "key": "ByeDPI (ciadpi)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11789", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:72", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:114", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:115" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11926", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:139", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1389", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1390" ] }, { @@ -1429,7 +1571,7 @@ "call": "ByeDPI package is installed", "key": "ByeDPI package is installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9929", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10015", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:71" ] }, @@ -1437,7 +1579,7 @@ "call": "ByeDPI package is not installed", "key": "ByeDPI package is not installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9929", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10015", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:72" ] }, @@ -1445,7 +1587,7 @@ "call": "ByeDPI provider binary is available", "key": "ByeDPI provider binary is available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9924", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10010", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:64" ] }, @@ -1453,7 +1595,7 @@ "call": "ByeDPI provider binary is not available", "key": "ByeDPI provider binary is not available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9924", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10010", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:65" ] }, @@ -1461,7 +1603,7 @@ "call": "ByeDPI sing-box outbound is configured", "key": "ByeDPI sing-box outbound is configured", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9944", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10030", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:107" ] }, @@ -1469,7 +1611,7 @@ "call": "ByeDPI sing-box outbound is not configured", "key": "ByeDPI sing-box outbound is not configured", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9944", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10030", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:108" ] }, @@ -1526,7 +1668,7 @@ "call": "Cancel", "key": "Cancel", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14125", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14807", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7721", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:434", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:575", @@ -1539,14 +1681,14 @@ "call": "Cannot receive checks result", "key": "Cannot receive checks result", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9257", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9321", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9502", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9565", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9727", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9811", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9899", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12478", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9343", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9407", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9588", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9651", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9813", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9897", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9985", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13160", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:26", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:27", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:172", @@ -1596,7 +1738,7 @@ "call": "Check again", "key": "Check again", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11510", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11596", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:865" ] }, @@ -1604,7 +1746,7 @@ "call": "Check all", "key": "Check all", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11460", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11546", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:793" ] }, @@ -1612,8 +1754,8 @@ "call": "Check completed!", "key": "Check completed!", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17298", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17812", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17980", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18494", "src/tachyon/tabs/updates/initController.ts:540", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:321" ] @@ -1632,8 +1774,8 @@ "call": "Check domain", "key": "Check domain", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11335", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11448", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11421", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11534", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:652", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:778" ] @@ -1642,7 +1784,7 @@ "call": "Check interval", "key": "Check interval", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7825", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7911", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2645", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3108", "src/tachyon/tabs/dashboard/initController.ts:1445" @@ -1652,7 +1794,7 @@ "call": "Check mode:", "key": "Check mode:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11014", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11100", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:276" ] }, @@ -1660,7 +1802,7 @@ "call": "Check Services", "key": "Check Services", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10592", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10678", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:172" ] }, @@ -1675,7 +1817,7 @@ "call": "Check update", "key": "Check update", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18146", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18828", "src/tachyon/tabs/updates/initController.ts:975" ] }, @@ -1683,7 +1825,7 @@ "call": "Check URL", "key": "Check URL", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7823", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7909", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2671", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3095", "src/tachyon/tabs/dashboard/initController.ts:1443" @@ -1693,7 +1835,7 @@ "call": "Check YouTube", "key": "Check YouTube", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11675", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11761", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:170" ] }, @@ -1701,7 +1843,7 @@ "call": "Checking Connection...", "key": "Checking Connection...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7954", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8040", "src/tachyon/tabs/dashboard/initController.ts:1624" ] }, @@ -1709,7 +1851,7 @@ "call": "Checking for updates...", "key": "Checking for updates...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17127", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17809", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:112" ] }, @@ -1717,16 +1859,16 @@ "call": "Checking, please wait", "key": "Checking, please wait", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9247", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9311", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9492", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9553", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9636", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9717", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9801", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9889", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12466", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14485", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9333", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9397", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9578", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9639", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9722", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9803", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9887", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9975", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13148", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15167", "src/tachyon/tabs/diagnostic/initController.ts:2051", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:14", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:15", @@ -1758,14 +1900,14 @@ "key": "Checking…", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:275", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2040" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2044" ] }, { "call": "checks", "key": "checks", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5310", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5396", "src/tachyon/tabs/diagnostic/helpers/getCheckTitle.ts:2" ] }, @@ -1773,8 +1915,8 @@ "call": "Checks failed", "key": "Checks failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9217", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9303", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9781", "src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:10", "src/tachyon/tabs/diagnostic/helpers/getMeta.ts:26" ] @@ -1783,9 +1925,9 @@ "call": "Checks passed", "key": "Checks passed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9206", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9652", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9706", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9292", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9738", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9792", "src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:23", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:43", "src/tachyon/tabs/diagnostic/helpers/getMeta.ts:13" @@ -1795,7 +1937,7 @@ "call": "Checks passed with manual DHCP", "key": "Checks passed with manual DHCP", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9229", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9315", "src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:27" ] }, @@ -1867,7 +2009,7 @@ "call": "Clear DNS cache", "key": "Clear DNS cache", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13665", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14347", "src/tachyon/tabs/diagnostic/initController.ts:1087" ] }, @@ -1952,17 +2094,17 @@ "call": "Close", "key": "Close", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7696", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10380", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10933", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11515", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11725", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12087", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14069", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15642", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15685", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17393", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17428", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7782", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10466", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11019", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11601", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11811", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12239", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14751", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16324", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16367", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18075", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18110", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3660", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10239", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1803", @@ -1974,7 +2116,7 @@ "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:227", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:178", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:871", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:454", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:497", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:442", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:488" ] @@ -1983,8 +2125,8 @@ "call": "Close all connections", "key": "Close all connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14964", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14965", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15646", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15647", "src/tachyon/tabs/monitoring/render.ts:68", "src/tachyon/tabs/monitoring/render.ts:69" ] @@ -1993,8 +2135,8 @@ "call": "Close connection", "key": "Close connection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15611", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15612", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16293", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16294", "src/tachyon/tabs/monitoring/initController.ts:860", "src/tachyon/tabs/monitoring/initController.ts:861" ] @@ -2003,8 +2145,8 @@ "call": "Closed", "key": "Closed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14927", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15509", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15609", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16191", "src/tachyon/tabs/monitoring/initController.ts:729", "src/tachyon/tabs/monitoring/render.ts:29" ] @@ -2041,7 +2183,15 @@ "call": "Comma-separated list of Telegram user IDs authorized to control the bot.", "key": "Comma-separated list of Telegram user IDs authorized to control the bot.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2187" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2191" + ] + }, + { + "call": "Command-line arguments string...", + "key": "Command-line arguments string...", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12505", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:798" ] }, { @@ -2055,7 +2205,7 @@ "call": "Component update available", "key": "Component update available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6259", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6345", "src/tachyon/services/core.service.ts:43" ] }, @@ -2077,7 +2227,7 @@ "call": "compressed", "key": "compressed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5900", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5986", "src/tachyon/helpers/singBoxVariant.ts:60" ] }, @@ -2106,7 +2256,7 @@ "call": "Config Snapshots", "key": "Config Snapshots", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1693" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1697" ] }, { @@ -2128,8 +2278,8 @@ "key": "Conflict", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12544", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13226", "src/tachyon/methods/custom/getDashboardSections.ts:1651", "src/tachyon/tabs/dashboard/partials/renderSections.ts:620", "src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:141" @@ -2139,7 +2289,7 @@ "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:749" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:774" ] }, { @@ -2163,7 +2313,7 @@ "call": "Connected Devices", "key": "Connected Devices", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13825", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14507", "src/tachyon/tabs/diagnostic/initController.ts:1276" ] }, @@ -2178,7 +2328,7 @@ "call": "Connections are unavailable", "key": "Connections are unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15737", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16419", "src/tachyon/tabs/monitoring/initController.ts:1012" ] }, @@ -2186,7 +2336,7 @@ "call": "Connectivity probe failed", "key": "Connectivity probe failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12573", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13255", "src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:174" ] }, @@ -2194,8 +2344,8 @@ "call": "Consulting DPI Knowledge Base & AI...", "key": "Consulting DPI Knowledge Base & AI...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12279", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:688" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12934", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1299" ] }, { @@ -2225,7 +2375,7 @@ "call": "Copy", "key": "Copy", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10373", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10459", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1753", "src/partials/modal/renderModal.ts:258" ] @@ -2234,7 +2384,7 @@ "call": "Copy log", "key": "Copy log", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17169", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17851", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:160" ] }, @@ -2244,7 +2394,7 @@ "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2317", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2318", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7628", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7714", "src/tachyon/tabs/dashboard/initController.ts:1192", "src/tachyon/tabs/dashboard/partials/renderSections.ts:498", "src/tachyon/tabs/dashboard/partials/renderSections.ts:499" @@ -2254,7 +2404,7 @@ "call": "Copy Support Report", "key": "Copy Support Report", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14031", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14713", "src/tachyon/tabs/diagnostic/initController.ts:1511" ] }, @@ -2262,7 +2412,7 @@ "call": "Could not compare FakeIP and control public IPs", "key": "Could not compare FakeIP and control public IPs", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9682", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9768", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:89" ] }, @@ -2277,7 +2427,7 @@ "call": "Current Diagnosis", "key": "Current Diagnosis", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13982", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14664", "src/tachyon/tabs/diagnostic/initController.ts:1452" ] }, @@ -2307,7 +2457,7 @@ "call": "Custom", "key": "Custom", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10835", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10921", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:61" ] }, @@ -2315,8 +2465,8 @@ "call": "Custom API Endpoint URL", "key": "Custom API Endpoint URL", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1797", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:964" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1801", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1025" ] }, { @@ -2337,7 +2487,7 @@ "call": "Custom domains", "key": "Custom domains", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10834", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10920", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:60" ] }, @@ -2369,18 +2519,25 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3474" ] }, + { + "call": "Custom interface/section", + "key": "Custom interface/section", + "places": [ + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:850" + ] + }, { "call": "Custom OpenAI-Compatible API", "key": "Custom OpenAI-Compatible API", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1753" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1757" ] }, { "call": "Custom OpenAI-compatible API endpoint URL (e.g. http://192.168.1.100:11434/v1/chat/completions)", "key": "Custom OpenAI-compatible API endpoint URL (e.g. http://192.168.1.100:11434/v1/chat/completions)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1798" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1802" ] }, { @@ -2391,11 +2548,11 @@ ] }, { - "call": "Custom Target URL...", - "key": "Custom Target URL...", + "call": "Custom strategy added!", + "key": "Custom strategy added!", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11852", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:148" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12528", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:826" ] }, { @@ -2438,7 +2595,7 @@ "call": "Default (auto)", "key": "Default (auto)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2313" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2317" ] }, { @@ -2446,14 +2603,8 @@ "key": "Default (Direct WAN / Default mixed proxy)", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1634", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1645" - ] - }, - { - "call": "default (service mixed proxy)", - "key": "default (service mixed proxy)", - "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:787" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1646", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:826" ] }, { @@ -2481,9 +2632,11 @@ "call": "Delete", "key": "Delete", "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12630", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1828", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:615", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:621" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:621", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:940" ] }, { @@ -2542,14 +2695,14 @@ "call": "Device IPs (one per line):", "key": "Device IPs (one per line):", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1175" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1236" ] }, { "call": "Device IPs saved", "key": "Device IPs saved", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:273" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:298" ] }, { @@ -2563,7 +2716,7 @@ "call": "Device updated", "key": "Device updated", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13900", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14582", "src/tachyon/tabs/diagnostic/initController.ts:1359" ] }, @@ -2571,14 +2724,14 @@ "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:1213" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1274" ] }, { "call": "DHCP has DNS server", "key": "DHCP has DNS server", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9231", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9317", "src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:37" ] }, @@ -2586,7 +2739,7 @@ "call": "DHCP is managed manually", "key": "DHCP is managed manually", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9231", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9317", "src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:36" ] }, @@ -2601,8 +2754,8 @@ "call": "Direct", "key": "Direct", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10806", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10812", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10892", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10898", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2704", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:25", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:32" @@ -2619,7 +2772,7 @@ "call": "Direct Bypass", "key": "Direct Bypass", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13888", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14570", "src/tachyon/tabs/diagnostic/initController.ts:1346" ] }, @@ -2634,7 +2787,7 @@ "call": "Direct WAN", "key": "Direct WAN", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13882", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14564", "src/tachyon/tabs/diagnostic/initController.ts:1337" ] }, @@ -2642,7 +2795,7 @@ "call": "Disable autostart", "key": "Disable autostart", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10514", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10600", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:94" ] }, @@ -2676,11 +2829,11 @@ ] }, { - "call": "Discord (Gateway / API / Voice)", - "key": "Discord (Gateway / API / Voice)", + "call": "Disorder Values (-d)", + "key": "Disorder Values (-d)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11848", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:144" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12420", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:703" ] }, { @@ -2710,7 +2863,7 @@ "call": "DNS Check Interval (s)", "key": "DNS Check Interval (s)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1867" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1871" ] }, { @@ -2724,7 +2877,7 @@ "call": "DNS on router", "key": "DNS on router", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9289", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9375", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:75" ] }, @@ -2875,14 +3028,14 @@ "key": "DNS Turbo Cache", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:994", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:495" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:520" ] }, { "call": "DNS Turbo Cache saved", "key": "DNS Turbo Cache saved", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:297" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:322" ] }, { @@ -2896,7 +3049,7 @@ "call": "Do not panic, everything can be fixed, just...", "key": "Do not panic, everything can be fixed, just...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12423", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13105", "src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:26" ] }, @@ -2946,9 +3099,9 @@ "call": "Doctor failed", "key": "Doctor failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13453", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13473", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13481", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14135", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14155", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14163", "src/tachyon/tabs/diagnostic/initController.ts:731", "src/tachyon/tabs/diagnostic/initController.ts:773", "src/tachyon/tabs/diagnostic/initController.ts:781" @@ -2958,9 +3111,9 @@ "call": "Doctor repair", "key": "Doctor repair", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14144", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14146", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14146", "src/tachyon/tabs/diagnostic/initController.ts:747", "src/tachyon/tabs/diagnostic/initController.ts:759", "src/tachyon/tabs/diagnostic/initController.ts:760" @@ -2970,7 +3123,7 @@ "call": "Does not resolve", "key": "Does not resolve", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9410", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9496", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:54" ] }, @@ -2999,7 +3152,7 @@ "call": "Domain test sections", "key": "Domain test sections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1961" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1965" ] }, { @@ -3042,8 +3195,8 @@ "call": "Downlink", "key": "Downlink", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8139", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8151", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8225", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8237", "src/tachyon/tabs/dashboard/initController.ts:1851", "src/tachyon/tabs/dashboard/initController.ts:1864" ] @@ -3052,7 +3205,7 @@ "call": "Download", "key": "Download", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10368", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10454", "src/partials/modal/renderModal.ts:253" ] }, @@ -3130,9 +3283,9 @@ "call": "Downloaded", "key": "Downloaded", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15635", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15682", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15821", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16317", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16364", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16503", "src/tachyon/tabs/monitoring/initController.ts:886", "src/tachyon/tabs/monitoring/initController.ts:945", "src/tachyon/tabs/monitoring/initController.ts:1134" @@ -3149,8 +3302,8 @@ "call": "DPI Engine", "key": "DPI Engine", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11803", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:88" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11940", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:155" ] }, { @@ -3239,28 +3392,28 @@ "call": "Enable Adaptive Intervals", "key": "Enable Adaptive Intervals", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1922" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1926" ] }, { "call": "Enable AI Doctor (ChatGPT / LLM Analysis)", "key": "Enable AI Doctor (ChatGPT / LLM Analysis)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1731" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1735" ] }, { "call": "Enable AI Doctor (LLM Integration)", "key": "Enable AI Doctor (LLM Integration)", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:764" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:789" ] }, { "call": "Enable Anomaly Detection", "key": "Enable Anomaly Detection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1929" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1933" ] }, { @@ -3281,7 +3434,7 @@ "call": "Enable autostart", "key": "Enable autostart", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10524", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10610", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:104" ] }, @@ -3296,14 +3449,14 @@ "call": "Enable Config Validation", "key": "Enable Config Validation", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1901" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1905" ] }, { "call": "Enable Direct WAN Bypass", "key": "Enable Direct WAN Bypass", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13673", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14355", "src/tachyon/tabs/diagnostic/initController.ts:1095" ] }, @@ -3311,35 +3464,35 @@ "call": "Enable DNS Continuous Check", "key": "Enable DNS Continuous Check", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1861" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1865" ] }, { "call": "Enable DNS Turbo Cache", "key": "Enable DNS Turbo Cache", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:514" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:539" ] }, { "call": "Enable Firewall Reload Dedup", "key": "Enable Firewall Reload Dedup", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1874" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1878" ] }, { "call": "Enable Graceful Degradation", "key": "Enable Graceful Degradation", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1908" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1912" ] }, { "call": "Enable Health Metrics", "key": "Enable Health Metrics", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1881" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1885" ] }, { @@ -3374,37 +3527,37 @@ "call": "Enable Proxy Health Monitor", "key": "Enable Proxy Health Monitor", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1837" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1841" ] }, { "call": "Enable RAG (Knowledge Base Retrieval)", "key": "Enable RAG (Knowledge Base Retrieval)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1813", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:778" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1817", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:803" ] }, { "call": "Enable Smart Cooldowns", "key": "Enable Smart Cooldowns", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1894" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1898" ] }, { "call": "Enable Smart Detect", "key": "Enable Smart Detect", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1948", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1119" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1952", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1180" ] }, { "call": "Enable Telegram Bot", "key": "Enable Telegram Bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2158" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2162" ] }, { @@ -3425,7 +3578,7 @@ "call": "Enable Watchdog", "key": "Enable Watchdog", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1705" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1709" ] }, { @@ -3446,14 +3599,14 @@ "call": "Enables the background daemon that polls Telegram for commands and sends notifications.", "key": "Enables the background daemon that polls Telegram for commands and sends notifications.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2159" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2163" ] }, { "call": "Enables the background watchdog process to monitor services and auto-recover on failures.", "key": "Enables the background watchdog process to monitor services and auto-recover on failures.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1706" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1710" ] }, { @@ -3474,8 +3627,10 @@ "call": "Engine", "key": "Engine", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12038", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:400" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12185", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12568", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:438", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:871" ] }, { @@ -3506,7 +3661,7 @@ "call": "Enter a domain or IP to check (e.g. example.com)...", "key": "Enter a domain or IP to check (e.g. example.com)...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11328", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11414", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:644" ] }, @@ -3536,7 +3691,7 @@ "call": "Enter the API token obtained from @BotFather.", "key": "Enter the API token obtained from @BotFather.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2170" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2174" ] }, { @@ -3723,7 +3878,7 @@ "call": "Failed to apply fix", "key": "Failed to apply fix", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13760", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14442", "src/tachyon/tabs/diagnostic/initController.ts:1202" ] }, @@ -3731,18 +3886,18 @@ "call": "Failed to apply strategy", "key": "Failed to apply strategy", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4017", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12330", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4026", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12987", "src/tachyon/methods/shell/index.ts:1149", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:746" + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1360" ] }, { "call": "Failed to close connection", "key": "Failed to close connection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16010", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16024", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16692", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16706", "src/tachyon/tabs/monitoring/initController.ts:1400", "src/tachyon/tabs/monitoring/initController.ts:1415" ] @@ -3751,8 +3906,8 @@ "call": "Failed to close connections", "key": "Failed to close connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16039", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16051", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16721", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16733", "src/tachyon/tabs/monitoring/initController.ts:1434", "src/tachyon/tabs/monitoring/initController.ts:1447" ] @@ -3761,15 +3916,15 @@ "call": "Failed to communicate with AI provider", "key": "Failed to communicate with AI provider", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12312", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:727" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12969", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1341" ] }, { "call": "Failed to copy report to clipboard", "key": "Failed to copy report to clipboard", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13618", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14300", "src/tachyon/tabs/diagnostic/initController.ts:974" ] }, @@ -3793,12 +3948,12 @@ "call": "Failed to execute", "key": "Failed to execute", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3277", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3280", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17897", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17897", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17957", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18129", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3283", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18579", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18579", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18639", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18811", "src/tachyon/methods/shell/index.ts:171", "src/tachyon/methods/shell/index.ts:178", "src/tachyon/tabs/updates/initController.ts:661", @@ -3811,7 +3966,7 @@ "call": "Failed to generate bug report", "key": "Failed to generate bug report", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14231", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14913", "src/tachyon/tabs/diagnostic/initController.ts:1748" ] }, @@ -3823,11 +3978,19 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8103" ] }, + { + "call": "Failed to get fuzzer patterns", + "key": "Failed to get fuzzer patterns", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4109", + "src/tachyon/methods/shell/index.ts:1274" + ] + }, { "call": "Failed to get fuzzer status", "key": "Failed to get fuzzer status", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3975", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3984", "src/tachyon/methods/shell/index.ts:1101" ] }, @@ -3835,7 +3998,7 @@ "call": "Failed to get fuzzer strategies", "key": "Failed to get fuzzer strategies", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4042", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4053", "src/tachyon/methods/shell/index.ts:1201" ] }, @@ -3857,7 +4020,7 @@ "call": "Failed to parse target list.", "key": "Failed to parse target list.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10976", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11062", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:231" ] }, @@ -3872,7 +4035,7 @@ "call": "Failed to read operation log", "key": "Failed to read operation log", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3654", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3657", "src/tachyon/methods/shell/index.ts:664" ] }, @@ -3880,10 +4043,18 @@ "call": "Failed to receive response from AI service.", "key": "Failed to receive response from AI service.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11628", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11714", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:115" ] }, + { + "call": "Failed to reset fuzzer patterns", + "key": "Failed to reset fuzzer patterns", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4161", + "src/tachyon/methods/shell/index.ts:1336" + ] + }, { "call": "Failed to reset settings", "key": "Failed to reset settings", @@ -3895,8 +4066,8 @@ "call": "Failed to restore native internet", "key": "Failed to restore native internet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14059", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14150", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14741", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14832", "src/tachyon/tabs/diagnostic/initController.ts:1543", "src/tachyon/tabs/diagnostic/initController.ts:1651" ] @@ -3912,36 +4083,52 @@ "call": "Failed to run diagnostics — is the tachyon binary installed?", "key": "Failed to run diagnostics — is the tachyon binary installed?", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2385", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2407" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2389", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2411" ] }, { "call": "Failed to save AI Watchdog settings", "key": "Failed to save AI Watchdog settings", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:421" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:446" ] }, { "call": "Failed to save device IPs", "key": "Failed to save device IPs", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:281" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:306" ] }, { "call": "Failed to save DNS Turbo Cache", "key": "Failed to save DNS Turbo Cache", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:299" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:324" + ] + }, + { + "call": "Failed to save fuzzer patterns", + "key": "Failed to save fuzzer patterns", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4135", + "src/tachyon/methods/shell/index.ts:1305" + ] + }, + { + "call": "Failed to save patterns", + "key": "Failed to save patterns", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12465", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:751" ] }, { "call": "Failed to save Smart Detect settings", "key": "Failed to save Smart Detect settings", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:247" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:272" ] }, { @@ -3955,22 +4142,22 @@ "call": "Failed to start benchmark", "key": "Failed to start benchmark", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12264", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:670" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12919", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1281" ] }, { "call": "Failed to start bot", "key": "Failed to start bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2104" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2108" ] }, { "call": "Failed to start fuzzer", "key": "Failed to start fuzzer", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3952", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3961", "src/tachyon/methods/shell/index.ts:1075" ] }, @@ -3978,8 +4165,8 @@ "call": "Failed to start service check.", "key": "Failed to start service check.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10959", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11531", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11045", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11617", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:213", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:890" ] @@ -3995,14 +4182,14 @@ "call": "Failed to stop bot", "key": "Failed to stop bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2118" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2122" ] }, { "call": "Failed to stop fuzzer", "key": "Failed to stop fuzzer", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3989", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3998", "src/tachyon/methods/shell/index.ts:1116" ] }, @@ -4017,8 +4204,8 @@ "call": "Failed to switch proxy", "key": "Failed to switch proxy", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7239", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7245", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7325", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7331", "src/tachyon/tabs/dashboard/initController.ts:700", "src/tachyon/tabs/dashboard/initController.ts:706" ] @@ -4027,7 +4214,7 @@ "call": "Failed to synthesize AI strategies", "key": "Failed to synthesize AI strategies", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4075", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4086", "src/tachyon/methods/shell/index.ts:1246" ] }, @@ -4035,7 +4222,7 @@ "call": "Failed to update device", "key": "Failed to update device", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13905", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14587", "src/tachyon/tabs/diagnostic/initController.ts:1364" ] }, @@ -4043,13 +4230,13 @@ "call": "Failed to update subscriptions", "key": "Failed to update subscriptions", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6945", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6945", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6960", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6993", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6996", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7896", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7899", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7031", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7031", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7046", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7079", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7082", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7982", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7985", "src/tachyon/tabs/dashboard/initController.ts:309", "src/tachyon/tabs/dashboard/initController.ts:310", "src/tachyon/tabs/dashboard/initController.ts:330", @@ -4070,7 +4257,7 @@ "call": "FakeIP and control checks use different public IPs", "key": "FakeIP and control checks use different public IPs", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9682", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9768", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:91" ] }, @@ -4078,7 +4265,7 @@ "call": "FakeIP and control checks use the same public IP", "key": "FakeIP and control checks use the same public IP", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9682", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9768", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:92" ] }, @@ -4086,7 +4273,7 @@ "call": "FakeIP works; public IP comparison is inconclusive", "key": "FakeIP works; public IP comparison is inconclusive", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9654", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9740", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:46" ] }, @@ -4108,14 +4295,14 @@ "call": "Faster DNS health monitoring than the default cycle. Switches bootstrap DNS on failure.", "key": "Faster DNS health monitoring than the default cycle. Switches bootstrap DNS on failure.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1862" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1866" ] }, { "call": "Faster server search interval", "key": "Faster server search interval", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7843", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7929", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3168", "src/tachyon/tabs/dashboard/initController.ts:1464" ] @@ -4124,7 +4311,7 @@ "call": "Fastest", "key": "Fastest", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4460", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4546", "src/tachyon/methods/custom/getDashboardSections.ts:661" ] }, @@ -4132,7 +4319,7 @@ "call": "Filter by service:", "key": "Filter by service:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11142", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11228", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:425" ] }, @@ -4143,6 +4330,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3321" ] }, + { + "call": "Filter:", + "key": "Filter:", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12114", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:355" + ] + }, { "call": "Finland (fi)", "key": "Finland (fi)", @@ -4154,7 +4349,7 @@ "call": "Firewall WAN port", "key": "Firewall WAN port", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9474", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9560", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:136" ] }, @@ -4162,7 +4357,7 @@ "call": "Fix applied", "key": "Fix applied", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13754", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14436", "src/tachyon/tabs/diagnostic/initController.ts:1196" ] }, @@ -4170,7 +4365,7 @@ "call": "Fix resolv.conf", "key": "Fix resolv.conf", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13659", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14341", "src/tachyon/tabs/diagnostic/initController.ts:1081" ] }, @@ -4186,8 +4381,8 @@ "call": "Fixed", "key": "Fixed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13750", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14144", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14432", "src/tachyon/tabs/diagnostic/initController.ts:753", "src/tachyon/tabs/diagnostic/initController.ts:1192" ] @@ -4196,10 +4391,26 @@ "call": "Flush Conntrack Table", "key": "Flush Conntrack Table", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13676", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14358", "src/tachyon/tabs/diagnostic/initController.ts:1098" ] }, + { + "call": "Fooling Methods (dpi-desync-fooling)", + "key": "Fooling Methods (dpi-desync-fooling)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12389", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:670" + ] + }, + { + "call": "Fooling Methods (fooling)", + "key": "Fooling Methods (fooling)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12340", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:619" + ] + }, { "call": "Force immediate download and refresh of all remote lists and rule sets", "key": "Force immediate download and refresh of all remote lists and rule sets", @@ -4267,7 +4478,7 @@ "call": "Full System Diagnostic", "key": "Full System Diagnostic", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11678", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11764", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:173" ] }, @@ -4310,7 +4521,7 @@ "call": "Generate bug report", "key": "Generate bug report", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10619", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10705", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:199" ] }, @@ -4342,7 +4553,7 @@ "call": "Generated inbound", "key": "Generated inbound", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9438", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9524", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:89" ] }, @@ -4392,14 +4603,14 @@ "call": "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer .", "key": "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer .", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:735" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:760" ] }, { "call": "Get global check", "key": "Get global check", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10533", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10619", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:113" ] }, @@ -4414,7 +4625,7 @@ "call": "Global check", "key": "Global check", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13428", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14110", "src/tachyon/tabs/diagnostic/initController.ts:703" ] }, @@ -4422,8 +4633,8 @@ "call": "Global check failed", "key": "Global check failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13439", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13443", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14121", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14125", "src/tachyon/tabs/diagnostic/initController.ts:714", "src/tachyon/tabs/diagnostic/initController.ts:718" ] @@ -4432,8 +4643,8 @@ "call": "Global Default", "key": "Global Default", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12326", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:742" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12983", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1356" ] }, { @@ -4454,14 +4665,14 @@ "call": "Health Checks", "key": "Health Checks", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:598" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:623" ] }, { "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.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11543", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11629", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:14" ] }, @@ -4578,7 +4789,7 @@ "call": "Hide values", "key": "Hide values", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10420", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10506", "src/partials/modal/renderModal.ts:310" ] }, @@ -4586,7 +4797,7 @@ "call": "Higher-level check interval", "key": "Higher-level check interval", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7830", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7916", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3132", "src/tachyon/tabs/dashboard/initController.ts:1450" ] @@ -4602,7 +4813,7 @@ "call": "History", "key": "History", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14006", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14688", "src/tachyon/tabs/diagnostic/initController.ts:1480" ] }, @@ -4610,8 +4821,8 @@ "call": "Host", "key": "Host", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15625", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15678", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16307", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16360", "src/tachyon/tabs/monitoring/initController.ts:876", "src/tachyon/tabs/monitoring/initController.ts:941" ] @@ -4634,7 +4845,7 @@ "call": "How many hours of metrics to keep (default 24).", "key": "How many hours of metrics to keep (default 24).", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1888" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1892" ] }, { @@ -4655,21 +4866,21 @@ "call": "How often to check DNS health in seconds (default 60).", "key": "How often to check DNS health in seconds (default 60).", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1868" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1872" ] }, { "call": "How often to check proxy health in seconds (fast tier, default 30).", "key": "How often to check proxy health in seconds (fast tier, default 30).", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1844" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1848" ] }, { "call": "How often to check Telegram for new messages (default: 5).", "key": "How often to check Telegram for new messages (default: 5).", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2210" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2214" ] }, { @@ -4698,7 +4909,7 @@ "call": "HTTP error", "key": "HTTP error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5201", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5287", "src/tachyon/api.ts:27" ] }, @@ -4713,7 +4924,7 @@ "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:695" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:720" ] }, { @@ -4727,7 +4938,7 @@ "call": "Idle timeout", "key": "Idle timeout", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7714", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7800", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2684", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3204", "src/tachyon/tabs/dashboard/initController.ts:1295" @@ -4737,7 +4948,7 @@ "call": "If one health check fails with an error, continue running other checks instead of stopping.", "key": "If one health check fails with an error, continue running other checks instead of stopping.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1909" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1913" ] }, { @@ -4947,20 +5158,12 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3539" ] }, - { - "call": "Instagram / Meta (TLS 1.3)", - "key": "Instagram / Meta (TLS 1.3)", - "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11849", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:145" - ] - }, { "call": "Install", "key": "Install", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17383", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18155", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18065", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18837", "src/tachyon/tabs/updates/initController.ts:989", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:431" ] @@ -4969,7 +5172,7 @@ "call": "Install another build:", "key": "Install another build:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18578", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19260", "src/tachyon/tabs/updates/initController.ts:1502" ] }, @@ -4977,19 +5180,19 @@ "call": "Installed", "key": "Installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:104", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:109", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:114" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1379", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1384", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1389" ] }, { "call": "Installed build → Available build", "key": "Installed build → Available build", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18458", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19140", "src/tachyon/tabs/updates/initController.ts:1363" ] }, @@ -4997,8 +5200,8 @@ "call": "Installed version is newer than release", "key": "Installed version is newer than release", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17676", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18466", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18358", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19148", "src/tachyon/tabs/updates/initController.ts:359", "src/tachyon/tabs/updates/initController.ts:1371" ] @@ -5028,8 +5231,8 @@ "call": "Interrupt connections", "key": "Interrupt connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7716", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7848", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7802", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7934", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2698", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3184", "src/tachyon/tabs/dashboard/initController.ts:1297", @@ -5054,7 +5257,7 @@ "call": "Interval", "key": "Interval", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7712", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7798", "src/tachyon/tabs/dashboard/initController.ts:1293" ] }, @@ -5639,6 +5842,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10221" ] }, + { + "call": "IP Frag Bounds (--ip-frag)", + "key": "IP Frag Bounds (--ip-frag)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12444", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:727" + ] + }, { "call": "IPs", "key": "IPs", @@ -5671,7 +5882,7 @@ "call": "Issues", "key": "Issues", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14144", "src/tachyon/tabs/diagnostic/initController.ts:749" ] }, @@ -5679,8 +5890,8 @@ "call": "Issues detected", "key": "Issues detected", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9212", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9701", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9298", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9787", "src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:17", "src/tachyon/tabs/diagnostic/helpers/getMeta.ts:20" ] @@ -5689,7 +5900,7 @@ "call": "Issues detected. Review the diagnosis above.", "key": "Issues detected. Review the diagnosis above.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13776", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14458", "src/tachyon/tabs/diagnostic/initController.ts:1221" ] }, @@ -5866,7 +6077,7 @@ "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:995", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:500" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:525" ] }, { @@ -5890,19 +6101,11 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:4697" ] }, - { - "call": "Knowledge Base + Live Probe Context", - "key": "Knowledge Base + Live Probe Context", - "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11967", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:317" - ] - }, { "call": "LAN Devices", "key": "LAN Devices", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13992", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14674", "src/tachyon/tabs/diagnostic/initController.ts:1464" ] }, @@ -5910,15 +6113,15 @@ "call": "Language for AI Doctor diagnosis responses", "key": "Language for AI Doctor diagnosis responses", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1774" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1778" ] }, { "call": "Latency test failed", "key": "Latency test failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3540", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3559", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3543", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3562", "src/tachyon/methods/shell/index.ts:519", "src/tachyon/methods/shell/index.ts:540" ] @@ -5934,8 +6137,8 @@ "call": "Latest version is installed", "key": "Latest version is installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17678", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18464", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18360", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19146", "src/tachyon/tabs/updates/initController.ts:362", "src/tachyon/tabs/updates/initController.ts:1369" ] @@ -5944,7 +6147,7 @@ "call": "Latest version:", "key": "Latest version:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18466", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19148", "src/tachyon/tabs/updates/initController.ts:1371" ] }, @@ -5980,7 +6183,7 @@ "call": "List of domains automatically detected and the section they were added to. To edit or remove them, open the routing rules of the respective section.", "key": "List of domains automatically detected and the section they were added to. To edit or remove them, open the routing rules of the respective section.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1990" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1994" ] }, { @@ -6008,7 +6211,7 @@ "call": "Listening port", "key": "Listening port", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9468", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9554", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:125" ] }, @@ -6023,8 +6226,8 @@ "call": "LM Studio (Local PC / Server)", "key": "LM Studio (Local PC / Server)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1752", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:869" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1756", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:930" ] }, { @@ -6074,7 +6277,7 @@ "call": "Loading connected LAN devices...", "key": "Loading connected LAN devices...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13795", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14477", "src/tachyon/tabs/diagnostic/initController.ts:1243" ] }, @@ -6082,8 +6285,8 @@ "call": "Loading connections", "key": "Loading connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14996", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15728", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15678", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16410", "src/tachyon/tabs/monitoring/initController.ts:1002", "src/tachyon/tabs/monitoring/render.ts:101" ] @@ -6092,8 +6295,8 @@ "call": "Loading service list...", "key": "Loading service list...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10908", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10947", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10994", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11033", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:150", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:194" ] @@ -6102,12 +6305,12 @@ "call": "Loading...", "key": "Loading...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18330", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18343", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18353", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18363", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18373", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18383", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19012", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19025", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19035", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19045", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19055", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19065", "src/tachyon/tabs/updates/initController.ts:1201", "src/tachyon/tabs/updates/initController.ts:1216", "src/tachyon/tabs/updates/initController.ts:1234", @@ -6120,7 +6323,7 @@ "call": "Loading…", "key": "Loading…", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1223" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1284" ] }, { @@ -6141,7 +6344,7 @@ "call": "lx", "key": "lx", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5902", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5988", "src/tachyon/helpers/singBoxVariant.ts:62" ] }, @@ -6149,7 +6352,7 @@ "call": "Main DNS", "key": "Main DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9284", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9370", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67" ] }, @@ -6165,8 +6368,8 @@ "key": "Manual", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2280", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7411", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7751", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7497", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7837", "src/tachyon/tabs/dashboard/initController.ts:914", "src/tachyon/tabs/dashboard/initController.ts:1346", "src/tachyon/tabs/dashboard/partials/renderSections.ts:450" @@ -6239,7 +6442,7 @@ "call": "Max reconnects per hour before alert (default 10).", "key": "Max reconnects per hour before alert (default 10).", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1936" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1940" ] }, { @@ -6260,7 +6463,7 @@ "call": "Memory Usage", "key": "Memory Usage", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8163", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8249", "src/tachyon/tabs/dashboard/initController.ts:1877" ] }, @@ -6282,7 +6485,7 @@ "call": "Metrics Retention (hours)", "key": "Metrics Retention (hours)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1887" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1891" ] }, { @@ -6339,7 +6542,7 @@ "call": "Model name to use. Leave empty to use default (gpt-4o-mini / claude-3-5-haiku / deepseek-chat / llama3:latest).", "key": "Model name to use. Leave empty to use default (gpt-4o-mini / claude-3-5-haiku / deepseek-chat / llama3:latest).", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1761" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1765" ] }, { @@ -6374,28 +6577,28 @@ "call": "Monitoring & Analytics", "key": "Monitoring & Analytics", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:643" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:668" ] }, { "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.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1930" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1934" ] }, { "call": "Move down", "key": "Move down", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1053" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1114" ] }, { "call": "Move up", "key": "Move up", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1042" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1103" ] }, { @@ -6410,7 +6613,7 @@ "call": "Must be a comma-separated list of numeric IDs", "key": "Must be a comma-separated list of numeric IDs", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2200" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2204" ] }, { @@ -6421,6 +6624,22 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2098" ] }, + { + "call": "My Strategies", + "key": "My Strategies", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11890", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:90" + ] + }, + { + "call": "Name", + "key": "Name", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12567", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:870" + ] + }, { "call": "Name displayed on the dashboard", "key": "Name displayed on the dashboard", @@ -6440,8 +6659,8 @@ "call": "Native internet restored. Tachyon stopped.", "key": "Native internet restored. Tachyon stopped.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14049", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14142", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14731", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14824", "src/tachyon/tabs/diagnostic/initController.ts:1533", "src/tachyon/tabs/diagnostic/initController.ts:1643" ] @@ -6493,7 +6712,7 @@ "call": "New version %s is available for %s", "key": "New version %s is available for %s", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6257", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6343", "src/tachyon/services/core.service.ts:38" ] }, @@ -6501,8 +6720,8 @@ "call": "NFQUEUE range is available", "key": "NFQUEUE range is available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9769", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9855", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9941", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:100", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:97" ] @@ -6511,8 +6730,8 @@ "call": "NFQUEUE range overlaps with another rule", "key": "NFQUEUE range overlaps with another rule", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9769", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9855", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9941", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:99", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:96" ] @@ -6549,10 +6768,10 @@ "call": "No", "key": "No", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7339", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7342", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7402", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7742", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7425", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7428", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7488", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7828", "src/tachyon/tabs/dashboard/initController.ts:822", "src/tachyon/tabs/dashboard/initController.ts:826", "src/tachyon/tabs/dashboard/initController.ts:902", @@ -6571,7 +6790,7 @@ "call": "No active connections", "key": "No active connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15747", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16429", "src/tachyon/tabs/monitoring/initController.ts:1026" ] }, @@ -6579,7 +6798,7 @@ "call": "No active DHCP clients found on local network.", "key": "No active DHCP clients found on local network.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13806", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14488", "src/tachyon/tabs/diagnostic/initController.ts:1255" ] }, @@ -6588,22 +6807,22 @@ "key": "No active routing sections found.", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:703", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1161" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1222" ] }, { - "call": "No benchmark results yet. Select engine and click \"Start Benchmark\" or \"Synthesize with AI\".", - "key": "No benchmark results yet. Select engine and click \"Start Benchmark\" or \"Synthesize with AI\".", + "call": "No benchmark results yet. Configure options and click \"Start Benchmark\".", + "key": "No benchmark results yet. Configure options and click \"Start Benchmark\".", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12066", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:428" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12217", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:470" ] }, { "call": "No check targets found in the configuration.", "key": "No check targets found in the configuration.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10983", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11069", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:239" ] }, @@ -6611,7 +6830,7 @@ "call": "No closed connections", "key": "No closed connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15747", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16429", "src/tachyon/tabs/monitoring/initController.ts:1027" ] }, @@ -6619,7 +6838,7 @@ "call": "No conflict detected", "key": "No conflict detected", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9394", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9480", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:32" ] }, @@ -6630,11 +6849,19 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10131" ] }, + { + "call": "No custom strategies added yet.", + "key": "No custom strategies added yet.", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12592", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:898" + ] + }, { "call": "No DHCP clients detected", "key": "No DHCP clients detected", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13589", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14271", "src/tachyon/tabs/diagnostic/initController.ts:943" ] }, @@ -6642,7 +6869,7 @@ "call": "No diagnostic history available yet.", "key": "No diagnostic history available yet.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13922", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14604", "src/tachyon/tabs/diagnostic/initController.ts:1382" ] }, @@ -6650,14 +6877,14 @@ "call": "No domains detected yet", "key": "No domains detected yet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2005" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2009" ] }, { "call": "No enabled server inbounds configured", "key": "No enabled server inbounds configured", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9514", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9600", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:187" ] }, @@ -6672,7 +6899,7 @@ "call": "No issues detected. System is running normally.", "key": "No issues detected. System is running normally.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13783", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14465", "src/tachyon/tabs/diagnostic/initController.ts:1230" ] }, @@ -6680,7 +6907,7 @@ "call": "No issues found", "key": "No issues found", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14146", "src/tachyon/tabs/diagnostic/initController.ts:760" ] }, @@ -6688,7 +6915,7 @@ "call": "No other marking rules found", "key": "No other marking rules found", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9619", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:105" ] }, @@ -6696,7 +6923,7 @@ "call": "No public firewall port required", "key": "No public firewall port required", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9447", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9533", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:99" ] }, @@ -6704,7 +6931,7 @@ "call": "No rules use ByeDPI", "key": "No rules use ByeDPI", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9934", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10020", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:79" ] }, @@ -6712,7 +6939,7 @@ "call": "No rules use Zapret", "key": "No rules use Zapret", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9759", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:79" ] }, @@ -6720,7 +6947,7 @@ "call": "No rules use Zapret2", "key": "No rules use Zapret2", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9931", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:82" ] }, @@ -6739,11 +6966,19 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:545" ] }, + { + "call": "No strategies match the active filter.", + "key": "No strategies match the active filter.", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12746", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1076" + ] + }, { "call": "Node list is empty", "key": "Node list is empty", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7644", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7730", "src/tachyon/tabs/dashboard/initController.ts:1211" ] }, @@ -6751,7 +6986,7 @@ "call": "Nodes", "key": "Nodes", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7483", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7569", "src/tachyon/tabs/dashboard/initController.ts:1010" ] }, @@ -6759,7 +6994,7 @@ "call": "None", "key": "None", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13586", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14268", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:313", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:325", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:336", @@ -6776,9 +7011,9 @@ "key": "Not configured", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9403", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12555", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9489", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13237", "src/tachyon/methods/custom/getDashboardSections.ts:1654", "src/tachyon/tabs/dashboard/partials/renderSections.ts:623", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:46", @@ -6799,8 +7034,8 @@ "call": "Not detected", "key": "Not detected", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9424", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9524", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9510", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9610", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:70", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:199" ] @@ -6809,7 +7044,7 @@ "call": "Not implement yet", "key": "Not implement yet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10783", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10869", "src/tachyon/tabs/diagnostic/partials/renderCheckSection.ts:193" ] }, @@ -6817,31 +7052,31 @@ "call": "Not installed", "key": "Not installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5887", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5892", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18353", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18363", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18373", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18383", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5973", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5978", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19035", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19045", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19055", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19065", "src/tachyon/helpers/singBoxVariant.ts:38", "src/tachyon/helpers/singBoxVariant.ts:46", "src/tachyon/tabs/updates/initController.ts:1237", "src/tachyon/tabs/updates/initController.ts:1251", "src/tachyon/tabs/updates/initController.ts:1265", "src/tachyon/tabs/updates/initController.ts:1279", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:115" + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1380", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1385", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1390" ] }, { "call": "Not public", "key": "Not public", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9417", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9503", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:62" ] }, @@ -6849,7 +7084,7 @@ "call": "Not required for this listen address", "key": "Not required for this listen address", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9475", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9561", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:139" ] }, @@ -6859,10 +7094,10 @@ "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2195", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2578", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12506", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12525", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12530", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12578", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13188", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13207", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13212", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13260", "src/tachyon/tabs/dashboard/partials/renderSections.ts:332", "src/tachyon/tabs/dashboard/partials/renderSections.ts:826", "src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:91", @@ -6875,11 +7110,11 @@ "call": "Not running", "key": "Not running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5476", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12986", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13156", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13202", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13264", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5562", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13668", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13838", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13884", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13946", "src/tachyon/tabs/diagnostic/diagnostic.store.ts:142", "src/tachyon/tabs/diagnostic/initController.ts:127", "src/tachyon/tabs/diagnostic/initController.ts:358", @@ -6905,42 +7140,42 @@ "call": "Notify on Certificate Warnings", "key": "Notify on Certificate Warnings", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2282" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2286" ] }, { "call": "Notify on Core Crashes", "key": "Notify on Core Crashes", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2230" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2234" ] }, { "call": "Notify on DNS Leaks", "key": "Notify on DNS Leaks", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2295" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2299" ] }, { "call": "Notify on Server Switches", "key": "Notify on Server Switches", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2256" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2260" ] }, { "call": "Notify on Service Restarts", "key": "Notify on Service Restarts", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2243" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2247" ] }, { "call": "Notify on Subscription Updates", "key": "Notify on Subscription Updates", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2269" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2273" ] }, { @@ -6961,7 +7196,7 @@ "call": "Number of consecutive failures before restarting (default 3).", "key": "Number of consecutive failures before restarting (default 3).", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1850" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1854" ] }, { @@ -6996,8 +7231,8 @@ "call": "Ollama (Local PC / Server)", "key": "Ollama (Local PC / Server)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1751", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:861" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1755", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:922" ] }, { @@ -7065,12 +7300,20 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2997" ] }, + { + "call": "OOB Values (-o)", + "key": "OOB Values (-o)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12426", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:709" + ] + }, { "call": "Open", "key": "Open", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18441", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18478", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19123", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19160", "src/tachyon/tabs/updates/initController.ts:1345", "src/tachyon/tabs/updates/initController.ts:1384" ] @@ -7086,7 +7329,7 @@ "call": "Open Project Page", "key": "Open Project Page", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12428", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13110", "src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:31" ] }, @@ -7094,7 +7337,7 @@ "call": "Operation completed successfully!", "key": "Operation completed successfully!", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17298", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17980", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:324" ] }, @@ -7102,7 +7345,7 @@ "call": "Operation failed", "key": "Operation failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17424", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18106", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:483" ] }, @@ -7110,8 +7353,8 @@ "call": "Operation in progress...", "key": "Operation in progress...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17125", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17180", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17807", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17862", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:110", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:172" ] @@ -7120,7 +7363,7 @@ "call": "Operation log", "key": "Operation log", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17166", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17848", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:157" ] }, @@ -7128,7 +7371,7 @@ "call": "Operation log is not available", "key": "Operation log is not available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3654", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3657", "src/tachyon/methods/shell/index.ts:663" ] }, @@ -7136,7 +7379,7 @@ "call": "Operation started. Waiting for log output...", "key": "Operation started. Waiting for log output...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17162", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17844", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:152" ] }, @@ -7145,8 +7388,8 @@ "key": "Operation timed out", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:1066", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3520", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3588", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3523", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3591", "src/helpers/withTimeout.ts:7", "src/tachyon/methods/shell/index.ts:489", "src/tachyon/methods/shell/index.ts:577" @@ -7156,14 +7399,14 @@ "call": "Optimization", "key": "Optimization", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:672" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:697" ] }, { "call": "Optimize AWG MTU", "key": "Optimize AWG MTU", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13678", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14360", "src/tachyon/tabs/diagnostic/initController.ts:1100" ] }, @@ -7171,7 +7414,7 @@ "call": "Optimize RAM memory", "key": "Optimize RAM memory", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13670", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14352", "src/tachyon/tabs/diagnostic/initController.ts:1092" ] }, @@ -7191,18 +7434,18 @@ ] }, { - "call": "Optional for local LLM", - "key": "Optional for local LLM", + "call": "Optional context (e.g. \"Rostelecom, YouTube 4K buffering is slow\")...", + "key": "Optional context (e.g. \"Rostelecom, YouTube 4K buffering is slow\")...", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:950" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12656", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:972" ] }, { - "call": "Optional notes for AI (e.g. \"Rostelecom, YouTube 4K stream is slow\")...", - "key": "Optional notes for AI (e.g. \"Rostelecom, YouTube 4K stream is slow\")...", + "call": "Optional for local LLM", + "key": "Optional for local LLM", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11913", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:256" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1011" ] }, { @@ -7237,7 +7480,7 @@ "call": "Other peers", "key": "Other peers", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8252", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8338", "src/tachyon/tabs/dashboard/initController.ts:1985" ] }, @@ -7358,13 +7601,53 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1575" ] }, + { + "call": "Pattern Builder", + "key": "Pattern Builder", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11889", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:89" + ] + }, + { + "call": "Patterns reset to defaults!", + "key": "Patterns reset to defaults!", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12477", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:763" + ] + }, + { + "call": "Patterns reset to factory defaults", + "key": "Patterns reset to factory defaults", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4154", + "src/tachyon/methods/shell/index.ts:1329" + ] + }, + { + "call": "Patterns saved successfully", + "key": "Patterns saved successfully", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4130", + "src/tachyon/methods/shell/index.ts:1300" + ] + }, + { + "call": "Patterns saved successfully!", + "key": "Patterns saved successfully!", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12463", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:749" + ] + }, { "call": "Pause updates", "key": "Pause updates", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14976", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14977", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15520", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15658", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15659", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16202", "src/tachyon/tabs/monitoring/initController.ts:746", "src/tachyon/tabs/monitoring/render.ts:80", "src/tachyon/tabs/monitoring/render.ts:81" @@ -7423,7 +7706,7 @@ "call": "Pending", "key": "Pending", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5406", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5492", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:390", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:400", "src/tachyon/tabs/diagnostic/diagnostic.store.ts:63" @@ -7433,7 +7716,7 @@ "call": "Pending...", "key": "Pending...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10863", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10949", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:98" ] }, @@ -7441,8 +7724,8 @@ "call": "Per-Device Routing", "key": "Per-Device Routing", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1155", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1208" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1216", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1269" ] }, { @@ -7456,7 +7739,7 @@ "call": "Periodically checks if the proxy is responding. Restarts Tachyon after consecutive failures.", "key": "Periodically checks if the proxy is responding. Restarts Tachyon after consecutive failures.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1838" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1842" ] }, { @@ -7471,7 +7754,7 @@ "call": "Persistent Smart Detect", "key": "Persistent Smart Detect", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1915" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1919" ] }, { @@ -7489,18 +7772,26 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1246" ] }, + { + "call": "Please specify strategy name and arguments", + "key": "Please specify strategy name and arguments", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12516", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:811" + ] + }, { "call": "Polling Interval (seconds)", "key": "Polling Interval (seconds)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2209" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2213" ] }, { "call": "Polling interval must be at least 1 second", "key": "Polling interval must be at least 1 second", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2222" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2226" ] }, { @@ -7514,7 +7805,7 @@ "call": "Port conflict", "key": "Port conflict", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9383", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9469", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:19" ] }, @@ -7566,7 +7857,7 @@ "call": "Pre-built index of Tachyon documentation chunks. When enabled, AI Doctor searches relevant docs before generating a diagnosis.", "key": "Pre-built index of Tachyon documentation chunks. When enabled, AI Doctor searches relevant docs before generating a diagnosis.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1814" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1818" ] }, { @@ -7629,7 +7920,7 @@ "call": "Prevents multiple reload_firewall calls within 120 seconds to avoid connection drops.", "key": "Prevents multiple reload_firewall calls within 120 seconds to avoid connection drops.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1875" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1879" ] }, { @@ -7646,7 +7937,7 @@ "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2349", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2350", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7866", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7952", "src/tachyon/tabs/dashboard/initController.ts:1494", "src/tachyon/tabs/dashboard/partials/renderSections.ts:536", "src/tachyon/tabs/dashboard/partials/renderSections.ts:537" @@ -7656,7 +7947,7 @@ "call": "Priority details are unavailable", "key": "Priority details are unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7816", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7902", "src/tachyon/tabs/dashboard/initController.ts:1431" ] }, @@ -7695,7 +7986,7 @@ "call": "Protection", "key": "Protection", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:625" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:650" ] }, { @@ -7712,15 +8003,15 @@ "call": "Provider Global Default", "key": "Provider Global Default", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11886", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:189" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12036", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:265" ] }, { "call": "Proxy", "key": "Proxy", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10809", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10895", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:29" ] }, @@ -7728,7 +8019,7 @@ "call": "Proxy / DPI", "key": "Proxy / DPI", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13882", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14564", "src/tachyon/tabs/diagnostic/initController.ts:1338" ] }, @@ -7736,28 +8027,28 @@ "call": "Proxy Fail Threshold", "key": "Proxy Fail Threshold", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1849" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1853" ] }, { "call": "Proxy Health Check Interval (s)", "key": "Proxy Health Check Interval (s)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1843" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1847" ] }, { "call": "Proxy Health Check URL", "key": "Proxy Health Check URL", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1855" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1859" ] }, { "call": "Proxy link is unavailable", "key": "Proxy link is unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7335", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7421", "src/tachyon/tabs/dashboard/initController.ts:817" ] }, @@ -7765,7 +8056,7 @@ "call": "Proxy Section for Bot", "key": "Proxy Section for Bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2306" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2310" ] }, { @@ -7786,7 +8077,7 @@ "call": "Public host", "key": "Public host", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9398", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9484", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2690", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:40" ] @@ -7806,6 +8097,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9555" ] }, + { + "call": "RAG Knowledge Base + Live ISP Probe Context", + "key": "RAG Knowledge Base + Live ISP Probe Context", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12706", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1029" + ] + }, { "call": "RDP", "key": "RDP", @@ -7874,7 +8173,7 @@ "call": "Rebuild firewall rules", "key": "Rebuild firewall rules", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13657", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14339", "src/tachyon/tabs/diagnostic/initController.ts:1079" ] }, @@ -7882,7 +8181,7 @@ "call": "Rebuilt release", "key": "Rebuilt release", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18460", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19142", "src/tachyon/tabs/updates/initController.ts:1365" ] }, @@ -7890,7 +8189,7 @@ "call": "Recommended Quick Fixes:", "key": "Recommended Quick Fixes:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13727", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14409", "src/tachyon/tabs/diagnostic/initController.ts:1163" ] }, @@ -7898,14 +8197,14 @@ "call": "Reconnect Threshold", "key": "Reconnect Threshold", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1935" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1939" ] }, { "call": "Reconnect WAN", "key": "Reconnect WAN", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13663", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14345", "src/tachyon/tabs/diagnostic/initController.ts:1085" ] }, @@ -7913,7 +8212,7 @@ "call": "Records proxy/DNS latency and health status in hourly buckets for analysis.", "key": "Records proxy/DNS latency and health status in hourly buckets for analysis.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1882" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1886" ] }, { @@ -7935,7 +8234,7 @@ "call": "Refresh", "key": "Refresh", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13829", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14511", "src/tachyon/tabs/diagnostic/initController.ts:1280" ] }, @@ -7943,7 +8242,7 @@ "call": "Refresh Device List", "key": "Refresh Device List", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13810", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14492", "src/tachyon/tabs/diagnostic/initController.ts:1259" ] }, @@ -7965,7 +8264,7 @@ "call": "Reinstall", "key": "Reinstall", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18240", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18922", "src/tachyon/tabs/updates/initController.ts:1107" ] }, @@ -7973,7 +8272,7 @@ "call": "Reload now", "key": "Reload now", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17318", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18000", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:349" ] }, @@ -7981,7 +8280,7 @@ "call": "Reloading...", "key": "Reloading...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17350", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18032", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:390" ] }, @@ -7996,7 +8295,7 @@ "call": "Removal completed successfully!", "key": "Removal completed successfully!", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17298", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17980", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:323" ] }, @@ -8004,7 +8303,7 @@ "call": "Remove", "key": "Remove", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18206", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18888", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7927", "src/tachyon/tabs/updates/initController.ts:1061" ] @@ -8034,7 +8333,7 @@ "call": "Removing", "key": "Removing", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17129", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17811", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:114" ] }, @@ -8056,7 +8355,7 @@ "call": "Reset Bootstrap DNS", "key": "Reset Bootstrap DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13677", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14359", "src/tachyon/tabs/diagnostic/initController.ts:1099" ] }, @@ -8066,7 +8365,7 @@ "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:389", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:424", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1679" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1683" ] }, { @@ -8087,7 +8386,7 @@ "call": "Resolve gateway", "key": "Resolve gateway", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13664", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14346", "src/tachyon/tabs/diagnostic/initController.ts:1086" ] }, @@ -8165,7 +8464,7 @@ "call": "Restart dnsmasq", "key": "Restart dnsmasq", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13658", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14340", "src/tachyon/tabs/diagnostic/initController.ts:1080" ] }, @@ -8173,7 +8472,7 @@ "call": "Restart firewall", "key": "Restart firewall", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13667", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14349", "src/tachyon/tabs/diagnostic/initController.ts:1089" ] }, @@ -8181,7 +8480,7 @@ "call": "Restart network", "key": "Restart network", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13668", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14350", "src/tachyon/tabs/diagnostic/initController.ts:1090" ] }, @@ -8189,7 +8488,7 @@ "call": "Restart sing-box DNS", "key": "Restart sing-box DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13661", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14343", "src/tachyon/tabs/diagnostic/initController.ts:1083" ] }, @@ -8197,7 +8496,7 @@ "call": "Restart Tachyon", "key": "Restart Tachyon", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10484", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10570", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:64" ] }, @@ -8205,7 +8504,7 @@ "call": "Restart Zapret/ByeDPI", "key": "Restart Zapret/ByeDPI", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13669", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14351", "src/tachyon/tabs/diagnostic/initController.ts:1091" ] }, @@ -8229,7 +8528,7 @@ "call": "Restore config backup", "key": "Restore config backup", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13662", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14344", "src/tachyon/tabs/diagnostic/initController.ts:1084" ] }, @@ -8237,9 +8536,9 @@ "call": "Restore Native Internet", "key": "Restore Native Internet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10562", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14107", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14130", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10648", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14789", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14812", "src/tachyon/tabs/diagnostic/initController.ts:1603", "src/tachyon/tabs/diagnostic/initController.ts:1627", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:142" @@ -8249,8 +8548,8 @@ "call": "Restore Native Internet (Stop Tachyon)", "key": "Restore Native Internet (Stop Tachyon)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13674", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14036", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14356", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14718", "src/tachyon/tabs/diagnostic/initController.ts:1096", "src/tachyon/tabs/diagnostic/initController.ts:1516" ] @@ -8266,15 +8565,15 @@ "call": "Restores the Tachyon factory defaults: all rules, subscriptions, custom DNS servers and other options will be lost.", "key": "Restores the Tachyon factory defaults: all rules, subscriptions, custom DNS servers and other options will be lost.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1680" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1684" ] }, { "call": "Restoring native direct internet (stopping Tachyon)...", "key": "Restoring native direct internet (stopping Tachyon)...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14039", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14134", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14721", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14816", "src/tachyon/tabs/diagnostic/initController.ts:1519", "src/tachyon/tabs/diagnostic/initController.ts:1631" ] @@ -8283,7 +8582,7 @@ "call": "Resume updates", "key": "Resume updates", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15520", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16202", "src/tachyon/tabs/monitoring/initController.ts:746" ] }, @@ -8298,9 +8597,9 @@ "call": "Route", "key": "Route", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11159", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15629", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15680", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11245", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16311", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16362", "src/tachyon/tabs/monitoring/initController.ts:880", "src/tachyon/tabs/monitoring/initController.ts:943", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:444" @@ -8317,7 +8616,7 @@ "call": "Route bot API requests through this section. Leave empty to use the default mixed proxy.", "key": "Route bot API requests through this section. Leave empty to use the default mixed proxy.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2307" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2311" ] }, { @@ -8338,7 +8637,7 @@ "call": "Route via Proxy", "key": "Route via Proxy", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13888", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14570", "src/tachyon/tabs/diagnostic/initController.ts:1345" ] }, @@ -8360,9 +8659,9 @@ "call": "Routing rules", "key": "Routing rules", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9451", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9460", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9479", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9537", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9546", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9565", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:103", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:114", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:144" @@ -8422,8 +8721,8 @@ "call": "Rule:", "key": "Rule:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11887", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:190" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12037", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:266" ] }, { @@ -8439,7 +8738,7 @@ "call": "Rules mangle counters", "key": "Rules mangle counters", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9594", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9680", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:79" ] }, @@ -8447,7 +8746,7 @@ "call": "Rules mangle exist", "key": "Rules mangle exist", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9589", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9675", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:74" ] }, @@ -8455,7 +8754,7 @@ "call": "Rules mangle output counters", "key": "Rules mangle output counters", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9604", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9690", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:89" ] }, @@ -8463,7 +8762,7 @@ "call": "Rules mangle output exist", "key": "Rules mangle output exist", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9599", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9685", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:84" ] }, @@ -8471,7 +8770,7 @@ "call": "Rules proxy counters", "key": "Rules proxy counters", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9614", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9700", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:99" ] }, @@ -8479,7 +8778,7 @@ "call": "Rules proxy exist", "key": "Rules proxy exist", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9609", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:94" ] }, @@ -8487,7 +8786,7 @@ "call": "Run AI Doctor", "key": "Run AI Doctor", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10552", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10638", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:132" ] }, @@ -8495,7 +8794,7 @@ "call": "Run Diagnostic", "key": "Run Diagnostic", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10794", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10880", "src/tachyon/tabs/diagnostic/partials/renderRunAction.ts:17" ] }, @@ -8503,7 +8802,7 @@ "call": "Run doctor repair", "key": "Run doctor repair", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10542", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10628", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:122" ] }, @@ -8512,29 +8811,29 @@ "key": "Running", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12538", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13220", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:301", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2068", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2069", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2072", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2073", "src/tachyon/methods/custom/getDashboardSections.ts:1649", "src/tachyon/tabs/dashboard/partials/renderSections.ts:618", "src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:135" ] }, { - "call": "Running diagnostics…", - "key": "Running diagnostics…", + "call": "Running benchmarks...", + "key": "Running benchmarks...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2372" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12746", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1075" ] }, { - "call": "Running initial strategy probe...", - "key": "Running initial strategy probe...", + "call": "Running diagnostics…", + "key": "Running diagnostics…", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12109", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:481" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2376" ] }, { @@ -8544,14 +8843,6 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9246" ] }, - { - "call": "RuTracker (HTTP/HTTPS)", - "key": "RuTracker (HTTP/HTTPS)", - "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11850", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:146" - ] - }, { "call": "Sat", "key": "Sat", @@ -8572,28 +8863,28 @@ "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3669", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:672", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1200" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1261" ] }, { "call": "Save a snapshot of the working config and restore it later if something breaks.", "key": "Save a snapshot of the working config and restore it later if something breaks.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1694" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1698" ] }, { "call": "Save AI Watchdog Settings", "key": "Save AI Watchdog Settings", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1002" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1063" ] }, { "call": "Save Smart Detect Settings", "key": "Save Smart Detect Settings", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1140" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1201" ] }, { @@ -8608,10 +8899,10 @@ "call": "Saving…", "key": "Saving…", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:518", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1000", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1140", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1200" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:543", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1061", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1201", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1261" ] }, { @@ -8632,15 +8923,15 @@ "call": "Score", "key": "Score", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12047", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:409" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12198", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:451" ] }, { "call": "Search", "key": "Search", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14953", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15635", "src/tachyon/tabs/monitoring/render.ts:57" ] }, @@ -8648,7 +8939,7 @@ "call": "Search domain or service...", "key": "Search domain or service...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11118", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11204", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:397" ] }, @@ -8656,7 +8947,8 @@ "call": "Search Mode", "key": "Search Mode", "places": [ - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:244" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12027", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:254" ] }, { @@ -8677,14 +8969,14 @@ "call": "Secret token for authorizing WRITE operations (POST/PUT) on /cgi-bin/tachyon-agent/. Leave empty if auth is not required.", "key": "Secret token for authorizing WRITE operations (POST/PUT) on /cgi-bin/tachyon-agent/. Leave empty if auth is not required.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1719" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1723" ] }, { "call": "Secret token for WRITE requests", "key": "Secret token for WRITE requests", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:706" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:731" ] }, { @@ -8709,10 +9001,10 @@ ] }, { - "call": "Section name for WARP registration proxy. Leave empty to use the default service mixed proxy.", - "key": "Section name for WARP registration proxy. Leave empty to use the default service mixed proxy.", + "call": "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.", + "key": "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.", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:799" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:860" ] }, { @@ -8726,7 +9018,7 @@ "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:1127" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1188" ] }, { @@ -8755,7 +9047,7 @@ "call": "Select", "key": "Select", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7624", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7710", "src/tachyon/tabs/dashboard/initController.ts:1185" ] }, @@ -8820,7 +9112,7 @@ "call": "Select AI LLM provider for diagnostics", "key": "Select AI LLM provider for diagnostics", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1744" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1748" ] }, { @@ -8848,7 +9140,7 @@ "call": "Select and order the sections through which blocked domains are tested. Checked sections are tried top-to-bottom.", "key": "Select and order the sections through which blocked domains are tested. Checked sections are tried top-to-bottom.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1962" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1966" ] }, { @@ -8918,7 +9210,7 @@ "call": "Select the fastest node", "key": "Select the fastest node", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7834", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7920", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3146", "src/tachyon/tabs/dashboard/initController.ts:1454" ] @@ -8962,8 +9254,8 @@ "call": "Selected", "key": "Selected", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7708", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7820", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7794", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7906", "src/tachyon/tabs/dashboard/initController.ts:1289", "src/tachyon/tabs/dashboard/initController.ts:1440" ] @@ -8987,7 +9279,7 @@ "call": "Send", "key": "Send", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11588", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11674", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:67" ] }, @@ -8995,28 +9287,28 @@ "call": "Send a Telegram notification if a potential DNS leak is detected.", "key": "Send a Telegram notification if a potential DNS leak is detected.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2296" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2300" ] }, { "call": "Send a Telegram notification if sing-box or nftables rules crash and get auto-restored.", "key": "Send a Telegram notification if sing-box or nftables rules crash and get auto-restored.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2231" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2235" ] }, { "call": "Send a Telegram notification if SSL/TLS certificates are close to expiration.", "key": "Send a Telegram notification if SSL/TLS certificates are close to expiration.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2283" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2287" ] }, { "call": "Send a Telegram notification if the Tachyon service is restarted by the watchdog.", "key": "Send a Telegram notification if the Tachyon service is restarted by the watchdog.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2244" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2248" ] }, { @@ -9030,14 +9322,22 @@ "call": "Send a Telegram notification when a URLTest group switches to a new server.", "key": "Send a Telegram notification when a URLTest group switches to a new server.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2257" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2261" ] }, { "call": "Send a Telegram notification when proxy subscriptions are successfully updated.", "key": "Send a Telegram notification when proxy subscriptions are successfully updated.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2270" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2274" + ] + }, + { + "call": "Sequence Overlaps (seqovl)", + "key": "Sequence Overlaps (seqovl)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12352", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:631" ] }, { @@ -9157,7 +9457,7 @@ "call": "Server unavailable", "key": "Server unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11656", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11742", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:148" ] }, @@ -9194,7 +9494,7 @@ "call": "Service / Target", "key": "Service / Target", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11154", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11240", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:439" ] }, @@ -9202,9 +9502,9 @@ "call": "Service action failed", "key": "Service action failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3479", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3498", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13348", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3482", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3501", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14030", "src/tachyon/methods/shell/index.ts:440", "src/tachyon/methods/shell/index.ts:461", "src/tachyon/tabs/diagnostic/initController.ts:609" @@ -9214,7 +9514,7 @@ "call": "Service availability check", "key": "Service availability check", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10940", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11026", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:186" ] }, @@ -9236,7 +9536,7 @@ "call": "Services are online and ready! Reloading page...", "key": "Services are online and ready! Reloading page...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17347", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18029", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:387" ] }, @@ -9244,7 +9544,7 @@ "call": "Services are online, waiting for full initialization...", "key": "Services are online, waiting for full initialization...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17339", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18021", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:375" ] }, @@ -9252,7 +9552,7 @@ "call": "Services info", "key": "Services info", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8172", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8258", "src/tachyon/tabs/dashboard/initController.ts:1887" ] }, @@ -9260,7 +9560,7 @@ "call": "Services restarted. Click to reload page.", "key": "Services restarted. Click to reload page.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17372", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18054", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:418" ] }, @@ -9347,8 +9647,8 @@ "call": "Show sing-box config", "key": "Show sing-box config", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10610", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14171", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10696", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14853", "src/tachyon/tabs/diagnostic/initController.ts:1677", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:190" ] @@ -9357,8 +9657,8 @@ "call": "Show sing-box config failed", "key": "Show sing-box config failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14182", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14189", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14864", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14871", "src/tachyon/tabs/diagnostic/initController.ts:1688", "src/tachyon/tabs/diagnostic/initController.ts:1695" ] @@ -9374,7 +9674,7 @@ "call": "Sing-box autostart disabled", "key": "Sing-box autostart disabled", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9355", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9441", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:77" ] }, @@ -9389,7 +9689,7 @@ "call": "Sing-box FakeIP DNS does not work", "key": "Sing-box FakeIP DNS does not work", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9671", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9757", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:69" ] }, @@ -9397,7 +9697,7 @@ "call": "Sing-box FakeIP DNS works", "key": "Sing-box FakeIP DNS works", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9671", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9757", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:68" ] }, @@ -9405,7 +9705,7 @@ "call": "Sing-box installed", "key": "Sing-box installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9340", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9426", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:62" ] }, @@ -9413,7 +9713,7 @@ "call": "Sing-box listening ports", "key": "Sing-box listening ports", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9365", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9451", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:87" ] }, @@ -9421,7 +9721,7 @@ "call": "Sing-box process running", "key": "Sing-box process running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9360", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9446", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:82" ] }, @@ -9429,7 +9729,7 @@ "call": "Sing-box service exist", "key": "Sing-box service exist", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9350", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9436", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:72" ] }, @@ -9437,7 +9737,7 @@ "call": "Sing-box version is compatible (newer than 1.12.4)", "key": "Sing-box version is compatible (newer than 1.12.4)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9345", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9431", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:67" ] }, @@ -9480,14 +9780,14 @@ "call": "Smart Detect", "key": "Smart Detect", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1097" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1158" ] }, { "call": "Smart Detect settings saved", "key": "Smart Detect settings saved", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:245" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:270" ] }, { @@ -9550,8 +9850,8 @@ "call": "Source", "key": "Source", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15641", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15684", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16323", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16366", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10099", "src/tachyon/tabs/monitoring/initController.ts:892", "src/tachyon/tabs/monitoring/initController.ts:947" @@ -9597,8 +9897,40 @@ "call": "Speed", "key": "Speed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12046", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:408" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12197", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:450" + ] + }, + { + "call": "Split Modes (dpi-desync)", + "key": "Split Modes (dpi-desync)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12377", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:658" + ] + }, + { + "call": "Split Positions (dpi-desync-split-pos)", + "key": "Split Positions (dpi-desync-split-pos)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12383", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:664" + ] + }, + { + "call": "Split Positions (pos)", + "key": "Split Positions (pos)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12334", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:613" + ] + }, + { + "call": "Split Values (-s)", + "key": "Split Values (-s)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12414", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:697" ] }, { @@ -9613,7 +9945,7 @@ "call": "Standalone ByeDPI autostart is enabled", "key": "Standalone ByeDPI autostart is enabled", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:122" ] }, @@ -9621,7 +9953,7 @@ "call": "Standalone ByeDPI is active together with Tachyon ByeDPI rules", "key": "Standalone ByeDPI is active together with Tachyon ByeDPI rules", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:119" ] }, @@ -9629,7 +9961,7 @@ "call": "Standalone ByeDPI service is active", "key": "Standalone ByeDPI service is active", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:120" ] }, @@ -9637,7 +9969,7 @@ "call": "Standalone ByeDPI service is inactive", "key": "Standalone ByeDPI service is inactive", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:123" ] }, @@ -9645,7 +9977,7 @@ "call": "Standalone Zapret is active together with Tachyon Zapret rules", "key": "Standalone Zapret is active together with Tachyon Zapret rules", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9779", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:111" ] }, @@ -9653,7 +9985,7 @@ "call": "Standalone Zapret service is active", "key": "Standalone Zapret service is active", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9779", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:112" ] }, @@ -9661,7 +9993,7 @@ "call": "Standalone Zapret service is inactive", "key": "Standalone Zapret service is inactive", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9779", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:113" ] }, @@ -9669,7 +10001,7 @@ "call": "Standalone Zapret2 autostart is enabled", "key": "Standalone Zapret2 autostart is enabled", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9867", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9953", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:123" ] }, @@ -9677,7 +10009,7 @@ "call": "Standalone Zapret2 is active together with Tachyon Zapret2 rules", "key": "Standalone Zapret2 is active together with Tachyon Zapret2 rules", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9951", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:118" ] }, @@ -9685,7 +10017,7 @@ "call": "Standalone Zapret2 service is active", "key": "Standalone Zapret2 service is active", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9867", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9953", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:121" ] }, @@ -9693,7 +10025,7 @@ "call": "Standalone Zapret2 service is inactive", "key": "Standalone Zapret2 service is inactive", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9867", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9953", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:124" ] }, @@ -9708,14 +10040,14 @@ "call": "Start bot", "key": "Start bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2050" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2054" ] }, { "call": "Start sing-box", "key": "Start sing-box", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13656", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14338", "src/tachyon/tabs/diagnostic/initController.ts:1078" ] }, @@ -9723,7 +10055,7 @@ "call": "Start Tachyon", "key": "Start Tachyon", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10504", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10590", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:84" ] }, @@ -9738,7 +10070,7 @@ "call": "Start watchdog", "key": "Start watchdog", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13660", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14342", "src/tachyon/tabs/diagnostic/initController.ts:1082" ] }, @@ -9746,7 +10078,7 @@ "call": "Start Watchdog first", "key": "Start Watchdog first", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1003" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1064" ] }, { @@ -9754,14 +10086,14 @@ "key": "Starting…", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:334", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2097" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2101" ] }, { "call": "State", "key": "State", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8234", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8320", "src/tachyon/tabs/dashboard/initController.ts:1964" ] }, @@ -9770,13 +10102,19 @@ "key": "Status", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2451", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11196", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12044", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11282", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:360", - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:465", + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:490", "src/tachyon/tabs/dashboard/partials/renderSections.ts:670", - "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:406" + "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481" + ] + }, + { + "call": "Status / Suite", + "key": "Status / Suite", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12194", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:447" ] }, { @@ -9790,7 +10128,7 @@ "call": "Stop bot", "key": "Stop bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2057" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2061" ] }, { @@ -9804,7 +10142,7 @@ "call": "Stop Tachyon", "key": "Stop Tachyon", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10494", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10580", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:74" ] }, @@ -9813,10 +10151,10 @@ "key": "Stopped", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12550", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13232", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:307", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2074", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2078", "src/tachyon/methods/custom/getDashboardSections.ts:1653", "src/tachyon/tabs/dashboard/partials/renderSections.ts:622", "src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:147" @@ -9827,30 +10165,46 @@ "key": "Stopping…", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:348", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2111" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2115" ] }, { "call": "Store auto-detected domains in /etc instead of /tmp to survive reboots.", "key": "Store auto-detected domains in /etc instead of /tmp to survive reboots.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1916" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1920" ] }, { "call": "Strategy & Parameters", "key": "Strategy & Parameters", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12042", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:404" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12189", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:442" ] }, { "call": "Strategy benchmark started", "key": "Strategy benchmark started", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12258", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:664" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12913", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1275" + ] + }, + { + "call": "Strategy deleted", + "key": "Strategy deleted", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12637", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:947" + ] + }, + { + "call": "Strategy Name", + "key": "Strategy Name", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12490", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:783" ] }, { @@ -9894,8 +10248,8 @@ "call": "Subscription update failed", "key": "Subscription update failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3835", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3853", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3838", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3856", "src/tachyon/methods/shell/index.ts:929", "src/tachyon/methods/shell/index.ts:949" ] @@ -9925,7 +10279,7 @@ "call": "Subscriptions updated", "key": "Subscriptions updated", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6965", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7051", "src/tachyon/tabs/dashboard/initController.ts:336" ] }, @@ -9968,7 +10322,7 @@ "call": "Switch DNS to DoH", "key": "Switch DNS to DoH", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13671", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14353", "src/tachyon/tabs/diagnostic/initController.ts:1093" ] }, @@ -9976,7 +10330,7 @@ "call": "Switch to auto-selection", "key": "Switch to auto-selection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7684", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7770", "src/tachyon/tabs/dashboard/initController.ts:1254" ] }, @@ -9984,7 +10338,7 @@ "call": "Sync System Time (NTP)", "key": "Sync System Time (NTP)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13675", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14357", "src/tachyon/tabs/diagnostic/initController.ts:1097" ] }, @@ -9992,7 +10346,7 @@ "call": "System info", "key": "System info", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8160", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8246", "src/tachyon/tabs/dashboard/initController.ts:1874" ] }, @@ -10000,7 +10354,7 @@ "call": "System information", "key": "System information", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12358", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13040", "src/tachyon/tabs/diagnostic/partials/renderSystemInfo.ts:24" ] }, @@ -10008,7 +10362,7 @@ "call": "Table exist", "key": "Table exist", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9584", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9670", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:69" ] }, @@ -10016,7 +10370,7 @@ "call": "Tachyon Error", "key": "Tachyon Error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6267", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6353", "src/tachyon/services/core.service.ts:52" ] }, @@ -10052,7 +10406,7 @@ "call": "Tachyon service is stopped. Start the service to display connections.", "key": "Tachyon service is stopped. Start the service to display connections.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15718", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16400", "src/tachyon/tabs/monitoring/initController.ts:991" ] }, @@ -10075,7 +10429,7 @@ "call": "Tachyon update did not complete within the timeout", "key": "Tachyon update did not complete within the timeout", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3752", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3755", "src/tachyon/methods/shell/index.ts:817" ] }, @@ -10090,7 +10444,7 @@ "call": "Tachyon-managed ciadpi runtime has restarted", "key": "Tachyon-managed ciadpi runtime has restarted", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:91" ] }, @@ -10098,7 +10452,7 @@ "call": "Tachyon-managed ciadpi runtime is not ready", "key": "Tachyon-managed ciadpi runtime is not ready", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:94" ] }, @@ -10106,7 +10460,7 @@ "call": "Tachyon-managed ciadpi runtime is not running", "key": "Tachyon-managed ciadpi runtime is not running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:97" ] }, @@ -10114,7 +10468,7 @@ "call": "Tachyon-managed ciadpi runtime is ready", "key": "Tachyon-managed ciadpi runtime is ready", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:93" ] }, @@ -10122,7 +10476,7 @@ "call": "Tachyon-managed nfqws runtime is not ready", "key": "Tachyon-managed nfqws runtime is not ready", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:87" ] }, @@ -10130,7 +10484,7 @@ "call": "Tachyon-managed nfqws runtime is not running", "key": "Tachyon-managed nfqws runtime is not running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:90" ] }, @@ -10138,7 +10492,7 @@ "call": "Tachyon-managed nfqws runtime is ready", "key": "Tachyon-managed nfqws runtime is ready", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:86" ] }, @@ -10146,7 +10500,7 @@ "call": "Tachyon-managed nfqws2 runtime is not ready", "key": "Tachyon-managed nfqws2 runtime is not ready", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:90" ] }, @@ -10154,7 +10508,7 @@ "call": "Tachyon-managed nfqws2 runtime is not running", "key": "Tachyon-managed nfqws2 runtime is not running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:93" ] }, @@ -10162,7 +10516,7 @@ "call": "Tachyon-managed nfqws2 runtime is ready", "key": "Tachyon-managed nfqws2 runtime is ready", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:89" ] }, @@ -10170,7 +10524,7 @@ "call": "Tailscale", "key": "Tailscale", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8229", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8315", "src/tachyon/tabs/dashboard/initController.ts:1954" ] }, @@ -10192,7 +10546,7 @@ "call": "Tailscale endpoint", "key": "Tailscale endpoint", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9446", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9532", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:98" ] }, @@ -10232,11 +10586,19 @@ ] }, { - "call": "Target Service", - "key": "Target Service", + "call": "Target Service / Suite", + "key": "Target Service / Suite", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11879", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:180" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11994", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:217" + ] + }, + { + "call": "TCP Window Sizes (wsize)", + "key": "TCP Window Sizes (wsize)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12358", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:637" ] }, { @@ -10250,33 +10612,25 @@ "call": "Telegram Bot Token", "key": "Telegram Bot Token", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2169" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2173" ] }, { "call": "Telegram Channel", "key": "Telegram Channel", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12438", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13120", "src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:42" ] }, - { - "call": "Telegram Web", - "key": "Telegram Web", - "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11851", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:147" - ] - }, { "call": "Test Connection", "key": "Test Connection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2358", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2387", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2403", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2409" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2362", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2391", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2407", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2413" ] }, { @@ -10337,22 +10691,22 @@ "call": "Test Telegram Connection", "key": "Test Telegram Connection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2345" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2349" ] }, { "call": "Testing strategy", "key": "Testing strategy", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12193", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:582" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12846", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1193" ] }, { "call": "Testing URL", "key": "Testing URL", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7711", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7797", "src/tachyon/tabs/dashboard/initController.ts:1292" ] }, @@ -10360,8 +10714,8 @@ "call": "Testing...", "key": "Testing...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10873", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11464", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10959", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11550", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:108", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:797" ] @@ -10370,7 +10724,7 @@ "call": "Testing…", "key": "Testing…", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2369" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2373" ] }, { @@ -10400,7 +10754,7 @@ "call": "There are rules using ByeDPI", "key": "There are rules using ByeDPI", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9934", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10020", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:78" ] }, @@ -10408,7 +10762,7 @@ "call": "There are rules using Zapret", "key": "There are rules using Zapret", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9759", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:78" ] }, @@ -10416,7 +10770,7 @@ "call": "There are rules using Zapret2", "key": "There are rules using Zapret2", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9931", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:81" ] }, @@ -10424,7 +10778,7 @@ "call": "Thinking...", "key": "Thinking...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11612", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11698", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:97" ] }, @@ -10432,7 +10786,7 @@ "call": "This action will stop Tachyon, restore standard dnsmasq/DNS, remove all proxy/anti-censorship firewall rules and restore direct Internet connection through your ISP.", "key": "This action will stop Tachyon, restore standard dnsmasq/DNS, remove all proxy/anti-censorship firewall rules and restore direct Internet connection through your ISP.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14112", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14794", "src/tachyon/tabs/diagnostic/initController.ts:1608" ] }, @@ -10504,7 +10858,7 @@ "call": "This router", "key": "This router", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8242", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8328", "src/tachyon/tabs/dashboard/initController.ts:1975" ] }, @@ -10540,9 +10894,9 @@ "call": "Time", "key": "Time", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15632", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15681", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15815", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16314", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16363", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16497", "src/tachyon/tabs/monitoring/initController.ts:883", "src/tachyon/tabs/monitoring/initController.ts:944", "src/tachyon/tabs/monitoring/initController.ts:1127" @@ -10573,7 +10927,7 @@ "call": "tiny", "key": "tiny", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5904", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5990", "src/tachyon/helpers/singBoxVariant.ts:64" ] }, @@ -10599,18 +10953,26 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8503" ] }, + { + "call": "TLS-Rec Bounds (--tlsrec)", + "key": "TLS-Rec Bounds (--tlsrec)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12438", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:721" + ] + }, { "call": "Token is required when the bot is enabled", "key": "Token is required when the bot is enabled", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2178" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2182" ] }, { "call": "Tolerance", "key": "Tolerance", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7713", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7799", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2657", "src/tachyon/tabs/dashboard/initController.ts:1294" ] @@ -10633,7 +10995,7 @@ "call": "Total targets", "key": "Total targets", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11074", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11160", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:345" ] }, @@ -10656,7 +11018,7 @@ "key": "Traffic", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2043", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8136", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8222", "src/tachyon/tabs/dashboard/initController.ts:1848", "src/tachyon/tabs/dashboard/partials/renderSections.ts:133" ] @@ -10686,7 +11048,7 @@ "call": "Traffic Total", "key": "Traffic Total", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8148", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8234", "src/tachyon/tabs/dashboard/initController.ts:1861" ] }, @@ -10708,7 +11070,7 @@ "call": "Transient connection error", "key": "Transient connection error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18103", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18785", "src/tachyon/tabs/updates/initController.ts:922" ] }, @@ -10767,7 +11129,7 @@ "call": "Troubleshooting", "key": "Troubleshooting", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12422", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13104", "src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:25" ] }, @@ -10782,8 +11144,8 @@ "call": "TTFB", "key": "TTFB", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12045", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:407" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12196", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:449" ] }, { @@ -10800,6 +11162,22 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:979" ] }, + { + "call": "TTL Values (dpi-desync-ttl)", + "key": "TTL Values (dpi-desync-ttl)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12395", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:676" + ] + }, + { + "call": "TTL Values (ttl)", + "key": "TTL Values (ttl)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12346", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:625" + ] + }, { "call": "Tue", "key": "Tue", @@ -10825,8 +11203,8 @@ "call": "Type", "key": "Type", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15626", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15679", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16308", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16361", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1696", "src/tachyon/tabs/monitoring/initController.ts:877", "src/tachyon/tabs/monitoring/initController.ts:942" @@ -10843,7 +11221,7 @@ "call": "UDP / QUIC protocols", "key": "UDP / QUIC protocols", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10839", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10925", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:65" ] }, @@ -10881,7 +11259,7 @@ "call": "Unavailability timeout", "key": "Unavailability timeout", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7828", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7914", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3120", "src/tachyon/tabs/dashboard/initController.ts:1448" ] @@ -10890,8 +11268,8 @@ "call": "Unavailable", "key": "Unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10894", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11076", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10980", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11162", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:135", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:347" ] @@ -10951,7 +11329,7 @@ "call": "Unexpected Tachyon-managed ciadpi runtime is running", "key": "Unexpected Tachyon-managed ciadpi runtime is running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:96" ] }, @@ -10959,7 +11337,7 @@ "call": "Unexpected Tachyon-managed nfqws runtime is running", "key": "Unexpected Tachyon-managed nfqws runtime is running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:89" ] }, @@ -10967,7 +11345,7 @@ "call": "Unexpected Tachyon-managed nfqws2 runtime is running", "key": "Unexpected Tachyon-managed nfqws2 runtime is running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:92" ] }, @@ -10996,19 +11374,19 @@ "call": "unknown", "key": "unknown", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5887", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9388", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9969", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9971", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9972", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9973", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9980", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9982", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9984", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9986", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9989", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9990", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17723", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5973", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9474", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10055", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10057", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10058", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10059", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10066", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10068", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10070", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10072", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10075", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10076", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18405", "src/tachyon/helpers/singBoxVariant.ts:37", "src/tachyon/services/systemInfo.service.ts:10", "src/tachyon/services/systemInfo.service.ts:12", @@ -11028,9 +11406,9 @@ "call": "Unknown", "key": "Unknown", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:328", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2091", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2095", "src/tachyon/methods/custom/getDashboardSections.ts:1655" ] }, @@ -11054,18 +11432,18 @@ "call": "Unknown error", "key": "Unknown error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5212", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12263", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13453", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13472", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13539", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14080", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5298", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12918", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14135", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14154", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14221", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14762", "src/tachyon/api.ts:40", "src/tachyon/tabs/diagnostic/initController.ts:731", "src/tachyon/tabs/diagnostic/initController.ts:772", "src/tachyon/tabs/diagnostic/initController.ts:857", "src/tachyon/tabs/diagnostic/initController.ts:1568", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:669" + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1280" ] }, { @@ -11116,7 +11494,7 @@ "call": "Update", "key": "Update", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18155", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18837", "src/tachyon/tabs/updates/initController.ts:989" ] }, @@ -11124,7 +11502,7 @@ "call": "Update is available", "key": "Update is available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17673", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18355", "src/tachyon/tabs/updates/initController.ts:355" ] }, @@ -11132,7 +11510,7 @@ "call": "Update is available for current release", "key": "Update is available for current release", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18448", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19130", "src/tachyon/tabs/updates/initController.ts:1352" ] }, @@ -11140,7 +11518,7 @@ "call": "Update is available:", "key": "Update is available:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18429", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19111", "src/tachyon/tabs/updates/initController.ts:1331" ] }, @@ -11158,7 +11536,7 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2114", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2125", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2125", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13666", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14348", "src/tachyon/tabs/diagnostic/initController.ts:1088", "src/tachyon/tabs/dashboard/partials/renderSections.ts:224", "src/tachyon/tabs/dashboard/partials/renderSections.ts:237", @@ -11190,7 +11568,7 @@ "call": "Updating", "key": "Updating", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17131", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17813", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:116" ] }, @@ -11198,7 +11576,7 @@ "call": "Updating device routing mode...", "key": "Updating device routing mode...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13891", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14573", "src/tachyon/tabs/diagnostic/initController.ts:1349" ] }, @@ -11213,8 +11591,8 @@ "call": "Uplink", "key": "Uplink", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8138", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8150", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8224", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8236", "src/tachyon/tabs/dashboard/initController.ts:1850", "src/tachyon/tabs/dashboard/initController.ts:1863" ] @@ -11223,9 +11601,9 @@ "call": "Uploaded", "key": "Uploaded", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15638", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15683", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15827", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16320", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16365", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16509", "src/tachyon/tabs/monitoring/initController.ts:889", "src/tachyon/tabs/monitoring/initController.ts:946", "src/tachyon/tabs/monitoring/initController.ts:1141" @@ -11251,7 +11629,7 @@ "call": "URL to test through the proxy (default: Cloudflare 204).", "key": "URL to test through the proxy (default: Cloudflare 204).", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1856" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1860" ] }, { @@ -11288,7 +11666,7 @@ "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2333", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2334", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7734", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7820", "src/tachyon/tabs/dashboard/initController.ts:1321", "src/tachyon/tabs/dashboard/partials/renderSections.ts:517", "src/tachyon/tabs/dashboard/partials/renderSections.ts:518" @@ -11298,7 +11676,7 @@ "call": "URLTest details are unavailable", "key": "URLTest details are unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7704", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7790", "src/tachyon/tabs/dashboard/initController.ts:1280" ] }, @@ -11314,7 +11692,7 @@ "call": "Use 3-tier check intervals: fast (15s), normal (120s), slow (300s) instead of a single interval.", "key": "Use 3-tier check intervals: fast (15s), normal (120s), slow (300s) instead of a single interval.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1895" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1899" ] }, { @@ -11448,10 +11826,18 @@ "call": "Used by", "key": "Used by", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9388", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9474", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:25" ] }, + { + "call": "User custom strategy", + "key": "User custom strategy", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12525", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:822" + ] + }, { "call": "User-Agent", "key": "User-Agent", @@ -11518,7 +11904,7 @@ "call": "Validates sing-box config before restart to prevent boot loops on broken configs.", "key": "Validates sing-box config before restart to prevent boot loops on broken configs.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1902" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1906" ] }, { @@ -11554,7 +11940,7 @@ "call": "Verifying router and service readiness...", "key": "Verifying router and service readiness...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17335", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18017", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:370" ] }, @@ -11576,8 +11962,8 @@ "call": "View logs", "key": "View logs", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10601", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13516", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10687", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14198", "src/tachyon/tabs/diagnostic/initController.ts:831", "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:181" ] @@ -11586,8 +11972,8 @@ "call": "View logs failed", "key": "View logs failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13526", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13529", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14208", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14211", "src/tachyon/tabs/diagnostic/initController.ts:841", "src/tachyon/tabs/diagnostic/initController.ts:844" ] @@ -11617,7 +12003,7 @@ "call": "Waiting for router services to restart...", "key": "Waiting for router services to restart...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17314", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17996", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:344" ] }, @@ -11625,7 +12011,7 @@ "call": "WAN", "key": "WAN", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9424", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9510", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:70" ] }, @@ -11633,7 +12019,7 @@ "call": "WAN public IP", "key": "WAN public IP", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9523", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9609", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:198" ] }, @@ -11676,14 +12062,14 @@ "call": "WARP Proxy Section", "key": "WARP Proxy Section", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:782" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:807" ] }, { "call": "Watchdog", "key": "Watchdog", "places": [ - "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:462" + "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:487" ] }, { @@ -11697,7 +12083,7 @@ "call": "Watchdog Status", "key": "Watchdog Status", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1826" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1830" ] }, { @@ -11753,7 +12139,7 @@ "call": "Why Discord fails?", "key": "Why Discord fails?", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11676", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11762", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:171" ] }, @@ -11789,7 +12175,7 @@ "call": "Yes", "key": "Yes", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7339", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7425", "src/tachyon/tabs/dashboard/initController.ts:822" ] }, @@ -11800,22 +12186,6 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1073" ] }, - { - "call": "YouTube (GoogleVideo 4K stream)", - "key": "YouTube (GoogleVideo 4K stream)", - "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11845", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:141" - ] - }, - { - "call": "YouTube Web (Interface)", - "key": "YouTube Web (Interface)", - "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11847", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:143" - ] - }, { "call": "Zapret hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS strategies.", "key": "Zapret hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS strategies.", @@ -11827,7 +12197,7 @@ "call": "Zapret package is installed", "key": "Zapret package is installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9754", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:71" ] }, @@ -11835,7 +12205,7 @@ "call": "Zapret package is not installed", "key": "Zapret package is not installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9754", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:72" ] }, @@ -11843,7 +12213,7 @@ "call": "Zapret provider binary is available", "key": "Zapret provider binary is available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9749", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:60" ] }, @@ -11851,7 +12221,7 @@ "call": "Zapret provider binary is not available", "key": "Zapret provider binary is not available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9749", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:61" ] }, @@ -11859,7 +12229,7 @@ "call": "Zapret sing-box outbound is configured", "key": "Zapret sing-box outbound is configured", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9774", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:103" ] }, @@ -11867,7 +12237,7 @@ "call": "Zapret sing-box outbound is not configured", "key": "Zapret sing-box outbound is not configured", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9774", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:104" ] }, @@ -11875,24 +12245,24 @@ "call": "Zapret v1 (nfqws)", "key": "Zapret v1 (nfqws)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11788", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:71", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:109", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11925", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:138", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1384", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1385" ] }, { "call": "Zapret v2 (nfqws2)", "key": "Zapret v2 (nfqws2)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11786", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:69", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:104", - "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11924", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:137", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1379", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1380" ] }, { @@ -11906,7 +12276,7 @@ "call": "Zapret2 package is installed", "key": "Zapret2 package is installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9926", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:74" ] }, @@ -11914,7 +12284,7 @@ "call": "Zapret2 package is not installed", "key": "Zapret2 package is not installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9926", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:75" ] }, @@ -11922,7 +12292,7 @@ "call": "Zapret2 provider binary is available", "key": "Zapret2 provider binary is available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9921", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:63" ] }, @@ -11930,7 +12300,7 @@ "call": "Zapret2 provider binary is not available", "key": "Zapret2 provider binary is not available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9921", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:64" ] }, @@ -11938,7 +12308,7 @@ "call": "Zapret2 sing-box outbound is configured", "key": "Zapret2 sing-box outbound is configured", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9946", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:106" ] }, @@ -11946,7 +12316,7 @@ "call": "Zapret2 sing-box outbound is not configured", "key": "Zapret2 sing-box outbound is not configured", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9946", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:107" ] } diff --git a/fe-app-tachyon/locales/tachyon.pot b/fe-app-tachyon/locales/tachyon.pot index 20957327..1ae5f7fb 100644 --- a/fe-app-tachyon/locales/tachyon.pot +++ b/fe-app-tachyon/locales/tachyon.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: TACHYON\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-27 04:39+0300\n" -"PO-Revision-Date: 2026-08-27 04:39+0300\n" +"POT-Creation-Date: 2026-08-27 10:54+0300\n" +"PO-Revision-Date: 2026-08-27 10:54+0300\n" "Last-Translator: Dushnilin \n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -32,7 +32,7 @@ msgstr "" msgid ".lst Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1767 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1771 msgid "(provider default)" msgstr "" @@ -48,24 +48,29 @@ msgstr "" msgid "+ Add priority" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12509 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:803 +msgid "+ Add Strategy" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8901 msgid "+ Add URLTest" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:483 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:508 msgid "⏹ Stop" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:483 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:508 msgid "▶ Start" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1245 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1306 msgid "⚙ Advanced Settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12195 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:586 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12848 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1197 msgid "⚠️ Benchmark completed. No working bypass found for this target." msgstr "" @@ -77,95 +82,154 @@ msgstr "" msgid "⚠️ If all Main DNS fail 3 times, queries will be sent to your ISP's DNS in plaintext. Only use as a last resort to prevent complete internet loss." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10668 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:162 msgid "⚡ DPI Strategy Fuzzer" msgstr "" -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:223 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12142 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:383 +msgid "⚡ Fast (>1MB/s)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11970 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:187 +msgid "⚡ QUIC / HTTP/3 (UDP 443)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12007 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:232 msgid "⚡ Quick Benchmark (Presets ~12-14)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12346 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:768 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13028 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1418 msgid "⚡ Strategy Fuzzer & Auto-Tuner" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12195 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:585 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12848 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1196 msgid "✅ Benchmark completed! Optimal strategy identified." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8219 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12133 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:374 +msgid "✅ Working only" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11967 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:184 +msgid "✈️ Telegram Suite (Web + Bot API)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8305 #: src/tachyon/tabs/dashboard/initController.ts:1941 msgid "✔ Online" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8176 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8183 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8262 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8269 #: src/tachyon/tabs/dashboard/initController.ts:1891 #: src/tachyon/tabs/dashboard/initController.ts:1900 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:498 msgid "✔ Running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8219 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8305 #: src/tachyon/tabs/dashboard/initController.ts:1941 msgid "✘ Offline" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8176 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8183 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8262 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8269 #: src/tachyon/tabs/dashboard/initController.ts:1891 #: src/tachyon/tabs/dashboard/initController.ts:1900 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:498 msgid "✘ Stopped" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12081 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:447 -msgid "🏆 Apply Best Strategy" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11971 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:188 +msgid "🌐 Custom Target URL..." msgstr "" -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:228 -msgid "🔍 Combinatorial Deep Fuzzing (~40-60)" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11952 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:169 +msgid "🎬 YouTube Suite (Web + 4K Stream)" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:728 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12099 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:337 +msgid "🏆 Apply Best Match" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11969 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:186 +msgid "🏴‍☠️ RuTracker Suite" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11957 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:174 +msgid "💬 Discord Suite (API + WSS + CDN)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12458 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:743 +msgid "💾 Save Custom Patterns" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11962 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:179 +msgid "📸 Instagram / Meta (Web + CDN)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12470 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:756 +msgid "🔄 Reset to Factory Defaults" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12012 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:237 +msgid "🔍 Combinatorial Deep Fuzzing (~40-80+)" +msgstr "" + +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:753 msgid "🔑 Generate" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11919 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12315 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:263 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:730 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12662 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12972 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:979 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1344 msgid "🧠 Synthesize with AI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12272 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:679 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12927 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1290 msgid "🧠 Synthesizing..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12221 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:618 -msgid "🚀 Run Benchmark Again" -msgstr "" - -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12076 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12266 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:441 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:672 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12227 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12874 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12921 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:483 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1229 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1283 msgid "🚀 Start Benchmark" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12250 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12296 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:652 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:709 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12903 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12953 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1263 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1323 msgid "🛑 Stop Benchmark" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12014 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:239 +msgid "🛠️ My Custom Strategies Only" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:449 msgid "Accept external proxy connections and route them with sing-box." msgstr "" @@ -174,14 +238,12 @@ msgstr "" msgid "Accept routes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12051 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7245 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7275 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:413 msgid "Action" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9182 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9268 #: src/tachyon/helpers/notifyActionFailure.ts:40 msgid "Action failed" msgstr "" @@ -190,9 +252,16 @@ msgstr "" msgid "Action Mode" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7578 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14918 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15503 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12202 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12575 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:455 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:879 +msgid "Actions" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7664 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15600 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16185 #: src/tachyon/tabs/dashboard/initController.ts:1127 #: src/tachyon/tabs/monitoring/initController.ts:722 #: src/tachyon/tabs/monitoring/render.ts:20 @@ -209,7 +278,7 @@ msgstr "" msgid "Active (Blocking)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9277 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9363 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:56 msgid "Active Bootstrap DNS" msgstr "" @@ -221,17 +290,17 @@ msgstr "" msgid "Active Clients" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8162 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8248 #: src/tachyon/tabs/dashboard/initController.ts:1876 msgid "Active Connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9284 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9370 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67 msgid "Active Main DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10988 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11074 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:245 msgid "Active routes" msgstr "" @@ -254,6 +323,11 @@ msgstr "" msgid "Add at least one DNS server" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12543 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:843 +msgid "Add Custom DPI Strategy" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2538 msgid "Add prefix to nodes" msgstr "" @@ -278,7 +352,7 @@ msgstr "" msgid "Add URLTest / Priority group" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9619 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:106 msgid "Additional marking rules found" msgstr "" @@ -305,7 +379,7 @@ msgstr "" msgid "Address" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2186 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2190 msgid "Administrator Chat IDs" msgstr "" @@ -313,7 +387,7 @@ msgstr "" msgid "Adult content" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:595 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:620 msgid "Advanced self-healing features. Requires Watchdog to be enabled." msgstr "" @@ -337,108 +411,115 @@ msgstr "" msgid "AI & Watchdog" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:690 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:715 msgid "AI Agent REST API (12 Endpoints)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1718 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1722 msgid "AI Agent REST API Bearer Token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1786 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:942 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1790 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1003 msgid "AI API Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11732 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:235 msgid "AI Chat & Tachyon Assistant" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10572 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10658 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:152 msgid "AI Chat Assistant" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11937 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:284 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12680 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1000 msgid "AI Diagnostics & Strategy Rationale" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:744 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:769 msgid "AI Doctor (ChatGPT / DeepSeek API)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14078 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14760 #: src/tachyon/tabs/diagnostic/initController.ts:1563 msgid "AI Doctor Diagnosis" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13539 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14081 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14089 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14221 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14763 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14771 #: src/tachyon/tabs/diagnostic/initController.ts:857 #: src/tachyon/tabs/diagnostic/initController.ts:1569 #: src/tachyon/tabs/diagnostic/initController.ts:1577 msgid "AI Doctor failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1773 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:909 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1777 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:970 msgid "AI Doctor Language" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11962 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:312 -msgid "AI DPI Engineer & Strategy Synthesizer (RAG-Powered)" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11891 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:91 +msgid "AI Doctor RAG" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1760 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:884 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12702 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1025 +msgid "AI DPI Engineer & Strategy Synthesizer" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1764 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:945 msgid "AI Model" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1743 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:806 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1747 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:867 msgid "AI Provider" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11659 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11745 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:151 msgid "AI service error" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12288 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:698 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12943 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1309 msgid "AI successfully synthesized custom strategies!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12309 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:724 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12966 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1338 msgid "AI Synthesis Error" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12308 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:723 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12965 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1337 msgid "AI synthesis failed" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:590 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:615 msgid "AI Watchdog" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:417 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:442 msgid "AI Watchdog settings saved. Restart watchdog to apply." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14937 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15468 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12124 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15619 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16150 #: src/tachyon/tabs/monitoring/initController.ts:681 #: src/tachyon/tabs/monitoring/render.ts:40 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:365 msgid "All" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2398 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2402 msgid "All checks passed — Telegram bot should work correctly" msgstr "" @@ -447,8 +528,8 @@ msgstr "" msgid "All devices" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11790 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:73 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11927 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:140 msgid "All Engines (Full Matrix)" msgstr "" @@ -477,8 +558,8 @@ msgstr "" msgid "All remaining servers means every server not already assigned to a higher-priority level." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14945 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15441 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15627 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16123 #: src/tachyon/tabs/monitoring/initController.ts:644 #: src/tachyon/tabs/monitoring/render.ts:49 msgid "All Routes" @@ -488,8 +569,8 @@ msgstr "" msgid "All servers" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10997 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11100 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11083 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11186 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:257 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:376 msgid "All services" @@ -536,7 +617,7 @@ msgstr "" msgid "Allows limiting the list of servers for URLTest" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1732 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1736 msgid "Allows Tachyon to send diagnostic snapshots to ChatGPT or DeepSeek API for intelligent root-cause analysis and auto-repair recommendations." msgstr "" @@ -556,27 +637,27 @@ msgstr "" msgid "AmneziaWG Generator" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13614 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14296 #: src/tachyon/tabs/diagnostic/initController.ts:970 msgid "Anonymized support report copied to clipboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18088 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18770 #: src/tachyon/tabs/updates/initController.ts:906 msgid "Another component action is already running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1787 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1791 msgid "API Key for OpenAI (sk-...) or DeepSeek (optional for Ollama / LM Studio)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12326 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12983 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1356 msgid "Applied" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12168 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:551 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12817 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1158 msgid "Apply" msgstr "" @@ -588,27 +669,32 @@ msgstr "" msgid "Apply section rules only to the specified local IP addresses" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11904 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:208 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12050 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:280 msgid "Apply Strategy To" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13744 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14426 #: src/tachyon/tabs/diagnostic/initController.ts:1181 msgid "Applying fix" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14424 #: src/tachyon/tabs/diagnostic/initController.ts:1179 msgid "Applying..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11583 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12569 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:872 +msgid "Arguments" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11669 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:60 msgid "Ask Tachyon AI Assistant a question..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2197 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2201 msgid "At least one Admin Chat ID is required" msgstr "" @@ -625,9 +711,9 @@ msgid "Auth Digest" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2280 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7418 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7758 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10815 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7504 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7844 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10901 #: src/tachyon/tabs/dashboard/initController.ts:923 #: src/tachyon/tabs/dashboard/initController.ts:1355 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:452 @@ -635,7 +721,12 @@ msgstr "" msgid "Auto" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10401 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12432 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:715 +msgid "Auto Modes (--auto)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10487 #: src/partials/modal/renderModal.ts:286 msgid "Auto refresh" msgstr "" @@ -644,7 +735,7 @@ msgstr "" msgid "Auto update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1989 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1993 msgid "Auto-detected domains" msgstr "" @@ -652,8 +743,8 @@ msgstr "" msgid "Auto-detected Domains" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1949 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1102 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1953 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1163 msgid "Auto-detects blocked domains from logs and adds them to the first section where they work via proxy." msgstr "" @@ -665,7 +756,7 @@ msgstr "" msgid "Auto-generate HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13672 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14354 #: src/tachyon/tabs/diagnostic/initController.ts:1094 msgid "Auto-Heal Network Stack" msgstr "" @@ -674,11 +765,6 @@ msgstr "" msgid "Auto-update Hosts Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11762 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:40 -msgid "Automated DPI Strategy Fuzzer & Auto-Tuner" -msgstr "" - #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1397 msgid "Automatic component update checks" msgstr "" @@ -699,11 +785,16 @@ msgstr "" msgid "Automatically generate a Cloudflare WARP account and configure all AmneziaWG settings." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1923 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1927 msgid "Automatically increase check intervals when healthy (to 5 min) and decrease on problems (to 120s)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12713 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1036 +msgid "Automatically runs a diagnostic probe against the target service, queries the built-in DPI Knowledge Base, and synthesizes 3-5 custom bypass strategies tailored to your ISP." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7924 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3157 #: src/tachyon/tabs/dashboard/initController.ts:1458 msgid "Automatically select the fastest node in the current level" @@ -713,19 +804,19 @@ msgstr "" msgid "Automatically update remote hosts lists on schedule" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10885 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11075 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10971 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11161 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:125 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:346 msgid "Available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10478 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10564 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:58 msgid "Available actions" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11077 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11163 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:348 msgid "Avg. latency" msgstr "" @@ -736,12 +827,12 @@ msgstr "" msgid "Backend validation failed: %s" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10832 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10918 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:58 msgid "Basic connectivity" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:700 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:725 msgid "Bearer Auth Token" msgstr "" @@ -753,21 +844,21 @@ msgstr "" msgid "Belarus (by)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12244 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:645 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11888 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:88 +msgid "Benchmark & Test" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12897 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1256 msgid "Benchmark stopped" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11993 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12071 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:306 msgid "Benchmarking in progress..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11770 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:48 -msgid "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput." -msgstr "" - #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9535 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9554 msgid "BitTorrent / P2P" @@ -806,7 +897,7 @@ msgstr "" msgid "Block: deny the listed sites. Allow only (whitelist): deny everything except the listed sites. Whitelist mode requires DNS-level blocking and applies to the schedule window." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10833 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10919 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:59 msgid "Blocked resources" msgstr "" @@ -819,7 +910,7 @@ msgstr "" msgid "Blocked Sites (Domains)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9277 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9363 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:57 msgid "Bootstrap DNS" msgstr "" @@ -828,28 +919,28 @@ msgstr "" msgid "Bootstrap DNS Servers" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2148 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2152 msgid "Bot Status" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9657 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9743 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9762 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:51 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:79 msgid "Browser FakeIP check could not be completed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9762 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:82 msgid "Browser is not using FakeIP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9762 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:81 msgid "Browser is using FakeIP correctly" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14228 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14910 #: src/tachyon/tabs/diagnostic/initController.ts:1745 msgid "Bug report downloaded" msgstr "" @@ -862,12 +953,12 @@ msgstr "" msgid "By flag emoji from name" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11789 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:72 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:114 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:115 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11926 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:139 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1389 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1390 msgid "ByeDPI (ciadpi)" msgstr "" @@ -890,32 +981,32 @@ msgstr "" msgid "ByeDPI option requires a value: %s" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9929 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10015 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:71 msgid "ByeDPI package is installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9929 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10015 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:72 msgid "ByeDPI package is not installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9924 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10010 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:64 msgid "ByeDPI provider binary is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9924 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10010 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:65 msgid "ByeDPI provider binary is not available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9944 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10030 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:107 msgid "ByeDPI sing-box outbound is configured" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9944 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10030 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:108 msgid "ByeDPI sing-box outbound is not configured" msgstr "" @@ -948,7 +1039,7 @@ msgstr "" msgid "Cache file path cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14125 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14807 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7721 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:434 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:575 @@ -958,14 +1049,14 @@ msgstr "" msgid "Cancel" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9257 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9321 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9502 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9565 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9727 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9811 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9899 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12478 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9343 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9407 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9588 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9651 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9813 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9897 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9985 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13160 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:26 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:27 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:172 @@ -997,18 +1088,18 @@ msgstr "" msgid "Certificate pin is unavailable. Apply or restart the server to generate the default certificate, then open this dialog again." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11510 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11596 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:865 msgid "Check again" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11460 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11546 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:793 msgid "Check all" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17298 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17812 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17980 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18494 #: src/tachyon/tabs/updates/initController.ts:540 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:321 msgid "Check completed!" @@ -1021,26 +1112,26 @@ msgstr "" msgid "Check Connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11335 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11448 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11421 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11534 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:652 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:778 msgid "Check domain" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7825 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7911 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2645 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3108 #: src/tachyon/tabs/dashboard/initController.ts:1445 msgid "Check interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11014 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11100 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:276 msgid "Check mode:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10592 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10678 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:172 msgid "Check Services" msgstr "" @@ -1049,43 +1140,43 @@ msgstr "" msgid "Check timeout after which the server is considered dead" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18146 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18828 #: src/tachyon/tabs/updates/initController.ts:975 msgid "Check update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7823 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7909 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2671 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3095 #: src/tachyon/tabs/dashboard/initController.ts:1443 msgid "Check URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11675 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11761 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:170 msgid "Check YouTube" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7954 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8040 #: src/tachyon/tabs/dashboard/initController.ts:1624 msgid "Checking Connection..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17127 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17809 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:112 msgid "Checking for updates..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9247 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9311 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9492 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9553 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9636 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9717 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9801 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9889 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12466 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14485 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9333 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9397 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9578 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9639 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9722 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9803 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9887 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9975 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13148 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15167 #: src/tachyon/tabs/diagnostic/initController.ts:2051 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:14 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:15 @@ -1111,32 +1202,32 @@ msgid "Checking..." msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:275 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2040 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2044 msgid "Checking…" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5310 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5396 #: src/tachyon/tabs/diagnostic/helpers/getCheckTitle.ts:2 msgid "checks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9217 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9303 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9781 #: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:10 #: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:26 msgid "Checks failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9206 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9652 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9706 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9292 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9738 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9792 #: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:23 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:43 #: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:13 msgid "Checks passed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9229 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9315 #: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:27 msgid "Checks passed with manual DHCP" msgstr "" @@ -1178,7 +1269,7 @@ msgstr "" msgid "Clear" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13665 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14347 #: src/tachyon/tabs/diagnostic/initController.ts:1087 msgid "Clear DNS cache" msgstr "" @@ -1227,17 +1318,17 @@ msgstr "" msgid "Client VPN IP address (e.g. 10.0.0.2/32)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7696 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10380 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10933 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11515 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11725 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12087 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14069 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15642 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15685 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17393 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17428 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7782 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10466 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11019 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11601 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11811 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12239 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14751 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16324 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16367 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18075 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18110 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3660 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10239 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1803 @@ -1249,28 +1340,28 @@ msgstr "" #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:227 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:178 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:871 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:454 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:497 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:442 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:488 msgid "Close" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14964 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14965 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15646 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15647 #: src/tachyon/tabs/monitoring/render.ts:68 #: src/tachyon/tabs/monitoring/render.ts:69 msgid "Close all connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15611 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15612 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16293 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16294 #: src/tachyon/tabs/monitoring/initController.ts:860 #: src/tachyon/tabs/monitoring/initController.ts:861 msgid "Close connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14927 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15509 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15609 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16191 #: src/tachyon/tabs/monitoring/initController.ts:729 #: src/tachyon/tabs/monitoring/render.ts:29 msgid "Closed" @@ -1292,15 +1383,20 @@ msgstr "" msgid "Cloudflare WARP API access token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2187 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2191 msgid "Comma-separated list of Telegram user IDs authorized to control the bot." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12505 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:798 +msgid "Command-line arguments string..." +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10219 msgid "Community Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6259 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6345 #: src/tachyon/services/core.service.ts:43 msgid "Component update available" msgstr "" @@ -1313,7 +1409,7 @@ msgstr "" msgid "Components" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5900 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5986 #: src/tachyon/helpers/singBoxVariant.ts:60 msgid "compressed" msgstr "" @@ -1330,7 +1426,7 @@ msgstr "" msgid "Config File Path" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1693 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1697 msgid "Config Snapshots" msgstr "" @@ -1343,15 +1439,15 @@ msgid "Configure User-Agent in the item settings" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12544 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13226 #: src/tachyon/methods/custom/getDashboardSections.ts:1651 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:620 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:141 msgid "Conflict" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:749 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:774 msgid "Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis." msgstr "" @@ -1366,7 +1462,7 @@ msgstr "" msgid "Connected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13825 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14507 #: src/tachyon/tabs/diagnostic/initController.ts:1276 msgid "Connected Devices" msgstr "" @@ -1375,18 +1471,18 @@ msgstr "" msgid "Connection URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15737 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16419 #: src/tachyon/tabs/monitoring/initController.ts:1012 msgid "Connections are unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12573 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13255 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:174 msgid "Connectivity probe failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12279 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:688 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12934 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1299 msgid "Consulting DPI Knowledge Base & AI..." msgstr "" @@ -1404,32 +1500,32 @@ msgstr "" msgid "Copied" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10373 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10459 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1753 #: src/partials/modal/renderModal.ts:258 msgid "Copy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17169 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17851 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:160 msgid "Copy log" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2317 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2318 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7628 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7714 #: src/tachyon/tabs/dashboard/initController.ts:1192 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:498 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:499 msgid "Copy proxy link" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14031 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14713 #: src/tachyon/tabs/diagnostic/initController.ts:1511 msgid "Copy Support Report" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9682 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9768 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:89 msgid "Could not compare FakeIP and control public IPs" msgstr "" @@ -1438,7 +1534,7 @@ msgstr "" msgid "Country code (e.g. ru, us, de)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13982 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14664 #: src/tachyon/tabs/diagnostic/initController.ts:1452 msgid "Current Diagnosis" msgstr "" @@ -1456,13 +1552,13 @@ msgstr "" msgid "Currently unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10835 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10921 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:61 msgid "Custom" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1797 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:964 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1801 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1025 msgid "Custom API Endpoint URL" msgstr "" @@ -1474,7 +1570,7 @@ msgstr "" msgid "Custom DNS Records (Hosts)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10834 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10920 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:60 msgid "Custom domains" msgstr "" @@ -1495,11 +1591,15 @@ msgstr "" msgid "Custom header for handshake response" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1753 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:850 +msgid "Custom interface/section" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1757 msgid "Custom OpenAI-Compatible API" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1798 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1802 msgid "Custom OpenAI-compatible API endpoint URL (e.g. http://192.168.1.100:11434/v1/chat/completions)" msgstr "" @@ -1507,9 +1607,9 @@ msgstr "" msgid "Custom outbound configurations in JSON format" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11852 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:148 -msgid "Custom Target URL..." +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12528 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:826 +msgid "Custom strategy added!" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:307 @@ -1533,19 +1633,16 @@ msgstr "" msgid "Days of Week" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2313 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2317 msgid "Default (auto)" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1634 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1645 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1646 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:826 msgid "Default (Direct WAN / Default mixed proxy)" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:787 -msgid "default (service mixed proxy)" -msgstr "" - #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1444 msgid "Default address for checking server availability and latency. URLTest uses its own address." msgstr "" @@ -1558,9 +1655,11 @@ msgstr "" msgid "Delay value cannot be empty" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12630 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1828 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:615 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:621 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:940 msgid "Delete" msgstr "" @@ -1595,11 +1694,11 @@ msgstr "" msgid "Device filter" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1175 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1236 msgid "Device IPs (one per line):" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:273 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:298 msgid "Device IPs saved" msgstr "" @@ -1607,21 +1706,21 @@ msgstr "" msgid "Device or IP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13900 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14582 #: src/tachyon/tabs/diagnostic/initController.ts:1359 msgid "Device updated" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1213 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1274 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:9231 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9317 #: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:37 msgid "DHCP has DNS server" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9231 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9317 #: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:36 msgid "DHCP is managed manually" msgstr "" @@ -1630,8 +1729,8 @@ msgstr "" msgid "Diagnostics" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10806 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10812 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10892 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10898 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2704 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:25 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:32 @@ -1642,7 +1741,7 @@ msgstr "" msgid "Direct (Default)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13888 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14570 #: src/tachyon/tabs/diagnostic/initController.ts:1346 msgid "Direct Bypass" msgstr "" @@ -1651,12 +1750,12 @@ msgstr "" msgid "Direct connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13882 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14564 #: src/tachyon/tabs/diagnostic/initController.ts:1337 msgid "Direct WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10514 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10600 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:94 msgid "Disable autostart" msgstr "" @@ -1678,9 +1777,9 @@ msgstr "" msgid "Disabling interception is incompatible with action=zapret2 because Tachyon sends matched traffic through NFQUEUE." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11848 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:144 -msgid "Discord (Gateway / API / Voice)" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12420 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:703 +msgid "Disorder Values (-d)" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2627 @@ -1697,7 +1796,7 @@ msgstr "" msgid "DNS Check Interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1867 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1871 msgid "DNS Check Interval (s)" msgstr "" @@ -1705,7 +1804,7 @@ msgstr "" msgid "DNS Failures Before Switching" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9289 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9375 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:75 msgid "DNS on router" msgstr "" @@ -1796,11 +1895,11 @@ msgid "DNS through section" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:994 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:495 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:520 msgid "DNS Turbo Cache" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:297 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:322 msgid "DNS Turbo Cache saved" msgstr "" @@ -1808,7 +1907,7 @@ msgstr "" msgid "DNS Unavailability Timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12423 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13105 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:26 msgid "Do not panic, everything can be fixed, just..." msgstr "" @@ -1837,25 +1936,25 @@ msgstr "" msgid "Do not test specified servers." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13453 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13473 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13481 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14135 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14155 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14163 #: src/tachyon/tabs/diagnostic/initController.ts:731 #: src/tachyon/tabs/diagnostic/initController.ts:773 #: src/tachyon/tabs/diagnostic/initController.ts:781 msgid "Doctor failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14144 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14146 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14146 #: src/tachyon/tabs/diagnostic/initController.ts:747 #: src/tachyon/tabs/diagnostic/initController.ts:759 #: src/tachyon/tabs/diagnostic/initController.ts:760 msgid "Doctor repair" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9410 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9496 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:54 msgid "Does not resolve" msgstr "" @@ -1872,7 +1971,7 @@ msgstr "" msgid "Domain Resolver" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1961 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1965 msgid "Domain test sections" msgstr "" @@ -1897,14 +1996,14 @@ msgstr "" msgid "Dont Touch My DHCP!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8139 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8151 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8225 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8237 #: src/tachyon/tabs/dashboard/initController.ts:1851 #: src/tachyon/tabs/dashboard/initController.ts:1864 msgid "Downlink" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10368 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10454 #: src/partials/modal/renderModal.ts:253 msgid "Download" msgstr "" @@ -1949,9 +2048,9 @@ msgstr "" msgid "Download through" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15635 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15682 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15821 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16317 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16364 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16503 #: src/tachyon/tabs/monitoring/initController.ts:886 #: src/tachyon/tabs/monitoring/initController.ts:945 #: src/tachyon/tabs/monitoring/initController.ts:1134 @@ -1962,8 +2061,8 @@ msgstr "" msgid "Downloading and applying rule sets and lists..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11803 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:88 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11940 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:155 msgid "DPI Engine" msgstr "" @@ -2016,19 +2115,19 @@ msgstr "" msgid "Enable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1922 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1926 msgid "Enable Adaptive Intervals" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1731 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1735 msgid "Enable AI Doctor (ChatGPT / LLM Analysis)" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:764 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:789 msgid "Enable AI Doctor (LLM Integration)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1929 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1933 msgid "Enable Anomaly Detection" msgstr "" @@ -2040,7 +2139,7 @@ msgstr "" msgid "Enable automatic updates for remote lists and rule sets" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10524 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10610 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:104 msgid "Enable autostart" msgstr "" @@ -2049,32 +2148,32 @@ msgstr "" msgid "Enable built-in DNS resolver for domains handled by this section" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1901 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1905 msgid "Enable Config Validation" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13673 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14355 #: src/tachyon/tabs/diagnostic/initController.ts:1095 msgid "Enable Direct WAN Bypass" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1861 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1865 msgid "Enable DNS Continuous Check" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:514 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:539 msgid "Enable DNS Turbo Cache" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1874 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1878 msgid "Enable Firewall Reload Dedup" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1908 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1912 msgid "Enable Graceful Degradation" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1881 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1885 msgid "Enable Health Metrics" msgstr "" @@ -2094,25 +2193,25 @@ msgstr "" msgid "Enable Output Network Interface" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1837 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1841 msgid "Enable Proxy Health Monitor" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1813 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:778 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1817 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:803 msgid "Enable RAG (Knowledge Base Retrieval)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1894 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1898 msgid "Enable Smart Cooldowns" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1948 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1119 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1952 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1180 msgid "Enable Smart Detect" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2158 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2162 msgid "Enable Telegram Bot" msgstr "" @@ -2124,7 +2223,7 @@ msgstr "" msgid "Enable WAN DNS Fallback for Main DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1705 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1709 msgid "Enable Watchdog" msgstr "" @@ -2136,11 +2235,11 @@ msgstr "" msgid "Enable YACD WAN Access" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2159 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2163 msgid "Enables the background daemon that polls Telegram for commands and sends notifications." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1706 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1710 msgid "Enables the background watchdog process to monitor services and auto-recover on failures." msgstr "" @@ -2152,8 +2251,10 @@ msgstr "" msgid "End Time (HH:MM)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12038 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:400 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12185 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12568 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:438 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:871 msgid "Engine" msgstr "" @@ -2172,7 +2273,7 @@ msgstr "" msgid "Enter a display name" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11328 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11414 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:644 msgid "Enter a domain or IP to check (e.g. example.com)..." msgstr "" @@ -2190,7 +2291,7 @@ msgstr "" msgid "Enter HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2170 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2174 msgid "Enter the API token obtained from @BotFather." msgstr "" @@ -2305,38 +2406,38 @@ msgstr "" msgid "External nfqws2 config files bypass Tachyon queue management and explicit validation." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13760 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14442 #: src/tachyon/tabs/diagnostic/initController.ts:1202 msgid "Failed to apply fix" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4017 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12330 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4026 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12987 #: src/tachyon/methods/shell/index.ts:1149 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:746 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1360 msgid "Failed to apply strategy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16010 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16024 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16692 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16706 #: src/tachyon/tabs/monitoring/initController.ts:1400 #: src/tachyon/tabs/monitoring/initController.ts:1415 msgid "Failed to close connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16039 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16051 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16721 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16733 #: src/tachyon/tabs/monitoring/initController.ts:1434 #: src/tachyon/tabs/monitoring/initController.ts:1447 msgid "Failed to close connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12312 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:727 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12969 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1341 msgid "Failed to communicate with AI provider" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13618 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14300 #: src/tachyon/tabs/diagnostic/initController.ts:974 msgid "Failed to copy report to clipboard" msgstr "" @@ -2351,12 +2452,12 @@ msgstr "" msgid "Failed to delete snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3277 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3280 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17897 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17897 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17957 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18129 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3283 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18579 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18579 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18639 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18811 #: src/tachyon/methods/shell/index.ts:171 #: src/tachyon/methods/shell/index.ts:178 #: src/tachyon/tabs/updates/initController.ts:661 @@ -2366,7 +2467,7 @@ msgstr "" msgid "Failed to execute" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14231 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14913 #: src/tachyon/tabs/diagnostic/initController.ts:1748 msgid "Failed to generate bug report" msgstr "" @@ -2376,12 +2477,17 @@ msgstr "" msgid "Failed to generate WARP config:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3975 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4109 +#: src/tachyon/methods/shell/index.ts:1274 +msgid "Failed to get fuzzer patterns" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3984 #: src/tachyon/methods/shell/index.ts:1101 msgid "Failed to get fuzzer status" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4042 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4053 #: src/tachyon/methods/shell/index.ts:1201 msgid "Failed to get fuzzer strategies" msgstr "" @@ -2394,7 +2500,7 @@ msgstr "" msgid "Failed to parse file:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10976 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11062 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:231 msgid "Failed to parse target list." msgstr "" @@ -2403,22 +2509,27 @@ msgstr "" msgid "Failed to parse WARP config:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3654 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3657 #: src/tachyon/methods/shell/index.ts:664 msgid "Failed to read operation log" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11628 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11714 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:115 msgid "Failed to receive response from AI service." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4161 +#: src/tachyon/methods/shell/index.ts:1336 +msgid "Failed to reset fuzzer patterns" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:417 msgid "Failed to reset settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14059 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14150 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14741 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14832 #: src/tachyon/tabs/diagnostic/initController.ts:1543 #: src/tachyon/tabs/diagnostic/initController.ts:1651 msgid "Failed to restore native internet" @@ -2428,24 +2539,34 @@ msgstr "" msgid "Failed to restore snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2385 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2407 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2389 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2411 msgid "Failed to run diagnostics — is the tachyon binary installed?" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:421 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:446 msgid "Failed to save AI Watchdog settings" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:281 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:306 msgid "Failed to save device IPs" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:299 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:324 msgid "Failed to save DNS Turbo Cache" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:247 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4135 +#: src/tachyon/methods/shell/index.ts:1305 +msgid "Failed to save fuzzer patterns" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12465 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:751 +msgid "Failed to save patterns" +msgstr "" + +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:272 msgid "Failed to save Smart Detect settings" msgstr "" @@ -2453,22 +2574,22 @@ msgstr "" msgid "Failed to save snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12264 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:670 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12919 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1281 msgid "Failed to start benchmark" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2104 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2108 msgid "Failed to start bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3952 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3961 #: src/tachyon/methods/shell/index.ts:1075 msgid "Failed to start fuzzer" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10959 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11531 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11045 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11617 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:213 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:890 msgid "Failed to start service check." @@ -2478,11 +2599,11 @@ msgstr "" msgid "Failed to start watchdog" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2118 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2122 msgid "Failed to stop bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3989 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3998 #: src/tachyon/methods/shell/index.ts:1116 msgid "Failed to stop fuzzer" msgstr "" @@ -2491,30 +2612,30 @@ msgstr "" msgid "Failed to stop watchdog" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7239 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7245 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7325 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7331 #: src/tachyon/tabs/dashboard/initController.ts:700 #: src/tachyon/tabs/dashboard/initController.ts:706 msgid "Failed to switch proxy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4075 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4086 #: src/tachyon/methods/shell/index.ts:1246 msgid "Failed to synthesize AI strategies" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13905 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14587 #: src/tachyon/tabs/diagnostic/initController.ts:1364 msgid "Failed to update device" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6945 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6945 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6960 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6993 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6996 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7896 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7899 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7031 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7031 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7046 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7082 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7982 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7985 #: src/tachyon/tabs/dashboard/initController.ts:309 #: src/tachyon/tabs/dashboard/initController.ts:310 #: src/tachyon/tabs/dashboard/initController.ts:330 @@ -2529,17 +2650,17 @@ msgstr "" msgid "Failover failure threshold" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9682 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9768 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:91 msgid "FakeIP and control checks use different public IPs" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9682 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9768 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:92 msgid "FakeIP and control checks use the same public IP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9654 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9740 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:46 msgid "FakeIP works; public IP comparison is inconclusive" msgstr "" @@ -2552,22 +2673,22 @@ msgstr "" msgid "Fallback on unknown DC" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1862 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1866 msgid "Faster DNS health monitoring than the default cycle. Switches bootstrap DNS on failure." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7843 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7929 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3168 #: src/tachyon/tabs/dashboard/initController.ts:1464 msgid "Faster server search interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4460 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4546 #: src/tachyon/methods/custom/getDashboardSections.ts:661 msgid "Fastest" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11228 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:425 msgid "Filter by service:" msgstr "" @@ -2576,21 +2697,26 @@ msgstr "" msgid "Filter the servers that will be displayed on the dashboard." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12114 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:355 +msgid "Filter:" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9252 msgid "Finland (fi)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9474 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9560 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:136 msgid "Firewall WAN port" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13754 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14436 #: src/tachyon/tabs/diagnostic/initController.ts:1196 msgid "Fix applied" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13659 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14341 #: src/tachyon/tabs/diagnostic/initController.ts:1081 msgid "Fix resolv.conf" msgstr "" @@ -2600,18 +2726,28 @@ msgstr "" msgid "Fix the highlighted fields and save again." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13750 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14144 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14432 #: src/tachyon/tabs/diagnostic/initController.ts:753 #: src/tachyon/tabs/diagnostic/initController.ts:1192 msgid "Fixed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14358 #: src/tachyon/tabs/diagnostic/initController.ts:1098 msgid "Flush Conntrack Table" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12389 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:670 +msgid "Fooling Methods (dpi-desync-fooling)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12340 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:619 +msgid "Fooling Methods (fooling)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1360 msgid "Force immediate download and refresh of all remote lists and rule sets" msgstr "" @@ -2648,7 +2784,7 @@ msgstr "" msgid "Fronting proxy protocol" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11678 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11764 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:173 msgid "Full System Diagnostic" msgstr "" @@ -2673,7 +2809,7 @@ msgstr "" msgid "Generate a random 16-character hexadecimal HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10619 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10705 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:199 msgid "Generate bug report" msgstr "" @@ -2693,7 +2829,7 @@ msgstr "" msgid "Generate WARP Config" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9438 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9524 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:89 msgid "Generated inbound" msgstr "" @@ -2722,11 +2858,11 @@ msgstr "" msgid "Germany (de)" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:735 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:760 msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer ." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10533 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10619 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:113 msgid "Get global check" msgstr "" @@ -2735,20 +2871,20 @@ msgstr "" msgid "Give the snapshot a name. It is saved with the current date and can be restored from this list later." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13428 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14110 #: src/tachyon/tabs/diagnostic/initController.ts:703 msgid "Global check" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13439 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13443 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14121 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14125 #: src/tachyon/tabs/diagnostic/initController.ts:714 #: src/tachyon/tabs/diagnostic/initController.ts:718 msgid "Global check failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12326 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12983 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1356 msgid "Global Default" msgstr "" @@ -2760,11 +2896,11 @@ msgstr "" msgid "Handshake timeout" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:598 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:623 msgid "Health Checks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11543 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11629 #: 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." msgstr "" @@ -2833,12 +2969,12 @@ msgstr "" msgid "Hide URLTest group nodes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10420 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10506 #: src/partials/modal/renderModal.ts:310 msgid "Hide values" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7830 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7916 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3132 #: src/tachyon/tabs/dashboard/initController.ts:1450 msgid "Higher-level check interval" @@ -2848,13 +2984,13 @@ msgstr "" msgid "Higher-priority DNS Check" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14006 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14688 #: src/tachyon/tabs/diagnostic/initController.ts:1480 msgid "History" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15625 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15678 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16307 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16360 #: src/tachyon/tabs/monitoring/initController.ts:876 #: src/tachyon/tabs/monitoring/initController.ts:941 msgid "Host" @@ -2868,7 +3004,7 @@ msgstr "" msgid "Hosts Lists Update Interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1888 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1892 msgid "How many hours of metrics to keep (default 24)." msgstr "" @@ -2880,15 +3016,15 @@ msgstr "" msgid "How often the currently selected server is checked" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1868 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1872 msgid "How often to check DNS health in seconds (default 60)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1844 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1848 msgid "How often to check proxy health in seconds (fast tier, default 30)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2210 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2214 msgid "How often to check Telegram for new messages (default: 5)." msgstr "" @@ -2905,7 +3041,7 @@ msgstr "" msgid "HTTP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5201 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5287 #: src/tachyon/api.ts:27 msgid "HTTP error" msgstr "" @@ -2914,7 +3050,7 @@ msgstr "" msgid "HTTP hosts" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:695 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:720 msgid "HTTP REST API for external AI agents (Claude, GPT, Open-WebUI) served at /cgi-bin/tachyon-agent/" msgstr "" @@ -2922,14 +3058,14 @@ msgstr "" msgid "HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7714 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7800 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2684 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3204 #: src/tachyon/tabs/dashboard/initController.ts:1295 msgid "Idle timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1909 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1913 msgid "If one health check fails with an error, continue running other checks instead of stopping." msgstr "" @@ -3056,39 +3192,34 @@ msgstr "" msgid "Init timeout (Itime)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11849 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:145 -msgid "Instagram / Meta (TLS 1.3)" -msgstr "" - -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17383 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18155 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18065 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18837 #: src/tachyon/tabs/updates/initController.ts:989 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:431 msgid "Install" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18578 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19260 #: src/tachyon/tabs/updates/initController.ts:1502 msgid "Install another build:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:104 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:109 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:114 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1379 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1384 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1389 msgid "Installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18458 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19140 #: src/tachyon/tabs/updates/initController.ts:1363 msgid "Installed build → Available build" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17676 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18466 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18358 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19148 #: src/tachyon/tabs/updates/initController.ts:359 #: src/tachyon/tabs/updates/initController.ts:1371 msgid "Installed version is newer than release" @@ -3106,8 +3237,8 @@ msgstr "" msgid "Interface monitoring for Bad WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7716 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7848 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7802 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7934 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2698 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3184 #: src/tachyon/tabs/dashboard/initController.ts:1297 @@ -3123,7 +3254,7 @@ msgstr "" msgid "Interrupt connections when URLTest switches the selected server" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7712 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7798 #: src/tachyon/tabs/dashboard/initController.ts:1293 msgid "Interval" msgstr "" @@ -3493,6 +3624,11 @@ msgstr "" msgid "IP Addresses (IP CIDR)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12444 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:727 +msgid "IP Frag Bounds (--ip-frag)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9320 msgid "IPs" msgstr "" @@ -3509,19 +3645,19 @@ msgstr "" msgid "Isolate BitTorrent traffic and force it direct to prevent VPN bans" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14144 #: src/tachyon/tabs/diagnostic/initController.ts:749 msgid "Issues" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9212 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9701 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9298 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9787 #: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:17 #: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:20 msgid "Issues detected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13776 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14458 #: src/tachyon/tabs/diagnostic/initController.ts:1221 msgid "Issues detected. Review the diagnosis above." msgstr "" @@ -3626,7 +3762,7 @@ msgid "Keep URLTest before latency-sorted servers" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:995 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:500 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:525 msgid "Keeps FakeIP cache persistent across reboots and pre-resolves popular blocked domains on startup so first-visit latency is 0 ms." msgstr "" @@ -3642,22 +3778,17 @@ msgstr "" msgid "Keyword must not contain spaces or commas" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11967 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:317 -msgid "Knowledge Base + Live Probe Context" -msgstr "" - -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13992 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14674 #: src/tachyon/tabs/diagnostic/initController.ts:1464 msgid "LAN Devices" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1774 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1778 msgid "Language for AI Doctor diagnosis responses" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3540 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3559 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3543 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3562 #: src/tachyon/methods/shell/index.ts:519 #: src/tachyon/methods/shell/index.ts:540 msgid "Latency test failed" @@ -3667,14 +3798,14 @@ msgstr "" msgid "Latency test URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17678 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18464 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18360 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19146 #: src/tachyon/tabs/updates/initController.ts:362 #: src/tachyon/tabs/updates/initController.ts:1369 msgid "Latest version is installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18466 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19148 #: src/tachyon/tabs/updates/initController.ts:1371 msgid "Latest version:" msgstr "" @@ -3695,7 +3826,7 @@ msgstr "" msgid "List must be an HTTP(S) URL or a local .lst path" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1990 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1994 msgid "List of domains automatically detected and the section they were added to. To edit or remove them, open the routing rules of the respective section." msgstr "" @@ -3711,7 +3842,7 @@ msgstr "" msgid "Listen port" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9468 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9554 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:125 msgid "Listening port" msgstr "" @@ -3720,8 +3851,8 @@ msgstr "" msgid "Lists and rule sets successfully updated!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1752 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:869 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1756 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:930 msgid "LM Studio (Local PC / Server)" msgstr "" @@ -3750,31 +3881,31 @@ msgstr "" msgid "Loading client link..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13795 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14477 #: src/tachyon/tabs/diagnostic/initController.ts:1243 msgid "Loading connected LAN devices..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14996 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15728 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15678 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16410 #: src/tachyon/tabs/monitoring/initController.ts:1002 #: src/tachyon/tabs/monitoring/render.ts:101 msgid "Loading connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10908 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10947 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10994 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11033 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:150 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:194 msgid "Loading service list..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18330 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18343 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18353 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18363 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18373 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18383 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19012 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19025 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19035 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19045 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19055 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19065 #: src/tachyon/tabs/updates/initController.ts:1201 #: src/tachyon/tabs/updates/initController.ts:1216 #: src/tachyon/tabs/updates/initController.ts:1234 @@ -3784,7 +3915,7 @@ msgstr "" msgid "Loading..." msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1223 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1284 msgid "Loading…" msgstr "" @@ -3796,12 +3927,12 @@ msgstr "" msgid "Log Level" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5902 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5988 #: src/tachyon/helpers/singBoxVariant.ts:62 msgid "lx" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9284 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9370 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67 msgid "Main DNS" msgstr "" @@ -3811,8 +3942,8 @@ msgid "Main DNS server. If multiple servers are selected, a timeout switches to msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2280 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7411 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7751 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7497 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7837 #: src/tachyon/tabs/dashboard/initController.ts:914 #: src/tachyon/tabs/dashboard/initController.ts:1346 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:450 @@ -3855,7 +3986,7 @@ msgstr "" msgid "Match traffic by packet DSCP mark (assigned in Windows via Policy-Based QoS). Examples: 46 (EF), 0x2e, 34 (AF41)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1936 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1940 msgid "Max reconnects per hour before alert (default 10)." msgstr "" @@ -3867,7 +3998,7 @@ msgstr "" msgid "Maximum time to wait for example.com to resolve during a DNS health check." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8163 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8249 #: src/tachyon/tabs/dashboard/initController.ts:1877 msgid "Memory Usage" msgstr "" @@ -3880,7 +4011,7 @@ msgstr "" msgid "Method" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1887 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1891 msgid "Metrics Retention (hours)" msgstr "" @@ -3913,7 +4044,7 @@ msgstr "" msgid "Mode" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1761 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1765 msgid "Model name to use. Leave empty to use default (gpt-4o-mini / claude-3-5-haiku / deepseek-chat / llama3:latest)." msgstr "" @@ -3933,19 +4064,19 @@ msgstr "" msgid "Monitoring" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:643 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:668 msgid "Monitoring & Analytics" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1930 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1934 msgid "Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour." msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1053 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1114 msgid "Move down" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1042 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1103 msgid "Move up" msgstr "" @@ -3954,7 +4085,7 @@ msgstr "" msgid "MTU" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2200 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2204 msgid "Must be a comma-separated list of numeric IDs" msgstr "" @@ -3963,6 +4094,16 @@ msgstr "" msgid "Must be a number in the range of 0 - 10000" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11890 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:90 +msgid "My Strategies" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12567 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:870 +msgid "Name" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2628 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3085 msgid "Name displayed on the dashboard" @@ -3972,8 +4113,8 @@ msgstr "" msgid "Name shown in the priority level list" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14049 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14731 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14824 #: src/tachyon/tabs/diagnostic/initController.ts:1533 #: src/tachyon/tabs/diagnostic/initController.ts:1643 msgid "Native internet restored. Tachyon stopped." @@ -4004,20 +4145,20 @@ msgstr "" msgid "New domains:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6257 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6343 #: src/tachyon/services/core.service.ts:38 msgid "New version %s is available for %s" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9769 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9855 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9941 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:100 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:97 msgid "NFQUEUE range is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9769 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9855 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9941 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:99 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:96 msgid "NFQUEUE range overlaps with another rule" @@ -4039,10 +4180,10 @@ msgstr "" msgid "NFQWS2 strategy cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7339 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7342 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7402 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7425 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7428 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7488 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7828 #: src/tachyon/tabs/dashboard/initController.ts:822 #: src/tachyon/tabs/dashboard/initController.ts:826 #: src/tachyon/tabs/dashboard/initController.ts:902 @@ -4055,37 +4196,37 @@ msgstr "" msgid "No active clients" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15747 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16429 #: src/tachyon/tabs/monitoring/initController.ts:1026 msgid "No active connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13806 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14488 #: src/tachyon/tabs/diagnostic/initController.ts:1255 msgid "No active DHCP clients found on local network." msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:703 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1161 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1222 msgid "No active routing sections found." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12066 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:428 -msgid "No benchmark results yet. Select engine and click \"Start Benchmark\" or \"Synthesize with AI\"." +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12217 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:470 +msgid "No benchmark results yet. Configure options and click \"Start Benchmark\"." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10983 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11069 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:239 msgid "No check targets found in the configuration." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15747 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16429 #: src/tachyon/tabs/monitoring/initController.ts:1027 msgid "No closed connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9394 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9480 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:32 msgid "No conflict detected" msgstr "" @@ -4094,21 +4235,26 @@ msgstr "" msgid "No Custom Rules Matched" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13589 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12592 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:898 +msgid "No custom strategies added yet." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14271 #: src/tachyon/tabs/diagnostic/initController.ts:943 msgid "No DHCP clients detected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13922 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14604 #: src/tachyon/tabs/diagnostic/initController.ts:1382 msgid "No diagnostic history available yet." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2005 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2009 msgid "No domains detected yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9514 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9600 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:187 msgid "No enabled server inbounds configured" msgstr "" @@ -4117,37 +4263,37 @@ msgstr "" msgid "No file selected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13783 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14465 #: src/tachyon/tabs/diagnostic/initController.ts:1230 msgid "No issues detected. System is running normally." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14146 #: src/tachyon/tabs/diagnostic/initController.ts:760 msgid "No issues found" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9619 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:105 msgid "No other marking rules found" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9447 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9533 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:99 msgid "No public firewall port required" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9934 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10020 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:79 msgid "No rules use ByeDPI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9759 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:79 msgid "No rules use Zapret" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9931 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:82 msgid "No rules use Zapret2" msgstr "" @@ -4161,17 +4307,22 @@ msgstr "" msgid "No snapshots yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7644 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12746 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1076 +msgid "No strategies match the active filter." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7730 #: src/tachyon/tabs/dashboard/initController.ts:1211 msgid "Node list is empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7483 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7569 #: src/tachyon/tabs/dashboard/initController.ts:1010 msgid "Nodes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13586 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14268 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:313 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:325 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:336 @@ -4185,9 +4336,9 @@ msgid "None" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9403 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12555 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9489 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13237 #: src/tachyon/methods/custom/getDashboardSections.ts:1654 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:623 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:46 @@ -4202,55 +4353,55 @@ msgstr "" msgid "Not connected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9424 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9524 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9510 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9610 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:70 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:199 msgid "Not detected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10783 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10869 #: src/tachyon/tabs/diagnostic/partials/renderCheckSection.ts:193 msgid "Not implement yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5887 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5892 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18353 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18363 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18373 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18383 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5973 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5978 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19035 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19045 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19055 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19065 #: src/tachyon/helpers/singBoxVariant.ts:38 #: src/tachyon/helpers/singBoxVariant.ts:46 #: src/tachyon/tabs/updates/initController.ts:1237 #: src/tachyon/tabs/updates/initController.ts:1251 #: src/tachyon/tabs/updates/initController.ts:1265 #: src/tachyon/tabs/updates/initController.ts:1279 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:115 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1380 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1385 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1390 msgid "Not installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9417 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9503 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:62 msgid "Not public" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9475 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9561 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:139 msgid "Not required for this listen address" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2195 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2578 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12506 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12525 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12530 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12578 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13188 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13207 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13212 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13260 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:332 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:826 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:91 @@ -4260,11 +4411,11 @@ msgstr "" msgid "Not responding" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5476 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12986 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13156 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13202 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13264 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5562 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13668 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13884 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13946 #: src/tachyon/tabs/diagnostic/diagnostic.store.ts:142 #: src/tachyon/tabs/diagnostic/initController.ts:127 #: src/tachyon/tabs/diagnostic/initController.ts:358 @@ -4281,27 +4432,27 @@ msgstr "" msgid "Notify in Telegram" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2282 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2286 msgid "Notify on Certificate Warnings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2230 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2234 msgid "Notify on Core Crashes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2295 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2299 msgid "Notify on DNS Leaks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2256 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2260 msgid "Notify on Server Switches" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2243 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2247 msgid "Notify on Service Restarts" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2269 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2273 msgid "Notify on Subscription Updates" msgstr "" @@ -4313,7 +4464,7 @@ msgstr "" msgid "Number of consecutive failed probes before switching sections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1854 msgid "Number of consecutive failures before restarting (default 3)." msgstr "" @@ -4333,8 +4484,8 @@ msgstr "" msgid "Obfuscation password" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1751 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:861 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1755 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:922 msgid "Ollama (Local PC / Server)" msgstr "" @@ -4376,8 +4527,13 @@ msgstr "" msgid "Only the specified servers." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18441 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18478 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12426 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:709 +msgid "OOB Values (-o)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19123 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19160 #: src/tachyon/tabs/updates/initController.ts:1345 #: src/tachyon/tabs/updates/initController.ts:1384 msgid "Open" @@ -4387,62 +4543,62 @@ msgstr "" msgid "Open priority settings and enter a display name" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12428 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13110 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:31 msgid "Open Project Page" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17298 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17980 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:324 msgid "Operation completed successfully!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17424 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18106 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:483 msgid "Operation failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17125 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17180 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17807 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17862 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:110 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:172 msgid "Operation in progress..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17166 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17848 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:157 msgid "Operation log" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3654 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3657 #: src/tachyon/methods/shell/index.ts:663 msgid "Operation log is not available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17162 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17844 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:152 msgid "Operation started. Waiting for log output..." msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:1066 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3520 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3588 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3523 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3591 #: src/helpers/withTimeout.ts:7 #: src/tachyon/methods/shell/index.ts:489 #: src/tachyon/methods/shell/index.ts:577 msgid "Operation timed out" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:672 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:697 msgid "Optimization" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13678 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14360 #: src/tachyon/tabs/diagnostic/initController.ts:1100 msgid "Optimize AWG MTU" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13670 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14352 #: src/tachyon/tabs/diagnostic/initController.ts:1092 msgid "Optimize RAM memory" msgstr "" @@ -4456,13 +4612,13 @@ msgstr "" msgid "Optional — leave empty for default" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:950 -msgid "Optional for local LLM" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12656 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:972 +msgid "Optional context (e.g. \"Rostelecom, YouTube 4K buffering is slow\")..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11913 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:256 -msgid "Optional notes for AI (e.g. \"Rostelecom, YouTube 4K stream is slow\")..." +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1011 +msgid "Optional for local LLM" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8743 @@ -4481,7 +4637,7 @@ msgstr "" msgid "Or paste hosts file content:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8252 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8338 #: src/tachyon/tabs/dashboard/initController.ts:1985 msgid "Other peers" msgstr "" @@ -4555,9 +4711,34 @@ msgstr "" msgid "Path must end with cache.db" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14976 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14977 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15520 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11889 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:89 +msgid "Pattern Builder" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12477 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:763 +msgid "Patterns reset to defaults!" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4154 +#: src/tachyon/methods/shell/index.ts:1329 +msgid "Patterns reset to factory defaults" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4130 +#: src/tachyon/methods/shell/index.ts:1300 +msgid "Patterns saved successfully" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12463 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:749 +msgid "Patterns saved successfully!" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15658 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15659 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16202 #: src/tachyon/tabs/monitoring/initController.ts:746 #: src/tachyon/tabs/monitoring/render.ts:80 #: src/tachyon/tabs/monitoring/render.ts:81 @@ -4592,20 +4773,20 @@ msgstr "" msgid "PEM-encoded client private key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5406 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5492 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:390 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:400 #: src/tachyon/tabs/diagnostic/diagnostic.store.ts:63 msgid "Pending" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10863 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10949 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:98 msgid "Pending..." msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1155 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1208 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1216 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1269 msgid "Per-Device Routing" msgstr "" @@ -4613,7 +4794,7 @@ msgstr "" msgid "Periodically check the current level and switch to a faster server even when the current one works." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1842 msgid "Periodically checks if the proxy is responding. Restarts Tachyon after consecutive failures." msgstr "" @@ -4622,7 +4803,7 @@ msgstr "" msgid "Persistent Keepalive" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1915 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1919 msgid "Persistent Smart Detect" msgstr "" @@ -4635,11 +4816,16 @@ msgstr "" msgid "Pin P2P isolation to the torrent client's own ports, comma separated. Each entry is \"proto\", \"proto:port\" or \"proto:port-port\" (tcp/udp). Without a port the whole protocol is routed direct." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2209 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12516 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:811 +msgid "Please specify strategy name and arguments" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2213 msgid "Polling Interval (seconds)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2222 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2226 msgid "Polling interval must be at least 1 second" msgstr "" @@ -4647,7 +4833,7 @@ msgstr "" msgid "Port cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9383 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9469 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:19 msgid "Port conflict" msgstr "" @@ -4678,7 +4864,7 @@ msgstr "" msgid "Ports must be between 1 and 65535" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1814 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1818 msgid "Pre-built index of Tachyon documentation chunks. When enabled, AI Doctor searches relevant docs before generating a diagnosis." msgstr "" @@ -4714,7 +4900,7 @@ msgstr "" msgid "Preshared Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1875 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1879 msgid "Prevents multiple reload_firewall calls within 120 seconds to avoid connection drops." msgstr "" @@ -4725,14 +4911,14 @@ msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2349 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2350 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7866 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7952 #: src/tachyon/tabs/dashboard/initController.ts:1494 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:536 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:537 msgid "Priority details" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7816 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7902 #: src/tachyon/tabs/dashboard/initController.ts:1431 msgid "Priority details are unavailable" msgstr "" @@ -4756,7 +4942,7 @@ msgstr "" msgid "Private Key" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:625 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:650 msgid "Protection" msgstr "" @@ -4767,39 +4953,39 @@ msgstr "" msgid "Protocol" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11886 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:189 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12036 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:265 msgid "Provider Global Default" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10809 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10895 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:29 msgid "Proxy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13882 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14564 #: src/tachyon/tabs/diagnostic/initController.ts:1338 msgid "Proxy / DPI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1849 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1853 msgid "Proxy Fail Threshold" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1843 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1847 msgid "Proxy Health Check Interval (s)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1855 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1859 msgid "Proxy Health Check URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7335 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7421 #: src/tachyon/tabs/dashboard/initController.ts:817 msgid "Proxy link is unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2306 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2310 msgid "Proxy Section for Bot" msgstr "" @@ -4811,7 +4997,7 @@ msgstr "" msgid "PSK" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9398 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9484 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2690 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:40 msgid "Public host" @@ -4826,6 +5012,11 @@ msgstr "" msgid "QUIC (HTTP/3)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12706 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1029 +msgid "RAG Knowledge Base + Live ISP Probe Context" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9542 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9561 msgid "RDP" @@ -4863,31 +5054,31 @@ msgstr "" msgid "Reality short ID must contain 1-8 hex digits" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13657 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14339 #: src/tachyon/tabs/diagnostic/initController.ts:1079 msgid "Rebuild firewall rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18460 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19142 #: src/tachyon/tabs/updates/initController.ts:1365 msgid "Rebuilt release" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13727 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14409 #: src/tachyon/tabs/diagnostic/initController.ts:1163 msgid "Recommended Quick Fixes:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1935 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1939 msgid "Reconnect Threshold" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13663 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14345 #: src/tachyon/tabs/diagnostic/initController.ts:1085 msgid "Reconnect WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1882 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1886 msgid "Records proxy/DNS latency and health status in hourly buckets for analysis." msgstr "" @@ -4900,12 +5091,12 @@ msgstr "" msgid "Refill" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13829 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14511 #: src/tachyon/tabs/diagnostic/initController.ts:1280 msgid "Refresh" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13810 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14492 #: src/tachyon/tabs/diagnostic/initController.ts:1259 msgid "Refresh Device List" msgstr "" @@ -4918,17 +5109,17 @@ msgstr "" msgid "Regular expression must not contain spaces or commas" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18240 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18922 #: src/tachyon/tabs/updates/initController.ts:1107 msgid "Reinstall" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17318 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18000 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:349 msgid "Reload now" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17350 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18032 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:390 msgid "Reloading..." msgstr "" @@ -4937,12 +5128,12 @@ msgstr "" msgid "Remote Hosts Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17298 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17980 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:323 msgid "Removal completed successfully!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18206 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18888 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7927 #: src/tachyon/tabs/updates/initController.ts:1061 msgid "Remove" @@ -4960,7 +5151,7 @@ msgstr "" msgid "Remove the specified servers from this level." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17129 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17811 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:114 msgid "Removing" msgstr "" @@ -4973,14 +5164,14 @@ msgstr "" msgid "Reset" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13677 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14359 #: src/tachyon/tabs/diagnostic/initController.ts:1099 msgid "Reset Bootstrap DNS" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:389 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:424 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1679 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1683 msgid "Reset Settings" msgstr "" @@ -4992,7 +5183,7 @@ msgstr "" msgid "Resolve domain names before routing so sing-box can use real destination IPs." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13664 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14346 #: src/tachyon/tabs/diagnostic/initController.ts:1086 msgid "Resolve gateway" msgstr "" @@ -5037,32 +5228,32 @@ msgstr "" msgid "Response payload (I2)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13658 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14340 #: src/tachyon/tabs/diagnostic/initController.ts:1080 msgid "Restart dnsmasq" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13667 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14349 #: src/tachyon/tabs/diagnostic/initController.ts:1089 msgid "Restart firewall" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13668 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14350 #: src/tachyon/tabs/diagnostic/initController.ts:1090 msgid "Restart network" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13661 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14343 #: src/tachyon/tabs/diagnostic/initController.ts:1083 msgid "Restart sing-box DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10484 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10570 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:64 msgid "Restart Tachyon" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13669 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14351 #: src/tachyon/tabs/diagnostic/initController.ts:1091 msgid "Restart Zapret/ByeDPI" msgstr "" @@ -5077,22 +5268,22 @@ msgstr "" msgid "Restore" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13662 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14344 #: src/tachyon/tabs/diagnostic/initController.ts:1084 msgid "Restore config backup" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10562 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14107 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14130 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10648 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14789 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14812 #: src/tachyon/tabs/diagnostic/initController.ts:1603 #: src/tachyon/tabs/diagnostic/initController.ts:1627 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:142 msgid "Restore Native Internet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13674 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14036 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14356 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14718 #: src/tachyon/tabs/diagnostic/initController.ts:1096 #: src/tachyon/tabs/diagnostic/initController.ts:1516 msgid "Restore Native Internet (Stop Tachyon)" @@ -5102,18 +5293,18 @@ msgstr "" msgid "Restore Snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1680 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1684 msgid "Restores the Tachyon factory defaults: all rules, subscriptions, custom DNS servers and other options will be lost." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14039 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14134 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14721 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14816 #: src/tachyon/tabs/diagnostic/initController.ts:1519 #: src/tachyon/tabs/diagnostic/initController.ts:1631 msgid "Restoring native direct internet (stopping Tachyon)..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15520 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16202 #: src/tachyon/tabs/monitoring/initController.ts:746 msgid "Resume updates" msgstr "" @@ -5122,9 +5313,9 @@ msgstr "" msgid "Return NXDOMAIN for blocked domains (recommended). When enabled, blocked domains are not resolved at all. When disabled, only direct connections are rejected." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11159 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15629 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15680 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11245 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16311 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16362 #: src/tachyon/tabs/monitoring/initController.ts:880 #: src/tachyon/tabs/monitoring/initController.ts:943 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:444 @@ -5135,7 +5326,7 @@ msgstr "" msgid "Route all non-local LAN traffic through the tailnet exit node instead of the proxy engines." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2307 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2311 msgid "Route bot API requests through this section. Leave empty to use the default mixed proxy." msgstr "" @@ -5147,7 +5338,7 @@ msgstr "" msgid "Route requests to this DNS server through another section." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13888 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14570 #: src/tachyon/tabs/diagnostic/initController.ts:1345 msgid "Route via Proxy" msgstr "" @@ -5160,9 +5351,9 @@ msgstr "" msgid "Routing Rule Tracer" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9451 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9460 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9479 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9537 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9546 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9565 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:103 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:114 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:144 @@ -5198,8 +5389,8 @@ msgstr "" msgid "Rule Sets (.srs / .json)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11887 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:190 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12037 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:266 msgid "Rule:" msgstr "" @@ -5209,81 +5400,76 @@ msgstr "" msgid "Rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9594 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9680 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:79 msgid "Rules mangle counters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9589 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9675 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:74 msgid "Rules mangle exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9604 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9690 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:89 msgid "Rules mangle output counters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9599 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9685 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:84 msgid "Rules mangle output exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9614 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9700 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:99 msgid "Rules proxy counters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9609 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:94 msgid "Rules proxy exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10552 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10638 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:132 msgid "Run AI Doctor" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10794 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10880 #: src/tachyon/tabs/diagnostic/partials/renderRunAction.ts:17 msgid "Run Diagnostic" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10542 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10628 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:122 msgid "Run doctor repair" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12538 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13220 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:301 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2068 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2069 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2072 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2073 #: src/tachyon/methods/custom/getDashboardSections.ts:1649 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:618 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:135 msgid "Running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2372 -msgid "Running diagnostics…" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12746 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1075 +msgid "Running benchmarks..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12109 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:481 -msgid "Running initial strategy probe..." +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2376 +msgid "Running diagnostics…" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9246 msgid "Russia (ru)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11850 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:146 -msgid "RuTracker (HTTP/HTTPS)" -msgstr "" - #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:27 msgid "Sat" msgstr "" @@ -5294,19 +5480,19 @@ msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3669 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:672 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1200 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1261 msgid "Save" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1694 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1698 msgid "Save a snapshot of the working config and restore it later if something breaks." msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1002 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1063 msgid "Save AI Watchdog Settings" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1140 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1201 msgid "Save Smart Detect Settings" msgstr "" @@ -5315,10 +5501,10 @@ msgstr "" msgid "Save Snapshot" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:518 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1000 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1140 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1200 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:543 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1061 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1201 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1261 msgid "Saving…" msgstr "" @@ -5330,22 +5516,23 @@ msgstr "" msgid "Schedule Rule" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12047 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:409 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12198 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:451 msgid "Score" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14953 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15635 #: src/tachyon/tabs/monitoring/render.ts:57 msgid "Search" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11118 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11204 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:397 msgid "Search domain or service..." msgstr "" -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:244 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12027 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:254 msgid "Search Mode" msgstr "" @@ -5357,11 +5544,11 @@ msgstr "" msgid "Secret key for authenticating remote access to YACD when WAN access is enabled." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1719 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1723 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:706 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:731 msgid "Secret token for WRITE requests" msgstr "" @@ -5377,15 +5564,15 @@ msgstr "" msgid "Section name" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:799 -msgid "Section name for WARP registration proxy. Leave empty to use the default service mixed proxy." +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:860 +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 "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10231 msgid "Section Rules Content" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1127 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1188 msgid "Section test order (checked = active, drag rows with △▽):" msgstr "" @@ -5402,7 +5589,7 @@ msgstr "" msgid "Security" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7624 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7710 #: src/tachyon/tabs/dashboard/initController.ts:1185 msgid "Select" msgstr "" @@ -5440,7 +5627,7 @@ msgstr "" msgid "Select active days. If none selected, the rule applies every day." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1744 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1748 msgid "Select AI LLM provider for diagnostics" msgstr "" @@ -5456,7 +5643,7 @@ msgstr "" msgid "Select an intermediate section" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1962 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1966 msgid "Select and order the sections through which blocked domains are tested. Checked sections are tried top-to-bottom." msgstr "" @@ -5496,7 +5683,7 @@ msgstr "" msgid "Select Sections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7834 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7920 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3146 #: src/tachyon/tabs/dashboard/initController.ts:1454 msgid "Select the fastest node" @@ -5522,8 +5709,8 @@ msgstr "" msgid "Select whether to disable the target during the schedule or enable it ONLY during the schedule." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7708 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7820 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7794 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7906 #: src/tachyon/tabs/dashboard/initController.ts:1289 #: src/tachyon/tabs/dashboard/initController.ts:1440 msgid "Selected" @@ -5538,24 +5725,24 @@ msgstr "" msgid "Selector and URLTest outbounds must contain a non-empty outbounds array" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11588 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11674 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:67 msgid "Send" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2296 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2300 msgid "Send a Telegram notification if a potential DNS leak is detected." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2231 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2235 msgid "Send a Telegram notification if sing-box or nftables rules crash and get auto-restored." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2283 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2287 msgid "Send a Telegram notification if SSL/TLS certificates are close to expiration." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2244 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2248 msgid "Send a Telegram notification if the Tachyon service is restarted by the watchdog." msgstr "" @@ -5563,14 +5750,19 @@ msgstr "" msgid "Send a Telegram notification to admins when a blocked site is accessed. Requires the Telegram bot to be enabled." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2257 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2261 msgid "Send a Telegram notification when a URLTest group switches to a new server." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2270 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2274 msgid "Send a Telegram notification when proxy subscriptions are successfully updated." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12352 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:631 +msgid "Sequence Overlaps (seqovl)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:454 msgid "Server" msgstr "" @@ -5642,7 +5834,7 @@ msgstr "" msgid "Server Public Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11656 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11742 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:148 msgid "Server unavailable" msgstr "" @@ -5664,21 +5856,21 @@ msgstr "" msgid "Servers on dashboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11154 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11240 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:439 msgid "Service / Target" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3479 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3498 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13348 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3482 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3501 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14030 #: 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 "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10940 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11026 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:186 msgid "Service availability check" msgstr "" @@ -5691,22 +5883,22 @@ msgstr "" msgid "Services & Access" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18029 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:387 msgid "Services are online and ready! Reloading page..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17339 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18021 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:375 msgid "Services are online, waiting for full initialization..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8172 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8258 #: src/tachyon/tabs/dashboard/initController.ts:1887 msgid "Services info" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17372 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18054 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:418 msgid "Services restarted. Click to reload page." msgstr "" @@ -5757,15 +5949,15 @@ msgstr "" msgid "Show servers whose names match the expression." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10610 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14171 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10696 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14853 #: src/tachyon/tabs/diagnostic/initController.ts:1677 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:190 msgid "Show sing-box config" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14182 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14189 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14864 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14871 #: src/tachyon/tabs/diagnostic/initController.ts:1688 #: src/tachyon/tabs/diagnostic/initController.ts:1695 msgid "Show sing-box config failed" @@ -5775,7 +5967,7 @@ msgstr "" msgid "Show subscription metadata for this source on the dashboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9355 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9441 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:77 msgid "Sing-box autostart disabled" msgstr "" @@ -5784,37 +5976,37 @@ msgstr "" msgid "sing-box endpoint (userspace, default)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9757 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:69 msgid "Sing-box FakeIP DNS does not work" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9757 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:68 msgid "Sing-box FakeIP DNS works" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9340 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9426 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:62 msgid "Sing-box installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9365 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9451 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:87 msgid "Sing-box listening ports" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9360 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9446 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:82 msgid "Sing-box process running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9350 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9436 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:72 msgid "Sing-box service exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9345 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9431 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:67 msgid "Sing-box version is compatible (newer than 1.12.4)" msgstr "" @@ -5839,11 +6031,11 @@ msgstr "" msgid "Skipped loopback:" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1097 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1158 msgid "Smart Detect" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:245 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:270 msgid "Smart Detect settings saved" msgstr "" @@ -5879,8 +6071,8 @@ msgstr "" msgid "Sorts servers in this section by lowest latency in the dashboard." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15641 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15684 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16323 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16366 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10099 #: src/tachyon/tabs/monitoring/initController.ts:892 #: src/tachyon/tabs/monitoring/initController.ts:947 @@ -5908,67 +6100,87 @@ msgstr "" msgid "Specify different files" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12046 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:408 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12197 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:450 msgid "Speed" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12377 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:658 +msgid "Split Modes (dpi-desync)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12383 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:664 +msgid "Split Positions (dpi-desync-split-pos)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12334 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:613 +msgid "Split Positions (pos)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12414 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:697 +msgid "Split Values (-s)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9541 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9560 msgid "SSH" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:122 msgid "Standalone ByeDPI autostart is enabled" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:119 msgid "Standalone ByeDPI is active together with Tachyon ByeDPI rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:120 msgid "Standalone ByeDPI service is active" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:123 msgid "Standalone ByeDPI service is inactive" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9779 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:111 msgid "Standalone Zapret is active together with Tachyon Zapret rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9779 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:112 msgid "Standalone Zapret service is active" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9779 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:113 msgid "Standalone Zapret service is inactive" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9867 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9953 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:123 msgid "Standalone Zapret2 autostart is enabled" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9951 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:118 msgid "Standalone Zapret2 is active together with Tachyon Zapret2 rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9867 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9953 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:121 msgid "Standalone Zapret2 service is active" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9867 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9953 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:124 msgid "Standalone Zapret2 service is inactive" msgstr "" @@ -5977,16 +6189,16 @@ msgstr "" msgid "Start" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2050 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2054 msgid "Start bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13656 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14338 #: src/tachyon/tabs/diagnostic/initController.ts:1078 msgid "Start sing-box" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10504 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10590 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:84 msgid "Start Tachyon" msgstr "" @@ -5995,41 +6207,44 @@ msgstr "" msgid "Start Time (HH:MM)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13660 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14342 #: src/tachyon/tabs/diagnostic/initController.ts:1082 msgid "Start watchdog" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1003 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1064 msgid "Start Watchdog first" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:334 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2097 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2101 msgid "Starting…" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8234 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8320 #: src/tachyon/tabs/dashboard/initController.ts:1964 msgid "State" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2451 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11196 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12044 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11282 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:360 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:465 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:490 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:670 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:406 msgid "Status" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12194 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:447 +msgid "Status / Suite" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:292 msgid "Stop" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2057 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2061 msgid "Stop bot" msgstr "" @@ -6037,16 +6252,16 @@ msgstr "" msgid "Stop checking when URLTest group is not used. Use sing-box duration format like 1d, 12h or 30m." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10494 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10580 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:74 msgid "Stop Tachyon" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12550 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13232 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:307 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2074 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2078 #: src/tachyon/methods/custom/getDashboardSections.ts:1653 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:622 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:147 @@ -6054,24 +6269,34 @@ msgid "Stopped" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:348 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2111 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2115 msgid "Stopping…" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1916 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1920 msgid "Store auto-detected domains in /etc instead of /tmp to survive reboots." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12042 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:404 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12189 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:442 msgid "Strategy & Parameters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12258 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:664 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12913 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1275 msgid "Strategy benchmark started" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12637 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:947 +msgid "Strategy deleted" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12490 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:783 +msgid "Strategy Name" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1618 msgid "Strict ECH + DoQ DNS Enforcer" msgstr "" @@ -6094,8 +6319,8 @@ msgstr "" msgid "Subscription info:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3835 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3853 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3856 #: src/tachyon/methods/shell/index.ts:929 #: src/tachyon/methods/shell/index.ts:949 msgid "Subscription update failed" @@ -6113,7 +6338,7 @@ msgstr "" msgid "Subscription URL settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6965 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7051 #: src/tachyon/tabs/dashboard/initController.ts:336 msgid "Subscriptions updated" msgstr "" @@ -6138,37 +6363,37 @@ msgstr "" msgid "Sweden (se)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14353 #: src/tachyon/tabs/diagnostic/initController.ts:1093 msgid "Switch DNS to DoH" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7684 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7770 #: src/tachyon/tabs/dashboard/initController.ts:1254 msgid "Switch to auto-selection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13675 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14357 #: src/tachyon/tabs/diagnostic/initController.ts:1097 msgid "Sync System Time (NTP)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8160 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8246 #: src/tachyon/tabs/dashboard/initController.ts:1874 msgid "System info" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12358 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13040 #: src/tachyon/tabs/diagnostic/partials/renderSystemInfo.ts:24 msgid "System information" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9584 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9670 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:69 msgid "Table exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6267 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6353 #: src/tachyon/services/core.service.ts:52 msgid "Tachyon Error" msgstr "" @@ -6189,7 +6414,7 @@ msgstr "" msgid "Tachyon manages the nfqws2 process lifecycle itself, so daemon mode is not allowed here." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15718 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16400 #: src/tachyon/tabs/monitoring/initController.ts:991 msgid "Tachyon service is stopped. Start the service to display connections." msgstr "" @@ -6203,7 +6428,7 @@ msgstr "" msgid "Tachyon Settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3752 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3755 #: src/tachyon/methods/shell/index.ts:817 msgid "Tachyon update did not complete within the timeout" msgstr "" @@ -6212,57 +6437,57 @@ msgstr "" msgid "Tachyon will not modify your DHCP configuration" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:91 msgid "Tachyon-managed ciadpi runtime has restarted" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:94 msgid "Tachyon-managed ciadpi runtime is not ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:97 msgid "Tachyon-managed ciadpi runtime is not running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:93 msgid "Tachyon-managed ciadpi runtime is ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:87 msgid "Tachyon-managed nfqws runtime is not ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:90 msgid "Tachyon-managed nfqws runtime is not running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:86 msgid "Tachyon-managed nfqws runtime is ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:90 msgid "Tachyon-managed nfqws2 runtime is not ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:93 msgid "Tachyon-managed nfqws2 runtime is not running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:89 msgid "Tachyon-managed nfqws2 runtime is ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8229 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8315 #: src/tachyon/tabs/dashboard/initController.ts:1954 msgid "Tailscale" msgstr "" @@ -6275,7 +6500,7 @@ msgstr "" msgid "Tailscale control URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9446 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9532 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:98 msgid "Tailscale endpoint" msgstr "" @@ -6300,33 +6525,33 @@ msgstr "" msgid "Target Scope" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11879 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:180 -msgid "Target Service" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11994 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:217 +msgid "Target Service / Suite" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12358 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:637 +msgid "TCP Window Sizes (wsize)" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:492 msgid "Telegram Bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2169 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2173 msgid "Telegram Bot Token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12438 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13120 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:42 msgid "Telegram Channel" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11851 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:147 -msgid "Telegram Web" -msgstr "" - -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2358 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2387 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2403 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2409 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2362 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2391 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2407 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2413 msgid "Test Connection" msgstr "" @@ -6363,28 +6588,28 @@ msgstr "" msgid "Test servers whose names match the expression." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2345 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2349 msgid "Test Telegram Connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12193 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12846 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1193 msgid "Testing strategy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7711 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7797 #: src/tachyon/tabs/dashboard/initController.ts:1292 msgid "Testing URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10873 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11464 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10959 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11550 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:108 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:797 msgid "Testing..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2369 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2373 msgid "Testing…" msgstr "" @@ -6402,27 +6627,27 @@ msgstr "" msgid "The rule applies to the domain and all its subdomains. Use full:, keyword:, or regex: prefixes for exact match, keyword match, or regular expression." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9934 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10020 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:78 msgid "There are rules using ByeDPI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9759 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:78 msgid "There are rules using Zapret" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9931 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:81 msgid "There are rules using Zapret2" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11612 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11698 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:97 msgid "Thinking..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14112 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14794 #: src/tachyon/tabs/diagnostic/initController.ts:1608 msgid "This action will stop Tachyon, restore standard dnsmasq/DNS, remove all proxy/anti-censorship firewall rules and restore direct Internet connection through your ISP." msgstr "" @@ -6467,7 +6692,7 @@ msgstr "" msgid "This option requires a value." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8242 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8328 #: src/tachyon/tabs/dashboard/initController.ts:1975 msgid "This router" msgstr "" @@ -6488,9 +6713,9 @@ msgstr "" msgid "Thursday" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15632 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15681 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15815 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16314 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16363 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16497 #: src/tachyon/tabs/monitoring/initController.ts:883 #: src/tachyon/tabs/monitoring/initController.ts:944 #: src/tachyon/tabs/monitoring/initController.ts:1127 @@ -6509,7 +6734,7 @@ msgstr "" msgid "Time skew tolerance" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5904 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5990 #: src/tachyon/helpers/singBoxVariant.ts:64 msgid "tiny" msgstr "" @@ -6527,11 +6752,16 @@ msgstr "" msgid "TLS SNI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2178 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12438 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:721 +msgid "TLS-Rec Bounds (--tlsrec)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2182 msgid "Token is required when the bot is enabled" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7713 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7799 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2657 #: src/tachyon/tabs/dashboard/initController.ts:1294 msgid "Tolerance" @@ -6545,7 +6775,7 @@ msgstr "" msgid "Total lines:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11074 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11160 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:345 msgid "Total targets" msgstr "" @@ -6559,7 +6789,7 @@ msgid "Tracing routing rules..." msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2043 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8136 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8222 #: src/tachyon/tabs/dashboard/initController.ts:1848 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:133 msgid "Traffic" @@ -6577,7 +6807,7 @@ msgstr "" msgid "Traffic of specified protocols (e.g. BitTorrent, QUIC, STUN) will bypass this section." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8148 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8234 #: src/tachyon/tabs/dashboard/initController.ts:1861 msgid "Traffic Total" msgstr "" @@ -6590,7 +6820,7 @@ msgstr "" msgid "Traffic will go through the default route (Direct/Default)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18103 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18785 #: src/tachyon/tabs/updates/initController.ts:922 msgid "Transient connection error" msgstr "" @@ -6625,7 +6855,7 @@ msgstr "" msgid "Transport path must start with /" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12422 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13104 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:25 msgid "Troubleshooting" msgstr "" @@ -6634,8 +6864,8 @@ msgstr "" msgid "Try compatible User-Agent profiles automatically when downloading this subscription" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12045 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:407 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12196 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:449 msgid "TTFB" msgstr "" @@ -6647,6 +6877,16 @@ msgstr "" msgid "TTL value cannot be empty" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12395 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:676 +msgid "TTL Values (dpi-desync-ttl)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12346 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:625 +msgid "TTL Values (ttl)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:23 msgid "Tue" msgstr "" @@ -6659,8 +6899,8 @@ msgstr "" msgid "Turkey (tr)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15626 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15679 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16308 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16361 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1696 #: src/tachyon/tabs/monitoring/initController.ts:877 #: src/tachyon/tabs/monitoring/initController.ts:942 @@ -6671,7 +6911,7 @@ msgstr "" msgid "UDP (Unprotected DNS)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10839 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10925 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:65 msgid "UDP / QUIC protocols" msgstr "" @@ -6694,14 +6934,14 @@ msgstr "" msgid "Unable to validate the NFQWS2 strategy through the backend parser." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7914 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3120 #: src/tachyon/tabs/dashboard/initController.ts:1448 msgid "Unavailability timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10894 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11076 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10980 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11162 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:135 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:347 msgid "Unavailable" @@ -6737,17 +6977,17 @@ msgstr "" msgid "Unexpected standalone token. Use explicit flags such as --name or --name=value." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:96 msgid "Unexpected Tachyon-managed ciadpi runtime is running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:89 msgid "Unexpected Tachyon-managed nfqws runtime is running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:92 msgid "Unexpected Tachyon-managed nfqws2 runtime is running" msgstr "" @@ -6764,19 +7004,19 @@ msgstr "" msgid "United States (us)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5887 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9388 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9969 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9971 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9972 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9973 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9980 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9982 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9984 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9986 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9989 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9990 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17723 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5973 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9474 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10055 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10057 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10058 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10059 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10066 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10068 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10070 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10072 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10075 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10076 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18405 #: src/tachyon/helpers/singBoxVariant.ts:37 #: src/tachyon/services/systemInfo.service.ts:10 #: src/tachyon/services/systemInfo.service.ts:12 @@ -6793,9 +7033,9 @@ msgstr "" msgid "unknown" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:328 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2091 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2095 #: src/tachyon/methods/custom/getDashboardSections.ts:1655 msgid "Unknown" msgstr "" @@ -6810,18 +7050,18 @@ msgstr "" msgid "Unknown country" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5212 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12263 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13453 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13472 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13539 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14080 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5298 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12918 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14135 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14154 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14221 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14762 #: src/tachyon/api.ts:40 #: src/tachyon/tabs/diagnostic/initController.ts:731 #: src/tachyon/tabs/diagnostic/initController.ts:772 #: src/tachyon/tabs/diagnostic/initController.ts:857 #: src/tachyon/tabs/diagnostic/initController.ts:1568 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:669 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1280 msgid "Unknown error" msgstr "" @@ -6851,22 +7091,22 @@ msgstr "" msgid "Up to 10 snapshots are kept; the oldest ones are removed automatically." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18155 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18837 #: src/tachyon/tabs/updates/initController.ts:989 msgid "Update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17673 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18355 #: src/tachyon/tabs/updates/initController.ts:355 msgid "Update is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18448 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19130 #: src/tachyon/tabs/updates/initController.ts:1352 msgid "Update is available for current release" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18429 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19111 #: src/tachyon/tabs/updates/initController.ts:1331 msgid "Update is available:" msgstr "" @@ -6878,7 +7118,7 @@ msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2114 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2125 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2125 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13666 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14348 #: src/tachyon/tabs/diagnostic/initController.ts:1088 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:224 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:237 @@ -6898,12 +7138,12 @@ msgstr "" msgid "Updates & Downloads" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17131 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17813 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:116 msgid "Updating" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13891 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14573 #: src/tachyon/tabs/diagnostic/initController.ts:1349 msgid "Updating device routing mode..." msgstr "" @@ -6912,16 +7152,16 @@ msgstr "" msgid "Updating lists..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8138 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8150 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8224 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8236 #: src/tachyon/tabs/dashboard/initController.ts:1850 #: src/tachyon/tabs/dashboard/initController.ts:1863 msgid "Uplink" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15638 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15683 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15827 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16320 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16365 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16509 #: src/tachyon/tabs/monitoring/initController.ts:889 #: src/tachyon/tabs/monitoring/initController.ts:946 #: src/tachyon/tabs/monitoring/initController.ts:1141 @@ -6938,7 +7178,7 @@ msgstr "" msgid "URL must use one of the following protocols:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1856 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1860 msgid "URL to test through the proxy (default: Cloudflare 204)." msgstr "" @@ -6960,14 +7200,14 @@ msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2333 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2334 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7734 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7820 #: src/tachyon/tabs/dashboard/initController.ts:1321 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:517 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:518 msgid "URLTest details" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7704 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7790 #: src/tachyon/tabs/dashboard/initController.ts:1280 msgid "URLTest details are unavailable" msgstr "" @@ -6977,7 +7217,7 @@ msgstr "" msgid "URLTest settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1895 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1899 msgid "Use 3-tier check intervals: fast (15s), normal (120s), slow (300s) instead of a single interval." msgstr "" @@ -7060,11 +7300,16 @@ msgstr "" msgid "Use tailnet exit node for LAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9388 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9474 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:25 msgid "Used by" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12525 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:822 +msgid "User custom strategy" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2444 msgid "User-Agent" msgstr "" @@ -7115,7 +7360,7 @@ msgstr "" msgid "Valid" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1902 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1906 msgid "Validates sing-box config before restart to prevent boot loops on broken configs." msgstr "" @@ -7136,7 +7381,7 @@ msgstr "" msgid "Value must not contain control characters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17335 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18017 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:370 msgid "Verifying router and service readiness..." msgstr "" @@ -7149,15 +7394,15 @@ msgstr "" msgid "Video streaming" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10601 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13516 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10687 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14198 #: src/tachyon/tabs/diagnostic/initController.ts:831 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:181 msgid "View logs" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13526 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13529 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14208 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14211 #: src/tachyon/tabs/diagnostic/initController.ts:841 #: src/tachyon/tabs/diagnostic/initController.ts:844 msgid "View logs failed" @@ -7175,17 +7420,17 @@ msgstr "" msgid "vless://, vmess://, ss://, trojan://, socks4/5://, hy2/hysteria2:// links" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17314 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17996 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:344 msgid "Waiting for router services to restart..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9424 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9510 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:70 msgid "WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9523 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9609 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:198 msgid "WAN public IP" msgstr "" @@ -7210,11 +7455,11 @@ msgstr "" msgid "WARP Private Key" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:782 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:807 msgid "WARP Proxy Section" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:462 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:487 msgid "Watchdog" msgstr "" @@ -7222,7 +7467,7 @@ 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 "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1826 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1830 msgid "Watchdog Status" msgstr "" @@ -7254,7 +7499,7 @@ msgstr "" msgid "When switching to another level, test every server and select the fastest instead of the first working one." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11762 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:171 msgid "Why Discord fails?" msgstr "" @@ -7275,7 +7520,7 @@ msgstr "" msgid "YACD Secret Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7339 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7425 #: src/tachyon/tabs/dashboard/initController.ts:822 msgid "Yes" msgstr "" @@ -7284,65 +7529,55 @@ msgstr "" msgid "You can select Output Network Interface, by default autodetect" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11845 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:141 -msgid "YouTube (GoogleVideo 4K stream)" -msgstr "" - -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11847 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:143 -msgid "YouTube Web (Interface)" -msgstr "" - #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:5648 msgid "Zapret hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS strategies." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9754 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:71 msgid "Zapret package is installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9754 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:72 msgid "Zapret package is not installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9749 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:60 msgid "Zapret provider binary is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9749 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:61 msgid "Zapret provider binary is not available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9774 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:103 msgid "Zapret sing-box outbound is configured" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9774 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:104 msgid "Zapret sing-box outbound is not configured" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11788 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:71 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:109 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11925 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:138 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1384 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1385 msgid "Zapret v1 (nfqws)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11786 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:69 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:104 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11924 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:137 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1379 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1380 msgid "Zapret v2 (nfqws2)" msgstr "" @@ -7350,32 +7585,32 @@ msgstr "" msgid "Zapret2 hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS2 strategies." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9926 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:74 msgid "Zapret2 package is installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9926 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:75 msgid "Zapret2 package is not installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9921 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:63 msgid "Zapret2 provider binary is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9921 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:64 msgid "Zapret2 provider binary is not available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9946 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:106 msgid "Zapret2 sing-box outbound is configured" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9946 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:107 msgid "Zapret2 sing-box outbound is not configured" msgstr "" diff --git a/fe-app-tachyon/locales/tachyon.ru.po b/fe-app-tachyon/locales/tachyon.ru.po index b2f3ba98..065c70f1 100644 --- a/fe-app-tachyon/locales/tachyon.ru.po +++ b/fe-app-tachyon/locales/tachyon.ru.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: TACHYON\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-27 07:39+0300\n" -"PO-Revision-Date: 2026-08-27 07:39+0300\n" +"POT-Creation-Date: 2026-08-27 13:54+0300\n" +"PO-Revision-Date: 2026-08-27 13:54+0300\n" "Last-Translator: Dushnilin\n" "Language-Team: none\n" "Language: ru\n" @@ -35,6 +35,9 @@ msgstr "+ Добавить уровень" msgid "+ Add priority" msgstr "+ Добавить приоритет" +msgid "+ Add Strategy" +msgstr "" + msgid "+ Add URLTest" msgstr "+ Добавить URLTest" @@ -59,6 +62,12 @@ msgstr "⚠️ Если все основные DNS завершатся с ош msgid "⚡ DPI Strategy Fuzzer" msgstr "⚡ DPI Strategy Fuzzer" +msgid "⚡ Fast (>1MB/s)" +msgstr "" + +msgid "⚡ QUIC / HTTP/3 (UDP 443)" +msgstr "" + msgid "⚡ Quick Benchmark (Presets ~12-14)" msgstr "⚡ Быстрый бенчмарк (Пресеты ~12-14)" @@ -68,6 +77,12 @@ msgstr "⚡ Подборщик стратегий и авто-тюнер" msgid "✅ Benchmark completed! Optimal strategy identified." msgstr "✅ Бенчмарк завершен! Оптимальная стратегия определена." +msgid "✅ Working only" +msgstr "" + +msgid "✈️ Telegram Suite (Web + Bot API)" +msgstr "" + msgid "✔ Online" msgstr "" @@ -80,11 +95,32 @@ msgstr "" msgid "✘ Stopped" msgstr "✘ Остановлено" -msgid "🏆 Apply Best Strategy" -msgstr "🏆 Применить лучшую стратегию" +msgid "🌐 Custom Target URL..." +msgstr "" -msgid "🔍 Combinatorial Deep Fuzzing (~40-60)" -msgstr "🔍 Комбинаторный глубокий перебор (~40-60)" +msgid "🎬 YouTube Suite (Web + 4K Stream)" +msgstr "" + +msgid "🏆 Apply Best Match" +msgstr "" + +msgid "🏴‍☠️ RuTracker Suite" +msgstr "" + +msgid "💬 Discord Suite (API + WSS + CDN)" +msgstr "" + +msgid "💾 Save Custom Patterns" +msgstr "" + +msgid "📸 Instagram / Meta (Web + CDN)" +msgstr "" + +msgid "🔄 Reset to Factory Defaults" +msgstr "" + +msgid "🔍 Combinatorial Deep Fuzzing (~40-80+)" +msgstr "" msgid "🔑 Generate" msgstr "🔑 Сгенерировать" @@ -95,15 +131,15 @@ msgstr "🧠 Сгенерировать через ИИ" msgid "🧠 Synthesizing..." msgstr "🧠 Генерация..." -msgid "🚀 Run Benchmark Again" -msgstr "🚀 Запустить бенчмарк снова" - msgid "🚀 Start Benchmark" msgstr "🚀 Начать бенчмарк" msgid "🛑 Stop Benchmark" msgstr "🛑 Остановить бенчмарк" +msgid "🛠️ My Custom Strategies Only" +msgstr "" + msgid "Accept external proxy connections and route them with sing-box." msgstr "Принимать внешние прокси-подключения и маршрутизировать их через sing-box." @@ -119,6 +155,9 @@ msgstr "Действие не выполнено" msgid "Action Mode" msgstr "Режим действия" +msgid "Actions" +msgstr "" + msgid "Active" msgstr "Активные" @@ -155,6 +194,9 @@ msgstr "Добавить серверный инбаунд" msgid "Add at least one DNS server" msgstr "Добавьте как минимум один DNS-сервер" +msgid "Add Custom DPI Strategy" +msgstr "" + msgid "Add prefix to nodes" msgstr "Добавить префикс к узлам" @@ -245,8 +287,11 @@ msgstr "Ошибка ИИ-доктора" msgid "AI Doctor Language" msgstr "Язык ИИ-доктора" -msgid "AI DPI Engineer & Strategy Synthesizer (RAG-Powered)" -msgstr "ИИ-инженер DPI и генератор стратегий (на базе RAG)" +msgid "AI Doctor RAG" +msgstr "" + +msgid "AI DPI Engineer & Strategy Synthesizer" +msgstr "" msgid "AI Model" msgstr "Модель ИИ" @@ -386,6 +431,9 @@ msgstr "Применение исправления" msgid "Applying..." msgstr "Применение..." +msgid "Arguments" +msgstr "" + msgid "Ask Tachyon AI Assistant a question..." msgstr "Задайте вопрос ИИ-ассистенту..." @@ -404,6 +452,9 @@ msgstr "Auth Digest" msgid "Auto" msgstr "Авто" +msgid "Auto Modes (--auto)" +msgstr "" + msgid "Auto refresh" msgstr "Автообновление" @@ -431,9 +482,6 @@ msgstr "Автолечение сетевого стека" msgid "Auto-update Hosts Lists" msgstr "Автообновление списков Hosts" -msgid "Automated DPI Strategy Fuzzer & Auto-Tuner" -msgstr "Автоматический подборщик и оптимизатор стратегий DPI" - msgid "Automatic component update checks" msgstr "Автоматическая проверка обновлений компонентов" @@ -452,6 +500,9 @@ msgstr "Автоматически создать аккаунт Cloudflare WARP msgid "Automatically increase check intervals when healthy (to 5 min) and decrease on problems (to 120s)." msgstr "Автоматически увеличивать интервалы проверки при нормальном состоянии (до 5 мин) и уменьшать при проблемах (до 120с)." +msgid "Automatically runs a diagnostic probe against the target service, queries the built-in DPI Knowledge Base, and synthesizes 3-5 custom bypass strategies tailored to your ISP." +msgstr "" + msgid "Automatically select the fastest node in the current level" msgstr "Автовыбор самого быстрого узла уровня" @@ -482,15 +533,15 @@ msgstr "Начало интервала расписания (например, msgid "Belarus (by)" msgstr "Беларусь (by)" +msgid "Benchmark & Test" +msgstr "" + msgid "Benchmark stopped" msgstr "Бенчмарк остановлен" msgid "Benchmarking in progress..." msgstr "Выполняется бенчмарк..." -msgid "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput." -msgstr "Тестирует набор стратегий десинхронизации пакетов в изолированном сэндбоксе без влияния на активный трафик и ранжирует их по задержке, TTFB и скорости." - msgid "BitTorrent / P2P" msgstr "BitTorrent / P2P" @@ -782,6 +833,9 @@ msgstr "Токен доступа Cloudflare WARP API" msgid "Comma-separated list of Telegram user IDs authorized to control the bot." msgstr "Список Telegram user ID через запятую, авторизованных для управления ботом." +msgid "Command-line arguments string..." +msgstr "" + msgid "Community Lists" msgstr "Community-списки" @@ -908,6 +962,9 @@ msgstr "Пользовательский заголовок для инициа msgid "Custom header for handshake response" msgstr "Пользовательский заголовок для ответа рукопожатия" +msgid "Custom interface/section" +msgstr "" + msgid "Custom OpenAI-Compatible API" msgstr "Пользовательский OpenAI-совместимый API" @@ -917,8 +974,8 @@ msgstr "Пользовательский URL эндпоинта OpenAI-совм msgid "Custom outbound configurations in JSON format" msgstr "Пользовательские конфигурации outbound в формате JSON" -msgid "Custom Target URL..." -msgstr "Свой URL для теста..." +msgid "Custom strategy added!" +msgstr "" msgid "Daily Quota" msgstr "Дневная квота" @@ -941,9 +998,6 @@ msgstr "По умолчанию (авто)" msgid "Default (Direct WAN / Default mixed proxy)" msgstr "По умолчанию (WAN / стандартный смешанный прокси)" -msgid "default (service mixed proxy)" -msgstr "по умолчанию (сервисный смешанный прокси)" - msgid "Default address for checking server availability and latency. URLTest uses its own address." msgstr "Адрес по умолчанию для проверки доступности и задержки сервера. URLTest использует свой собственный адрес." @@ -1031,8 +1085,8 @@ msgstr "Отключено" msgid "Disabling interception is incompatible with action=zapret2 because Tachyon sends matched traffic through NFQUEUE." msgstr "Отключение перехвата несовместимо с action=zapret2, потому что Tachyon направляет совпавший трафик через NFQUEUE." -msgid "Discord (Gateway / API / Voice)" -msgstr "Discord (Шлюз / API / Голосовые каналы)" +msgid "Disorder Values (-d)" +msgstr "" msgid "Display name" msgstr "Отображаемое имя" @@ -1481,6 +1535,9 @@ msgstr "Не удалось создать отчёт об ошибке" msgid "Failed to generate WARP config:" msgstr "Не удалось сгенерировать конфигурацию WARP:" +msgid "Failed to get fuzzer patterns" +msgstr "" + msgid "Failed to get fuzzer status" msgstr "" @@ -1505,6 +1562,9 @@ msgstr "Не удалось прочитать лог операции" msgid "Failed to receive response from AI service." msgstr "Не удалось получить ответ от ИИ-сервиса." +msgid "Failed to reset fuzzer patterns" +msgstr "" + msgid "Failed to reset settings" msgstr "Не удалось сбросить настройки" @@ -1526,6 +1586,12 @@ 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" @@ -1601,6 +1667,9 @@ msgstr "Фильтр по сервису:" msgid "Filter the servers that will be displayed on the dashboard." msgstr "Фильтровать серверы, отображаемые на дашборде." +msgid "Filter:" +msgstr "" + msgid "Finland (fi)" msgstr "Финляндия (fi)" @@ -1622,6 +1691,12 @@ msgstr "Исправлено" msgid "Flush Conntrack Table" msgstr "Очистить таблицу соед. (conntrack)" +msgid "Fooling Methods (dpi-desync-fooling)" +msgstr "" + +msgid "Fooling Methods (fooling)" +msgstr "" + msgid "Force immediate download and refresh of all remote lists and rule sets" msgstr "Принудительно скачать и обновить все удаленные списки и наборы правил" @@ -1925,9 +2000,6 @@ msgstr "Полезный груз init (I1)" msgid "Init timeout (Itime)" msgstr "Таймаут init (Itime)" -msgid "Instagram / Meta (TLS 1.3)" -msgstr "Instagram / Meta (TLS 1.3)" - msgid "Install" msgstr "Установить" @@ -2180,6 +2252,9 @@ msgstr "Некорректный VMess URL: ошибка разбора" msgid "IP Addresses (IP CIDR)" msgstr "IP-адреса (IP CIDR)" +msgid "IP Frag Bounds (--ip-frag)" +msgstr "" + msgid "IPs" msgstr "IP" @@ -2282,9 +2357,6 @@ msgstr "Путь к ключу" msgid "Keyword must not contain spaces or commas" msgstr "Ключевое слово не должно содержать пробелов или запятых" -msgid "Knowledge Base + Live Probe Context" -msgstr "База знаний + Контекст сетевого зонда" - msgid "LAN Devices" msgstr "Устройства LAN" @@ -2492,6 +2564,12 @@ msgstr "Должен быть список числовых ID через зап msgid "Must be a number in the range of 0 - 10000" msgstr "Должно быть числом в диапазоне 0 - 10000" +msgid "My Strategies" +msgstr "" + +msgid "Name" +msgstr "" + msgid "Name displayed on the dashboard" msgstr "Имя, отображаемое на дашборде" @@ -2555,8 +2633,8 @@ msgstr "Активные устройства в локальной сети н msgid "No active routing sections found." msgstr "Активные секции маршрутизации не найдены." -msgid "No benchmark results yet. Select engine and click \"Start Benchmark\" or \"Synthesize with AI\"." -msgstr "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк» или «Сгенерировать через ИИ»." +msgid "No benchmark results yet. Configure options and click \"Start Benchmark\"." +msgstr "" msgid "No check targets found in the configuration." msgstr "Цели для проверки не найдены в конфигурации." @@ -2570,6 +2648,9 @@ msgstr "Конфликт не обнаружен" msgid "No Custom Rules Matched" msgstr "Нет совпадений с пользовательскими правилами" +msgid "No custom strategies added yet." +msgstr "" + msgid "No DHCP clients detected" msgstr "DHCP-клиенты не обнаружены" @@ -2612,6 +2693,9 @@ msgstr "Секции не выбраны" msgid "No snapshots yet" msgstr "Снапшотов пока нет" +msgid "No strategies match the active filter." +msgstr "" + msgid "Node list is empty" msgstr "Список узлов пуст" @@ -2723,6 +2807,9 @@ msgstr "Только серверы с одним из выбранных тра msgid "Only the specified servers." msgstr "Только указанные серверы." +msgid "OOB Values (-o)" +msgstr "" + msgid "Open" msgstr "Открыть" @@ -2768,12 +2855,12 @@ msgstr "Параметр \"%s\" содержит недопустимое зна msgid "Optional — leave empty for default" msgstr "Опционально — оставьте пустым для значения по умолчанию" +msgid "Optional context (e.g. \"Rostelecom, YouTube 4K buffering is slow\")..." +msgstr "" + msgid "Optional for local LLM" msgstr "Опционально для локальных LLM" -msgid "Optional notes for AI (e.g. \"Rostelecom, YouTube 4K stream is slow\")..." -msgstr "Дополнительные заметки для ИИ (напр. «Ростелеком, тормозит 4K на YouTube»)..." - msgid "Optional tls-auth or tls-crypt key" msgstr "Опциональный ключ tls-auth или tls-crypt" @@ -2837,6 +2924,21 @@ msgstr "Путь должен содержать как минимум одну msgid "Path must end with cache.db" msgstr "Путь должен заканчиваться на cache.db" +msgid "Pattern Builder" +msgstr "" + +msgid "Patterns reset to defaults!" +msgstr "" + +msgid "Patterns reset to factory defaults" +msgstr "" + +msgid "Patterns saved successfully" +msgstr "" + +msgid "Patterns saved successfully!" +msgstr "" + msgid "Pause updates" msgstr "Приостановить обновление" @@ -2888,6 +2990,9 @@ msgstr "Закрепить на дашборде" msgid "Pin P2P isolation to the torrent client's own ports, comma separated. Each entry is \"proto\", \"proto:port\" or \"proto:port-port\" (tcp/udp). Without a port the whole protocol is routed direct." msgstr "Закрепить изоляцию P2P за портами торрент-клиента, через запятую. Каждая запись — \"протокол\", \"протокол:порт\" или \"протокол:порт-порт\" (tcp/udp). Без порта весь протокол уходит напрямую." +msgid "Please specify strategy name and arguments" +msgstr "" + msgid "Polling Interval (seconds)" msgstr "Интервал опроса (секунды)" @@ -3014,6 +3119,9 @@ msgstr "QR-код слишком большой" msgid "QUIC (HTTP/3)" msgstr "QUIC (HTTP/3)" +msgid "RAG Knowledge Base + Live ISP Probe Context" +msgstr "" + msgid "RDP" msgstr "RDP" @@ -3290,18 +3398,15 @@ msgstr "Запустить восстановление" msgid "Running" msgstr "Запущен" +msgid "Running benchmarks..." +msgstr "" + msgid "Running diagnostics…" msgstr "Выполняется диагностика…" -msgid "Running initial strategy probe..." -msgstr "Запуск первого зонда стратегии..." - msgid "Russia (ru)" msgstr "Россия (ru)" -msgid "RuTracker (HTTP/HTTPS)" -msgstr "RuTracker (HTTP/HTTPS)" - msgid "Sat" msgstr "Сб" @@ -3365,8 +3470,8 @@ msgstr "Действие секции" msgid "Section name" msgstr "Имя секции" -msgid "Section name for WARP registration proxy. Leave empty to use the default service mixed proxy." -msgstr "Секция для прокси регистрации WARP. Оставьте пустым для использования сервисного смешанного прокси по умолчанию." +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 "" msgid "Section Rules Content" msgstr "Содержимое правил секции" @@ -3503,6 +3608,9 @@ msgstr "Отправлять уведомление в Telegram при пере msgid "Send a Telegram notification when proxy subscriptions are successfully updated." msgstr "Отправлять уведомление в Telegram при успешном обновлении подписок прокси." +msgid "Sequence Overlaps (seqovl)" +msgstr "" + msgid "Server" msgstr "Сервер" @@ -3722,6 +3830,18 @@ msgstr "Укажите разные файлы" msgid "Speed" msgstr "Скорость" +msgid "Split Modes (dpi-desync)" +msgstr "" + +msgid "Split Positions (dpi-desync-split-pos)" +msgstr "" + +msgid "Split Positions (pos)" +msgstr "" + +msgid "Split Values (-s)" +msgstr "" + msgid "SSH" msgstr "SSH" @@ -3788,6 +3908,9 @@ msgstr "" msgid "Status" msgstr "Статус" +msgid "Status / Suite" +msgstr "" + msgid "Stop" msgstr "Стоп" @@ -3815,6 +3938,12 @@ msgstr "Стратегия и параметры" msgid "Strategy benchmark started" msgstr "Бенчмарк стратегий запущен" +msgid "Strategy deleted" +msgstr "" + +msgid "Strategy Name" +msgstr "" + msgid "Strict ECH + DoQ DNS Enforcer" msgstr "Строгий ECH + DoQ DNS Enforcer" @@ -3965,8 +4094,11 @@ msgstr "Целевые устройства (IP / MAC)" msgid "Target Scope" msgstr "Область действия" -msgid "Target Service" -msgstr "Целевой сервис" +msgid "Target Service / Suite" +msgstr "" + +msgid "TCP Window Sizes (wsize)" +msgstr "" msgid "Telegram Bot" msgstr "Telegram Бот" @@ -3977,9 +4109,6 @@ msgstr "Токен Telegram-бота" msgid "Telegram Channel" msgstr "Telegram канал" -msgid "Telegram Web" -msgstr "Telegram Web" - msgid "Test Connection" msgstr "Проверить подключение" @@ -4106,6 +4235,9 @@ msgstr "Ключ TLS Auth/Crypt" msgid "TLS SNI" msgstr "TLS SNI" +msgid "TLS-Rec Bounds (--tlsrec)" +msgstr "" + msgid "Token is required when the bot is enabled" msgstr "Токен обязателен, когда бот включён" @@ -4187,6 +4319,12 @@ msgstr "TTL должен быть положительным числом" msgid "TTL value cannot be empty" msgstr "Значение TTL не может быть пустым" +msgid "TTL Values (dpi-desync-ttl)" +msgstr "" + +msgid "TTL Values (ttl)" +msgstr "" + msgid "Tue" msgstr "Вт" @@ -4421,6 +4559,9 @@ msgstr "Использовать exit-node тейлнета для LAN" msgid "Used by" msgstr "Используется" +msgid "User custom strategy" +msgstr "" + msgid "User-Agent" msgstr "User-Agent" @@ -4550,12 +4691,6 @@ msgstr "Да" msgid "You can select Output Network Interface, by default autodetect" msgstr "Вы можете выбрать выходной сетевой интерфейс, по умолчанию автоопределение" -msgid "YouTube (GoogleVideo 4K stream)" -msgstr "YouTube (4K видеопоток GoogleVideo)" - -msgid "YouTube Web (Interface)" -msgstr "YouTube Web (Интерфейс)" - msgid "Zapret hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS strategies." msgstr "Шаблоны hostlist Zapret не поддерживаются здесь, потому что Tachyon не расширяет их для стратегий NFQWS по правилам." @@ -4604,6 +4739,66 @@ msgstr "sing-box outbound для Zapret2 настроен" msgid "Zapret2 sing-box outbound is not configured" msgstr "sing-box outbound для Zapret2 не настроен" +msgid "🏆 Apply Best Strategy" +msgstr "🏆 Применить лучшую стратегию" + +msgid "🔍 Combinatorial Deep Fuzzing (~40-60)" +msgstr "🔍 Комбинаторный глубокий перебор (~40-60)" + +msgid "🚀 Run Benchmark Again" +msgstr "🚀 Запустить бенчмарк снова" + +msgid "AI DPI Engineer & Strategy Synthesizer (RAG-Powered)" +msgstr "ИИ-инженер DPI и генератор стратегий (на базе RAG)" + +msgid "Automated DPI Strategy Fuzzer & Auto-Tuner" +msgstr "Автоматический подборщик и оптимизатор стратегий DPI" + +msgid "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput." +msgstr "Тестирует набор стратегий десинхронизации пакетов в изолированном сэндбоксе без влияния на активный трафик и ранжирует их по задержке, TTFB и скорости." + +msgid "Custom Target URL..." +msgstr "Свой URL для теста..." + +msgid "default (service mixed proxy)" +msgstr "по умолчанию (сервисный смешанный прокси)" + +msgid "Discord (Gateway / API / Voice)" +msgstr "Discord (Шлюз / API / Голосовые каналы)" + +msgid "Instagram / Meta (TLS 1.3)" +msgstr "Instagram / Meta (TLS 1.3)" + +msgid "Knowledge Base + Live Probe Context" +msgstr "База знаний + Контекст сетевого зонда" + +msgid "No benchmark results yet. Select engine and click \"Start Benchmark\" or \"Synthesize with AI\"." +msgstr "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк» или «Сгенерировать через ИИ»." + +msgid "Optional notes for AI (e.g. \"Rostelecom, YouTube 4K stream is slow\")..." +msgstr "Дополнительные заметки для ИИ (напр. «Ростелеком, тормозит 4K на YouTube»)..." + +msgid "Running initial strategy probe..." +msgstr "Запуск первого зонда стратегии..." + +msgid "RuTracker (HTTP/HTTPS)" +msgstr "RuTracker (HTTP/HTTPS)" + +msgid "Section name for WARP registration proxy. Leave empty to use the default service mixed proxy." +msgstr "Секция для прокси регистрации WARP. Оставьте пустым для использования сервисного смешанного прокси по умолчанию." + +msgid "Target Service" +msgstr "Целевой сервис" + +msgid "Telegram Web" +msgstr "Telegram Web" + +msgid "YouTube (GoogleVideo 4K stream)" +msgstr "YouTube (4K видеопоток GoogleVideo)" + +msgid "YouTube Web (Interface)" +msgstr "YouTube Web (Интерфейс)" + msgid "No benchmark results yet. Select engine and click \"Start Benchmark\"." msgstr "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк»." diff --git a/fe-app-tachyon/src/tachyon/methods/shell/index.ts b/fe-app-tachyon/src/tachyon/methods/shell/index.ts index 9f95b74f..78e6e85a 100644 --- a/fe-app-tachyon/src/tachyon/methods/shell/index.ts +++ b/fe-app-tachyon/src/tachyon/methods/shell/index.ts @@ -1246,4 +1246,110 @@ export const TachyonShellMethods = { _('Failed to synthesize AI strategies'), }; }, + + getFuzzerPatterns: async (): Promise< + Tachyon.MethodResponse<{ patterns: Tachyon.FuzzerPatternsConfig }> + > => { + const response = await executeShellCommand({ + command: '/usr/bin/tachyon', + args: [Tachyon.AvailableMethods.FUZZER_GET_PATTERNS], + timeout: 8000, + }); + + let parsed: { + success: boolean; + patterns: Tachyon.FuzzerPatternsConfig; + } | null = null; + try { + parsed = JSON.parse(response.stdout?.trim() || '{}'); + } catch { + parsed = null; + } + + if ((response.code ?? 1) === 0 && parsed && parsed.success) { + return { + success: true, + data: parsed, + }; + } + return { + success: false, + error: response.stderr || _('Failed to get fuzzer patterns'), + }; + }, + + saveFuzzerPatterns: async ( + patterns: Tachyon.FuzzerPatternsConfig, + ): Promise> => { + const response = await executeShellCommand({ + command: '/usr/bin/tachyon', + args: [ + Tachyon.AvailableMethods.FUZZER_SAVE_PATTERNS, + JSON.stringify(patterns), + ], + timeout: 10000, + }); + + let parsed: { success: boolean; message?: string; error?: string } | null = + null; + try { + parsed = JSON.parse(response.stdout?.trim() || '{}'); + } catch { + parsed = null; + } + + if ((response.code ?? 1) === 0 && parsed && parsed.success) { + return { + success: true, + data: { message: parsed.message || _('Patterns saved successfully') }, + }; + } + return { + success: false, + error: + parsed?.error || response.stderr || _('Failed to save fuzzer patterns'), + }; + }, + + resetFuzzerPatterns: async (): Promise< + Tachyon.MethodResponse<{ + patterns: Tachyon.FuzzerPatternsConfig; + message: string; + }> + > => { + const response = await executeShellCommand({ + command: '/usr/bin/tachyon', + args: [Tachyon.AvailableMethods.FUZZER_RESET_PATTERNS], + timeout: 8000, + }); + + let parsed: { + success: boolean; + message?: string; + patterns?: Tachyon.FuzzerPatternsConfig; + error?: string; + } | null = null; + try { + parsed = JSON.parse(response.stdout?.trim() || '{}'); + } catch { + parsed = null; + } + + if ((response.code ?? 1) === 0 && parsed && parsed.success) { + return { + success: true, + data: { + message: parsed.message || _('Patterns reset to factory defaults'), + patterns: parsed.patterns as Tachyon.FuzzerPatternsConfig, + }, + }; + } + return { + success: false, + error: + parsed?.error || + response.stderr || + _('Failed to reset fuzzer patterns'), + }; + }, }; diff --git a/fe-app-tachyon/src/tachyon/methods/shell/tests/fuzzerAction.test.ts b/fe-app-tachyon/src/tachyon/methods/shell/tests/fuzzerAction.test.ts index 19e93ed0..ce7186fc 100644 --- a/fe-app-tachyon/src/tachyon/methods/shell/tests/fuzzerAction.test.ts +++ b/fe-app-tachyon/src/tachyon/methods/shell/tests/fuzzerAction.test.ts @@ -182,4 +182,72 @@ describe('TachyonShellMethods Fuzzer Actions', () => { expect(res.data.strategies).toHaveLength(1); } }); + + it('gets fuzzer patterns configuration', async () => { + mocks.executeShellCommand.mockResolvedValueOnce({ + stdout: JSON.stringify({ + success: true, + patterns: { + zapret2: { splits: ['1', '2', 'midsld'] }, + zapret: { splits: ['1', '2'] }, + byedpi: { splits: ['1'] }, + custom_strategies: [], + }, + }), + stderr: '', + code: 0, + }); + + const res = await TachyonShellMethods.getFuzzerPatterns(); + expect(res.success).toBe(true); + if (res.success) { + expect(res.data.patterns.zapret2.splits).toEqual(['1', '2', 'midsld']); + } + }); + + it('saves fuzzer patterns configuration', async () => { + mocks.executeShellCommand.mockResolvedValueOnce({ + stdout: JSON.stringify({ + success: true, + message: 'Patterns saved successfully', + }), + stderr: '', + code: 0, + }); + + const patternsPayload: any = { + zapret2: { splits: ['1', '2', 'midsld'] }, + zapret: { splits: ['1'] }, + byedpi: { splits: ['1'] }, + custom_strategies: [], + }; + + const res = await TachyonShellMethods.saveFuzzerPatterns(patternsPayload); + expect(res.success).toBe(true); + expect(mocks.executeShellCommand).toHaveBeenCalledWith( + expect.objectContaining({ + args: ['fuzzer_save_patterns', JSON.stringify(patternsPayload)], + }), + ); + }); + + it('resets fuzzer patterns configuration', async () => { + mocks.executeShellCommand.mockResolvedValueOnce({ + stdout: JSON.stringify({ + success: true, + message: 'Patterns reset to factory defaults', + patterns: { + zapret2: { splits: ['1', '2', '3', 'midsld'] }, + }, + }), + stderr: '', + code: 0, + }); + + const res = await TachyonShellMethods.resetFuzzerPatterns(); + expect(res.success).toBe(true); + if (res.success) { + expect(res.data.message).toBe('Patterns reset to factory defaults'); + } + }); }); diff --git a/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts b/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts index f8d081a4..b193b240 100644 --- a/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts +++ b/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts @@ -8,54 +8,126 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { let isPolling = false; // Modal State + let activeTab: 'benchmark' | 'patterns' | 'custom' | 'ai' = 'benchmark'; let selectedEngine: Tachyon.FuzzerEngine = 'zapret2'; - let selectedTarget: Tachyon.FuzzerTarget = 'youtube'; + let selectedTarget: Tachyon.FuzzerTarget = 'youtube_suite'; let customUrl = ''; let selectedRuleSection = ''; + let selectedMode: Tachyon.FuzzerMode = 'presets'; let isRunning = false; let currentState: Tachyon.FuzzerState | null = null; + let resultFilter: 'all' | 'success' | 'fast' = 'all'; + + // Patterns Config State + let patternsConfig: Tachyon.FuzzerPatternsConfig = { + zapret2: { + splits: ['1', '2', '3', 'midsld', 'sniext+4', '1,midsld', '1,sniext+2'], + foolings: ['badseq', 'md5sig', 'badack', 'datanoack', 'fakeddrop'], + ttls: [2, 3, 4, 5, 6, 8], + seqovls: ['1', '2'], + wsizes: ['1'], + payloads: ['tls_client_hello', 'http_req', 'quic_initial'], + }, + zapret: { + splits: ['1', '2', 'midsld', 'sniext+4', '1,midsld'], + foolings: ['badseq', 'md5sig', 'badack', 'datanoack'], + ttls: [2, 3, 4, 6, 8], + split_modes: ['split2', 'disorder2', 'fake,split2', 'fake,disorder2'], + }, + byedpi: { + splits: ['1', '2', '1+sniext', 'midsld'], + disorders: ['1', '2'], + ttls: [2, 3, 4, 6, 8], + oobs: ['1', '2'], + autos: ['t,r,a,s', 'r,s', 't,a'], + tlsrecs: ['1+sniext'], + ipfrags: ['24'], + }, + custom_strategies: [], + }; const modalContainer = E('div', { class: 'tachyon_fuzzer_modal', style: - 'display: flex; flex-direction: column; gap: 16px; width: 100%; max-width: 860px; box-sizing: border-box;', + 'display: flex; flex-direction: column; gap: 14px; width: 100%; max-width: 920px; box-sizing: border-box;', }); - // ── Header & Description ────────────────────────────────────────────────── - const headerEl = E( + // ── Tab Bar Navigation ──────────────────────────────────────────────────── + const tabButtons: Record = {}; + + const createTabButton = ( + id: 'benchmark' | 'patterns' | 'custom' | 'ai', + icon: string, + label: string, + ) => { + const btn = E( + 'button', + { + type: 'button', + class: `cbi-button ${activeTab === id ? 'cbi-button-action' : 'cbi-button-neutral'}`, + style: + 'display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; font-size: 12px; font-weight: 500; border-radius: 6px; cursor: pointer;', + }, + [E('span', {}, icon), E('span', {}, label)], + ); + btn.addEventListener('click', () => { + activeTab = id; + updateTabVisibility(); + }); + tabButtons[id] = btn; + return btn; + }; + + const tabBar = E( 'div', { style: - 'padding: 12px 16px; background: var(--background-color-secondary, rgba(0,0,0,0.25)); border: 1px solid var(--border-color, rgba(255,255,255,0.12)); border-radius: 8px;', + 'display: flex; gap: 8px; border-bottom: 1px solid var(--border-color, rgba(255,255,255,0.12)); padding-bottom: 10px; flex-wrap: wrap;', }, [ - E( - 'div', - { - style: - 'font-size: 15px; font-weight: bold; margin-bottom: 4px; display: flex; align-items: center; gap: 8px;', - }, - [ - E('span', {}, '⚡'), - E('span', {}, _('Automated DPI Strategy Fuzzer & Auto-Tuner')), - ], - ), - E( - 'div', - { - style: 'font-size: 12px; opacity: 0.75; line-height: 1.4;', - }, - _( - 'Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput.', - ), - ), + createTabButton('benchmark', '⚡', _('Benchmark & Test')), + createTabButton('patterns', '🛠️', _('Pattern Builder')), + createTabButton('custom', '➕', _('My Strategies')), + createTabButton('ai', '🧠', _('AI Doctor RAG')), ], ); - // ── Configuration Controls ──────────────────────────────────────────────── + const tabContentBenchmark = E('div', { + style: 'display: flex; flex-direction: column; gap: 14px;', + }); + const tabContentPatterns = E('div', { + style: 'display: none; flex-direction: column; gap: 14px;', + }); + const tabContentCustom = E('div', { + style: 'display: none; flex-direction: column; gap: 14px;', + }); + const tabContentAi = E('div', { + style: 'display: none; flex-direction: column; gap: 14px;', + }); + + const updateTabVisibility = () => { + for (const key in tabButtons) { + tabButtons[key].className = + `cbi-button ${activeTab === key ? 'cbi-button-action' : 'cbi-button-neutral'}`; + } + tabContentBenchmark.style.display = + activeTab === 'benchmark' ? 'flex' : 'none'; + tabContentPatterns.style.display = + activeTab === 'patterns' ? 'flex' : 'none'; + tabContentCustom.style.display = activeTab === 'custom' ? 'flex' : 'none'; + tabContentAi.style.display = activeTab === 'ai' ? 'flex' : 'none'; + + if (activeTab === 'patterns') renderPatternsTab(); + if (activeTab === 'custom') renderCustomTab(); + }; + + // ═════════════════════════════════════════════════════════════════════════════ + // TAB 1: BENCHMARK & RUN + // ═════════════════════════════════════════════════════════════════════════════ + const controlsGrid = E('div', { style: - 'display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; align-items: end;', + 'display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; align-items: end;', }); // 1. Engine Select @@ -63,11 +135,7 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { 'select', { class: 'cbi-input-select', style: 'width: 100%;' }, [ - E( - 'option', - { value: 'zapret2', selected: true }, - _('Zapret v2 (nfqws2)'), - ), + E('option', { value: 'zapret2' }, _('Zapret v2 (nfqws2)')), E('option', { value: 'zapret' }, _('Zapret v1 (nfqws)')), E('option', { value: 'byedpi' }, _('ByeDPI (ciadpi)')), E('option', { value: 'all' }, _('All Engines (Full Matrix)')), @@ -84,52 +152,13 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { [ E( 'label', - { style: 'font-size: 12px; font-weight: 600;' }, + { style: 'font-size: 11px; font-weight: 600; opacity: 0.85;' }, _('DPI Engine'), ), engineSelect, ], ); - // Dynamically query available engines and annotate options - TachyonShellMethods.getFuzzerStrategies() - .then((res) => { - if (res.success && res.data?.available_engines) { - const av = res.data.available_engines; - const opts = (engineSelect as HTMLSelectElement).options; - for (let i = 0; i < opts.length; i++) { - const opt = opts[i]; - if (opt.value === 'zapret2') { - opt.text = av.zapret2 - ? _('Zapret v2 (nfqws2)') + ' — ' + _('Installed') - : _('Zapret v2 (nfqws2)') + ' — ' + _('Not installed'); - if (!av.zapret2) opt.disabled = true; - } else if (opt.value === 'zapret') { - opt.text = av.zapret - ? _('Zapret v1 (nfqws)') + ' — ' + _('Installed') - : _('Zapret v1 (nfqws)') + ' — ' + _('Not installed'); - if (!av.zapret) opt.disabled = true; - } else if (opt.value === 'byedpi') { - opt.text = av.byedpi - ? _('ByeDPI (ciadpi)') + ' — ' + _('Installed') - : _('ByeDPI (ciadpi)') + ' — ' + _('Not installed'); - if (!av.byedpi) opt.disabled = true; - } - } - if (av.zapret2) { - selectedEngine = 'zapret2'; - (engineSelect as HTMLSelectElement).value = 'zapret2'; - } else if (av.byedpi) { - selectedEngine = 'byedpi'; - (engineSelect as HTMLSelectElement).value = 'byedpi'; - } else if (av.zapret) { - selectedEngine = 'zapret'; - (engineSelect as HTMLSelectElement).value = 'zapret'; - } - } - }) - .catch(() => {}); - // 2. Target Preset Select const targetSelect = E( 'select', @@ -137,15 +166,27 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { [ E( 'option', - { value: 'youtube', selected: true }, - _('YouTube (GoogleVideo 4K stream)'), + { value: 'youtube_suite', selected: true }, + _('🎬 YouTube Suite (Web + 4K Stream)'), ), - E('option', { value: 'youtube_web' }, _('YouTube Web (Interface)')), - E('option', { value: 'discord' }, _('Discord (Gateway / API / Voice)')), - E('option', { value: 'instagram' }, _('Instagram / Meta (TLS 1.3)')), - E('option', { value: 'rutracker' }, _('RuTracker (HTTP/HTTPS)')), - E('option', { value: 'telegram' }, _('Telegram Web')), - E('option', { value: 'custom' }, _('Custom Target URL...')), + E( + 'option', + { value: 'discord_suite' }, + _('💬 Discord Suite (API + WSS + CDN)'), + ), + E( + 'option', + { value: 'instagram_suite' }, + _('📸 Instagram / Meta (Web + CDN)'), + ), + E( + 'option', + { value: 'telegram_suite' }, + _('✈️ Telegram Suite (Web + Bot API)'), + ), + E('option', { value: 'rutracker_suite' }, _('🏴‍☠️ RuTracker Suite')), + E('option', { value: 'quic_http3' }, _('⚡ QUIC / HTTP/3 (UDP 443)')), + E('option', { value: 'custom' }, _('🌐 Custom Target URL...')), ], ); @@ -159,11 +200,8 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { targetSelect.addEventListener('change', () => { selectedTarget = (targetSelect as HTMLSelectElement) .value as Tachyon.FuzzerTarget; - if (selectedTarget === 'custom') { - (customUrlInput as HTMLElement).style.display = 'block'; - } else { - (customUrlInput as HTMLElement).style.display = 'none'; - } + (customUrlInput as HTMLElement).style.display = + selectedTarget === 'custom' ? 'block' : 'none'; }); customUrlInput.addEventListener('input', () => { @@ -176,43 +214,15 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { [ E( 'label', - { style: 'font-size: 12px; font-weight: 600;' }, - _('Target Service'), + { style: 'font-size: 11px; font-weight: 600; opacity: 0.85;' }, + _('Target Service / Suite'), ), targetSelect, customUrlInput, ], ); - // 3. Rule / Apply Target Select - const ruleSelectOptions = [ - E('option', { value: '', selected: true }, _('Provider Global Default')), - ...ruleNames.map((r) => E('option', { value: r }, `${_('Rule:')} ${r}`)), - ]; - const ruleSelect = E( - 'select', - { class: 'cbi-input-select', style: 'width: 100%;' }, - ruleSelectOptions, - ); - ruleSelect.addEventListener('change', () => { - selectedRuleSection = (ruleSelect as HTMLSelectElement).value; - }); - - const ruleGroup = E( - 'div', - { style: 'display: flex; flex-direction: column; gap: 4px;' }, - [ - E( - 'label', - { style: 'font-size: 12px; font-weight: 600;' }, - _('Apply Strategy To'), - ), - ruleSelect, - ], - ); - - let selectedMode: Tachyon.FuzzerMode = 'presets'; - + // 3. Search Mode Select const modeSelect = E( 'select', { class: 'cbi-input-select', style: 'width: 100%;' }, @@ -225,8 +235,9 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { E( 'option', { value: 'combinatorial' }, - _('🔍 Combinatorial Deep Fuzzing (~40-60)'), + _('🔍 Combinatorial Deep Fuzzing (~40-80+)'), ), + E('option', { value: 'custom' }, _('🛠️ My Custom Strategies Only')), ], ); modeSelect.addEventListener('change', () => { @@ -240,98 +251,47 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { [ E( 'label', - { style: 'font-size: 12px; font-weight: 600;' }, + { style: 'font-size: 11px; font-weight: 600; opacity: 0.85;' }, _('Search Mode'), ), modeSelect, ], ); - controlsGrid.append(engineGroup, targetGroup, ruleGroup, modeGroup); - - // ── AI Synthesizer Section ──────────────────────────────────────────────── - const aiPromptInput = E('input', { - type: 'text', - class: 'cbi-input-text', - placeholder: _( - 'Optional notes for AI (e.g. "Rostelecom, YouTube 4K stream is slow")...', - ), - style: 'flex: 1 1 auto; font-size: 12px;', + // 4. Rule Apply Target Select + const ruleSelect = E( + 'select', + { class: 'cbi-input-select', style: 'width: 100%;' }, + [ + E('option', { value: '', selected: true }, _('Provider Global Default')), + ...ruleNames.map((r) => E('option', { value: r }, `${_('Rule:')} ${r}`)), + ], + ); + ruleSelect.addEventListener('change', () => { + selectedRuleSection = (ruleSelect as HTMLSelectElement).value; }); - const aiSynthesizeBtn = renderButton({ - text: _('🧠 Synthesize with AI'), - classNames: ['cbi-button-action'], - onClick: () => handleAiSynthesize(), - }); - - const aiAnalysisContainer = E( + const ruleGroup = E( 'div', - { - id: 'tachyon-fuzzer-ai-analysis', - style: - 'display: none; padding: 10px 14px; background: rgba(0, 123, 255, 0.08); border-left: 3px solid #007bff; border-radius: 4px; font-size: 12px; line-height: 1.4;', - }, + { style: 'display: flex; flex-direction: column; gap: 4px;' }, [ E( - 'div', - { - style: - 'font-weight: bold; margin-bottom: 4px; display: flex; align-items: center; gap: 6px;', - }, - [ - E('span', {}, '🧠'), - E('span', {}, _('AI Diagnostics & Strategy Rationale')), - ], - ), - E( - 'div', - { id: 'tachyon-fuzzer-ai-analysis-text', style: 'opacity: 0.85;' }, - '', + 'label', + { style: 'font-size: 11px; font-weight: 600; opacity: 0.85;' }, + _('Apply Strategy To'), ), + ruleSelect, ], ); - const aiSynthesizerCard = E( - 'div', - { - style: - 'padding: 10px 14px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border: 1px dashed var(--border-color, rgba(255,255,255,0.15)); border-radius: 8px; display: flex; flex-direction: column; gap: 8px;', - }, - [ - E( - 'div', - { - style: - 'font-size: 12px; font-weight: 600; display: flex; align-items: center; justify-content: space-between;', - }, - [ - E( - 'span', - {}, - '🧠 ' + _('AI DPI Engineer & Strategy Synthesizer (RAG-Powered)'), - ), - E( - 'span', - { style: 'font-size: 10px; opacity: 0.6; font-weight: normal;' }, - _('Knowledge Base + Live Probe Context'), - ), - ], - ), - E('div', { style: 'display: flex; gap: 8px; align-items: center;' }, [ - aiPromptInput, - aiSynthesizeBtn, - ]), - aiAnalysisContainer, - ], - ); + controlsGrid.append(engineGroup, targetGroup, modeGroup, ruleGroup); - // ── Progress & Status Bar ───────────────────────────────────────────────── + // Progress Bar const progressContainer = E( 'div', { style: - 'display: none; flex-direction: column; gap: 6px; padding: 12px; background: var(--background-color-secondary, rgba(0,0,0,0.18)); border-radius: 8px; border: 1px solid var(--border-color, rgba(255,255,255,0.1));', + 'display: none; flex-direction: column; gap: 6px; padding: 10px 14px; background: var(--background-color-secondary, rgba(0,0,0,0.18)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.08));', }, [ E( @@ -353,13 +313,13 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { 'div', { style: - 'width: 100%; height: 8px; background: rgba(255,255,255,0.1); border-radius: 4px; overflow: hidden;', + 'width: 100%; height: 6px; background: rgba(255,255,255,0.1); border-radius: 3px; overflow: hidden;', }, [ E('div', { id: 'tachyon-fuzzer-progress-bar', style: - 'height: 100%; width: 0%; background: linear-gradient(90deg, #007bff, #00d2ff); transition: width 0.3s ease;', + 'height: 100%; width: 0%; background: #007bff; transition: width 0.3s ease;', }), ], ), @@ -367,17 +327,94 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { 'div', { id: 'tachyon-fuzzer-current-strategy', - style: 'font-size: 11px; opacity: 0.7; font-family: monospace;', + style: 'font-size: 11px; opacity: 0.75; font-family: monospace;', }, '', ), ], ); - // ── Results Table ───────────────────────────────────────────────────────── + const applyBestBtn = renderButton({ + text: _('🏆 Apply Best Match'), + classNames: ['cbi-button-save'], + disabled: true, + onClick: () => handleApplyBest(), + }); + + // Results Filter Toolbar + const filterToolbar = E( + 'div', + { + style: + 'display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px;', + }, + [ + E('div', { style: 'display: flex; gap: 6px; align-items: center;' }, [ + E( + 'span', + { style: 'font-size: 11px; opacity: 0.7; margin-right: 4px;' }, + _('Filter:'), + ), + (() => { + const bAll = E( + 'button', + { + type: 'button', + class: 'cbi-button cbi-button-action', + style: 'padding: 2px 10px; font-size: 11px;', + }, + _('All'), + ); + const bOk = E( + 'button', + { + type: 'button', + class: 'cbi-button cbi-button-neutral', + style: 'padding: 2px 10px; font-size: 11px;', + }, + _('✅ Working only'), + ); + const bFast = E( + 'button', + { + type: 'button', + class: 'cbi-button cbi-button-neutral', + style: 'padding: 2px 10px; font-size: 11px;', + }, + _('⚡ Fast (>1MB/s)'), + ); + + const setFilter = ( + f: 'all' | 'success' | 'fast', + btn: HTMLElement, + ) => { + resultFilter = f; + [bAll, bOk, bFast].forEach( + (b) => (b.className = 'cbi-button cbi-button-neutral'), + ); + btn.className = 'cbi-button cbi-button-action'; + if (currentState) renderResults(currentState); + }; + + bAll.addEventListener('click', () => setFilter('all', bAll)); + bOk.addEventListener('click', () => setFilter('success', bOk)); + bFast.addEventListener('click', () => setFilter('fast', bFast)); + + return E('div', { style: 'display: flex; gap: 4px;' }, [ + bAll, + bOk, + bFast, + ]); + })(), + ]), + E('div', { style: 'display: flex; gap: 8px;' }, [applyBestBtn]), + ], + ); + + // Results Table const resultsContainer = E('div', { style: - 'max-height: 380px; overflow-y: auto; border: 1px solid var(--border-color, rgba(255,255,255,0.12)); border-radius: 8px;', + 'max-height: 380px; overflow-y: auto; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); border-radius: 6px;', }); const tableEl = E( @@ -392,25 +429,29 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { 'thead', { style: - 'background: var(--background-color-secondary, rgba(0,0,0,0.3)); position: sticky; top: 0; z-index: 2;', + 'background: var(--background-color-secondary, rgba(0,0,0,0.25)); position: sticky; top: 0; z-index: 2;', }, [ E('tr', {}, [ - E('th', { style: 'padding: 8px 10px; width: 40px;' }, '#'), - E('th', { style: 'padding: 8px 10px; width: 80px;' }, _('Engine')), + E('th', { style: 'padding: 8px 10px; width: 35px;' }, '#'), + E('th', { style: 'padding: 8px 10px; width: 75px;' }, _('Engine')), E( 'th', { style: 'padding: 8px 10px;' }, _('Strategy & Parameters'), ), - E('th', { style: 'padding: 8px 10px; width: 70px;' }, _('Status')), - E('th', { style: 'padding: 8px 10px; width: 65px;' }, _('TTFB')), - E('th', { style: 'padding: 8px 10px; width: 75px;' }, _('Speed')), - E('th', { style: 'padding: 8px 10px; width: 90px;' }, _('Score')), E( 'th', - { style: 'padding: 8px 10px; width: 80px; text-align: center;' }, - _('Action'), + { style: 'padding: 8px 10px; width: 95px;' }, + _('Status / Suite'), + ), + E('th', { style: 'padding: 8px 10px; width: 65px;' }, _('TTFB')), + E('th', { style: 'padding: 8px 10px; width: 75px;' }, _('Speed')), + E('th', { style: 'padding: 8px 10px; width: 80px;' }, _('Score')), + E( + 'th', + { style: 'padding: 8px 10px; width: 85px; text-align: center;' }, + _('Actions'), ), ]), ], @@ -426,7 +467,7 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { style: 'padding: 24px; text-align: center; opacity: 0.6;', }, _( - 'No benchmark results yet. Select engine and click "Start Benchmark" or "Synthesize with AI".', + 'No benchmark results yet. Configure options and click "Start Benchmark".', ), ), ), @@ -436,74 +477,629 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { resultsContainer.appendChild(tableEl); - // ── Action Buttons & Footer ─────────────────────────────────────────────── + // Footer Actions for Benchmark const startBtn = renderButton({ text: _('🚀 Start Benchmark'), classNames: ['cbi-button-action'], onClick: () => handleToggleRun(), }); - const applyBestBtn = renderButton({ - text: _('🏆 Apply Best Strategy'), - classNames: ['cbi-button-save'], - disabled: true, - onClick: () => handleApplyBest(), - }); - - const closeBtn = renderButton({ - text: _('Close'), - classNames: ['cbi-button-neutral'], - onClick: () => { - stopPolling(); - ui.hideModal(); - }, - }); - const footerActions = E( 'div', { style: - 'display: flex; justify-content: space-between; align-items: center; padding-top: 8px; border-top: 1px solid var(--border-color, rgba(255,255,255,0.1));', + 'display: flex; justify-content: space-between; align-items: center; padding-top: 6px;', }, [ - E('div', { style: 'display: flex; gap: 8px;' }, [startBtn]), - E('div', { style: 'display: flex; gap: 8px;' }, [applyBestBtn, closeBtn]), + startBtn, + renderButton({ + text: _('Close'), + classNames: ['cbi-button-neutral'], + onClick: () => { + stopPolling(); + ui.hideModal(); + }, + }), ], ); - // ── Render Helpers ──────────────────────────────────────────────────────── + tabContentBenchmark.append( + controlsGrid, + progressContainer, + filterToolbar, + resultsContainer, + footerActions, + ); + + // ═════════════════════════════════════════════════════════════════════════════ + // TAB 2: PATTERN BUILDER & MATRIX CONFIG + // ═════════════════════════════════════════════════════════════════════════════ + + const renderChipGroup = ( + title: string, + items: (string | number)[], + onAdd: (val: string) => void, + onRemove: (idx: number) => void, + ) => { + const input = E('input', { + type: 'text', + class: 'cbi-input-text', + placeholder: '+ add', + style: 'width: 80px; padding: 2px 6px; font-size: 11px;', + }); + + input.addEventListener('keydown', (e: KeyboardEvent) => { + if (e.key === 'Enter') { + const v = (input as HTMLInputElement).value.trim(); + if (v) { + onAdd(v); + (input as HTMLInputElement).value = ''; + renderPatternsTab(); + } + } + }); + + const chips = items.map((item, idx) => { + const chip = E( + 'span', + { + style: + 'display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; background: var(--background-color-secondary, rgba(255,255,255,0.08)); border: 1px solid var(--border-color, rgba(255,255,255,0.12)); border-radius: 4px; font-size: 11px; font-family: monospace;', + }, + [ + E('span', {}, String(item)), + (() => { + const del = E( + 'span', + { + style: + 'cursor: pointer; opacity: 0.6; font-size: 12px; margin-left: 2px;', + }, + '×', + ); + del.addEventListener('click', () => { + onRemove(idx); + renderPatternsTab(); + }); + return del; + })(), + ], + ); + return chip; + }); + + return E( + 'div', + { style: 'display: flex; flex-direction: column; gap: 4px;' }, + [ + E( + 'span', + { style: 'font-size: 11px; font-weight: 600; opacity: 0.8;' }, + title, + ), + E( + 'div', + { + style: + 'display: flex; flex-wrap: wrap; gap: 6px; align-items: center;', + }, + [...chips, input], + ), + ], + ); + }; + + const renderPatternsTab = () => { + tabContentPatterns.replaceChildren(); + + const z2 = patternsConfig.zapret2; + const z1 = patternsConfig.zapret; + const bd = patternsConfig.byedpi; + + const z2Card = E( + 'div', + { + style: + 'padding: 12px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 10px;', + }, + [ + E( + 'div', + { style: 'font-size: 13px; font-weight: bold;' }, + '⚡ Zapret v2 (nfqws2) Matrix Patterns', + ), + renderChipGroup( + _('Split Positions (pos)'), + z2.splits, + (v) => z2.splits.push(v), + (i) => z2.splits.splice(i, 1), + ), + renderChipGroup( + _('Fooling Methods (fooling)'), + z2.foolings, + (v) => z2.foolings.push(v), + (i) => z2.foolings.splice(i, 1), + ), + renderChipGroup( + _('TTL Values (ttl)'), + z2.ttls, + (v) => z2.ttls.push(Number(v) || 4), + (i) => z2.ttls.splice(i, 1), + ), + renderChipGroup( + _('Sequence Overlaps (seqovl)'), + z2.seqovls, + (v) => z2.seqovls.push(v), + (i) => z2.seqovls.splice(i, 1), + ), + renderChipGroup( + _('TCP Window Sizes (wsize)'), + z2.wsizes, + (v) => z2.wsizes.push(v), + (i) => z2.wsizes.splice(i, 1), + ), + ], + ); + + const z1Card = E( + 'div', + { + style: + 'padding: 12px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 10px;', + }, + [ + E( + 'div', + { style: 'font-size: 13px; font-weight: bold;' }, + '⚡ Zapret v1 (nfqws) Matrix Patterns', + ), + renderChipGroup( + _('Split Modes (dpi-desync)'), + z1.split_modes, + (v) => z1.split_modes.push(v), + (i) => z1.split_modes.splice(i, 1), + ), + renderChipGroup( + _('Split Positions (dpi-desync-split-pos)'), + z1.splits, + (v) => z1.splits.push(v), + (i) => z1.splits.splice(i, 1), + ), + renderChipGroup( + _('Fooling Methods (dpi-desync-fooling)'), + z1.foolings, + (v) => z1.foolings.push(v), + (i) => z1.foolings.splice(i, 1), + ), + renderChipGroup( + _('TTL Values (dpi-desync-ttl)'), + z1.ttls, + (v) => z1.ttls.push(Number(v) || 4), + (i) => z1.ttls.splice(i, 1), + ), + ], + ); + + const bdCard = E( + 'div', + { + style: + 'padding: 12px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 10px;', + }, + [ + E( + 'div', + { style: 'font-size: 13px; font-weight: bold;' }, + '⚡ ByeDPI (ciadpi) Matrix Patterns', + ), + renderChipGroup( + _('Split Values (-s)'), + bd.splits, + (v) => bd.splits.push(v), + (i) => bd.splits.splice(i, 1), + ), + renderChipGroup( + _('Disorder Values (-d)'), + bd.disorders, + (v) => bd.disorders.push(v), + (i) => bd.disorders.splice(i, 1), + ), + renderChipGroup( + _('OOB Values (-o)'), + bd.oobs, + (v) => bd.oobs.push(v), + (i) => bd.oobs.splice(i, 1), + ), + renderChipGroup( + _('Auto Modes (--auto)'), + bd.autos, + (v) => bd.autos.push(v), + (i) => bd.autos.splice(i, 1), + ), + renderChipGroup( + _('TLS-Rec Bounds (--tlsrec)'), + bd.tlsrecs, + (v) => bd.tlsrecs.push(v), + (i) => bd.tlsrecs.splice(i, 1), + ), + renderChipGroup( + _('IP Frag Bounds (--ip-frag)'), + bd.ipfrags, + (v) => bd.ipfrags.push(v), + (i) => bd.ipfrags.splice(i, 1), + ), + ], + ); + + const patternsFooter = E( + 'div', + { + style: + 'display: flex; justify-content: space-between; align-items: center; padding-top: 6px;', + }, + [ + renderButton({ + text: _('💾 Save Custom Patterns'), + classNames: ['cbi-button-save'], + onClick: async () => { + const res = + await TachyonShellMethods.saveFuzzerPatterns(patternsConfig); + if (res.success) { + showToast(_('Patterns saved successfully!'), 'success'); + } else { + showToast(_('Failed to save patterns'), 'error'); + } + }, + }), + renderButton({ + text: _('🔄 Reset to Factory Defaults'), + classNames: ['cbi-button-neutral'], + onClick: async () => { + const res = await TachyonShellMethods.resetFuzzerPatterns(); + if (res.success && res.data?.patterns) { + patternsConfig = res.data.patterns; + renderPatternsTab(); + showToast(_('Patterns reset to defaults!'), 'success'); + } + }, + }), + ], + ); + + tabContentPatterns.append(z2Card, z1Card, bdCard, patternsFooter); + }; + + // ═════════════════════════════════════════════════════════════════════════════ + // TAB 3: CUSTOM STRATEGIES + // ═════════════════════════════════════════════════════════════════════════════ + + const renderCustomTab = () => { + tabContentCustom.replaceChildren(); + + const nameInput = E('input', { + type: 'text', + class: 'cbi-input-text', + placeholder: _('Strategy Name'), + style: 'flex: 1;', + }); + const engineSel = E( + 'select', + { class: 'cbi-input-select', style: 'width: 140px;' }, + [ + E('option', { value: 'zapret2' }, 'Zapret v2'), + E('option', { value: 'zapret' }, 'Zapret v1'), + E('option', { value: 'byedpi' }, 'ByeDPI'), + ], + ); + const argsInput = E('input', { + type: 'text', + class: 'cbi-input-text', + placeholder: _('Command-line arguments string...'), + style: 'flex: 2; font-family: monospace;', + }); + + const addBtn = renderButton({ + text: _('+ Add Strategy'), + classNames: ['cbi-button-action'], + onClick: async () => { + const name = (nameInput as HTMLInputElement).value.trim(); + const eng = (engineSel as HTMLSelectElement) + .value as Tachyon.FuzzerEngine; + const args = (argsInput as HTMLInputElement).value.trim(); + if (!name || !args) { + showToast(_('Please specify strategy name and arguments'), 'error'); + return; + } + + patternsConfig.custom_strategies = + patternsConfig.custom_strategies || []; + patternsConfig.custom_strategies.push({ + id: `custom_${Date.now()}`, + name, + engine: eng as 'zapret2' | 'zapret' | 'byedpi', + args, + description: _('User custom strategy'), + }); + + await TachyonShellMethods.saveFuzzerPatterns(patternsConfig); + showToast(_('Custom strategy added!'), 'success'); + (nameInput as HTMLInputElement).value = ''; + (argsInput as HTMLInputElement).value = ''; + renderCustomTab(); + }, + }); + + const addCard = E( + 'div', + { + style: + 'padding: 12px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 8px;', + }, + [ + E( + 'div', + { style: 'font-size: 12px; font-weight: 600;' }, + _('Add Custom DPI Strategy'), + ), + E( + 'div', + { + style: + 'display: flex; gap: 8px; flex-wrap: wrap; align-items: center;', + }, + [nameInput, engineSel, argsInput, addBtn], + ), + ], + ); + + const customList = patternsConfig.custom_strategies || []; + const listCard = E( + 'div', + { + style: + 'border: 1px solid var(--border-color, rgba(255,255,255,0.1)); border-radius: 6px; overflow: hidden;', + }, + [ + E( + 'table', + { class: 'table', style: 'width: 100%; margin: 0; font-size: 12px;' }, + [ + E('thead', {}, [ + E('tr', {}, [ + E('th', { style: 'padding: 8px;' }, _('Name')), + E('th', { style: 'padding: 8px; width: 90px;' }, _('Engine')), + E('th', { style: 'padding: 8px;' }, _('Arguments')), + E( + 'th', + { + style: 'padding: 8px; width: 80px; text-align: center;', + }, + _('Actions'), + ), + ]), + ]), + E( + 'tbody', + {}, + customList.length === 0 + ? [ + E( + 'tr', + {}, + E( + 'td', + { + colSpan: 4, + style: + 'padding: 20px; text-align: center; opacity: 0.6;', + }, + _('No custom strategies added yet.'), + ), + ), + ] + : customList.map((cs, idx) => { + return E('tr', {}, [ + E( + 'td', + { style: 'padding: 8px; font-weight: 600;' }, + cs.name, + ), + E( + 'td', + { + style: + 'padding: 8px; font-family: monospace; font-size: 11px;', + }, + cs.engine, + ), + E( + 'td', + { + style: + 'padding: 8px; font-family: monospace; font-size: 11px; word-break: break-all;', + }, + cs.args, + ), + E( + 'td', + { + style: 'padding: 8px; text-align: center;', + }, + [ + (() => { + const delBtn = E( + 'button', + { + type: 'button', + class: 'cbi-button cbi-button-reset', + style: 'padding: 2px 8px; font-size: 11px;', + }, + _('Delete'), + ); + delBtn.addEventListener('click', async () => { + patternsConfig.custom_strategies.splice(idx, 1); + await TachyonShellMethods.saveFuzzerPatterns( + patternsConfig, + ); + showToast(_('Strategy deleted'), 'success'); + renderCustomTab(); + }); + return delBtn; + })(), + ], + ), + ]); + }), + ), + ], + ), + ], + ); + + tabContentCustom.append(addCard, listCard); + }; + + // ═════════════════════════════════════════════════════════════════════════════ + // TAB 4: AI DOCTOR RAG + // ═════════════════════════════════════════════════════════════════════════════ + + const aiPromptInput = E('input', { + type: 'text', + class: 'cbi-input-text', + placeholder: _( + 'Optional context (e.g. "Rostelecom, YouTube 4K buffering is slow")...', + ), + style: 'flex: 1; font-size: 12px;', + }); + + const aiSynthesizeBtn = renderButton({ + text: _('🧠 Synthesize with AI'), + classNames: ['cbi-button-action'], + onClick: () => handleAiSynthesize(), + }); + + const aiAnalysisContainer = E( + 'div', + { + id: 'tachyon-fuzzer-ai-analysis', + style: + 'display: none; padding: 12px; background: rgba(0, 123, 255, 0.08); border-left: 3px solid #007bff; border-radius: 4px; font-size: 12px; line-height: 1.4;', + }, + [ + E( + 'div', + { + style: + 'font-weight: bold; margin-bottom: 6px; display: flex; align-items: center; gap: 6px;', + }, + [ + E('span', {}, '🧠'), + E('span', {}, _('AI Diagnostics & Strategy Rationale')), + ], + ), + E( + 'div', + { id: 'tachyon-fuzzer-ai-analysis-text', style: 'opacity: 0.9;' }, + '', + ), + ], + ); + + const aiSynthesizerCard = E( + 'div', + { + style: + 'padding: 14px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 12px;', + }, + [ + E( + 'div', + { + style: + 'font-size: 13px; font-weight: bold; display: flex; align-items: center; justify-content: space-between;', + }, + [ + E('span', {}, '🧠 ' + _('AI DPI Engineer & Strategy Synthesizer')), + E( + 'span', + { style: 'font-size: 11px; opacity: 0.6; font-weight: normal;' }, + _('RAG Knowledge Base + Live ISP Probe Context'), + ), + ], + ), + E( + 'div', + { style: 'font-size: 12px; opacity: 0.8;' }, + _( + 'Automatically runs a diagnostic probe against the target service, queries the built-in DPI Knowledge Base, and synthesizes 3-5 custom bypass strategies tailored to your ISP.', + ), + ), + E('div', { style: 'display: flex; gap: 8px; align-items: center;' }, [ + aiPromptInput, + aiSynthesizeBtn, + ]), + aiAnalysisContainer, + ], + ); + + tabContentAi.append(aiSynthesizerCard); + + // ── Results Rendering ───────────────────────────────────────────────────── const renderResults = (state: Tachyon.FuzzerState) => { const tbody = document.getElementById('tachyon-fuzzer-results-tbody'); if (!tbody) return; + tbody.replaceChildren(); - if (!state.results || state.results.length === 0) { - if (state.running) { - tbody.innerHTML = `${_( - 'Running initial strategy probe...', - )}`; - } + let list = state.results || []; + if (resultFilter === 'success') { + list = list.filter((r) => r.success); + } else if (resultFilter === 'fast') { + list = list.filter((r) => r.success && r.speed_kbps > 1024); + } + + if (list.length === 0) { + tbody.appendChild( + E( + 'tr', + {}, + E( + 'td', + { + colSpan: 8, + style: 'padding: 24px; text-align: center; opacity: 0.6;', + }, + state.running + ? _('Running benchmarks...') + : _('No strategies match the active filter.'), + ), + ), + ); return; } - tbody.innerHTML = ''; - state.results.forEach((item, idx) => { + list.forEach((item, idx) => { const isBest = state.best_strategy && state.best_strategy.id === item.id; - const statusBadge = item.success - ? `${item.http_code || 200} OK` - : `${item.error || 'Blocked'}`; + + let statusBadge = `${item.success ? `HTTP ${item.http_code}` : 'DROP'}`; + + // If suite sub-probes exist, render multi-endpoint summary + let subProbesHtml = ''; + if (item.sub_probes && item.sub_probes.length > 1) { + const passedSub = item.sub_probes.filter((p) => p.success).length; + const totalSub = item.sub_probes.length; + subProbesHtml = `
${passedSub}/${totalSub} endpoints OK
`; + } let badgeHtml = ''; if (item.badge) { - badgeHtml = `${item.badge}`; + badgeHtml = `${item.badge}`; } const tr = E( 'tr', { style: `border-bottom: 1px solid var(--border-color, rgba(255,255,255,0.06)); ${ - isBest - ? 'background: rgba(40, 167, 69, 0.12); font-weight: 500;' - : '' + isBest ? 'background: rgba(40, 167, 69, 0.08);' : '' }`, }, [ @@ -530,7 +1126,11 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { item.args, ), ]), - E('td', { style: 'padding: 8px 10px;', innerHTML: statusBadge }), + E( + 'td', + { style: 'padding: 8px 10px;' }, + E('div', { innerHTML: statusBadge + subProbesHtml }), + ), E( 'td', { style: 'padding: 8px 10px;' }, @@ -546,14 +1146,22 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { { style: 'padding: 8px 10px; font-weight: bold;' }, item.success ? String(item.score) : '0', ), - E('td', { style: 'padding: 8px 10px; text-align: center;' }, [ - renderButton({ - text: _('Apply'), - classNames: ['cbi-button-action'], - disabled: !item.success, - onClick: () => handleApplySingle(item), - }), - ]), + E( + 'td', + { style: 'padding: 8px 10px; text-align: center;' }, + E( + 'div', + { style: 'display: flex; gap: 4px; justify-content: center;' }, + [ + renderButton({ + text: _('Apply'), + classNames: ['cbi-button-action'], + disabled: !item.success, + onClick: () => handleApplySingle(item), + }), + ], + ), + ), ], ); @@ -568,6 +1176,9 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { const currentStratEl = document.getElementById( 'tachyon-fuzzer-current-strategy', ); + const applyBestBtn = document.getElementById( + 'tachyon-fuzzer-apply-best-btn', + ); if (progressContainer) { progressContainer.style.display = @@ -615,7 +1226,7 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { if (!isRunning) { stopPolling(); - startBtn.innerText = _('🚀 Run Benchmark Again'); + startBtn.innerText = _('🚀 Start Benchmark'); (startBtn as HTMLButtonElement).disabled = false; } } @@ -704,7 +1315,10 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { analysisBox.style.display = 'block'; } - // Start live fuzzer benchmark immediately on the synthesized strategies + // Switch to benchmark tab and start running + activeTab = 'benchmark'; + updateTabVisibility(); + (startBtn as HTMLButtonElement).disabled = true; startBtn.innerText = _('🛑 Stop Benchmark'); @@ -752,14 +1366,50 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) { await handleApplySingle(currentState.best_strategy); }; + // Initial Data Fetch: available engines & custom patterns + TachyonShellMethods.getFuzzerStrategies() + .then((res) => { + if (res.success && res.data?.available_engines) { + const av = res.data.available_engines; + const opts = (engineSelect as HTMLSelectElement).options; + for (let i = 0; i < opts.length; i++) { + const opt = opts[i]; + if (opt.value === 'zapret2') { + opt.text = av.zapret2 + ? _('Zapret v2 (nfqws2)') + ' — ' + _('Installed') + : _('Zapret v2 (nfqws2)') + ' — ' + _('Not installed'); + if (!av.zapret2) opt.disabled = true; + } else if (opt.value === 'zapret') { + opt.text = av.zapret + ? _('Zapret v1 (nfqws)') + ' — ' + _('Installed') + : _('Zapret v1 (nfqws)') + ' — ' + _('Not installed'); + if (!av.zapret) opt.disabled = true; + } else if (opt.value === 'byedpi') { + opt.text = av.byedpi + ? _('ByeDPI (ciadpi)') + ' — ' + _('Installed') + : _('ByeDPI (ciadpi)') + ' — ' + _('Not installed'); + if (!av.byedpi) opt.disabled = true; + } + } + } + }) + .catch(() => {}); + + TachyonShellMethods.getFuzzerPatterns() + .then((res) => { + if (res.success && res.data?.patterns) { + patternsConfig = res.data.patterns; + } + }) + .catch(() => {}); + // Build Modal Tree modalContainer.append( - headerEl, - controlsGrid, - aiSynthesizerCard, - progressContainer, - resultsContainer, - footerActions, + tabBar, + tabContentBenchmark, + tabContentPatterns, + tabContentCustom, + tabContentAi, ); // Check initial state diff --git a/fe-app-tachyon/src/tachyon/types.ts b/fe-app-tachyon/src/tachyon/types.ts index 83fc624d..5abf7ae6 100644 --- a/fe-app-tachyon/src/tachyon/types.ts +++ b/fe-app-tachyon/src/tachyon/types.ts @@ -104,6 +104,9 @@ export namespace Tachyon { FUZZER_APPLY = 'fuzzer_apply', FUZZER_STRATEGIES = 'fuzzer_strategies', FUZZER_AI_SYNTHESIZE = 'fuzzer_ai_synthesize', + FUZZER_GET_PATTERNS = 'fuzzer_get_patterns', + FUZZER_SAVE_PATTERNS = 'fuzzer_save_patterns', + FUZZER_RESET_PATTERNS = 'fuzzer_reset_patterns', } export enum AvailableClashAPIMethods { @@ -831,15 +834,21 @@ export namespace Tachyon { export type FuzzerEngine = 'zapret2' | 'zapret' | 'byedpi' | 'all'; export type FuzzerTarget = + | 'youtube_suite' | 'youtube' | 'youtube_web' + | 'discord_suite' | 'discord' + | 'instagram_suite' | 'instagram' + | 'rutracker_suite' | 'rutracker' + | 'telegram_suite' | 'telegram' + | 'quic_http3' | 'custom'; - export type FuzzerMode = 'presets' | 'combinatorial'; + export type FuzzerMode = 'presets' | 'combinatorial' | 'custom'; export interface FuzzerStrategyItem { id: string; @@ -851,6 +860,17 @@ export namespace Tachyon { export type FuzzerStrategyDefinition = FuzzerStrategyItem; + export interface FuzzerSubProbeResult { + target_name?: string; + url?: string; + http_code: number; + handshake_ms: number; + ttfb_ms: number; + speed_kbps: number; + success: boolean; + error?: string; + } + export interface FuzzerStrategyResult { id: string; name: string; @@ -865,6 +885,7 @@ export namespace Tachyon { score: number; error?: string; badge?: string; + sub_probes?: FuzzerSubProbeResult[]; } export interface FuzzerState { @@ -911,4 +932,50 @@ export namespace Tachyon { strategies?: FuzzerStrategyItem[]; error?: string; } + + export interface FuzzerCustomStrategy { + id?: string; + name: string; + engine: 'zapret2' | 'zapret' | 'byedpi'; + args: string; + description?: string; + } + + export interface FuzzerPatternsConfig { + zapret2: { + splits: string[]; + foolings: string[]; + ttls: number[]; + seqovls: string[]; + wsizes: string[]; + payloads: string[]; + }; + zapret: { + splits: string[]; + foolings: string[]; + ttls: number[]; + split_modes: string[]; + }; + byedpi: { + splits: string[]; + disorders: string[]; + ttls: number[]; + oobs: string[]; + autos: string[]; + tlsrecs: string[]; + ipfrags: string[]; + }; + custom_strategies: FuzzerCustomStrategy[]; + } + + export interface FuzzerTargetSuiteItem { + name: string; + url: string; + weight: number; + } + + export interface FuzzerTargetSuite { + name: string; + urls: FuzzerTargetSuiteItem[]; + } } diff --git a/luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js b/luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js index 36aa43c8..f90fbe91 100644 --- a/luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js +++ b/luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js @@ -3120,6 +3120,9 @@ var Tachyon; AvailableMethods2["FUZZER_APPLY"] = "fuzzer_apply"; AvailableMethods2["FUZZER_STRATEGIES"] = "fuzzer_strategies"; AvailableMethods2["FUZZER_AI_SYNTHESIZE"] = "fuzzer_ai_synthesize"; + AvailableMethods2["FUZZER_GET_PATTERNS"] = "fuzzer_get_patterns"; + AvailableMethods2["FUZZER_SAVE_PATTERNS"] = "fuzzer_save_patterns"; + AvailableMethods2["FUZZER_RESET_PATTERNS"] = "fuzzer_reset_patterns"; })(AvailableMethods = Tachyon2.AvailableMethods || (Tachyon2.AvailableMethods = {})); let AvailableClashAPIMethods; ((AvailableClashAPIMethods2) => { @@ -4082,6 +4085,81 @@ var TachyonShellMethods = { success: false, error: parsed?.error || response.stderr || _("Failed to synthesize AI strategies") }; + }, + getFuzzerPatterns: async () => { + const response = await executeShellCommand({ + command: "/usr/bin/tachyon", + args: [Tachyon.AvailableMethods.FUZZER_GET_PATTERNS], + timeout: 8e3 + }); + let parsed = null; + try { + parsed = JSON.parse(response.stdout?.trim() || "{}"); + } catch { + parsed = null; + } + if ((response.code ?? 1) === 0 && parsed && parsed.success) { + return { + success: true, + data: parsed + }; + } + return { + success: false, + error: response.stderr || _("Failed to get fuzzer patterns") + }; + }, + saveFuzzerPatterns: async (patterns) => { + const response = await executeShellCommand({ + command: "/usr/bin/tachyon", + args: [ + Tachyon.AvailableMethods.FUZZER_SAVE_PATTERNS, + JSON.stringify(patterns) + ], + timeout: 1e4 + }); + let parsed = null; + try { + parsed = JSON.parse(response.stdout?.trim() || "{}"); + } catch { + parsed = null; + } + if ((response.code ?? 1) === 0 && parsed && parsed.success) { + return { + success: true, + data: { message: parsed.message || _("Patterns saved successfully") } + }; + } + return { + success: false, + error: parsed?.error || response.stderr || _("Failed to save fuzzer patterns") + }; + }, + resetFuzzerPatterns: async () => { + const response = await executeShellCommand({ + command: "/usr/bin/tachyon", + args: [Tachyon.AvailableMethods.FUZZER_RESET_PATTERNS], + timeout: 8e3 + }); + let parsed = null; + try { + parsed = JSON.parse(response.stdout?.trim() || "{}"); + } catch { + parsed = null; + } + if ((response.code ?? 1) === 0 && parsed && parsed.success) { + return { + success: true, + data: { + message: parsed.message || _("Patterns reset to factory defaults"), + patterns: parsed.patterns + } + }; + } + return { + success: false, + error: parsed?.error || response.stderr || _("Failed to reset fuzzer patterns") + }; } }; @@ -11744,55 +11822,106 @@ function renderAiChatModal() { function renderStrategyFuzzerModal(ruleNames = []) { let pollingInterval = null; let isPolling = false; + let activeTab2 = "benchmark"; let selectedEngine = "zapret2"; - let selectedTarget = "youtube"; + let selectedTarget = "youtube_suite"; let customUrl = ""; let selectedRuleSection = ""; + let selectedMode = "presets"; let isRunning = false; let currentState = null; + let resultFilter = "all"; + let patternsConfig = { + zapret2: { + splits: ["1", "2", "3", "midsld", "sniext+4", "1,midsld", "1,sniext+2"], + foolings: ["badseq", "md5sig", "badack", "datanoack", "fakeddrop"], + ttls: [2, 3, 4, 5, 6, 8], + seqovls: ["1", "2"], + wsizes: ["1"], + payloads: ["tls_client_hello", "http_req", "quic_initial"] + }, + zapret: { + splits: ["1", "2", "midsld", "sniext+4", "1,midsld"], + foolings: ["badseq", "md5sig", "badack", "datanoack"], + ttls: [2, 3, 4, 6, 8], + split_modes: ["split2", "disorder2", "fake,split2", "fake,disorder2"] + }, + byedpi: { + splits: ["1", "2", "1+sniext", "midsld"], + disorders: ["1", "2"], + ttls: [2, 3, 4, 6, 8], + oobs: ["1", "2"], + autos: ["t,r,a,s", "r,s", "t,a"], + tlsrecs: ["1+sniext"], + ipfrags: ["24"] + }, + custom_strategies: [] + }; const modalContainer = E("div", { class: "tachyon_fuzzer_modal", - style: "display: flex; flex-direction: column; gap: 16px; width: 100%; max-width: 860px; box-sizing: border-box;" + style: "display: flex; flex-direction: column; gap: 14px; width: 100%; max-width: 920px; box-sizing: border-box;" }); - const headerEl = E( + const tabButtons = {}; + const createTabButton = (id, icon, label) => { + const btn = E( + "button", + { + type: "button", + class: `cbi-button ${activeTab2 === id ? "cbi-button-action" : "cbi-button-neutral"}`, + style: "display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; font-size: 12px; font-weight: 500; border-radius: 6px; cursor: pointer;" + }, + [E("span", {}, icon), E("span", {}, label)] + ); + btn.addEventListener("click", () => { + activeTab2 = id; + updateTabVisibility(); + }); + tabButtons[id] = btn; + return btn; + }; + const tabBar = E( "div", { - style: "padding: 12px 16px; background: var(--background-color-secondary, rgba(0,0,0,0.25)); border: 1px solid var(--border-color, rgba(255,255,255,0.12)); border-radius: 8px;" + style: "display: flex; gap: 8px; border-bottom: 1px solid var(--border-color, rgba(255,255,255,0.12)); padding-bottom: 10px; flex-wrap: wrap;" }, [ - E( - "div", - { - style: "font-size: 15px; font-weight: bold; margin-bottom: 4px; display: flex; align-items: center; gap: 8px;" - }, - [ - E("span", {}, "\u26A1"), - E("span", {}, _("Automated DPI Strategy Fuzzer & Auto-Tuner")) - ] - ), - E( - "div", - { - style: "font-size: 12px; opacity: 0.75; line-height: 1.4;" - }, - _( - "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput." - ) - ) + createTabButton("benchmark", "\u26A1", _("Benchmark & Test")), + createTabButton("patterns", "\u{1F6E0}\uFE0F", _("Pattern Builder")), + createTabButton("custom", "\u2795", _("My Strategies")), + createTabButton("ai", "\u{1F9E0}", _("AI Doctor RAG")) ] ); + const tabContentBenchmark = E("div", { + style: "display: flex; flex-direction: column; gap: 14px;" + }); + const tabContentPatterns = E("div", { + style: "display: none; flex-direction: column; gap: 14px;" + }); + const tabContentCustom = E("div", { + style: "display: none; flex-direction: column; gap: 14px;" + }); + const tabContentAi = E("div", { + style: "display: none; flex-direction: column; gap: 14px;" + }); + const updateTabVisibility = () => { + for (const key in tabButtons) { + tabButtons[key].className = `cbi-button ${activeTab2 === key ? "cbi-button-action" : "cbi-button-neutral"}`; + } + tabContentBenchmark.style.display = activeTab2 === "benchmark" ? "flex" : "none"; + tabContentPatterns.style.display = activeTab2 === "patterns" ? "flex" : "none"; + tabContentCustom.style.display = activeTab2 === "custom" ? "flex" : "none"; + tabContentAi.style.display = activeTab2 === "ai" ? "flex" : "none"; + if (activeTab2 === "patterns") renderPatternsTab(); + if (activeTab2 === "custom") renderCustomTab(); + }; const controlsGrid = E("div", { - style: "display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; align-items: end;" + style: "display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; align-items: end;" }); const engineSelect = E( "select", { class: "cbi-input-select", style: "width: 100%;" }, [ - E( - "option", - { value: "zapret2", selected: true }, - _("Zapret v2 (nfqws2)") - ), + E("option", { value: "zapret2" }, _("Zapret v2 (nfqws2)")), E("option", { value: "zapret" }, _("Zapret v1 (nfqws)")), E("option", { value: "byedpi" }, _("ByeDPI (ciadpi)")), E("option", { value: "all" }, _("All Engines (Full Matrix)")) @@ -11807,57 +11936,39 @@ function renderStrategyFuzzerModal(ruleNames = []) { [ E( "label", - { style: "font-size: 12px; font-weight: 600;" }, + { style: "font-size: 11px; font-weight: 600; opacity: 0.85;" }, _("DPI Engine") ), engineSelect ] ); - TachyonShellMethods.getFuzzerStrategies().then((res) => { - if (res.success && res.data?.available_engines) { - const av = res.data.available_engines; - const opts = engineSelect.options; - for (let i = 0; i < opts.length; i++) { - const opt = opts[i]; - if (opt.value === "zapret2") { - opt.text = av.zapret2 ? _("Zapret v2 (nfqws2)") + " \u2014 " + _("Installed") : _("Zapret v2 (nfqws2)") + " \u2014 " + _("Not installed"); - if (!av.zapret2) opt.disabled = true; - } else if (opt.value === "zapret") { - opt.text = av.zapret ? _("Zapret v1 (nfqws)") + " \u2014 " + _("Installed") : _("Zapret v1 (nfqws)") + " \u2014 " + _("Not installed"); - if (!av.zapret) opt.disabled = true; - } else if (opt.value === "byedpi") { - opt.text = av.byedpi ? _("ByeDPI (ciadpi)") + " \u2014 " + _("Installed") : _("ByeDPI (ciadpi)") + " \u2014 " + _("Not installed"); - if (!av.byedpi) opt.disabled = true; - } - } - if (av.zapret2) { - selectedEngine = "zapret2"; - engineSelect.value = "zapret2"; - } else if (av.byedpi) { - selectedEngine = "byedpi"; - engineSelect.value = "byedpi"; - } else if (av.zapret) { - selectedEngine = "zapret"; - engineSelect.value = "zapret"; - } - } - }).catch(() => { - }); const targetSelect = E( "select", { class: "cbi-input-select", style: "width: 100%;" }, [ E( "option", - { value: "youtube", selected: true }, - _("YouTube (GoogleVideo 4K stream)") + { value: "youtube_suite", selected: true }, + _("\u{1F3AC} YouTube Suite (Web + 4K Stream)") ), - E("option", { value: "youtube_web" }, _("YouTube Web (Interface)")), - E("option", { value: "discord" }, _("Discord (Gateway / API / Voice)")), - E("option", { value: "instagram" }, _("Instagram / Meta (TLS 1.3)")), - E("option", { value: "rutracker" }, _("RuTracker (HTTP/HTTPS)")), - E("option", { value: "telegram" }, _("Telegram Web")), - E("option", { value: "custom" }, _("Custom Target URL...")) + E( + "option", + { value: "discord_suite" }, + _("\u{1F4AC} Discord Suite (API + WSS + CDN)") + ), + E( + "option", + { value: "instagram_suite" }, + _("\u{1F4F8} Instagram / Meta (Web + CDN)") + ), + E( + "option", + { value: "telegram_suite" }, + _("\u2708\uFE0F Telegram Suite (Web + Bot API)") + ), + E("option", { value: "rutracker_suite" }, _("\u{1F3F4}\u200D\u2620\uFE0F RuTracker Suite")), + E("option", { value: "quic_http3" }, _("\u26A1 QUIC / HTTP/3 (UDP 443)")), + E("option", { value: "custom" }, _("\u{1F310} Custom Target URL...")) ] ); const customUrlInput = E("input", { @@ -11868,11 +11979,7 @@ function renderStrategyFuzzerModal(ruleNames = []) { }); targetSelect.addEventListener("change", () => { selectedTarget = targetSelect.value; - if (selectedTarget === "custom") { - customUrlInput.style.display = "block"; - } else { - customUrlInput.style.display = "none"; - } + customUrlInput.style.display = selectedTarget === "custom" ? "block" : "none"; }); customUrlInput.addEventListener("input", () => { customUrl = customUrlInput.value.trim(); @@ -11883,38 +11990,13 @@ function renderStrategyFuzzerModal(ruleNames = []) { [ E( "label", - { style: "font-size: 12px; font-weight: 600;" }, - _("Target Service") + { style: "font-size: 11px; font-weight: 600; opacity: 0.85;" }, + _("Target Service / Suite") ), targetSelect, customUrlInput ] ); - const ruleSelectOptions = [ - E("option", { value: "", selected: true }, _("Provider Global Default")), - ...ruleNames.map((r) => E("option", { value: r }, `${_("Rule:")} ${r}`)) - ]; - const ruleSelect = E( - "select", - { class: "cbi-input-select", style: "width: 100%;" }, - ruleSelectOptions - ); - ruleSelect.addEventListener("change", () => { - selectedRuleSection = ruleSelect.value; - }); - const ruleGroup = E( - "div", - { style: "display: flex; flex-direction: column; gap: 4px;" }, - [ - E( - "label", - { style: "font-size: 12px; font-weight: 600;" }, - _("Apply Strategy To") - ), - ruleSelect - ] - ); - let selectedMode = "presets"; const modeSelect = E( "select", { class: "cbi-input-select", style: "width: 100%;" }, @@ -11927,8 +12009,9 @@ function renderStrategyFuzzerModal(ruleNames = []) { E( "option", { value: "combinatorial" }, - _("\u{1F50D} Combinatorial Deep Fuzzing (~40-60)") - ) + _("\u{1F50D} Combinatorial Deep Fuzzing (~40-80+)") + ), + E("option", { value: "custom" }, _("\u{1F6E0}\uFE0F My Custom Strategies Only")) ] ); modeSelect.addEventListener("change", () => { @@ -11940,85 +12023,40 @@ function renderStrategyFuzzerModal(ruleNames = []) { [ E( "label", - { style: "font-size: 12px; font-weight: 600;" }, + { style: "font-size: 11px; font-weight: 600; opacity: 0.85;" }, _("Search Mode") ), modeSelect ] ); - controlsGrid.append(engineGroup, targetGroup, ruleGroup, modeGroup); - const aiPromptInput = E("input", { - type: "text", - class: "cbi-input-text", - placeholder: _( - 'Optional notes for AI (e.g. "Rostelecom, YouTube 4K stream is slow")...' - ), - style: "flex: 1 1 auto; font-size: 12px;" - }); - const aiSynthesizeBtn = renderButton({ - text: _("\u{1F9E0} Synthesize with AI"), - classNames: ["cbi-button-action"], - onClick: () => handleAiSynthesize() - }); - const aiAnalysisContainer = E( - "div", - { - id: "tachyon-fuzzer-ai-analysis", - style: "display: none; padding: 10px 14px; background: rgba(0, 123, 255, 0.08); border-left: 3px solid #007bff; border-radius: 4px; font-size: 12px; line-height: 1.4;" - }, + const ruleSelect = E( + "select", + { class: "cbi-input-select", style: "width: 100%;" }, [ - E( - "div", - { - style: "font-weight: bold; margin-bottom: 4px; display: flex; align-items: center; gap: 6px;" - }, - [ - E("span", {}, "\u{1F9E0}"), - E("span", {}, _("AI Diagnostics & Strategy Rationale")) - ] - ), - E( - "div", - { id: "tachyon-fuzzer-ai-analysis-text", style: "opacity: 0.85;" }, - "" - ) + E("option", { value: "", selected: true }, _("Provider Global Default")), + ...ruleNames.map((r) => E("option", { value: r }, `${_("Rule:")} ${r}`)) ] ); - const aiSynthesizerCard = E( + ruleSelect.addEventListener("change", () => { + selectedRuleSection = ruleSelect.value; + }); + const ruleGroup = E( "div", - { - style: "padding: 10px 14px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border: 1px dashed var(--border-color, rgba(255,255,255,0.15)); border-radius: 8px; display: flex; flex-direction: column; gap: 8px;" - }, + { style: "display: flex; flex-direction: column; gap: 4px;" }, [ E( - "div", - { - style: "font-size: 12px; font-weight: 600; display: flex; align-items: center; justify-content: space-between;" - }, - [ - E( - "span", - {}, - "\u{1F9E0} " + _("AI DPI Engineer & Strategy Synthesizer (RAG-Powered)") - ), - E( - "span", - { style: "font-size: 10px; opacity: 0.6; font-weight: normal;" }, - _("Knowledge Base + Live Probe Context") - ) - ] + "label", + { style: "font-size: 11px; font-weight: 600; opacity: 0.85;" }, + _("Apply Strategy To") ), - E("div", { style: "display: flex; gap: 8px; align-items: center;" }, [ - aiPromptInput, - aiSynthesizeBtn - ]), - aiAnalysisContainer + ruleSelect ] ); + controlsGrid.append(engineGroup, targetGroup, modeGroup, ruleGroup); const progressContainer = E( "div", { - style: "display: none; flex-direction: column; gap: 6px; padding: 12px; background: var(--background-color-secondary, rgba(0,0,0,0.18)); border-radius: 8px; border: 1px solid var(--border-color, rgba(255,255,255,0.1));" + style: "display: none; flex-direction: column; gap: 6px; padding: 10px 14px; background: var(--background-color-secondary, rgba(0,0,0,0.18)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.08));" }, [ E( @@ -12038,12 +12076,12 @@ function renderStrategyFuzzerModal(ruleNames = []) { E( "div", { - style: "width: 100%; height: 8px; background: rgba(255,255,255,0.1); border-radius: 4px; overflow: hidden;" + style: "width: 100%; height: 6px; background: rgba(255,255,255,0.1); border-radius: 3px; overflow: hidden;" }, [ E("div", { id: "tachyon-fuzzer-progress-bar", - style: "height: 100%; width: 0%; background: linear-gradient(90deg, #007bff, #00d2ff); transition: width 0.3s ease;" + style: "height: 100%; width: 0%; background: #007bff; transition: width 0.3s ease;" }) ] ), @@ -12051,14 +12089,81 @@ function renderStrategyFuzzerModal(ruleNames = []) { "div", { id: "tachyon-fuzzer-current-strategy", - style: "font-size: 11px; opacity: 0.7; font-family: monospace;" + style: "font-size: 11px; opacity: 0.75; font-family: monospace;" }, "" ) ] ); + const applyBestBtn = renderButton({ + text: _("\u{1F3C6} Apply Best Match"), + classNames: ["cbi-button-save"], + disabled: true, + onClick: () => handleApplyBest() + }); + const filterToolbar = E( + "div", + { + style: "display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px;" + }, + [ + E("div", { style: "display: flex; gap: 6px; align-items: center;" }, [ + E( + "span", + { style: "font-size: 11px; opacity: 0.7; margin-right: 4px;" }, + _("Filter:") + ), + (() => { + const bAll = E( + "button", + { + type: "button", + class: "cbi-button cbi-button-action", + style: "padding: 2px 10px; font-size: 11px;" + }, + _("All") + ); + const bOk = E( + "button", + { + type: "button", + class: "cbi-button cbi-button-neutral", + style: "padding: 2px 10px; font-size: 11px;" + }, + _("\u2705 Working only") + ); + const bFast = E( + "button", + { + type: "button", + class: "cbi-button cbi-button-neutral", + style: "padding: 2px 10px; font-size: 11px;" + }, + _("\u26A1 Fast (>1MB/s)") + ); + const setFilter = (f, btn) => { + resultFilter = f; + [bAll, bOk, bFast].forEach( + (b) => b.className = "cbi-button cbi-button-neutral" + ); + btn.className = "cbi-button cbi-button-action"; + if (currentState) renderResults(currentState); + }; + bAll.addEventListener("click", () => setFilter("all", bAll)); + bOk.addEventListener("click", () => setFilter("success", bOk)); + bFast.addEventListener("click", () => setFilter("fast", bFast)); + return E("div", { style: "display: flex; gap: 4px;" }, [ + bAll, + bOk, + bFast + ]); + })() + ]), + E("div", { style: "display: flex; gap: 8px;" }, [applyBestBtn]) + ] + ); const resultsContainer = E("div", { - style: "max-height: 380px; overflow-y: auto; border: 1px solid var(--border-color, rgba(255,255,255,0.12)); border-radius: 8px;" + style: "max-height: 380px; overflow-y: auto; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); border-radius: 6px;" }); const tableEl = E( "table", @@ -12070,25 +12175,29 @@ function renderStrategyFuzzerModal(ruleNames = []) { E( "thead", { - style: "background: var(--background-color-secondary, rgba(0,0,0,0.3)); position: sticky; top: 0; z-index: 2;" + style: "background: var(--background-color-secondary, rgba(0,0,0,0.25)); position: sticky; top: 0; z-index: 2;" }, [ E("tr", {}, [ - E("th", { style: "padding: 8px 10px; width: 40px;" }, "#"), - E("th", { style: "padding: 8px 10px; width: 80px;" }, _("Engine")), + E("th", { style: "padding: 8px 10px; width: 35px;" }, "#"), + E("th", { style: "padding: 8px 10px; width: 75px;" }, _("Engine")), E( "th", { style: "padding: 8px 10px;" }, _("Strategy & Parameters") ), - E("th", { style: "padding: 8px 10px; width: 70px;" }, _("Status")), - E("th", { style: "padding: 8px 10px; width: 65px;" }, _("TTFB")), - E("th", { style: "padding: 8px 10px; width: 75px;" }, _("Speed")), - E("th", { style: "padding: 8px 10px; width: 90px;" }, _("Score")), E( "th", - { style: "padding: 8px 10px; width: 80px; text-align: center;" }, - _("Action") + { style: "padding: 8px 10px; width: 95px;" }, + _("Status / Suite") + ), + E("th", { style: "padding: 8px 10px; width: 65px;" }, _("TTFB")), + E("th", { style: "padding: 8px 10px; width: 75px;" }, _("Speed")), + E("th", { style: "padding: 8px 10px; width: 80px;" }, _("Score")), + E( + "th", + { style: "padding: 8px 10px; width: 85px; text-align: center;" }, + _("Actions") ) ]) ] @@ -12104,7 +12213,7 @@ function renderStrategyFuzzerModal(ruleNames = []) { style: "padding: 24px; text-align: center; opacity: 0.6;" }, _( - 'No benchmark results yet. Select engine and click "Start Benchmark" or "Synthesize with AI".' + 'No benchmark results yet. Configure options and click "Start Benchmark".' ) ) ) @@ -12117,53 +12226,544 @@ function renderStrategyFuzzerModal(ruleNames = []) { classNames: ["cbi-button-action"], onClick: () => handleToggleRun() }); - const applyBestBtn = renderButton({ - text: _("\u{1F3C6} Apply Best Strategy"), - classNames: ["cbi-button-save"], - disabled: true, - onClick: () => handleApplyBest() - }); - const closeBtn = renderButton({ - text: _("Close"), - classNames: ["cbi-button-neutral"], - onClick: () => { - stopPolling(); - ui.hideModal(); - } - }); const footerActions = E( "div", { - style: "display: flex; justify-content: space-between; align-items: center; padding-top: 8px; border-top: 1px solid var(--border-color, rgba(255,255,255,0.1));" + style: "display: flex; justify-content: space-between; align-items: center; padding-top: 6px;" }, [ - E("div", { style: "display: flex; gap: 8px;" }, [startBtn]), - E("div", { style: "display: flex; gap: 8px;" }, [applyBestBtn, closeBtn]) + startBtn, + renderButton({ + text: _("Close"), + classNames: ["cbi-button-neutral"], + onClick: () => { + stopPolling(); + ui.hideModal(); + } + }) ] ); + tabContentBenchmark.append( + controlsGrid, + progressContainer, + filterToolbar, + resultsContainer, + footerActions + ); + const renderChipGroup = (title, items, onAdd, onRemove) => { + const input = E("input", { + type: "text", + class: "cbi-input-text", + placeholder: "+ add", + style: "width: 80px; padding: 2px 6px; font-size: 11px;" + }); + input.addEventListener("keydown", (e) => { + if (e.key === "Enter") { + const v = input.value.trim(); + if (v) { + onAdd(v); + input.value = ""; + renderPatternsTab(); + } + } + }); + const chips = items.map((item, idx) => { + const chip = E( + "span", + { + style: "display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; background: var(--background-color-secondary, rgba(255,255,255,0.08)); border: 1px solid var(--border-color, rgba(255,255,255,0.12)); border-radius: 4px; font-size: 11px; font-family: monospace;" + }, + [ + E("span", {}, String(item)), + (() => { + const del = E( + "span", + { + style: "cursor: pointer; opacity: 0.6; font-size: 12px; margin-left: 2px;" + }, + "\xD7" + ); + del.addEventListener("click", () => { + onRemove(idx); + renderPatternsTab(); + }); + return del; + })() + ] + ); + return chip; + }); + return E( + "div", + { style: "display: flex; flex-direction: column; gap: 4px;" }, + [ + E( + "span", + { style: "font-size: 11px; font-weight: 600; opacity: 0.8;" }, + title + ), + E( + "div", + { + style: "display: flex; flex-wrap: wrap; gap: 6px; align-items: center;" + }, + [...chips, input] + ) + ] + ); + }; + const renderPatternsTab = () => { + tabContentPatterns.replaceChildren(); + const z2 = patternsConfig.zapret2; + const z1 = patternsConfig.zapret; + const bd = patternsConfig.byedpi; + const z2Card = E( + "div", + { + style: "padding: 12px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 10px;" + }, + [ + E( + "div", + { style: "font-size: 13px; font-weight: bold;" }, + "\u26A1 Zapret v2 (nfqws2) Matrix Patterns" + ), + renderChipGroup( + _("Split Positions (pos)"), + z2.splits, + (v) => z2.splits.push(v), + (i) => z2.splits.splice(i, 1) + ), + renderChipGroup( + _("Fooling Methods (fooling)"), + z2.foolings, + (v) => z2.foolings.push(v), + (i) => z2.foolings.splice(i, 1) + ), + renderChipGroup( + _("TTL Values (ttl)"), + z2.ttls, + (v) => z2.ttls.push(Number(v) || 4), + (i) => z2.ttls.splice(i, 1) + ), + renderChipGroup( + _("Sequence Overlaps (seqovl)"), + z2.seqovls, + (v) => z2.seqovls.push(v), + (i) => z2.seqovls.splice(i, 1) + ), + renderChipGroup( + _("TCP Window Sizes (wsize)"), + z2.wsizes, + (v) => z2.wsizes.push(v), + (i) => z2.wsizes.splice(i, 1) + ) + ] + ); + const z1Card = E( + "div", + { + style: "padding: 12px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 10px;" + }, + [ + E( + "div", + { style: "font-size: 13px; font-weight: bold;" }, + "\u26A1 Zapret v1 (nfqws) Matrix Patterns" + ), + renderChipGroup( + _("Split Modes (dpi-desync)"), + z1.split_modes, + (v) => z1.split_modes.push(v), + (i) => z1.split_modes.splice(i, 1) + ), + renderChipGroup( + _("Split Positions (dpi-desync-split-pos)"), + z1.splits, + (v) => z1.splits.push(v), + (i) => z1.splits.splice(i, 1) + ), + renderChipGroup( + _("Fooling Methods (dpi-desync-fooling)"), + z1.foolings, + (v) => z1.foolings.push(v), + (i) => z1.foolings.splice(i, 1) + ), + renderChipGroup( + _("TTL Values (dpi-desync-ttl)"), + z1.ttls, + (v) => z1.ttls.push(Number(v) || 4), + (i) => z1.ttls.splice(i, 1) + ) + ] + ); + const bdCard = E( + "div", + { + style: "padding: 12px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 10px;" + }, + [ + E( + "div", + { style: "font-size: 13px; font-weight: bold;" }, + "\u26A1 ByeDPI (ciadpi) Matrix Patterns" + ), + renderChipGroup( + _("Split Values (-s)"), + bd.splits, + (v) => bd.splits.push(v), + (i) => bd.splits.splice(i, 1) + ), + renderChipGroup( + _("Disorder Values (-d)"), + bd.disorders, + (v) => bd.disorders.push(v), + (i) => bd.disorders.splice(i, 1) + ), + renderChipGroup( + _("OOB Values (-o)"), + bd.oobs, + (v) => bd.oobs.push(v), + (i) => bd.oobs.splice(i, 1) + ), + renderChipGroup( + _("Auto Modes (--auto)"), + bd.autos, + (v) => bd.autos.push(v), + (i) => bd.autos.splice(i, 1) + ), + renderChipGroup( + _("TLS-Rec Bounds (--tlsrec)"), + bd.tlsrecs, + (v) => bd.tlsrecs.push(v), + (i) => bd.tlsrecs.splice(i, 1) + ), + renderChipGroup( + _("IP Frag Bounds (--ip-frag)"), + bd.ipfrags, + (v) => bd.ipfrags.push(v), + (i) => bd.ipfrags.splice(i, 1) + ) + ] + ); + const patternsFooter = E( + "div", + { + style: "display: flex; justify-content: space-between; align-items: center; padding-top: 6px;" + }, + [ + renderButton({ + text: _("\u{1F4BE} Save Custom Patterns"), + classNames: ["cbi-button-save"], + onClick: async () => { + const res = await TachyonShellMethods.saveFuzzerPatterns(patternsConfig); + if (res.success) { + showToast(_("Patterns saved successfully!"), "success"); + } else { + showToast(_("Failed to save patterns"), "error"); + } + } + }), + renderButton({ + text: _("\u{1F504} Reset to Factory Defaults"), + classNames: ["cbi-button-neutral"], + onClick: async () => { + const res = await TachyonShellMethods.resetFuzzerPatterns(); + if (res.success && res.data?.patterns) { + patternsConfig = res.data.patterns; + renderPatternsTab(); + showToast(_("Patterns reset to defaults!"), "success"); + } + } + }) + ] + ); + tabContentPatterns.append(z2Card, z1Card, bdCard, patternsFooter); + }; + const renderCustomTab = () => { + tabContentCustom.replaceChildren(); + const nameInput = E("input", { + type: "text", + class: "cbi-input-text", + placeholder: _("Strategy Name"), + style: "flex: 1;" + }); + const engineSel = E( + "select", + { class: "cbi-input-select", style: "width: 140px;" }, + [ + E("option", { value: "zapret2" }, "Zapret v2"), + E("option", { value: "zapret" }, "Zapret v1"), + E("option", { value: "byedpi" }, "ByeDPI") + ] + ); + const argsInput = E("input", { + type: "text", + class: "cbi-input-text", + placeholder: _("Command-line arguments string..."), + style: "flex: 2; font-family: monospace;" + }); + const addBtn = renderButton({ + text: _("+ Add Strategy"), + classNames: ["cbi-button-action"], + onClick: async () => { + const name = nameInput.value.trim(); + const eng = engineSel.value; + const args = argsInput.value.trim(); + if (!name || !args) { + showToast(_("Please specify strategy name and arguments"), "error"); + return; + } + patternsConfig.custom_strategies = patternsConfig.custom_strategies || []; + patternsConfig.custom_strategies.push({ + id: `custom_${Date.now()}`, + name, + engine: eng, + args, + description: _("User custom strategy") + }); + await TachyonShellMethods.saveFuzzerPatterns(patternsConfig); + showToast(_("Custom strategy added!"), "success"); + nameInput.value = ""; + argsInput.value = ""; + renderCustomTab(); + } + }); + const addCard = E( + "div", + { + style: "padding: 12px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 8px;" + }, + [ + E( + "div", + { style: "font-size: 12px; font-weight: 600;" }, + _("Add Custom DPI Strategy") + ), + E( + "div", + { + style: "display: flex; gap: 8px; flex-wrap: wrap; align-items: center;" + }, + [nameInput, engineSel, argsInput, addBtn] + ) + ] + ); + const customList = patternsConfig.custom_strategies || []; + const listCard = E( + "div", + { + style: "border: 1px solid var(--border-color, rgba(255,255,255,0.1)); border-radius: 6px; overflow: hidden;" + }, + [ + E( + "table", + { class: "table", style: "width: 100%; margin: 0; font-size: 12px;" }, + [ + E("thead", {}, [ + E("tr", {}, [ + E("th", { style: "padding: 8px;" }, _("Name")), + E("th", { style: "padding: 8px; width: 90px;" }, _("Engine")), + E("th", { style: "padding: 8px;" }, _("Arguments")), + E( + "th", + { + style: "padding: 8px; width: 80px; text-align: center;" + }, + _("Actions") + ) + ]) + ]), + E( + "tbody", + {}, + customList.length === 0 ? [ + E( + "tr", + {}, + E( + "td", + { + colSpan: 4, + style: "padding: 20px; text-align: center; opacity: 0.6;" + }, + _("No custom strategies added yet.") + ) + ) + ] : customList.map((cs, idx) => { + return E("tr", {}, [ + E( + "td", + { style: "padding: 8px; font-weight: 600;" }, + cs.name + ), + E( + "td", + { + style: "padding: 8px; font-family: monospace; font-size: 11px;" + }, + cs.engine + ), + E( + "td", + { + style: "padding: 8px; font-family: monospace; font-size: 11px; word-break: break-all;" + }, + cs.args + ), + E( + "td", + { + style: "padding: 8px; text-align: center;" + }, + [ + (() => { + const delBtn = E( + "button", + { + type: "button", + class: "cbi-button cbi-button-reset", + style: "padding: 2px 8px; font-size: 11px;" + }, + _("Delete") + ); + delBtn.addEventListener("click", async () => { + patternsConfig.custom_strategies.splice(idx, 1); + await TachyonShellMethods.saveFuzzerPatterns( + patternsConfig + ); + showToast(_("Strategy deleted"), "success"); + renderCustomTab(); + }); + return delBtn; + })() + ] + ) + ]); + }) + ) + ] + ) + ] + ); + tabContentCustom.append(addCard, listCard); + }; + const aiPromptInput = E("input", { + type: "text", + class: "cbi-input-text", + placeholder: _( + 'Optional context (e.g. "Rostelecom, YouTube 4K buffering is slow")...' + ), + style: "flex: 1; font-size: 12px;" + }); + const aiSynthesizeBtn = renderButton({ + text: _("\u{1F9E0} Synthesize with AI"), + classNames: ["cbi-button-action"], + onClick: () => handleAiSynthesize() + }); + const aiAnalysisContainer = E( + "div", + { + id: "tachyon-fuzzer-ai-analysis", + style: "display: none; padding: 12px; background: rgba(0, 123, 255, 0.08); border-left: 3px solid #007bff; border-radius: 4px; font-size: 12px; line-height: 1.4;" + }, + [ + E( + "div", + { + style: "font-weight: bold; margin-bottom: 6px; display: flex; align-items: center; gap: 6px;" + }, + [ + E("span", {}, "\u{1F9E0}"), + E("span", {}, _("AI Diagnostics & Strategy Rationale")) + ] + ), + E( + "div", + { id: "tachyon-fuzzer-ai-analysis-text", style: "opacity: 0.9;" }, + "" + ) + ] + ); + const aiSynthesizerCard = E( + "div", + { + style: "padding: 14px; background: var(--background-color-secondary, rgba(0,0,0,0.15)); border-radius: 6px; border: 1px solid var(--border-color, rgba(255,255,255,0.1)); display: flex; flex-direction: column; gap: 12px;" + }, + [ + E( + "div", + { + style: "font-size: 13px; font-weight: bold; display: flex; align-items: center; justify-content: space-between;" + }, + [ + E("span", {}, "\u{1F9E0} " + _("AI DPI Engineer & Strategy Synthesizer")), + E( + "span", + { style: "font-size: 11px; opacity: 0.6; font-weight: normal;" }, + _("RAG Knowledge Base + Live ISP Probe Context") + ) + ] + ), + E( + "div", + { style: "font-size: 12px; opacity: 0.8;" }, + _( + "Automatically runs a diagnostic probe against the target service, queries the built-in DPI Knowledge Base, and synthesizes 3-5 custom bypass strategies tailored to your ISP." + ) + ), + E("div", { style: "display: flex; gap: 8px; align-items: center;" }, [ + aiPromptInput, + aiSynthesizeBtn + ]), + aiAnalysisContainer + ] + ); + tabContentAi.append(aiSynthesizerCard); const renderResults = (state) => { const tbody = document.getElementById("tachyon-fuzzer-results-tbody"); if (!tbody) return; - if (!state.results || state.results.length === 0) { - if (state.running) { - tbody.innerHTML = `${_( - "Running initial strategy probe..." - )}`; - } + tbody.replaceChildren(); + let list = state.results || []; + if (resultFilter === "success") { + list = list.filter((r) => r.success); + } else if (resultFilter === "fast") { + list = list.filter((r) => r.success && r.speed_kbps > 1024); + } + if (list.length === 0) { + tbody.appendChild( + E( + "tr", + {}, + E( + "td", + { + colSpan: 8, + style: "padding: 24px; text-align: center; opacity: 0.6;" + }, + state.running ? _("Running benchmarks...") : _("No strategies match the active filter.") + ) + ) + ); return; } - tbody.innerHTML = ""; - state.results.forEach((item, idx) => { + list.forEach((item, idx) => { const isBest = state.best_strategy && state.best_strategy.id === item.id; - const statusBadge = item.success ? `${item.http_code || 200} OK` : `${item.error || "Blocked"}`; + let statusBadge = `${item.success ? `HTTP ${item.http_code}` : "DROP"}`; + let subProbesHtml = ""; + if (item.sub_probes && item.sub_probes.length > 1) { + const passedSub = item.sub_probes.filter((p) => p.success).length; + const totalSub = item.sub_probes.length; + subProbesHtml = `
${passedSub}/${totalSub} endpoints OK
`; + } let badgeHtml = ""; if (item.badge) { - badgeHtml = `${item.badge}`; + badgeHtml = `${item.badge}`; } const tr = E( "tr", { - style: `border-bottom: 1px solid var(--border-color, rgba(255,255,255,0.06)); ${isBest ? "background: rgba(40, 167, 69, 0.12); font-weight: 500;" : ""}` + style: `border-bottom: 1px solid var(--border-color, rgba(255,255,255,0.06)); ${isBest ? "background: rgba(40, 167, 69, 0.08);" : ""}` }, [ E("td", { style: "padding: 8px 10px;" }, String(idx + 1)), @@ -12187,7 +12787,11 @@ function renderStrategyFuzzerModal(ruleNames = []) { item.args ) ]), - E("td", { style: "padding: 8px 10px;", innerHTML: statusBadge }), + E( + "td", + { style: "padding: 8px 10px;" }, + E("div", { innerHTML: statusBadge + subProbesHtml }) + ), E( "td", { style: "padding: 8px 10px;" }, @@ -12203,14 +12807,22 @@ function renderStrategyFuzzerModal(ruleNames = []) { { style: "padding: 8px 10px; font-weight: bold;" }, item.success ? String(item.score) : "0" ), - E("td", { style: "padding: 8px 10px; text-align: center;" }, [ - renderButton({ - text: _("Apply"), - classNames: ["cbi-button-action"], - disabled: !item.success, - onClick: () => handleApplySingle(item) - }) - ]) + E( + "td", + { style: "padding: 8px 10px; text-align: center;" }, + E( + "div", + { style: "display: flex; gap: 4px; justify-content: center;" }, + [ + renderButton({ + text: _("Apply"), + classNames: ["cbi-button-action"], + disabled: !item.success, + onClick: () => handleApplySingle(item) + }) + ] + ) + ) ] ); tbody.appendChild(tr); @@ -12223,6 +12835,9 @@ function renderStrategyFuzzerModal(ruleNames = []) { const currentStratEl = document.getElementById( "tachyon-fuzzer-current-strategy" ); + const applyBestBtn2 = document.getElementById( + "tachyon-fuzzer-apply-best-btn" + ); if (progressContainer) { progressContainer.style.display = state.running || state.results?.length ? "flex" : "none"; } @@ -12242,8 +12857,8 @@ function renderStrategyFuzzerModal(ruleNames = []) { } else if (currentStratEl && !state.running) { currentStratEl.innerText = ""; } - if (state.best_strategy && applyBestBtn) { - applyBestBtn.disabled = false; + if (state.best_strategy && applyBestBtn2) { + applyBestBtn2.disabled = false; } }; const pollStatus = async () => { @@ -12258,7 +12873,7 @@ function renderStrategyFuzzerModal(ruleNames = []) { renderResults(res.data); if (!isRunning) { stopPolling(); - startBtn.innerText = _("\u{1F680} Run Benchmark Again"); + startBtn.innerText = _("\u{1F680} Start Benchmark"); startBtn.disabled = false; } } @@ -12334,6 +12949,8 @@ function renderStrategyFuzzerModal(ruleNames = []) { analysisText.innerText = res.data.analysis; analysisBox.style.display = "block"; } + activeTab2 = "benchmark"; + updateTabVisibility(); startBtn.disabled = true; startBtn.innerText = _("\u{1F6D1} Stop Benchmark"); const startRes = await TachyonShellMethods.startFuzzer( @@ -12376,13 +12993,38 @@ function renderStrategyFuzzerModal(ruleNames = []) { if (!currentState?.best_strategy) return; await handleApplySingle(currentState.best_strategy); }; + TachyonShellMethods.getFuzzerStrategies().then((res) => { + if (res.success && res.data?.available_engines) { + const av = res.data.available_engines; + const opts = engineSelect.options; + for (let i = 0; i < opts.length; i++) { + const opt = opts[i]; + if (opt.value === "zapret2") { + opt.text = av.zapret2 ? _("Zapret v2 (nfqws2)") + " \u2014 " + _("Installed") : _("Zapret v2 (nfqws2)") + " \u2014 " + _("Not installed"); + if (!av.zapret2) opt.disabled = true; + } else if (opt.value === "zapret") { + opt.text = av.zapret ? _("Zapret v1 (nfqws)") + " \u2014 " + _("Installed") : _("Zapret v1 (nfqws)") + " \u2014 " + _("Not installed"); + if (!av.zapret) opt.disabled = true; + } else if (opt.value === "byedpi") { + opt.text = av.byedpi ? _("ByeDPI (ciadpi)") + " \u2014 " + _("Installed") : _("ByeDPI (ciadpi)") + " \u2014 " + _("Not installed"); + if (!av.byedpi) opt.disabled = true; + } + } + } + }).catch(() => { + }); + TachyonShellMethods.getFuzzerPatterns().then((res) => { + if (res.success && res.data?.patterns) { + patternsConfig = res.data.patterns; + } + }).catch(() => { + }); modalContainer.append( - headerEl, - controlsGrid, - aiSynthesizerCard, - progressContainer, - resultsContainer, - footerActions + tabBar, + tabContentBenchmark, + tabContentPatterns, + tabContentCustom, + tabContentAi ); pollStatus(); ui.showModal(_("\u26A1 Strategy Fuzzer & Auto-Tuner"), modalContainer); diff --git a/luci-app-tachyon/po/ru/tachyon.po b/luci-app-tachyon/po/ru/tachyon.po index b2f3ba98..065c70f1 100644 --- a/luci-app-tachyon/po/ru/tachyon.po +++ b/luci-app-tachyon/po/ru/tachyon.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: TACHYON\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-27 07:39+0300\n" -"PO-Revision-Date: 2026-08-27 07:39+0300\n" +"POT-Creation-Date: 2026-08-27 13:54+0300\n" +"PO-Revision-Date: 2026-08-27 13:54+0300\n" "Last-Translator: Dushnilin\n" "Language-Team: none\n" "Language: ru\n" @@ -35,6 +35,9 @@ msgstr "+ Добавить уровень" msgid "+ Add priority" msgstr "+ Добавить приоритет" +msgid "+ Add Strategy" +msgstr "" + msgid "+ Add URLTest" msgstr "+ Добавить URLTest" @@ -59,6 +62,12 @@ msgstr "⚠️ Если все основные DNS завершатся с ош msgid "⚡ DPI Strategy Fuzzer" msgstr "⚡ DPI Strategy Fuzzer" +msgid "⚡ Fast (>1MB/s)" +msgstr "" + +msgid "⚡ QUIC / HTTP/3 (UDP 443)" +msgstr "" + msgid "⚡ Quick Benchmark (Presets ~12-14)" msgstr "⚡ Быстрый бенчмарк (Пресеты ~12-14)" @@ -68,6 +77,12 @@ msgstr "⚡ Подборщик стратегий и авто-тюнер" msgid "✅ Benchmark completed! Optimal strategy identified." msgstr "✅ Бенчмарк завершен! Оптимальная стратегия определена." +msgid "✅ Working only" +msgstr "" + +msgid "✈️ Telegram Suite (Web + Bot API)" +msgstr "" + msgid "✔ Online" msgstr "" @@ -80,11 +95,32 @@ msgstr "" msgid "✘ Stopped" msgstr "✘ Остановлено" -msgid "🏆 Apply Best Strategy" -msgstr "🏆 Применить лучшую стратегию" +msgid "🌐 Custom Target URL..." +msgstr "" -msgid "🔍 Combinatorial Deep Fuzzing (~40-60)" -msgstr "🔍 Комбинаторный глубокий перебор (~40-60)" +msgid "🎬 YouTube Suite (Web + 4K Stream)" +msgstr "" + +msgid "🏆 Apply Best Match" +msgstr "" + +msgid "🏴‍☠️ RuTracker Suite" +msgstr "" + +msgid "💬 Discord Suite (API + WSS + CDN)" +msgstr "" + +msgid "💾 Save Custom Patterns" +msgstr "" + +msgid "📸 Instagram / Meta (Web + CDN)" +msgstr "" + +msgid "🔄 Reset to Factory Defaults" +msgstr "" + +msgid "🔍 Combinatorial Deep Fuzzing (~40-80+)" +msgstr "" msgid "🔑 Generate" msgstr "🔑 Сгенерировать" @@ -95,15 +131,15 @@ msgstr "🧠 Сгенерировать через ИИ" msgid "🧠 Synthesizing..." msgstr "🧠 Генерация..." -msgid "🚀 Run Benchmark Again" -msgstr "🚀 Запустить бенчмарк снова" - msgid "🚀 Start Benchmark" msgstr "🚀 Начать бенчмарк" msgid "🛑 Stop Benchmark" msgstr "🛑 Остановить бенчмарк" +msgid "🛠️ My Custom Strategies Only" +msgstr "" + msgid "Accept external proxy connections and route them with sing-box." msgstr "Принимать внешние прокси-подключения и маршрутизировать их через sing-box." @@ -119,6 +155,9 @@ msgstr "Действие не выполнено" msgid "Action Mode" msgstr "Режим действия" +msgid "Actions" +msgstr "" + msgid "Active" msgstr "Активные" @@ -155,6 +194,9 @@ msgstr "Добавить серверный инбаунд" msgid "Add at least one DNS server" msgstr "Добавьте как минимум один DNS-сервер" +msgid "Add Custom DPI Strategy" +msgstr "" + msgid "Add prefix to nodes" msgstr "Добавить префикс к узлам" @@ -245,8 +287,11 @@ msgstr "Ошибка ИИ-доктора" msgid "AI Doctor Language" msgstr "Язык ИИ-доктора" -msgid "AI DPI Engineer & Strategy Synthesizer (RAG-Powered)" -msgstr "ИИ-инженер DPI и генератор стратегий (на базе RAG)" +msgid "AI Doctor RAG" +msgstr "" + +msgid "AI DPI Engineer & Strategy Synthesizer" +msgstr "" msgid "AI Model" msgstr "Модель ИИ" @@ -386,6 +431,9 @@ msgstr "Применение исправления" msgid "Applying..." msgstr "Применение..." +msgid "Arguments" +msgstr "" + msgid "Ask Tachyon AI Assistant a question..." msgstr "Задайте вопрос ИИ-ассистенту..." @@ -404,6 +452,9 @@ msgstr "Auth Digest" msgid "Auto" msgstr "Авто" +msgid "Auto Modes (--auto)" +msgstr "" + msgid "Auto refresh" msgstr "Автообновление" @@ -431,9 +482,6 @@ msgstr "Автолечение сетевого стека" msgid "Auto-update Hosts Lists" msgstr "Автообновление списков Hosts" -msgid "Automated DPI Strategy Fuzzer & Auto-Tuner" -msgstr "Автоматический подборщик и оптимизатор стратегий DPI" - msgid "Automatic component update checks" msgstr "Автоматическая проверка обновлений компонентов" @@ -452,6 +500,9 @@ msgstr "Автоматически создать аккаунт Cloudflare WARP msgid "Automatically increase check intervals when healthy (to 5 min) and decrease on problems (to 120s)." msgstr "Автоматически увеличивать интервалы проверки при нормальном состоянии (до 5 мин) и уменьшать при проблемах (до 120с)." +msgid "Automatically runs a diagnostic probe against the target service, queries the built-in DPI Knowledge Base, and synthesizes 3-5 custom bypass strategies tailored to your ISP." +msgstr "" + msgid "Automatically select the fastest node in the current level" msgstr "Автовыбор самого быстрого узла уровня" @@ -482,15 +533,15 @@ msgstr "Начало интервала расписания (например, msgid "Belarus (by)" msgstr "Беларусь (by)" +msgid "Benchmark & Test" +msgstr "" + msgid "Benchmark stopped" msgstr "Бенчмарк остановлен" msgid "Benchmarking in progress..." msgstr "Выполняется бенчмарк..." -msgid "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput." -msgstr "Тестирует набор стратегий десинхронизации пакетов в изолированном сэндбоксе без влияния на активный трафик и ранжирует их по задержке, TTFB и скорости." - msgid "BitTorrent / P2P" msgstr "BitTorrent / P2P" @@ -782,6 +833,9 @@ msgstr "Токен доступа Cloudflare WARP API" msgid "Comma-separated list of Telegram user IDs authorized to control the bot." msgstr "Список Telegram user ID через запятую, авторизованных для управления ботом." +msgid "Command-line arguments string..." +msgstr "" + msgid "Community Lists" msgstr "Community-списки" @@ -908,6 +962,9 @@ msgstr "Пользовательский заголовок для инициа msgid "Custom header for handshake response" msgstr "Пользовательский заголовок для ответа рукопожатия" +msgid "Custom interface/section" +msgstr "" + msgid "Custom OpenAI-Compatible API" msgstr "Пользовательский OpenAI-совместимый API" @@ -917,8 +974,8 @@ msgstr "Пользовательский URL эндпоинта OpenAI-совм msgid "Custom outbound configurations in JSON format" msgstr "Пользовательские конфигурации outbound в формате JSON" -msgid "Custom Target URL..." -msgstr "Свой URL для теста..." +msgid "Custom strategy added!" +msgstr "" msgid "Daily Quota" msgstr "Дневная квота" @@ -941,9 +998,6 @@ msgstr "По умолчанию (авто)" msgid "Default (Direct WAN / Default mixed proxy)" msgstr "По умолчанию (WAN / стандартный смешанный прокси)" -msgid "default (service mixed proxy)" -msgstr "по умолчанию (сервисный смешанный прокси)" - msgid "Default address for checking server availability and latency. URLTest uses its own address." msgstr "Адрес по умолчанию для проверки доступности и задержки сервера. URLTest использует свой собственный адрес." @@ -1031,8 +1085,8 @@ msgstr "Отключено" msgid "Disabling interception is incompatible with action=zapret2 because Tachyon sends matched traffic through NFQUEUE." msgstr "Отключение перехвата несовместимо с action=zapret2, потому что Tachyon направляет совпавший трафик через NFQUEUE." -msgid "Discord (Gateway / API / Voice)" -msgstr "Discord (Шлюз / API / Голосовые каналы)" +msgid "Disorder Values (-d)" +msgstr "" msgid "Display name" msgstr "Отображаемое имя" @@ -1481,6 +1535,9 @@ msgstr "Не удалось создать отчёт об ошибке" msgid "Failed to generate WARP config:" msgstr "Не удалось сгенерировать конфигурацию WARP:" +msgid "Failed to get fuzzer patterns" +msgstr "" + msgid "Failed to get fuzzer status" msgstr "" @@ -1505,6 +1562,9 @@ msgstr "Не удалось прочитать лог операции" msgid "Failed to receive response from AI service." msgstr "Не удалось получить ответ от ИИ-сервиса." +msgid "Failed to reset fuzzer patterns" +msgstr "" + msgid "Failed to reset settings" msgstr "Не удалось сбросить настройки" @@ -1526,6 +1586,12 @@ 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" @@ -1601,6 +1667,9 @@ msgstr "Фильтр по сервису:" msgid "Filter the servers that will be displayed on the dashboard." msgstr "Фильтровать серверы, отображаемые на дашборде." +msgid "Filter:" +msgstr "" + msgid "Finland (fi)" msgstr "Финляндия (fi)" @@ -1622,6 +1691,12 @@ msgstr "Исправлено" msgid "Flush Conntrack Table" msgstr "Очистить таблицу соед. (conntrack)" +msgid "Fooling Methods (dpi-desync-fooling)" +msgstr "" + +msgid "Fooling Methods (fooling)" +msgstr "" + msgid "Force immediate download and refresh of all remote lists and rule sets" msgstr "Принудительно скачать и обновить все удаленные списки и наборы правил" @@ -1925,9 +2000,6 @@ msgstr "Полезный груз init (I1)" msgid "Init timeout (Itime)" msgstr "Таймаут init (Itime)" -msgid "Instagram / Meta (TLS 1.3)" -msgstr "Instagram / Meta (TLS 1.3)" - msgid "Install" msgstr "Установить" @@ -2180,6 +2252,9 @@ msgstr "Некорректный VMess URL: ошибка разбора" msgid "IP Addresses (IP CIDR)" msgstr "IP-адреса (IP CIDR)" +msgid "IP Frag Bounds (--ip-frag)" +msgstr "" + msgid "IPs" msgstr "IP" @@ -2282,9 +2357,6 @@ msgstr "Путь к ключу" msgid "Keyword must not contain spaces or commas" msgstr "Ключевое слово не должно содержать пробелов или запятых" -msgid "Knowledge Base + Live Probe Context" -msgstr "База знаний + Контекст сетевого зонда" - msgid "LAN Devices" msgstr "Устройства LAN" @@ -2492,6 +2564,12 @@ msgstr "Должен быть список числовых ID через зап msgid "Must be a number in the range of 0 - 10000" msgstr "Должно быть числом в диапазоне 0 - 10000" +msgid "My Strategies" +msgstr "" + +msgid "Name" +msgstr "" + msgid "Name displayed on the dashboard" msgstr "Имя, отображаемое на дашборде" @@ -2555,8 +2633,8 @@ msgstr "Активные устройства в локальной сети н msgid "No active routing sections found." msgstr "Активные секции маршрутизации не найдены." -msgid "No benchmark results yet. Select engine and click \"Start Benchmark\" or \"Synthesize with AI\"." -msgstr "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк» или «Сгенерировать через ИИ»." +msgid "No benchmark results yet. Configure options and click \"Start Benchmark\"." +msgstr "" msgid "No check targets found in the configuration." msgstr "Цели для проверки не найдены в конфигурации." @@ -2570,6 +2648,9 @@ msgstr "Конфликт не обнаружен" msgid "No Custom Rules Matched" msgstr "Нет совпадений с пользовательскими правилами" +msgid "No custom strategies added yet." +msgstr "" + msgid "No DHCP clients detected" msgstr "DHCP-клиенты не обнаружены" @@ -2612,6 +2693,9 @@ msgstr "Секции не выбраны" msgid "No snapshots yet" msgstr "Снапшотов пока нет" +msgid "No strategies match the active filter." +msgstr "" + msgid "Node list is empty" msgstr "Список узлов пуст" @@ -2723,6 +2807,9 @@ msgstr "Только серверы с одним из выбранных тра msgid "Only the specified servers." msgstr "Только указанные серверы." +msgid "OOB Values (-o)" +msgstr "" + msgid "Open" msgstr "Открыть" @@ -2768,12 +2855,12 @@ msgstr "Параметр \"%s\" содержит недопустимое зна msgid "Optional — leave empty for default" msgstr "Опционально — оставьте пустым для значения по умолчанию" +msgid "Optional context (e.g. \"Rostelecom, YouTube 4K buffering is slow\")..." +msgstr "" + msgid "Optional for local LLM" msgstr "Опционально для локальных LLM" -msgid "Optional notes for AI (e.g. \"Rostelecom, YouTube 4K stream is slow\")..." -msgstr "Дополнительные заметки для ИИ (напр. «Ростелеком, тормозит 4K на YouTube»)..." - msgid "Optional tls-auth or tls-crypt key" msgstr "Опциональный ключ tls-auth или tls-crypt" @@ -2837,6 +2924,21 @@ msgstr "Путь должен содержать как минимум одну msgid "Path must end with cache.db" msgstr "Путь должен заканчиваться на cache.db" +msgid "Pattern Builder" +msgstr "" + +msgid "Patterns reset to defaults!" +msgstr "" + +msgid "Patterns reset to factory defaults" +msgstr "" + +msgid "Patterns saved successfully" +msgstr "" + +msgid "Patterns saved successfully!" +msgstr "" + msgid "Pause updates" msgstr "Приостановить обновление" @@ -2888,6 +2990,9 @@ msgstr "Закрепить на дашборде" msgid "Pin P2P isolation to the torrent client's own ports, comma separated. Each entry is \"proto\", \"proto:port\" or \"proto:port-port\" (tcp/udp). Without a port the whole protocol is routed direct." msgstr "Закрепить изоляцию P2P за портами торрент-клиента, через запятую. Каждая запись — \"протокол\", \"протокол:порт\" или \"протокол:порт-порт\" (tcp/udp). Без порта весь протокол уходит напрямую." +msgid "Please specify strategy name and arguments" +msgstr "" + msgid "Polling Interval (seconds)" msgstr "Интервал опроса (секунды)" @@ -3014,6 +3119,9 @@ msgstr "QR-код слишком большой" msgid "QUIC (HTTP/3)" msgstr "QUIC (HTTP/3)" +msgid "RAG Knowledge Base + Live ISP Probe Context" +msgstr "" + msgid "RDP" msgstr "RDP" @@ -3290,18 +3398,15 @@ msgstr "Запустить восстановление" msgid "Running" msgstr "Запущен" +msgid "Running benchmarks..." +msgstr "" + msgid "Running diagnostics…" msgstr "Выполняется диагностика…" -msgid "Running initial strategy probe..." -msgstr "Запуск первого зонда стратегии..." - msgid "Russia (ru)" msgstr "Россия (ru)" -msgid "RuTracker (HTTP/HTTPS)" -msgstr "RuTracker (HTTP/HTTPS)" - msgid "Sat" msgstr "Сб" @@ -3365,8 +3470,8 @@ msgstr "Действие секции" msgid "Section name" msgstr "Имя секции" -msgid "Section name for WARP registration proxy. Leave empty to use the default service mixed proxy." -msgstr "Секция для прокси регистрации WARP. Оставьте пустым для использования сервисного смешанного прокси по умолчанию." +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 "" msgid "Section Rules Content" msgstr "Содержимое правил секции" @@ -3503,6 +3608,9 @@ msgstr "Отправлять уведомление в Telegram при пере msgid "Send a Telegram notification when proxy subscriptions are successfully updated." msgstr "Отправлять уведомление в Telegram при успешном обновлении подписок прокси." +msgid "Sequence Overlaps (seqovl)" +msgstr "" + msgid "Server" msgstr "Сервер" @@ -3722,6 +3830,18 @@ msgstr "Укажите разные файлы" msgid "Speed" msgstr "Скорость" +msgid "Split Modes (dpi-desync)" +msgstr "" + +msgid "Split Positions (dpi-desync-split-pos)" +msgstr "" + +msgid "Split Positions (pos)" +msgstr "" + +msgid "Split Values (-s)" +msgstr "" + msgid "SSH" msgstr "SSH" @@ -3788,6 +3908,9 @@ msgstr "" msgid "Status" msgstr "Статус" +msgid "Status / Suite" +msgstr "" + msgid "Stop" msgstr "Стоп" @@ -3815,6 +3938,12 @@ msgstr "Стратегия и параметры" msgid "Strategy benchmark started" msgstr "Бенчмарк стратегий запущен" +msgid "Strategy deleted" +msgstr "" + +msgid "Strategy Name" +msgstr "" + msgid "Strict ECH + DoQ DNS Enforcer" msgstr "Строгий ECH + DoQ DNS Enforcer" @@ -3965,8 +4094,11 @@ msgstr "Целевые устройства (IP / MAC)" msgid "Target Scope" msgstr "Область действия" -msgid "Target Service" -msgstr "Целевой сервис" +msgid "Target Service / Suite" +msgstr "" + +msgid "TCP Window Sizes (wsize)" +msgstr "" msgid "Telegram Bot" msgstr "Telegram Бот" @@ -3977,9 +4109,6 @@ msgstr "Токен Telegram-бота" msgid "Telegram Channel" msgstr "Telegram канал" -msgid "Telegram Web" -msgstr "Telegram Web" - msgid "Test Connection" msgstr "Проверить подключение" @@ -4106,6 +4235,9 @@ msgstr "Ключ TLS Auth/Crypt" msgid "TLS SNI" msgstr "TLS SNI" +msgid "TLS-Rec Bounds (--tlsrec)" +msgstr "" + msgid "Token is required when the bot is enabled" msgstr "Токен обязателен, когда бот включён" @@ -4187,6 +4319,12 @@ msgstr "TTL должен быть положительным числом" msgid "TTL value cannot be empty" msgstr "Значение TTL не может быть пустым" +msgid "TTL Values (dpi-desync-ttl)" +msgstr "" + +msgid "TTL Values (ttl)" +msgstr "" + msgid "Tue" msgstr "Вт" @@ -4421,6 +4559,9 @@ msgstr "Использовать exit-node тейлнета для LAN" msgid "Used by" msgstr "Используется" +msgid "User custom strategy" +msgstr "" + msgid "User-Agent" msgstr "User-Agent" @@ -4550,12 +4691,6 @@ msgstr "Да" msgid "You can select Output Network Interface, by default autodetect" msgstr "Вы можете выбрать выходной сетевой интерфейс, по умолчанию автоопределение" -msgid "YouTube (GoogleVideo 4K stream)" -msgstr "YouTube (4K видеопоток GoogleVideo)" - -msgid "YouTube Web (Interface)" -msgstr "YouTube Web (Интерфейс)" - msgid "Zapret hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS strategies." msgstr "Шаблоны hostlist Zapret не поддерживаются здесь, потому что Tachyon не расширяет их для стратегий NFQWS по правилам." @@ -4604,6 +4739,66 @@ msgstr "sing-box outbound для Zapret2 настроен" msgid "Zapret2 sing-box outbound is not configured" msgstr "sing-box outbound для Zapret2 не настроен" +msgid "🏆 Apply Best Strategy" +msgstr "🏆 Применить лучшую стратегию" + +msgid "🔍 Combinatorial Deep Fuzzing (~40-60)" +msgstr "🔍 Комбинаторный глубокий перебор (~40-60)" + +msgid "🚀 Run Benchmark Again" +msgstr "🚀 Запустить бенчмарк снова" + +msgid "AI DPI Engineer & Strategy Synthesizer (RAG-Powered)" +msgstr "ИИ-инженер DPI и генератор стратегий (на базе RAG)" + +msgid "Automated DPI Strategy Fuzzer & Auto-Tuner" +msgstr "Автоматический подборщик и оптимизатор стратегий DPI" + +msgid "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput." +msgstr "Тестирует набор стратегий десинхронизации пакетов в изолированном сэндбоксе без влияния на активный трафик и ранжирует их по задержке, TTFB и скорости." + +msgid "Custom Target URL..." +msgstr "Свой URL для теста..." + +msgid "default (service mixed proxy)" +msgstr "по умолчанию (сервисный смешанный прокси)" + +msgid "Discord (Gateway / API / Voice)" +msgstr "Discord (Шлюз / API / Голосовые каналы)" + +msgid "Instagram / Meta (TLS 1.3)" +msgstr "Instagram / Meta (TLS 1.3)" + +msgid "Knowledge Base + Live Probe Context" +msgstr "База знаний + Контекст сетевого зонда" + +msgid "No benchmark results yet. Select engine and click \"Start Benchmark\" or \"Synthesize with AI\"." +msgstr "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк» или «Сгенерировать через ИИ»." + +msgid "Optional notes for AI (e.g. \"Rostelecom, YouTube 4K stream is slow\")..." +msgstr "Дополнительные заметки для ИИ (напр. «Ростелеком, тормозит 4K на YouTube»)..." + +msgid "Running initial strategy probe..." +msgstr "Запуск первого зонда стратегии..." + +msgid "RuTracker (HTTP/HTTPS)" +msgstr "RuTracker (HTTP/HTTPS)" + +msgid "Section name for WARP registration proxy. Leave empty to use the default service mixed proxy." +msgstr "Секция для прокси регистрации WARP. Оставьте пустым для использования сервисного смешанного прокси по умолчанию." + +msgid "Target Service" +msgstr "Целевой сервис" + +msgid "Telegram Web" +msgstr "Telegram Web" + +msgid "YouTube (GoogleVideo 4K stream)" +msgstr "YouTube (4K видеопоток GoogleVideo)" + +msgid "YouTube Web (Interface)" +msgstr "YouTube Web (Интерфейс)" + msgid "No benchmark results yet. Select engine and click \"Start Benchmark\"." msgstr "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк»." diff --git a/luci-app-tachyon/po/templates/tachyon.pot b/luci-app-tachyon/po/templates/tachyon.pot index 20957327..1ae5f7fb 100644 --- a/luci-app-tachyon/po/templates/tachyon.pot +++ b/luci-app-tachyon/po/templates/tachyon.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: TACHYON\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-08-27 04:39+0300\n" -"PO-Revision-Date: 2026-08-27 04:39+0300\n" +"POT-Creation-Date: 2026-08-27 10:54+0300\n" +"PO-Revision-Date: 2026-08-27 10:54+0300\n" "Last-Translator: Dushnilin \n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -32,7 +32,7 @@ msgstr "" msgid ".lst Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1767 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1771 msgid "(provider default)" msgstr "" @@ -48,24 +48,29 @@ msgstr "" msgid "+ Add priority" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12509 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:803 +msgid "+ Add Strategy" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8901 msgid "+ Add URLTest" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:483 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:508 msgid "⏹ Stop" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:483 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:508 msgid "▶ Start" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1245 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1306 msgid "⚙ Advanced Settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12195 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:586 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12848 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1197 msgid "⚠️ Benchmark completed. No working bypass found for this target." msgstr "" @@ -77,95 +82,154 @@ msgstr "" msgid "⚠️ If all Main DNS fail 3 times, queries will be sent to your ISP's DNS in plaintext. Only use as a last resort to prevent complete internet loss." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10668 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:162 msgid "⚡ DPI Strategy Fuzzer" msgstr "" -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:223 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12142 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:383 +msgid "⚡ Fast (>1MB/s)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11970 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:187 +msgid "⚡ QUIC / HTTP/3 (UDP 443)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12007 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:232 msgid "⚡ Quick Benchmark (Presets ~12-14)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12346 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:768 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13028 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1418 msgid "⚡ Strategy Fuzzer & Auto-Tuner" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12195 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:585 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12848 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1196 msgid "✅ Benchmark completed! Optimal strategy identified." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8219 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12133 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:374 +msgid "✅ Working only" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11967 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:184 +msgid "✈️ Telegram Suite (Web + Bot API)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8305 #: src/tachyon/tabs/dashboard/initController.ts:1941 msgid "✔ Online" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8176 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8183 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8262 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8269 #: src/tachyon/tabs/dashboard/initController.ts:1891 #: src/tachyon/tabs/dashboard/initController.ts:1900 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:498 msgid "✔ Running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8219 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8305 #: src/tachyon/tabs/dashboard/initController.ts:1941 msgid "✘ Offline" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8176 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8183 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8262 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8269 #: src/tachyon/tabs/dashboard/initController.ts:1891 #: src/tachyon/tabs/dashboard/initController.ts:1900 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:498 msgid "✘ Stopped" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12081 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:447 -msgid "🏆 Apply Best Strategy" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11971 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:188 +msgid "🌐 Custom Target URL..." msgstr "" -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:228 -msgid "🔍 Combinatorial Deep Fuzzing (~40-60)" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11952 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:169 +msgid "🎬 YouTube Suite (Web + 4K Stream)" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:728 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12099 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:337 +msgid "🏆 Apply Best Match" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11969 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:186 +msgid "🏴‍☠️ RuTracker Suite" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11957 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:174 +msgid "💬 Discord Suite (API + WSS + CDN)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12458 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:743 +msgid "💾 Save Custom Patterns" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11962 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:179 +msgid "📸 Instagram / Meta (Web + CDN)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12470 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:756 +msgid "🔄 Reset to Factory Defaults" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12012 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:237 +msgid "🔍 Combinatorial Deep Fuzzing (~40-80+)" +msgstr "" + +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:753 msgid "🔑 Generate" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11919 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12315 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:263 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:730 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12662 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12972 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:979 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1344 msgid "🧠 Synthesize with AI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12272 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:679 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12927 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1290 msgid "🧠 Synthesizing..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12221 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:618 -msgid "🚀 Run Benchmark Again" -msgstr "" - -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12076 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12266 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:441 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:672 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12227 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12874 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12921 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:483 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1229 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1283 msgid "🚀 Start Benchmark" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12250 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12296 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:652 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:709 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12903 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12953 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1263 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1323 msgid "🛑 Stop Benchmark" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12014 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:239 +msgid "🛠️ My Custom Strategies Only" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:449 msgid "Accept external proxy connections and route them with sing-box." msgstr "" @@ -174,14 +238,12 @@ msgstr "" msgid "Accept routes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12051 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7245 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7275 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:413 msgid "Action" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9182 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9268 #: src/tachyon/helpers/notifyActionFailure.ts:40 msgid "Action failed" msgstr "" @@ -190,9 +252,16 @@ msgstr "" msgid "Action Mode" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7578 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14918 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15503 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12202 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12575 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:455 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:879 +msgid "Actions" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7664 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15600 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16185 #: src/tachyon/tabs/dashboard/initController.ts:1127 #: src/tachyon/tabs/monitoring/initController.ts:722 #: src/tachyon/tabs/monitoring/render.ts:20 @@ -209,7 +278,7 @@ msgstr "" msgid "Active (Blocking)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9277 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9363 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:56 msgid "Active Bootstrap DNS" msgstr "" @@ -221,17 +290,17 @@ msgstr "" msgid "Active Clients" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8162 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8248 #: src/tachyon/tabs/dashboard/initController.ts:1876 msgid "Active Connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9284 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9370 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67 msgid "Active Main DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10988 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11074 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:245 msgid "Active routes" msgstr "" @@ -254,6 +323,11 @@ msgstr "" msgid "Add at least one DNS server" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12543 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:843 +msgid "Add Custom DPI Strategy" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2538 msgid "Add prefix to nodes" msgstr "" @@ -278,7 +352,7 @@ msgstr "" msgid "Add URLTest / Priority group" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9619 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:106 msgid "Additional marking rules found" msgstr "" @@ -305,7 +379,7 @@ msgstr "" msgid "Address" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2186 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2190 msgid "Administrator Chat IDs" msgstr "" @@ -313,7 +387,7 @@ msgstr "" msgid "Adult content" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:595 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:620 msgid "Advanced self-healing features. Requires Watchdog to be enabled." msgstr "" @@ -337,108 +411,115 @@ msgstr "" msgid "AI & Watchdog" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:690 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:715 msgid "AI Agent REST API (12 Endpoints)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1718 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1722 msgid "AI Agent REST API Bearer Token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1786 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:942 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1790 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1003 msgid "AI API Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11732 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:235 msgid "AI Chat & Tachyon Assistant" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10572 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10658 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:152 msgid "AI Chat Assistant" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11937 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:284 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12680 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1000 msgid "AI Diagnostics & Strategy Rationale" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:744 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:769 msgid "AI Doctor (ChatGPT / DeepSeek API)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14078 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14760 #: src/tachyon/tabs/diagnostic/initController.ts:1563 msgid "AI Doctor Diagnosis" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13539 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14081 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14089 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14221 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14763 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14771 #: src/tachyon/tabs/diagnostic/initController.ts:857 #: src/tachyon/tabs/diagnostic/initController.ts:1569 #: src/tachyon/tabs/diagnostic/initController.ts:1577 msgid "AI Doctor failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1773 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:909 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1777 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:970 msgid "AI Doctor Language" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11962 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:312 -msgid "AI DPI Engineer & Strategy Synthesizer (RAG-Powered)" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11891 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:91 +msgid "AI Doctor RAG" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1760 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:884 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12702 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1025 +msgid "AI DPI Engineer & Strategy Synthesizer" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1764 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:945 msgid "AI Model" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1743 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:806 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1747 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:867 msgid "AI Provider" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11659 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11745 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:151 msgid "AI service error" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12288 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:698 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12943 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1309 msgid "AI successfully synthesized custom strategies!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12309 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:724 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12966 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1338 msgid "AI Synthesis Error" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12308 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:723 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12965 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1337 msgid "AI synthesis failed" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:590 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:615 msgid "AI Watchdog" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:417 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:442 msgid "AI Watchdog settings saved. Restart watchdog to apply." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14937 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15468 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12124 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15619 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16150 #: src/tachyon/tabs/monitoring/initController.ts:681 #: src/tachyon/tabs/monitoring/render.ts:40 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:365 msgid "All" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2398 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2402 msgid "All checks passed — Telegram bot should work correctly" msgstr "" @@ -447,8 +528,8 @@ msgstr "" msgid "All devices" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11790 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:73 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11927 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:140 msgid "All Engines (Full Matrix)" msgstr "" @@ -477,8 +558,8 @@ msgstr "" msgid "All remaining servers means every server not already assigned to a higher-priority level." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14945 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15441 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15627 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16123 #: src/tachyon/tabs/monitoring/initController.ts:644 #: src/tachyon/tabs/monitoring/render.ts:49 msgid "All Routes" @@ -488,8 +569,8 @@ msgstr "" msgid "All servers" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10997 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11100 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11083 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11186 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:257 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:376 msgid "All services" @@ -536,7 +617,7 @@ msgstr "" msgid "Allows limiting the list of servers for URLTest" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1732 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1736 msgid "Allows Tachyon to send diagnostic snapshots to ChatGPT or DeepSeek API for intelligent root-cause analysis and auto-repair recommendations." msgstr "" @@ -556,27 +637,27 @@ msgstr "" msgid "AmneziaWG Generator" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13614 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14296 #: src/tachyon/tabs/diagnostic/initController.ts:970 msgid "Anonymized support report copied to clipboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18088 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18770 #: src/tachyon/tabs/updates/initController.ts:906 msgid "Another component action is already running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1787 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1791 msgid "API Key for OpenAI (sk-...) or DeepSeek (optional for Ollama / LM Studio)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12326 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12983 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1356 msgid "Applied" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12168 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:551 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12817 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1158 msgid "Apply" msgstr "" @@ -588,27 +669,32 @@ msgstr "" msgid "Apply section rules only to the specified local IP addresses" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11904 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:208 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12050 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:280 msgid "Apply Strategy To" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13744 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14426 #: src/tachyon/tabs/diagnostic/initController.ts:1181 msgid "Applying fix" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14424 #: src/tachyon/tabs/diagnostic/initController.ts:1179 msgid "Applying..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11583 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12569 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:872 +msgid "Arguments" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11669 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:60 msgid "Ask Tachyon AI Assistant a question..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2197 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2201 msgid "At least one Admin Chat ID is required" msgstr "" @@ -625,9 +711,9 @@ msgid "Auth Digest" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2280 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7418 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7758 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10815 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7504 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7844 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10901 #: src/tachyon/tabs/dashboard/initController.ts:923 #: src/tachyon/tabs/dashboard/initController.ts:1355 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:452 @@ -635,7 +721,12 @@ msgstr "" msgid "Auto" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10401 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12432 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:715 +msgid "Auto Modes (--auto)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10487 #: src/partials/modal/renderModal.ts:286 msgid "Auto refresh" msgstr "" @@ -644,7 +735,7 @@ msgstr "" msgid "Auto update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1989 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1993 msgid "Auto-detected domains" msgstr "" @@ -652,8 +743,8 @@ msgstr "" msgid "Auto-detected Domains" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1949 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1102 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1953 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1163 msgid "Auto-detects blocked domains from logs and adds them to the first section where they work via proxy." msgstr "" @@ -665,7 +756,7 @@ msgstr "" msgid "Auto-generate HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13672 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14354 #: src/tachyon/tabs/diagnostic/initController.ts:1094 msgid "Auto-Heal Network Stack" msgstr "" @@ -674,11 +765,6 @@ msgstr "" msgid "Auto-update Hosts Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11762 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:40 -msgid "Automated DPI Strategy Fuzzer & Auto-Tuner" -msgstr "" - #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1397 msgid "Automatic component update checks" msgstr "" @@ -699,11 +785,16 @@ msgstr "" msgid "Automatically generate a Cloudflare WARP account and configure all AmneziaWG settings." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1923 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1927 msgid "Automatically increase check intervals when healthy (to 5 min) and decrease on problems (to 120s)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12713 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1036 +msgid "Automatically runs a diagnostic probe against the target service, queries the built-in DPI Knowledge Base, and synthesizes 3-5 custom bypass strategies tailored to your ISP." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7924 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3157 #: src/tachyon/tabs/dashboard/initController.ts:1458 msgid "Automatically select the fastest node in the current level" @@ -713,19 +804,19 @@ msgstr "" msgid "Automatically update remote hosts lists on schedule" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10885 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11075 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10971 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11161 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:125 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:346 msgid "Available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10478 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10564 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:58 msgid "Available actions" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11077 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11163 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:348 msgid "Avg. latency" msgstr "" @@ -736,12 +827,12 @@ msgstr "" msgid "Backend validation failed: %s" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10832 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10918 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:58 msgid "Basic connectivity" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:700 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:725 msgid "Bearer Auth Token" msgstr "" @@ -753,21 +844,21 @@ msgstr "" msgid "Belarus (by)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12244 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:645 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11888 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:88 +msgid "Benchmark & Test" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12897 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1256 msgid "Benchmark stopped" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11993 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12071 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:306 msgid "Benchmarking in progress..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11770 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:48 -msgid "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput." -msgstr "" - #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9535 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9554 msgid "BitTorrent / P2P" @@ -806,7 +897,7 @@ msgstr "" msgid "Block: deny the listed sites. Allow only (whitelist): deny everything except the listed sites. Whitelist mode requires DNS-level blocking and applies to the schedule window." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10833 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10919 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:59 msgid "Blocked resources" msgstr "" @@ -819,7 +910,7 @@ msgstr "" msgid "Blocked Sites (Domains)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9277 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9363 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:57 msgid "Bootstrap DNS" msgstr "" @@ -828,28 +919,28 @@ msgstr "" msgid "Bootstrap DNS Servers" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2148 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2152 msgid "Bot Status" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9657 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9743 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9762 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:51 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:79 msgid "Browser FakeIP check could not be completed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9762 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:82 msgid "Browser is not using FakeIP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9762 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:81 msgid "Browser is using FakeIP correctly" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14228 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14910 #: src/tachyon/tabs/diagnostic/initController.ts:1745 msgid "Bug report downloaded" msgstr "" @@ -862,12 +953,12 @@ msgstr "" msgid "By flag emoji from name" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11789 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:72 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:114 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:115 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11926 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:139 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1389 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1390 msgid "ByeDPI (ciadpi)" msgstr "" @@ -890,32 +981,32 @@ msgstr "" msgid "ByeDPI option requires a value: %s" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9929 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10015 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:71 msgid "ByeDPI package is installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9929 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10015 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:72 msgid "ByeDPI package is not installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9924 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10010 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:64 msgid "ByeDPI provider binary is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9924 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10010 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:65 msgid "ByeDPI provider binary is not available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9944 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10030 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:107 msgid "ByeDPI sing-box outbound is configured" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9944 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10030 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:108 msgid "ByeDPI sing-box outbound is not configured" msgstr "" @@ -948,7 +1039,7 @@ msgstr "" msgid "Cache file path cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14125 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14807 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7721 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:434 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:575 @@ -958,14 +1049,14 @@ msgstr "" msgid "Cancel" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9257 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9321 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9502 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9565 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9727 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9811 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9899 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12478 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9343 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9407 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9588 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9651 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9813 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9897 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9985 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13160 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:26 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:27 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:172 @@ -997,18 +1088,18 @@ msgstr "" msgid "Certificate pin is unavailable. Apply or restart the server to generate the default certificate, then open this dialog again." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11510 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11596 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:865 msgid "Check again" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11460 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11546 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:793 msgid "Check all" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17298 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17812 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17980 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18494 #: src/tachyon/tabs/updates/initController.ts:540 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:321 msgid "Check completed!" @@ -1021,26 +1112,26 @@ msgstr "" msgid "Check Connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11335 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11448 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11421 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11534 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:652 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:778 msgid "Check domain" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7825 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7911 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2645 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3108 #: src/tachyon/tabs/dashboard/initController.ts:1445 msgid "Check interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11014 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11100 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:276 msgid "Check mode:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10592 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10678 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:172 msgid "Check Services" msgstr "" @@ -1049,43 +1140,43 @@ msgstr "" msgid "Check timeout after which the server is considered dead" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18146 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18828 #: src/tachyon/tabs/updates/initController.ts:975 msgid "Check update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7823 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7909 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2671 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3095 #: src/tachyon/tabs/dashboard/initController.ts:1443 msgid "Check URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11675 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11761 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:170 msgid "Check YouTube" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7954 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8040 #: src/tachyon/tabs/dashboard/initController.ts:1624 msgid "Checking Connection..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17127 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17809 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:112 msgid "Checking for updates..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9247 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9311 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9492 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9553 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9636 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9717 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9801 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9889 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12466 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14485 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9333 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9397 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9578 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9639 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9722 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9803 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9887 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9975 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13148 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15167 #: src/tachyon/tabs/diagnostic/initController.ts:2051 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:14 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:15 @@ -1111,32 +1202,32 @@ msgid "Checking..." msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:275 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2040 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2044 msgid "Checking…" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5310 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5396 #: src/tachyon/tabs/diagnostic/helpers/getCheckTitle.ts:2 msgid "checks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9217 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9303 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9781 #: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:10 #: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:26 msgid "Checks failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9206 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9652 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9706 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9292 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9738 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9792 #: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:23 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:43 #: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:13 msgid "Checks passed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9229 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9315 #: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:27 msgid "Checks passed with manual DHCP" msgstr "" @@ -1178,7 +1269,7 @@ msgstr "" msgid "Clear" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13665 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14347 #: src/tachyon/tabs/diagnostic/initController.ts:1087 msgid "Clear DNS cache" msgstr "" @@ -1227,17 +1318,17 @@ msgstr "" msgid "Client VPN IP address (e.g. 10.0.0.2/32)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7696 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10380 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10933 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11515 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11725 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12087 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14069 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15642 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15685 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17393 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17428 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7782 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10466 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11019 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11601 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11811 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12239 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14751 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16324 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16367 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18075 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18110 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3660 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10239 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1803 @@ -1249,28 +1340,28 @@ msgstr "" #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:227 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:178 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:871 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:454 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:497 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:442 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:488 msgid "Close" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14964 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14965 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15646 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15647 #: src/tachyon/tabs/monitoring/render.ts:68 #: src/tachyon/tabs/monitoring/render.ts:69 msgid "Close all connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15611 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15612 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16293 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16294 #: src/tachyon/tabs/monitoring/initController.ts:860 #: src/tachyon/tabs/monitoring/initController.ts:861 msgid "Close connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14927 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15509 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15609 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16191 #: src/tachyon/tabs/monitoring/initController.ts:729 #: src/tachyon/tabs/monitoring/render.ts:29 msgid "Closed" @@ -1292,15 +1383,20 @@ msgstr "" msgid "Cloudflare WARP API access token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2187 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2191 msgid "Comma-separated list of Telegram user IDs authorized to control the bot." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12505 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:798 +msgid "Command-line arguments string..." +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10219 msgid "Community Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6259 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6345 #: src/tachyon/services/core.service.ts:43 msgid "Component update available" msgstr "" @@ -1313,7 +1409,7 @@ msgstr "" msgid "Components" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5900 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5986 #: src/tachyon/helpers/singBoxVariant.ts:60 msgid "compressed" msgstr "" @@ -1330,7 +1426,7 @@ msgstr "" msgid "Config File Path" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1693 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1697 msgid "Config Snapshots" msgstr "" @@ -1343,15 +1439,15 @@ msgid "Configure User-Agent in the item settings" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12544 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13226 #: src/tachyon/methods/custom/getDashboardSections.ts:1651 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:620 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:141 msgid "Conflict" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:749 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:774 msgid "Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis." msgstr "" @@ -1366,7 +1462,7 @@ msgstr "" msgid "Connected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13825 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14507 #: src/tachyon/tabs/diagnostic/initController.ts:1276 msgid "Connected Devices" msgstr "" @@ -1375,18 +1471,18 @@ msgstr "" msgid "Connection URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15737 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16419 #: src/tachyon/tabs/monitoring/initController.ts:1012 msgid "Connections are unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12573 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13255 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:174 msgid "Connectivity probe failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12279 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:688 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12934 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1299 msgid "Consulting DPI Knowledge Base & AI..." msgstr "" @@ -1404,32 +1500,32 @@ msgstr "" msgid "Copied" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10373 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10459 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1753 #: src/partials/modal/renderModal.ts:258 msgid "Copy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17169 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17851 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:160 msgid "Copy log" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2317 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2318 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7628 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7714 #: src/tachyon/tabs/dashboard/initController.ts:1192 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:498 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:499 msgid "Copy proxy link" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14031 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14713 #: src/tachyon/tabs/diagnostic/initController.ts:1511 msgid "Copy Support Report" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9682 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9768 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:89 msgid "Could not compare FakeIP and control public IPs" msgstr "" @@ -1438,7 +1534,7 @@ msgstr "" msgid "Country code (e.g. ru, us, de)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13982 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14664 #: src/tachyon/tabs/diagnostic/initController.ts:1452 msgid "Current Diagnosis" msgstr "" @@ -1456,13 +1552,13 @@ msgstr "" msgid "Currently unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10835 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10921 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:61 msgid "Custom" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1797 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:964 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1801 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1025 msgid "Custom API Endpoint URL" msgstr "" @@ -1474,7 +1570,7 @@ msgstr "" msgid "Custom DNS Records (Hosts)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10834 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10920 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:60 msgid "Custom domains" msgstr "" @@ -1495,11 +1591,15 @@ msgstr "" msgid "Custom header for handshake response" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1753 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:850 +msgid "Custom interface/section" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1757 msgid "Custom OpenAI-Compatible API" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1798 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1802 msgid "Custom OpenAI-compatible API endpoint URL (e.g. http://192.168.1.100:11434/v1/chat/completions)" msgstr "" @@ -1507,9 +1607,9 @@ msgstr "" msgid "Custom outbound configurations in JSON format" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11852 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:148 -msgid "Custom Target URL..." +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12528 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:826 +msgid "Custom strategy added!" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:307 @@ -1533,19 +1633,16 @@ msgstr "" msgid "Days of Week" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2313 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2317 msgid "Default (auto)" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1634 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1645 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1646 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:826 msgid "Default (Direct WAN / Default mixed proxy)" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:787 -msgid "default (service mixed proxy)" -msgstr "" - #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1444 msgid "Default address for checking server availability and latency. URLTest uses its own address." msgstr "" @@ -1558,9 +1655,11 @@ msgstr "" msgid "Delay value cannot be empty" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12630 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1828 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:615 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:621 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:940 msgid "Delete" msgstr "" @@ -1595,11 +1694,11 @@ msgstr "" msgid "Device filter" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1175 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1236 msgid "Device IPs (one per line):" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:273 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:298 msgid "Device IPs saved" msgstr "" @@ -1607,21 +1706,21 @@ msgstr "" msgid "Device or IP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13900 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14582 #: src/tachyon/tabs/diagnostic/initController.ts:1359 msgid "Device updated" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1213 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1274 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:9231 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9317 #: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:37 msgid "DHCP has DNS server" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9231 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9317 #: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:36 msgid "DHCP is managed manually" msgstr "" @@ -1630,8 +1729,8 @@ msgstr "" msgid "Diagnostics" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10806 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10812 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10892 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10898 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2704 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:25 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:32 @@ -1642,7 +1741,7 @@ msgstr "" msgid "Direct (Default)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13888 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14570 #: src/tachyon/tabs/diagnostic/initController.ts:1346 msgid "Direct Bypass" msgstr "" @@ -1651,12 +1750,12 @@ msgstr "" msgid "Direct connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13882 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14564 #: src/tachyon/tabs/diagnostic/initController.ts:1337 msgid "Direct WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10514 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10600 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:94 msgid "Disable autostart" msgstr "" @@ -1678,9 +1777,9 @@ msgstr "" msgid "Disabling interception is incompatible with action=zapret2 because Tachyon sends matched traffic through NFQUEUE." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11848 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:144 -msgid "Discord (Gateway / API / Voice)" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12420 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:703 +msgid "Disorder Values (-d)" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2627 @@ -1697,7 +1796,7 @@ msgstr "" msgid "DNS Check Interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1867 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1871 msgid "DNS Check Interval (s)" msgstr "" @@ -1705,7 +1804,7 @@ msgstr "" msgid "DNS Failures Before Switching" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9289 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9375 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:75 msgid "DNS on router" msgstr "" @@ -1796,11 +1895,11 @@ msgid "DNS through section" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:994 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:495 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:520 msgid "DNS Turbo Cache" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:297 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:322 msgid "DNS Turbo Cache saved" msgstr "" @@ -1808,7 +1907,7 @@ msgstr "" msgid "DNS Unavailability Timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12423 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13105 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:26 msgid "Do not panic, everything can be fixed, just..." msgstr "" @@ -1837,25 +1936,25 @@ msgstr "" msgid "Do not test specified servers." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13453 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13473 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13481 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14135 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14155 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14163 #: src/tachyon/tabs/diagnostic/initController.ts:731 #: src/tachyon/tabs/diagnostic/initController.ts:773 #: src/tachyon/tabs/diagnostic/initController.ts:781 msgid "Doctor failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14144 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14146 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14146 #: src/tachyon/tabs/diagnostic/initController.ts:747 #: src/tachyon/tabs/diagnostic/initController.ts:759 #: src/tachyon/tabs/diagnostic/initController.ts:760 msgid "Doctor repair" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9410 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9496 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:54 msgid "Does not resolve" msgstr "" @@ -1872,7 +1971,7 @@ msgstr "" msgid "Domain Resolver" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1961 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1965 msgid "Domain test sections" msgstr "" @@ -1897,14 +1996,14 @@ msgstr "" msgid "Dont Touch My DHCP!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8139 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8151 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8225 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8237 #: src/tachyon/tabs/dashboard/initController.ts:1851 #: src/tachyon/tabs/dashboard/initController.ts:1864 msgid "Downlink" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10368 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10454 #: src/partials/modal/renderModal.ts:253 msgid "Download" msgstr "" @@ -1949,9 +2048,9 @@ msgstr "" msgid "Download through" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15635 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15682 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15821 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16317 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16364 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16503 #: src/tachyon/tabs/monitoring/initController.ts:886 #: src/tachyon/tabs/monitoring/initController.ts:945 #: src/tachyon/tabs/monitoring/initController.ts:1134 @@ -1962,8 +2061,8 @@ msgstr "" msgid "Downloading and applying rule sets and lists..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11803 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:88 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11940 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:155 msgid "DPI Engine" msgstr "" @@ -2016,19 +2115,19 @@ msgstr "" msgid "Enable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1922 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1926 msgid "Enable Adaptive Intervals" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1731 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1735 msgid "Enable AI Doctor (ChatGPT / LLM Analysis)" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:764 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:789 msgid "Enable AI Doctor (LLM Integration)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1929 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1933 msgid "Enable Anomaly Detection" msgstr "" @@ -2040,7 +2139,7 @@ msgstr "" msgid "Enable automatic updates for remote lists and rule sets" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10524 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10610 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:104 msgid "Enable autostart" msgstr "" @@ -2049,32 +2148,32 @@ msgstr "" msgid "Enable built-in DNS resolver for domains handled by this section" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1901 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1905 msgid "Enable Config Validation" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13673 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14355 #: src/tachyon/tabs/diagnostic/initController.ts:1095 msgid "Enable Direct WAN Bypass" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1861 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1865 msgid "Enable DNS Continuous Check" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:514 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:539 msgid "Enable DNS Turbo Cache" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1874 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1878 msgid "Enable Firewall Reload Dedup" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1908 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1912 msgid "Enable Graceful Degradation" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1881 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1885 msgid "Enable Health Metrics" msgstr "" @@ -2094,25 +2193,25 @@ msgstr "" msgid "Enable Output Network Interface" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1837 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1841 msgid "Enable Proxy Health Monitor" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1813 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:778 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1817 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:803 msgid "Enable RAG (Knowledge Base Retrieval)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1894 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1898 msgid "Enable Smart Cooldowns" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1948 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1119 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1952 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1180 msgid "Enable Smart Detect" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2158 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2162 msgid "Enable Telegram Bot" msgstr "" @@ -2124,7 +2223,7 @@ msgstr "" msgid "Enable WAN DNS Fallback for Main DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1705 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1709 msgid "Enable Watchdog" msgstr "" @@ -2136,11 +2235,11 @@ msgstr "" msgid "Enable YACD WAN Access" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2159 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2163 msgid "Enables the background daemon that polls Telegram for commands and sends notifications." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1706 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1710 msgid "Enables the background watchdog process to monitor services and auto-recover on failures." msgstr "" @@ -2152,8 +2251,10 @@ msgstr "" msgid "End Time (HH:MM)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12038 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:400 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12185 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12568 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:438 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:871 msgid "Engine" msgstr "" @@ -2172,7 +2273,7 @@ msgstr "" msgid "Enter a display name" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11328 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11414 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:644 msgid "Enter a domain or IP to check (e.g. example.com)..." msgstr "" @@ -2190,7 +2291,7 @@ msgstr "" msgid "Enter HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2170 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2174 msgid "Enter the API token obtained from @BotFather." msgstr "" @@ -2305,38 +2406,38 @@ msgstr "" msgid "External nfqws2 config files bypass Tachyon queue management and explicit validation." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13760 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14442 #: src/tachyon/tabs/diagnostic/initController.ts:1202 msgid "Failed to apply fix" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4017 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12330 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4026 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12987 #: src/tachyon/methods/shell/index.ts:1149 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:746 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1360 msgid "Failed to apply strategy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16010 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16024 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16692 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16706 #: src/tachyon/tabs/monitoring/initController.ts:1400 #: src/tachyon/tabs/monitoring/initController.ts:1415 msgid "Failed to close connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16039 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16051 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16721 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16733 #: src/tachyon/tabs/monitoring/initController.ts:1434 #: src/tachyon/tabs/monitoring/initController.ts:1447 msgid "Failed to close connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12312 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:727 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12969 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1341 msgid "Failed to communicate with AI provider" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13618 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14300 #: src/tachyon/tabs/diagnostic/initController.ts:974 msgid "Failed to copy report to clipboard" msgstr "" @@ -2351,12 +2452,12 @@ msgstr "" msgid "Failed to delete snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3277 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3280 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17897 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17897 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17957 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18129 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3283 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18579 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18579 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18639 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18811 #: src/tachyon/methods/shell/index.ts:171 #: src/tachyon/methods/shell/index.ts:178 #: src/tachyon/tabs/updates/initController.ts:661 @@ -2366,7 +2467,7 @@ msgstr "" msgid "Failed to execute" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14231 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14913 #: src/tachyon/tabs/diagnostic/initController.ts:1748 msgid "Failed to generate bug report" msgstr "" @@ -2376,12 +2477,17 @@ msgstr "" msgid "Failed to generate WARP config:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3975 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4109 +#: src/tachyon/methods/shell/index.ts:1274 +msgid "Failed to get fuzzer patterns" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3984 #: src/tachyon/methods/shell/index.ts:1101 msgid "Failed to get fuzzer status" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4042 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4053 #: src/tachyon/methods/shell/index.ts:1201 msgid "Failed to get fuzzer strategies" msgstr "" @@ -2394,7 +2500,7 @@ msgstr "" msgid "Failed to parse file:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10976 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11062 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:231 msgid "Failed to parse target list." msgstr "" @@ -2403,22 +2509,27 @@ msgstr "" msgid "Failed to parse WARP config:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3654 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3657 #: src/tachyon/methods/shell/index.ts:664 msgid "Failed to read operation log" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11628 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11714 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:115 msgid "Failed to receive response from AI service." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4161 +#: src/tachyon/methods/shell/index.ts:1336 +msgid "Failed to reset fuzzer patterns" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:417 msgid "Failed to reset settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14059 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14150 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14741 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14832 #: src/tachyon/tabs/diagnostic/initController.ts:1543 #: src/tachyon/tabs/diagnostic/initController.ts:1651 msgid "Failed to restore native internet" @@ -2428,24 +2539,34 @@ msgstr "" msgid "Failed to restore snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2385 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2407 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2389 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2411 msgid "Failed to run diagnostics — is the tachyon binary installed?" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:421 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:446 msgid "Failed to save AI Watchdog settings" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:281 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:306 msgid "Failed to save device IPs" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:299 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:324 msgid "Failed to save DNS Turbo Cache" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:247 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4135 +#: src/tachyon/methods/shell/index.ts:1305 +msgid "Failed to save fuzzer patterns" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12465 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:751 +msgid "Failed to save patterns" +msgstr "" + +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:272 msgid "Failed to save Smart Detect settings" msgstr "" @@ -2453,22 +2574,22 @@ msgstr "" msgid "Failed to save snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12264 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:670 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12919 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1281 msgid "Failed to start benchmark" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2104 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2108 msgid "Failed to start bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3952 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3961 #: src/tachyon/methods/shell/index.ts:1075 msgid "Failed to start fuzzer" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10959 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11531 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11045 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11617 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:213 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:890 msgid "Failed to start service check." @@ -2478,11 +2599,11 @@ msgstr "" msgid "Failed to start watchdog" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2118 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2122 msgid "Failed to stop bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3989 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3998 #: src/tachyon/methods/shell/index.ts:1116 msgid "Failed to stop fuzzer" msgstr "" @@ -2491,30 +2612,30 @@ msgstr "" msgid "Failed to stop watchdog" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7239 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7245 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7325 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7331 #: src/tachyon/tabs/dashboard/initController.ts:700 #: src/tachyon/tabs/dashboard/initController.ts:706 msgid "Failed to switch proxy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4075 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4086 #: src/tachyon/methods/shell/index.ts:1246 msgid "Failed to synthesize AI strategies" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13905 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14587 #: src/tachyon/tabs/diagnostic/initController.ts:1364 msgid "Failed to update device" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6945 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6945 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6960 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6993 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6996 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7896 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7899 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7031 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7031 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7046 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7082 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7982 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7985 #: src/tachyon/tabs/dashboard/initController.ts:309 #: src/tachyon/tabs/dashboard/initController.ts:310 #: src/tachyon/tabs/dashboard/initController.ts:330 @@ -2529,17 +2650,17 @@ msgstr "" msgid "Failover failure threshold" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9682 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9768 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:91 msgid "FakeIP and control checks use different public IPs" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9682 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9768 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:92 msgid "FakeIP and control checks use the same public IP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9654 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9740 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:46 msgid "FakeIP works; public IP comparison is inconclusive" msgstr "" @@ -2552,22 +2673,22 @@ msgstr "" msgid "Fallback on unknown DC" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1862 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1866 msgid "Faster DNS health monitoring than the default cycle. Switches bootstrap DNS on failure." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7843 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7929 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3168 #: src/tachyon/tabs/dashboard/initController.ts:1464 msgid "Faster server search interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4460 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4546 #: src/tachyon/methods/custom/getDashboardSections.ts:661 msgid "Fastest" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11228 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:425 msgid "Filter by service:" msgstr "" @@ -2576,21 +2697,26 @@ msgstr "" msgid "Filter the servers that will be displayed on the dashboard." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12114 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:355 +msgid "Filter:" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9252 msgid "Finland (fi)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9474 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9560 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:136 msgid "Firewall WAN port" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13754 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14436 #: src/tachyon/tabs/diagnostic/initController.ts:1196 msgid "Fix applied" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13659 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14341 #: src/tachyon/tabs/diagnostic/initController.ts:1081 msgid "Fix resolv.conf" msgstr "" @@ -2600,18 +2726,28 @@ msgstr "" msgid "Fix the highlighted fields and save again." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13750 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14144 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14432 #: src/tachyon/tabs/diagnostic/initController.ts:753 #: src/tachyon/tabs/diagnostic/initController.ts:1192 msgid "Fixed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14358 #: src/tachyon/tabs/diagnostic/initController.ts:1098 msgid "Flush Conntrack Table" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12389 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:670 +msgid "Fooling Methods (dpi-desync-fooling)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12340 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:619 +msgid "Fooling Methods (fooling)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1360 msgid "Force immediate download and refresh of all remote lists and rule sets" msgstr "" @@ -2648,7 +2784,7 @@ msgstr "" msgid "Fronting proxy protocol" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11678 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11764 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:173 msgid "Full System Diagnostic" msgstr "" @@ -2673,7 +2809,7 @@ msgstr "" msgid "Generate a random 16-character hexadecimal HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10619 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10705 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:199 msgid "Generate bug report" msgstr "" @@ -2693,7 +2829,7 @@ msgstr "" msgid "Generate WARP Config" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9438 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9524 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:89 msgid "Generated inbound" msgstr "" @@ -2722,11 +2858,11 @@ msgstr "" msgid "Germany (de)" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:735 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:760 msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer ." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10533 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10619 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:113 msgid "Get global check" msgstr "" @@ -2735,20 +2871,20 @@ msgstr "" msgid "Give the snapshot a name. It is saved with the current date and can be restored from this list later." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13428 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14110 #: src/tachyon/tabs/diagnostic/initController.ts:703 msgid "Global check" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13439 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13443 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14121 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14125 #: src/tachyon/tabs/diagnostic/initController.ts:714 #: src/tachyon/tabs/diagnostic/initController.ts:718 msgid "Global check failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12326 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12983 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1356 msgid "Global Default" msgstr "" @@ -2760,11 +2896,11 @@ msgstr "" msgid "Handshake timeout" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:598 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:623 msgid "Health Checks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11543 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11629 #: 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." msgstr "" @@ -2833,12 +2969,12 @@ msgstr "" msgid "Hide URLTest group nodes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10420 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10506 #: src/partials/modal/renderModal.ts:310 msgid "Hide values" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7830 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7916 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3132 #: src/tachyon/tabs/dashboard/initController.ts:1450 msgid "Higher-level check interval" @@ -2848,13 +2984,13 @@ msgstr "" msgid "Higher-priority DNS Check" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14006 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14688 #: src/tachyon/tabs/diagnostic/initController.ts:1480 msgid "History" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15625 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15678 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16307 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16360 #: src/tachyon/tabs/monitoring/initController.ts:876 #: src/tachyon/tabs/monitoring/initController.ts:941 msgid "Host" @@ -2868,7 +3004,7 @@ msgstr "" msgid "Hosts Lists Update Interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1888 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1892 msgid "How many hours of metrics to keep (default 24)." msgstr "" @@ -2880,15 +3016,15 @@ msgstr "" msgid "How often the currently selected server is checked" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1868 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1872 msgid "How often to check DNS health in seconds (default 60)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1844 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1848 msgid "How often to check proxy health in seconds (fast tier, default 30)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2210 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2214 msgid "How often to check Telegram for new messages (default: 5)." msgstr "" @@ -2905,7 +3041,7 @@ msgstr "" msgid "HTTP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5201 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5287 #: src/tachyon/api.ts:27 msgid "HTTP error" msgstr "" @@ -2914,7 +3050,7 @@ msgstr "" msgid "HTTP hosts" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:695 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:720 msgid "HTTP REST API for external AI agents (Claude, GPT, Open-WebUI) served at /cgi-bin/tachyon-agent/" msgstr "" @@ -2922,14 +3058,14 @@ msgstr "" msgid "HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7714 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7800 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2684 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3204 #: src/tachyon/tabs/dashboard/initController.ts:1295 msgid "Idle timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1909 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1913 msgid "If one health check fails with an error, continue running other checks instead of stopping." msgstr "" @@ -3056,39 +3192,34 @@ msgstr "" msgid "Init timeout (Itime)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11849 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:145 -msgid "Instagram / Meta (TLS 1.3)" -msgstr "" - -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17383 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18155 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18065 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18837 #: src/tachyon/tabs/updates/initController.ts:989 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:431 msgid "Install" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18578 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19260 #: src/tachyon/tabs/updates/initController.ts:1502 msgid "Install another build:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:104 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:109 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:114 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1379 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1384 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1389 msgid "Installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18458 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19140 #: src/tachyon/tabs/updates/initController.ts:1363 msgid "Installed build → Available build" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17676 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18466 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18358 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19148 #: src/tachyon/tabs/updates/initController.ts:359 #: src/tachyon/tabs/updates/initController.ts:1371 msgid "Installed version is newer than release" @@ -3106,8 +3237,8 @@ msgstr "" msgid "Interface monitoring for Bad WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7716 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7848 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7802 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7934 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2698 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3184 #: src/tachyon/tabs/dashboard/initController.ts:1297 @@ -3123,7 +3254,7 @@ msgstr "" msgid "Interrupt connections when URLTest switches the selected server" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7712 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7798 #: src/tachyon/tabs/dashboard/initController.ts:1293 msgid "Interval" msgstr "" @@ -3493,6 +3624,11 @@ msgstr "" msgid "IP Addresses (IP CIDR)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12444 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:727 +msgid "IP Frag Bounds (--ip-frag)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9320 msgid "IPs" msgstr "" @@ -3509,19 +3645,19 @@ msgstr "" msgid "Isolate BitTorrent traffic and force it direct to prevent VPN bans" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14144 #: src/tachyon/tabs/diagnostic/initController.ts:749 msgid "Issues" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9212 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9701 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9298 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9787 #: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:17 #: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:20 msgid "Issues detected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13776 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14458 #: src/tachyon/tabs/diagnostic/initController.ts:1221 msgid "Issues detected. Review the diagnosis above." msgstr "" @@ -3626,7 +3762,7 @@ msgid "Keep URLTest before latency-sorted servers" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:995 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:500 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:525 msgid "Keeps FakeIP cache persistent across reboots and pre-resolves popular blocked domains on startup so first-visit latency is 0 ms." msgstr "" @@ -3642,22 +3778,17 @@ msgstr "" msgid "Keyword must not contain spaces or commas" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11967 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:317 -msgid "Knowledge Base + Live Probe Context" -msgstr "" - -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13992 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14674 #: src/tachyon/tabs/diagnostic/initController.ts:1464 msgid "LAN Devices" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1774 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1778 msgid "Language for AI Doctor diagnosis responses" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3540 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3559 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3543 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3562 #: src/tachyon/methods/shell/index.ts:519 #: src/tachyon/methods/shell/index.ts:540 msgid "Latency test failed" @@ -3667,14 +3798,14 @@ msgstr "" msgid "Latency test URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17678 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18464 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18360 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19146 #: src/tachyon/tabs/updates/initController.ts:362 #: src/tachyon/tabs/updates/initController.ts:1369 msgid "Latest version is installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18466 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19148 #: src/tachyon/tabs/updates/initController.ts:1371 msgid "Latest version:" msgstr "" @@ -3695,7 +3826,7 @@ msgstr "" msgid "List must be an HTTP(S) URL or a local .lst path" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1990 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1994 msgid "List of domains automatically detected and the section they were added to. To edit or remove them, open the routing rules of the respective section." msgstr "" @@ -3711,7 +3842,7 @@ msgstr "" msgid "Listen port" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9468 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9554 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:125 msgid "Listening port" msgstr "" @@ -3720,8 +3851,8 @@ msgstr "" msgid "Lists and rule sets successfully updated!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1752 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:869 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1756 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:930 msgid "LM Studio (Local PC / Server)" msgstr "" @@ -3750,31 +3881,31 @@ msgstr "" msgid "Loading client link..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13795 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14477 #: src/tachyon/tabs/diagnostic/initController.ts:1243 msgid "Loading connected LAN devices..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14996 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15728 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15678 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16410 #: src/tachyon/tabs/monitoring/initController.ts:1002 #: src/tachyon/tabs/monitoring/render.ts:101 msgid "Loading connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10908 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10947 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10994 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11033 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:150 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:194 msgid "Loading service list..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18330 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18343 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18353 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18363 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18373 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18383 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19012 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19025 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19035 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19045 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19055 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19065 #: src/tachyon/tabs/updates/initController.ts:1201 #: src/tachyon/tabs/updates/initController.ts:1216 #: src/tachyon/tabs/updates/initController.ts:1234 @@ -3784,7 +3915,7 @@ msgstr "" msgid "Loading..." msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1223 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1284 msgid "Loading…" msgstr "" @@ -3796,12 +3927,12 @@ msgstr "" msgid "Log Level" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5902 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5988 #: src/tachyon/helpers/singBoxVariant.ts:62 msgid "lx" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9284 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9370 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67 msgid "Main DNS" msgstr "" @@ -3811,8 +3942,8 @@ msgid "Main DNS server. If multiple servers are selected, a timeout switches to msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2280 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7411 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7751 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7497 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7837 #: src/tachyon/tabs/dashboard/initController.ts:914 #: src/tachyon/tabs/dashboard/initController.ts:1346 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:450 @@ -3855,7 +3986,7 @@ msgstr "" msgid "Match traffic by packet DSCP mark (assigned in Windows via Policy-Based QoS). Examples: 46 (EF), 0x2e, 34 (AF41)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1936 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1940 msgid "Max reconnects per hour before alert (default 10)." msgstr "" @@ -3867,7 +3998,7 @@ msgstr "" msgid "Maximum time to wait for example.com to resolve during a DNS health check." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8163 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8249 #: src/tachyon/tabs/dashboard/initController.ts:1877 msgid "Memory Usage" msgstr "" @@ -3880,7 +4011,7 @@ msgstr "" msgid "Method" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1887 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1891 msgid "Metrics Retention (hours)" msgstr "" @@ -3913,7 +4044,7 @@ msgstr "" msgid "Mode" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1761 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1765 msgid "Model name to use. Leave empty to use default (gpt-4o-mini / claude-3-5-haiku / deepseek-chat / llama3:latest)." msgstr "" @@ -3933,19 +4064,19 @@ msgstr "" msgid "Monitoring" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:643 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:668 msgid "Monitoring & Analytics" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1930 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1934 msgid "Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour." msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1053 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1114 msgid "Move down" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1042 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1103 msgid "Move up" msgstr "" @@ -3954,7 +4085,7 @@ msgstr "" msgid "MTU" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2200 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2204 msgid "Must be a comma-separated list of numeric IDs" msgstr "" @@ -3963,6 +4094,16 @@ msgstr "" msgid "Must be a number in the range of 0 - 10000" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11890 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:90 +msgid "My Strategies" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12567 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:870 +msgid "Name" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2628 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3085 msgid "Name displayed on the dashboard" @@ -3972,8 +4113,8 @@ msgstr "" msgid "Name shown in the priority level list" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14049 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14731 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14824 #: src/tachyon/tabs/diagnostic/initController.ts:1533 #: src/tachyon/tabs/diagnostic/initController.ts:1643 msgid "Native internet restored. Tachyon stopped." @@ -4004,20 +4145,20 @@ msgstr "" msgid "New domains:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6257 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6343 #: src/tachyon/services/core.service.ts:38 msgid "New version %s is available for %s" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9769 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9855 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9941 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:100 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:97 msgid "NFQUEUE range is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9769 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9855 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9941 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:99 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:96 msgid "NFQUEUE range overlaps with another rule" @@ -4039,10 +4180,10 @@ msgstr "" msgid "NFQWS2 strategy cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7339 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7342 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7402 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7425 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7428 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7488 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7828 #: src/tachyon/tabs/dashboard/initController.ts:822 #: src/tachyon/tabs/dashboard/initController.ts:826 #: src/tachyon/tabs/dashboard/initController.ts:902 @@ -4055,37 +4196,37 @@ msgstr "" msgid "No active clients" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15747 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16429 #: src/tachyon/tabs/monitoring/initController.ts:1026 msgid "No active connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13806 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14488 #: src/tachyon/tabs/diagnostic/initController.ts:1255 msgid "No active DHCP clients found on local network." msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:703 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1161 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1222 msgid "No active routing sections found." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12066 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:428 -msgid "No benchmark results yet. Select engine and click \"Start Benchmark\" or \"Synthesize with AI\"." +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12217 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:470 +msgid "No benchmark results yet. Configure options and click \"Start Benchmark\"." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10983 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11069 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:239 msgid "No check targets found in the configuration." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15747 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16429 #: src/tachyon/tabs/monitoring/initController.ts:1027 msgid "No closed connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9394 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9480 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:32 msgid "No conflict detected" msgstr "" @@ -4094,21 +4235,26 @@ msgstr "" msgid "No Custom Rules Matched" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13589 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12592 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:898 +msgid "No custom strategies added yet." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14271 #: src/tachyon/tabs/diagnostic/initController.ts:943 msgid "No DHCP clients detected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13922 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14604 #: src/tachyon/tabs/diagnostic/initController.ts:1382 msgid "No diagnostic history available yet." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2005 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2009 msgid "No domains detected yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9514 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9600 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:187 msgid "No enabled server inbounds configured" msgstr "" @@ -4117,37 +4263,37 @@ msgstr "" msgid "No file selected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13783 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14465 #: src/tachyon/tabs/diagnostic/initController.ts:1230 msgid "No issues detected. System is running normally." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14146 #: src/tachyon/tabs/diagnostic/initController.ts:760 msgid "No issues found" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9619 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:105 msgid "No other marking rules found" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9447 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9533 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:99 msgid "No public firewall port required" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9934 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10020 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:79 msgid "No rules use ByeDPI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9759 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:79 msgid "No rules use Zapret" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9931 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:82 msgid "No rules use Zapret2" msgstr "" @@ -4161,17 +4307,22 @@ msgstr "" msgid "No snapshots yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7644 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12746 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1076 +msgid "No strategies match the active filter." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7730 #: src/tachyon/tabs/dashboard/initController.ts:1211 msgid "Node list is empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7483 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7569 #: src/tachyon/tabs/dashboard/initController.ts:1010 msgid "Nodes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13586 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14268 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:313 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:325 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:336 @@ -4185,9 +4336,9 @@ msgid "None" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9403 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12555 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9489 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13237 #: src/tachyon/methods/custom/getDashboardSections.ts:1654 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:623 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:46 @@ -4202,55 +4353,55 @@ msgstr "" msgid "Not connected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9424 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9524 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9510 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9610 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:70 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:199 msgid "Not detected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10783 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10869 #: src/tachyon/tabs/diagnostic/partials/renderCheckSection.ts:193 msgid "Not implement yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5887 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5892 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11821 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18353 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18363 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18373 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18383 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5973 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5978 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13007 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19035 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19045 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19055 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19065 #: src/tachyon/helpers/singBoxVariant.ts:38 #: src/tachyon/helpers/singBoxVariant.ts:46 #: src/tachyon/tabs/updates/initController.ts:1237 #: src/tachyon/tabs/updates/initController.ts:1251 #: src/tachyon/tabs/updates/initController.ts:1265 #: src/tachyon/tabs/updates/initController.ts:1279 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:115 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1380 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1385 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1390 msgid "Not installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9417 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9503 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:62 msgid "Not public" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9475 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9561 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:139 msgid "Not required for this listen address" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2195 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2578 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12506 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12525 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12530 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12578 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13188 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13207 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13212 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13260 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:332 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:826 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:91 @@ -4260,11 +4411,11 @@ msgstr "" msgid "Not responding" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5476 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12986 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13156 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13202 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13264 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5562 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13668 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13884 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13946 #: src/tachyon/tabs/diagnostic/diagnostic.store.ts:142 #: src/tachyon/tabs/diagnostic/initController.ts:127 #: src/tachyon/tabs/diagnostic/initController.ts:358 @@ -4281,27 +4432,27 @@ msgstr "" msgid "Notify in Telegram" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2282 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2286 msgid "Notify on Certificate Warnings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2230 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2234 msgid "Notify on Core Crashes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2295 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2299 msgid "Notify on DNS Leaks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2256 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2260 msgid "Notify on Server Switches" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2243 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2247 msgid "Notify on Service Restarts" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2269 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2273 msgid "Notify on Subscription Updates" msgstr "" @@ -4313,7 +4464,7 @@ msgstr "" msgid "Number of consecutive failed probes before switching sections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1854 msgid "Number of consecutive failures before restarting (default 3)." msgstr "" @@ -4333,8 +4484,8 @@ msgstr "" msgid "Obfuscation password" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1751 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:861 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1755 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:922 msgid "Ollama (Local PC / Server)" msgstr "" @@ -4376,8 +4527,13 @@ msgstr "" msgid "Only the specified servers." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18441 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18478 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12426 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:709 +msgid "OOB Values (-o)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19123 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19160 #: src/tachyon/tabs/updates/initController.ts:1345 #: src/tachyon/tabs/updates/initController.ts:1384 msgid "Open" @@ -4387,62 +4543,62 @@ msgstr "" msgid "Open priority settings and enter a display name" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12428 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13110 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:31 msgid "Open Project Page" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17298 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17980 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:324 msgid "Operation completed successfully!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17424 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18106 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:483 msgid "Operation failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17125 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17180 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17807 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17862 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:110 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:172 msgid "Operation in progress..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17166 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17848 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:157 msgid "Operation log" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3654 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3657 #: src/tachyon/methods/shell/index.ts:663 msgid "Operation log is not available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17162 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17844 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:152 msgid "Operation started. Waiting for log output..." msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:1066 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3520 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3588 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3523 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3591 #: src/helpers/withTimeout.ts:7 #: src/tachyon/methods/shell/index.ts:489 #: src/tachyon/methods/shell/index.ts:577 msgid "Operation timed out" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:672 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:697 msgid "Optimization" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13678 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14360 #: src/tachyon/tabs/diagnostic/initController.ts:1100 msgid "Optimize AWG MTU" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13670 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14352 #: src/tachyon/tabs/diagnostic/initController.ts:1092 msgid "Optimize RAM memory" msgstr "" @@ -4456,13 +4612,13 @@ msgstr "" msgid "Optional — leave empty for default" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:950 -msgid "Optional for local LLM" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12656 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:972 +msgid "Optional context (e.g. \"Rostelecom, YouTube 4K buffering is slow\")..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11913 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:256 -msgid "Optional notes for AI (e.g. \"Rostelecom, YouTube 4K stream is slow\")..." +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1011 +msgid "Optional for local LLM" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8743 @@ -4481,7 +4637,7 @@ msgstr "" msgid "Or paste hosts file content:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8252 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8338 #: src/tachyon/tabs/dashboard/initController.ts:1985 msgid "Other peers" msgstr "" @@ -4555,9 +4711,34 @@ msgstr "" msgid "Path must end with cache.db" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14976 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14977 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15520 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11889 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:89 +msgid "Pattern Builder" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12477 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:763 +msgid "Patterns reset to defaults!" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4154 +#: src/tachyon/methods/shell/index.ts:1329 +msgid "Patterns reset to factory defaults" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4130 +#: src/tachyon/methods/shell/index.ts:1300 +msgid "Patterns saved successfully" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12463 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:749 +msgid "Patterns saved successfully!" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15658 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15659 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16202 #: src/tachyon/tabs/monitoring/initController.ts:746 #: src/tachyon/tabs/monitoring/render.ts:80 #: src/tachyon/tabs/monitoring/render.ts:81 @@ -4592,20 +4773,20 @@ msgstr "" msgid "PEM-encoded client private key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5406 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5492 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:390 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:400 #: src/tachyon/tabs/diagnostic/diagnostic.store.ts:63 msgid "Pending" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10863 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10949 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:98 msgid "Pending..." msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1155 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1208 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1216 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1269 msgid "Per-Device Routing" msgstr "" @@ -4613,7 +4794,7 @@ msgstr "" msgid "Periodically check the current level and switch to a faster server even when the current one works." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1842 msgid "Periodically checks if the proxy is responding. Restarts Tachyon after consecutive failures." msgstr "" @@ -4622,7 +4803,7 @@ msgstr "" msgid "Persistent Keepalive" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1915 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1919 msgid "Persistent Smart Detect" msgstr "" @@ -4635,11 +4816,16 @@ msgstr "" msgid "Pin P2P isolation to the torrent client's own ports, comma separated. Each entry is \"proto\", \"proto:port\" or \"proto:port-port\" (tcp/udp). Without a port the whole protocol is routed direct." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2209 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12516 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:811 +msgid "Please specify strategy name and arguments" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2213 msgid "Polling Interval (seconds)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2222 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2226 msgid "Polling interval must be at least 1 second" msgstr "" @@ -4647,7 +4833,7 @@ msgstr "" msgid "Port cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9383 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9469 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:19 msgid "Port conflict" msgstr "" @@ -4678,7 +4864,7 @@ msgstr "" msgid "Ports must be between 1 and 65535" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1814 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1818 msgid "Pre-built index of Tachyon documentation chunks. When enabled, AI Doctor searches relevant docs before generating a diagnosis." msgstr "" @@ -4714,7 +4900,7 @@ msgstr "" msgid "Preshared Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1875 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1879 msgid "Prevents multiple reload_firewall calls within 120 seconds to avoid connection drops." msgstr "" @@ -4725,14 +4911,14 @@ msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2349 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2350 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7866 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7952 #: src/tachyon/tabs/dashboard/initController.ts:1494 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:536 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:537 msgid "Priority details" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7816 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7902 #: src/tachyon/tabs/dashboard/initController.ts:1431 msgid "Priority details are unavailable" msgstr "" @@ -4756,7 +4942,7 @@ msgstr "" msgid "Private Key" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:625 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:650 msgid "Protection" msgstr "" @@ -4767,39 +4953,39 @@ msgstr "" msgid "Protocol" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11886 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:189 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12036 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:265 msgid "Provider Global Default" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10809 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10895 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:29 msgid "Proxy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13882 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14564 #: src/tachyon/tabs/diagnostic/initController.ts:1338 msgid "Proxy / DPI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1849 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1853 msgid "Proxy Fail Threshold" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1843 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1847 msgid "Proxy Health Check Interval (s)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1855 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1859 msgid "Proxy Health Check URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7335 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7421 #: src/tachyon/tabs/dashboard/initController.ts:817 msgid "Proxy link is unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2306 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2310 msgid "Proxy Section for Bot" msgstr "" @@ -4811,7 +4997,7 @@ msgstr "" msgid "PSK" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9398 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9484 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2690 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:40 msgid "Public host" @@ -4826,6 +5012,11 @@ msgstr "" msgid "QUIC (HTTP/3)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12706 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1029 +msgid "RAG Knowledge Base + Live ISP Probe Context" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9542 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9561 msgid "RDP" @@ -4863,31 +5054,31 @@ msgstr "" msgid "Reality short ID must contain 1-8 hex digits" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13657 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14339 #: src/tachyon/tabs/diagnostic/initController.ts:1079 msgid "Rebuild firewall rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18460 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19142 #: src/tachyon/tabs/updates/initController.ts:1365 msgid "Rebuilt release" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13727 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14409 #: src/tachyon/tabs/diagnostic/initController.ts:1163 msgid "Recommended Quick Fixes:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1935 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1939 msgid "Reconnect Threshold" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13663 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14345 #: src/tachyon/tabs/diagnostic/initController.ts:1085 msgid "Reconnect WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1882 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1886 msgid "Records proxy/DNS latency and health status in hourly buckets for analysis." msgstr "" @@ -4900,12 +5091,12 @@ msgstr "" msgid "Refill" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13829 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14511 #: src/tachyon/tabs/diagnostic/initController.ts:1280 msgid "Refresh" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13810 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14492 #: src/tachyon/tabs/diagnostic/initController.ts:1259 msgid "Refresh Device List" msgstr "" @@ -4918,17 +5109,17 @@ msgstr "" msgid "Regular expression must not contain spaces or commas" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18240 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18922 #: src/tachyon/tabs/updates/initController.ts:1107 msgid "Reinstall" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17318 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18000 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:349 msgid "Reload now" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17350 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18032 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:390 msgid "Reloading..." msgstr "" @@ -4937,12 +5128,12 @@ msgstr "" msgid "Remote Hosts Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17298 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17980 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:323 msgid "Removal completed successfully!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18206 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18888 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7927 #: src/tachyon/tabs/updates/initController.ts:1061 msgid "Remove" @@ -4960,7 +5151,7 @@ msgstr "" msgid "Remove the specified servers from this level." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17129 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17811 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:114 msgid "Removing" msgstr "" @@ -4973,14 +5164,14 @@ msgstr "" msgid "Reset" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13677 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14359 #: src/tachyon/tabs/diagnostic/initController.ts:1099 msgid "Reset Bootstrap DNS" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:389 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:424 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1679 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1683 msgid "Reset Settings" msgstr "" @@ -4992,7 +5183,7 @@ msgstr "" msgid "Resolve domain names before routing so sing-box can use real destination IPs." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13664 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14346 #: src/tachyon/tabs/diagnostic/initController.ts:1086 msgid "Resolve gateway" msgstr "" @@ -5037,32 +5228,32 @@ msgstr "" msgid "Response payload (I2)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13658 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14340 #: src/tachyon/tabs/diagnostic/initController.ts:1080 msgid "Restart dnsmasq" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13667 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14349 #: src/tachyon/tabs/diagnostic/initController.ts:1089 msgid "Restart firewall" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13668 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14350 #: src/tachyon/tabs/diagnostic/initController.ts:1090 msgid "Restart network" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13661 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14343 #: src/tachyon/tabs/diagnostic/initController.ts:1083 msgid "Restart sing-box DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10484 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10570 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:64 msgid "Restart Tachyon" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13669 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14351 #: src/tachyon/tabs/diagnostic/initController.ts:1091 msgid "Restart Zapret/ByeDPI" msgstr "" @@ -5077,22 +5268,22 @@ msgstr "" msgid "Restore" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13662 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14344 #: src/tachyon/tabs/diagnostic/initController.ts:1084 msgid "Restore config backup" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10562 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14107 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14130 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10648 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14789 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14812 #: src/tachyon/tabs/diagnostic/initController.ts:1603 #: src/tachyon/tabs/diagnostic/initController.ts:1627 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:142 msgid "Restore Native Internet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13674 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14036 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14356 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14718 #: src/tachyon/tabs/diagnostic/initController.ts:1096 #: src/tachyon/tabs/diagnostic/initController.ts:1516 msgid "Restore Native Internet (Stop Tachyon)" @@ -5102,18 +5293,18 @@ msgstr "" msgid "Restore Snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1680 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1684 msgid "Restores the Tachyon factory defaults: all rules, subscriptions, custom DNS servers and other options will be lost." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14039 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14134 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14721 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14816 #: src/tachyon/tabs/diagnostic/initController.ts:1519 #: src/tachyon/tabs/diagnostic/initController.ts:1631 msgid "Restoring native direct internet (stopping Tachyon)..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15520 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16202 #: src/tachyon/tabs/monitoring/initController.ts:746 msgid "Resume updates" msgstr "" @@ -5122,9 +5313,9 @@ msgstr "" msgid "Return NXDOMAIN for blocked domains (recommended). When enabled, blocked domains are not resolved at all. When disabled, only direct connections are rejected." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11159 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15629 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15680 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11245 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16311 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16362 #: src/tachyon/tabs/monitoring/initController.ts:880 #: src/tachyon/tabs/monitoring/initController.ts:943 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:444 @@ -5135,7 +5326,7 @@ msgstr "" msgid "Route all non-local LAN traffic through the tailnet exit node instead of the proxy engines." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2307 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2311 msgid "Route bot API requests through this section. Leave empty to use the default mixed proxy." msgstr "" @@ -5147,7 +5338,7 @@ msgstr "" msgid "Route requests to this DNS server through another section." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13888 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14570 #: src/tachyon/tabs/diagnostic/initController.ts:1345 msgid "Route via Proxy" msgstr "" @@ -5160,9 +5351,9 @@ msgstr "" msgid "Routing Rule Tracer" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9451 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9460 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9479 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9537 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9546 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9565 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:103 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:114 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:144 @@ -5198,8 +5389,8 @@ msgstr "" msgid "Rule Sets (.srs / .json)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11887 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:190 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12037 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:266 msgid "Rule:" msgstr "" @@ -5209,81 +5400,76 @@ msgstr "" msgid "Rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9594 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9680 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:79 msgid "Rules mangle counters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9589 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9675 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:74 msgid "Rules mangle exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9604 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9690 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:89 msgid "Rules mangle output counters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9599 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9685 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:84 msgid "Rules mangle output exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9614 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9700 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:99 msgid "Rules proxy counters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9609 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:94 msgid "Rules proxy exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10552 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10638 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:132 msgid "Run AI Doctor" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10794 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10880 #: src/tachyon/tabs/diagnostic/partials/renderRunAction.ts:17 msgid "Run Diagnostic" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10542 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10628 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:122 msgid "Run doctor repair" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12538 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13220 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:301 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2068 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2069 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2072 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2073 #: src/tachyon/methods/custom/getDashboardSections.ts:1649 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:618 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:135 msgid "Running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2372 -msgid "Running diagnostics…" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12746 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1075 +msgid "Running benchmarks..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12109 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:481 -msgid "Running initial strategy probe..." +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2376 +msgid "Running diagnostics…" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9246 msgid "Russia (ru)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11850 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:146 -msgid "RuTracker (HTTP/HTTPS)" -msgstr "" - #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:27 msgid "Sat" msgstr "" @@ -5294,19 +5480,19 @@ msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3669 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:672 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1200 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1261 msgid "Save" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1694 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1698 msgid "Save a snapshot of the working config and restore it later if something breaks." msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1002 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1063 msgid "Save AI Watchdog Settings" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1140 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1201 msgid "Save Smart Detect Settings" msgstr "" @@ -5315,10 +5501,10 @@ msgstr "" msgid "Save Snapshot" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:518 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1000 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1140 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1200 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:543 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1061 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1201 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1261 msgid "Saving…" msgstr "" @@ -5330,22 +5516,23 @@ msgstr "" msgid "Schedule Rule" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12047 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:409 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12198 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:451 msgid "Score" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14953 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15635 #: src/tachyon/tabs/monitoring/render.ts:57 msgid "Search" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11118 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11204 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:397 msgid "Search domain or service..." msgstr "" -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:244 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12027 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:254 msgid "Search Mode" msgstr "" @@ -5357,11 +5544,11 @@ msgstr "" msgid "Secret key for authenticating remote access to YACD when WAN access is enabled." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1719 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1723 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:706 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:731 msgid "Secret token for WRITE requests" msgstr "" @@ -5377,15 +5564,15 @@ msgstr "" msgid "Section name" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:799 -msgid "Section name for WARP registration proxy. Leave empty to use the default service mixed proxy." +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:860 +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 "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10231 msgid "Section Rules Content" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1127 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1188 msgid "Section test order (checked = active, drag rows with △▽):" msgstr "" @@ -5402,7 +5589,7 @@ msgstr "" msgid "Security" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7624 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7710 #: src/tachyon/tabs/dashboard/initController.ts:1185 msgid "Select" msgstr "" @@ -5440,7 +5627,7 @@ msgstr "" msgid "Select active days. If none selected, the rule applies every day." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1744 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1748 msgid "Select AI LLM provider for diagnostics" msgstr "" @@ -5456,7 +5643,7 @@ msgstr "" msgid "Select an intermediate section" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1962 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1966 msgid "Select and order the sections through which blocked domains are tested. Checked sections are tried top-to-bottom." msgstr "" @@ -5496,7 +5683,7 @@ msgstr "" msgid "Select Sections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7834 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7920 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3146 #: src/tachyon/tabs/dashboard/initController.ts:1454 msgid "Select the fastest node" @@ -5522,8 +5709,8 @@ msgstr "" msgid "Select whether to disable the target during the schedule or enable it ONLY during the schedule." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7708 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7820 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7794 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7906 #: src/tachyon/tabs/dashboard/initController.ts:1289 #: src/tachyon/tabs/dashboard/initController.ts:1440 msgid "Selected" @@ -5538,24 +5725,24 @@ msgstr "" msgid "Selector and URLTest outbounds must contain a non-empty outbounds array" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11588 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11674 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:67 msgid "Send" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2296 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2300 msgid "Send a Telegram notification if a potential DNS leak is detected." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2231 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2235 msgid "Send a Telegram notification if sing-box or nftables rules crash and get auto-restored." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2283 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2287 msgid "Send a Telegram notification if SSL/TLS certificates are close to expiration." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2244 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2248 msgid "Send a Telegram notification if the Tachyon service is restarted by the watchdog." msgstr "" @@ -5563,14 +5750,19 @@ msgstr "" msgid "Send a Telegram notification to admins when a blocked site is accessed. Requires the Telegram bot to be enabled." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2257 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2261 msgid "Send a Telegram notification when a URLTest group switches to a new server." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2270 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2274 msgid "Send a Telegram notification when proxy subscriptions are successfully updated." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12352 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:631 +msgid "Sequence Overlaps (seqovl)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:454 msgid "Server" msgstr "" @@ -5642,7 +5834,7 @@ msgstr "" msgid "Server Public Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11656 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11742 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:148 msgid "Server unavailable" msgstr "" @@ -5664,21 +5856,21 @@ msgstr "" msgid "Servers on dashboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11154 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11240 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:439 msgid "Service / Target" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3479 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3498 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13348 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3482 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3501 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14030 #: 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 "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10940 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11026 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:186 msgid "Service availability check" msgstr "" @@ -5691,22 +5883,22 @@ msgstr "" msgid "Services & Access" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18029 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:387 msgid "Services are online and ready! Reloading page..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17339 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18021 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:375 msgid "Services are online, waiting for full initialization..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8172 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8258 #: src/tachyon/tabs/dashboard/initController.ts:1887 msgid "Services info" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17372 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18054 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:418 msgid "Services restarted. Click to reload page." msgstr "" @@ -5757,15 +5949,15 @@ msgstr "" msgid "Show servers whose names match the expression." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10610 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14171 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10696 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14853 #: src/tachyon/tabs/diagnostic/initController.ts:1677 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:190 msgid "Show sing-box config" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14182 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14189 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14864 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14871 #: src/tachyon/tabs/diagnostic/initController.ts:1688 #: src/tachyon/tabs/diagnostic/initController.ts:1695 msgid "Show sing-box config failed" @@ -5775,7 +5967,7 @@ msgstr "" msgid "Show subscription metadata for this source on the dashboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9355 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9441 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:77 msgid "Sing-box autostart disabled" msgstr "" @@ -5784,37 +5976,37 @@ msgstr "" msgid "sing-box endpoint (userspace, default)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9757 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:69 msgid "Sing-box FakeIP DNS does not work" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9757 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:68 msgid "Sing-box FakeIP DNS works" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9340 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9426 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:62 msgid "Sing-box installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9365 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9451 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:87 msgid "Sing-box listening ports" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9360 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9446 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:82 msgid "Sing-box process running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9350 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9436 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:72 msgid "Sing-box service exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9345 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9431 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:67 msgid "Sing-box version is compatible (newer than 1.12.4)" msgstr "" @@ -5839,11 +6031,11 @@ msgstr "" msgid "Skipped loopback:" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1097 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1158 msgid "Smart Detect" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:245 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:270 msgid "Smart Detect settings saved" msgstr "" @@ -5879,8 +6071,8 @@ msgstr "" msgid "Sorts servers in this section by lowest latency in the dashboard." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15641 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15684 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16323 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16366 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10099 #: src/tachyon/tabs/monitoring/initController.ts:892 #: src/tachyon/tabs/monitoring/initController.ts:947 @@ -5908,67 +6100,87 @@ msgstr "" msgid "Specify different files" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12046 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:408 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12197 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:450 msgid "Speed" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12377 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:658 +msgid "Split Modes (dpi-desync)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12383 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:664 +msgid "Split Positions (dpi-desync-split-pos)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12334 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:613 +msgid "Split Positions (pos)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12414 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:697 +msgid "Split Values (-s)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9541 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9560 msgid "SSH" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:122 msgid "Standalone ByeDPI autostart is enabled" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:119 msgid "Standalone ByeDPI is active together with Tachyon ByeDPI rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:120 msgid "Standalone ByeDPI service is active" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9949 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10035 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:123 msgid "Standalone ByeDPI service is inactive" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9779 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:111 msgid "Standalone Zapret is active together with Tachyon Zapret rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9779 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:112 msgid "Standalone Zapret service is active" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9779 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:113 msgid "Standalone Zapret service is inactive" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9867 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9953 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:123 msgid "Standalone Zapret2 autostart is enabled" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9951 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:118 msgid "Standalone Zapret2 is active together with Tachyon Zapret2 rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9867 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9953 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:121 msgid "Standalone Zapret2 service is active" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9867 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9953 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:124 msgid "Standalone Zapret2 service is inactive" msgstr "" @@ -5977,16 +6189,16 @@ msgstr "" msgid "Start" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2050 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2054 msgid "Start bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13656 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14338 #: src/tachyon/tabs/diagnostic/initController.ts:1078 msgid "Start sing-box" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10504 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10590 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:84 msgid "Start Tachyon" msgstr "" @@ -5995,41 +6207,44 @@ msgstr "" msgid "Start Time (HH:MM)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13660 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14342 #: src/tachyon/tabs/diagnostic/initController.ts:1082 msgid "Start watchdog" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1003 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1064 msgid "Start Watchdog first" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:334 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2097 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2101 msgid "Starting…" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8234 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8320 #: src/tachyon/tabs/dashboard/initController.ts:1964 msgid "State" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2451 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11196 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12044 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11282 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:360 -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:465 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:490 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:670 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:406 msgid "Status" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12194 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:447 +msgid "Status / Suite" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:292 msgid "Stop" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2057 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2061 msgid "Stop bot" msgstr "" @@ -6037,16 +6252,16 @@ msgstr "" msgid "Stop checking when URLTest group is not used. Use sing-box duration format like 1d, 12h or 30m." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10494 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10580 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:74 msgid "Stop Tachyon" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2412 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12550 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13232 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:307 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2074 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2078 #: src/tachyon/methods/custom/getDashboardSections.ts:1653 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:622 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:147 @@ -6054,24 +6269,34 @@ msgid "Stopped" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:348 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2111 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2115 msgid "Stopping…" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1916 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1920 msgid "Store auto-detected domains in /etc instead of /tmp to survive reboots." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12042 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:404 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12189 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:442 msgid "Strategy & Parameters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12258 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:664 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12913 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1275 msgid "Strategy benchmark started" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12637 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:947 +msgid "Strategy deleted" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12490 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:783 +msgid "Strategy Name" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1618 msgid "Strict ECH + DoQ DNS Enforcer" msgstr "" @@ -6094,8 +6319,8 @@ msgstr "" msgid "Subscription info:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3835 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3853 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3856 #: src/tachyon/methods/shell/index.ts:929 #: src/tachyon/methods/shell/index.ts:949 msgid "Subscription update failed" @@ -6113,7 +6338,7 @@ msgstr "" msgid "Subscription URL settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6965 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7051 #: src/tachyon/tabs/dashboard/initController.ts:336 msgid "Subscriptions updated" msgstr "" @@ -6138,37 +6363,37 @@ msgstr "" msgid "Sweden (se)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14353 #: src/tachyon/tabs/diagnostic/initController.ts:1093 msgid "Switch DNS to DoH" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7684 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7770 #: src/tachyon/tabs/dashboard/initController.ts:1254 msgid "Switch to auto-selection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13675 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14357 #: src/tachyon/tabs/diagnostic/initController.ts:1097 msgid "Sync System Time (NTP)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8160 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8246 #: src/tachyon/tabs/dashboard/initController.ts:1874 msgid "System info" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12358 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13040 #: src/tachyon/tabs/diagnostic/partials/renderSystemInfo.ts:24 msgid "System information" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9584 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9670 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:69 msgid "Table exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6267 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6353 #: src/tachyon/services/core.service.ts:52 msgid "Tachyon Error" msgstr "" @@ -6189,7 +6414,7 @@ msgstr "" msgid "Tachyon manages the nfqws2 process lifecycle itself, so daemon mode is not allowed here." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15718 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16400 #: src/tachyon/tabs/monitoring/initController.ts:991 msgid "Tachyon service is stopped. Start the service to display connections." msgstr "" @@ -6203,7 +6428,7 @@ msgstr "" msgid "Tachyon Settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3752 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3755 #: src/tachyon/methods/shell/index.ts:817 msgid "Tachyon update did not complete within the timeout" msgstr "" @@ -6212,57 +6437,57 @@ msgstr "" msgid "Tachyon will not modify your DHCP configuration" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:91 msgid "Tachyon-managed ciadpi runtime has restarted" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:94 msgid "Tachyon-managed ciadpi runtime is not ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:97 msgid "Tachyon-managed ciadpi runtime is not running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:93 msgid "Tachyon-managed ciadpi runtime is ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:87 msgid "Tachyon-managed nfqws runtime is not ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:90 msgid "Tachyon-managed nfqws runtime is not running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:86 msgid "Tachyon-managed nfqws runtime is ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:90 msgid "Tachyon-managed nfqws2 runtime is not ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:93 msgid "Tachyon-managed nfqws2 runtime is not running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:89 msgid "Tachyon-managed nfqws2 runtime is ready" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8229 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8315 #: src/tachyon/tabs/dashboard/initController.ts:1954 msgid "Tailscale" msgstr "" @@ -6275,7 +6500,7 @@ msgstr "" msgid "Tailscale control URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9446 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9532 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:98 msgid "Tailscale endpoint" msgstr "" @@ -6300,33 +6525,33 @@ msgstr "" msgid "Target Scope" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11879 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:180 -msgid "Target Service" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11994 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:217 +msgid "Target Service / Suite" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12358 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:637 +msgid "TCP Window Sizes (wsize)" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:492 msgid "Telegram Bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2169 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2173 msgid "Telegram Bot Token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12438 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13120 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:42 msgid "Telegram Channel" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11851 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:147 -msgid "Telegram Web" -msgstr "" - -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2358 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2387 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2403 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2409 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2362 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2391 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2407 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2413 msgid "Test Connection" msgstr "" @@ -6363,28 +6588,28 @@ msgstr "" msgid "Test servers whose names match the expression." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2345 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2349 msgid "Test Telegram Connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12193 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12846 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1193 msgid "Testing strategy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7711 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7797 #: src/tachyon/tabs/dashboard/initController.ts:1292 msgid "Testing URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10873 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11464 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10959 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11550 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:108 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:797 msgid "Testing..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2369 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2373 msgid "Testing…" msgstr "" @@ -6402,27 +6627,27 @@ msgstr "" msgid "The rule applies to the domain and all its subdomains. Use full:, keyword:, or regex: prefixes for exact match, keyword match, or regular expression." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9934 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10020 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:78 msgid "There are rules using ByeDPI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9759 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:78 msgid "There are rules using Zapret" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9845 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9931 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:81 msgid "There are rules using Zapret2" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11612 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11698 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:97 msgid "Thinking..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14112 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14794 #: src/tachyon/tabs/diagnostic/initController.ts:1608 msgid "This action will stop Tachyon, restore standard dnsmasq/DNS, remove all proxy/anti-censorship firewall rules and restore direct Internet connection through your ISP." msgstr "" @@ -6467,7 +6692,7 @@ msgstr "" msgid "This option requires a value." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8242 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8328 #: src/tachyon/tabs/dashboard/initController.ts:1975 msgid "This router" msgstr "" @@ -6488,9 +6713,9 @@ msgstr "" msgid "Thursday" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15632 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15681 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15815 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16314 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16363 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16497 #: src/tachyon/tabs/monitoring/initController.ts:883 #: src/tachyon/tabs/monitoring/initController.ts:944 #: src/tachyon/tabs/monitoring/initController.ts:1127 @@ -6509,7 +6734,7 @@ msgstr "" msgid "Time skew tolerance" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5904 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5990 #: src/tachyon/helpers/singBoxVariant.ts:64 msgid "tiny" msgstr "" @@ -6527,11 +6752,16 @@ msgstr "" msgid "TLS SNI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2178 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12438 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:721 +msgid "TLS-Rec Bounds (--tlsrec)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2182 msgid "Token is required when the bot is enabled" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7713 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7799 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2657 #: src/tachyon/tabs/dashboard/initController.ts:1294 msgid "Tolerance" @@ -6545,7 +6775,7 @@ msgstr "" msgid "Total lines:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11074 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11160 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:345 msgid "Total targets" msgstr "" @@ -6559,7 +6789,7 @@ msgid "Tracing routing rules..." msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2043 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8136 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8222 #: src/tachyon/tabs/dashboard/initController.ts:1848 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:133 msgid "Traffic" @@ -6577,7 +6807,7 @@ msgstr "" msgid "Traffic of specified protocols (e.g. BitTorrent, QUIC, STUN) will bypass this section." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8148 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8234 #: src/tachyon/tabs/dashboard/initController.ts:1861 msgid "Traffic Total" msgstr "" @@ -6590,7 +6820,7 @@ msgstr "" msgid "Traffic will go through the default route (Direct/Default)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18103 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18785 #: src/tachyon/tabs/updates/initController.ts:922 msgid "Transient connection error" msgstr "" @@ -6625,7 +6855,7 @@ msgstr "" msgid "Transport path must start with /" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12422 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13104 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:25 msgid "Troubleshooting" msgstr "" @@ -6634,8 +6864,8 @@ msgstr "" msgid "Try compatible User-Agent profiles automatically when downloading this subscription" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12045 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:407 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12196 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:449 msgid "TTFB" msgstr "" @@ -6647,6 +6877,16 @@ msgstr "" msgid "TTL value cannot be empty" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12395 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:676 +msgid "TTL Values (dpi-desync-ttl)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12346 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:625 +msgid "TTL Values (ttl)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:23 msgid "Tue" msgstr "" @@ -6659,8 +6899,8 @@ msgstr "" msgid "Turkey (tr)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15626 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15679 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16308 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16361 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1696 #: src/tachyon/tabs/monitoring/initController.ts:877 #: src/tachyon/tabs/monitoring/initController.ts:942 @@ -6671,7 +6911,7 @@ msgstr "" msgid "UDP (Unprotected DNS)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10839 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10925 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:65 msgid "UDP / QUIC protocols" msgstr "" @@ -6694,14 +6934,14 @@ msgstr "" msgid "Unable to validate the NFQWS2 strategy through the backend parser." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7914 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3120 #: src/tachyon/tabs/dashboard/initController.ts:1448 msgid "Unavailability timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10894 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11076 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10980 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11162 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:135 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:347 msgid "Unavailable" @@ -6737,17 +6977,17 @@ msgstr "" msgid "Unexpected standalone token. Use explicit flags such as --name or --name=value." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9939 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10025 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:96 msgid "Unexpected Tachyon-managed ciadpi runtime is running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9764 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:89 msgid "Unexpected Tachyon-managed nfqws runtime is running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9936 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:92 msgid "Unexpected Tachyon-managed nfqws2 runtime is running" msgstr "" @@ -6764,19 +7004,19 @@ msgstr "" msgid "United States (us)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5887 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9388 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9969 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9971 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9972 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9973 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9980 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9982 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9984 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9986 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9989 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9990 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17723 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5973 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9474 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10055 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10057 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10058 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10059 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10066 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10068 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10070 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10072 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10075 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10076 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18405 #: src/tachyon/helpers/singBoxVariant.ts:37 #: src/tachyon/services/systemInfo.service.ts:10 #: src/tachyon/services/systemInfo.service.ts:12 @@ -6793,9 +7033,9 @@ msgstr "" msgid "unknown" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5138 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5224 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:328 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2091 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2095 #: src/tachyon/methods/custom/getDashboardSections.ts:1655 msgid "Unknown" msgstr "" @@ -6810,18 +7050,18 @@ msgstr "" msgid "Unknown country" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5212 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12263 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13453 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13472 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13539 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14080 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5298 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12918 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14135 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14154 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14221 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14762 #: src/tachyon/api.ts:40 #: src/tachyon/tabs/diagnostic/initController.ts:731 #: src/tachyon/tabs/diagnostic/initController.ts:772 #: src/tachyon/tabs/diagnostic/initController.ts:857 #: src/tachyon/tabs/diagnostic/initController.ts:1568 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:669 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1280 msgid "Unknown error" msgstr "" @@ -6851,22 +7091,22 @@ msgstr "" msgid "Up to 10 snapshots are kept; the oldest ones are removed automatically." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18155 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18837 #: src/tachyon/tabs/updates/initController.ts:989 msgid "Update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17673 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18355 #: src/tachyon/tabs/updates/initController.ts:355 msgid "Update is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18448 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19130 #: src/tachyon/tabs/updates/initController.ts:1352 msgid "Update is available for current release" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18429 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:19111 #: src/tachyon/tabs/updates/initController.ts:1331 msgid "Update is available:" msgstr "" @@ -6878,7 +7118,7 @@ msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2114 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2125 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2125 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13666 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14348 #: src/tachyon/tabs/diagnostic/initController.ts:1088 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:224 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:237 @@ -6898,12 +7138,12 @@ msgstr "" msgid "Updates & Downloads" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17131 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17813 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:116 msgid "Updating" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13891 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14573 #: src/tachyon/tabs/diagnostic/initController.ts:1349 msgid "Updating device routing mode..." msgstr "" @@ -6912,16 +7152,16 @@ msgstr "" msgid "Updating lists..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8138 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8150 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8224 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8236 #: src/tachyon/tabs/dashboard/initController.ts:1850 #: src/tachyon/tabs/dashboard/initController.ts:1863 msgid "Uplink" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15638 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15683 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15827 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16320 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16365 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16509 #: src/tachyon/tabs/monitoring/initController.ts:889 #: src/tachyon/tabs/monitoring/initController.ts:946 #: src/tachyon/tabs/monitoring/initController.ts:1141 @@ -6938,7 +7178,7 @@ msgstr "" msgid "URL must use one of the following protocols:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1856 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1860 msgid "URL to test through the proxy (default: Cloudflare 204)." msgstr "" @@ -6960,14 +7200,14 @@ msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2333 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2334 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7734 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7820 #: src/tachyon/tabs/dashboard/initController.ts:1321 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:517 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:518 msgid "URLTest details" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7704 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7790 #: src/tachyon/tabs/dashboard/initController.ts:1280 msgid "URLTest details are unavailable" msgstr "" @@ -6977,7 +7217,7 @@ msgstr "" msgid "URLTest settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1895 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1899 msgid "Use 3-tier check intervals: fast (15s), normal (120s), slow (300s) instead of a single interval." msgstr "" @@ -7060,11 +7300,16 @@ msgstr "" msgid "Use tailnet exit node for LAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9388 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9474 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:25 msgid "Used by" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12525 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:822 +msgid "User custom strategy" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2444 msgid "User-Agent" msgstr "" @@ -7115,7 +7360,7 @@ msgstr "" msgid "Valid" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1902 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1906 msgid "Validates sing-box config before restart to prevent boot loops on broken configs." msgstr "" @@ -7136,7 +7381,7 @@ msgstr "" msgid "Value must not contain control characters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17335 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18017 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:370 msgid "Verifying router and service readiness..." msgstr "" @@ -7149,15 +7394,15 @@ msgstr "" msgid "Video streaming" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10601 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13516 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10687 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14198 #: src/tachyon/tabs/diagnostic/initController.ts:831 #: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:181 msgid "View logs" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13526 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13529 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14208 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14211 #: src/tachyon/tabs/diagnostic/initController.ts:841 #: src/tachyon/tabs/diagnostic/initController.ts:844 msgid "View logs failed" @@ -7175,17 +7420,17 @@ msgstr "" msgid "vless://, vmess://, ss://, trojan://, socks4/5://, hy2/hysteria2:// links" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17314 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17996 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:344 msgid "Waiting for router services to restart..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9424 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9510 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:70 msgid "WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9523 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9609 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:198 msgid "WAN public IP" msgstr "" @@ -7210,11 +7455,11 @@ msgstr "" msgid "WARP Private Key" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:782 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:807 msgid "WARP Proxy Section" msgstr "" -#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:462 +#: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:487 msgid "Watchdog" msgstr "" @@ -7222,7 +7467,7 @@ 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 "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1826 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1830 msgid "Watchdog Status" msgstr "" @@ -7254,7 +7499,7 @@ msgstr "" msgid "When switching to another level, test every server and select the fastest instead of the first working one." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11762 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:171 msgid "Why Discord fails?" msgstr "" @@ -7275,7 +7520,7 @@ msgstr "" msgid "YACD Secret Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7339 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7425 #: src/tachyon/tabs/dashboard/initController.ts:822 msgid "Yes" msgstr "" @@ -7284,65 +7529,55 @@ msgstr "" msgid "You can select Output Network Interface, by default autodetect" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11845 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:141 -msgid "YouTube (GoogleVideo 4K stream)" -msgstr "" - -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11847 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:143 -msgid "YouTube Web (Interface)" -msgstr "" - #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:5648 msgid "Zapret hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS strategies." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9754 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:71 msgid "Zapret package is installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9754 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:72 msgid "Zapret package is not installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9749 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:60 msgid "Zapret provider binary is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9749 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:61 msgid "Zapret provider binary is not available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9774 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:103 msgid "Zapret sing-box outbound is configured" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9774 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:104 msgid "Zapret sing-box outbound is not configured" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11788 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11818 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:71 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:109 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11925 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13004 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:138 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1384 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1385 msgid "Zapret v1 (nfqws)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11786 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11815 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:69 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:104 -#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11924 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13001 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:137 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1379 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:1380 msgid "Zapret v2 (nfqws2)" msgstr "" @@ -7350,32 +7585,32 @@ msgstr "" msgid "Zapret2 hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS2 strategies." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9926 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:74 msgid "Zapret2 package is installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9926 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:75 msgid "Zapret2 package is not installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9921 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:63 msgid "Zapret2 provider binary is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9835 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9921 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:64 msgid "Zapret2 provider binary is not available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9946 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:106 msgid "Zapret2 sing-box outbound is configured" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9860 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9946 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:107 msgid "Zapret2 sing-box outbound is not configured" msgstr "" diff --git a/tachyon/files/usr/bin/tachyon b/tachyon/files/usr/bin/tachyon index 99d13a23..f3f237e6 100755 --- a/tachyon/files/usr/bin/tachyon +++ b/tachyon/files/usr/bin/tachyon @@ -265,6 +265,9 @@ function command_spec(command) { fuzzer_strategies: [ "diagnostics/fuzzer.uc", "strategies", 1 ], fuzzer_generate: [ "diagnostics/fuzzer.uc", "generate", 2 ], fuzzer_ai_synthesize: [ "diagnostics/fuzzer.uc", "ai_synthesize", 4 ], + fuzzer_get_patterns: [ "diagnostics/fuzzer.uc", "get_patterns", 0 ], + fuzzer_save_patterns: [ "diagnostics/fuzzer.uc", "save_patterns", 1 ], + fuzzer_reset_patterns: [ "diagnostics/fuzzer.uc", "reset_patterns", 0 ], generate_warp: [ "service/warp_generator.uc", "", 1 ], package_prerm: [ "service/package.uc", "prerm", 1 ], package_postinst: [ "service/package.uc", "postinst", 0 ], diff --git a/tachyon/files/usr/lib/diagnostics/fuzzer.uc b/tachyon/files/usr/lib/diagnostics/fuzzer.uc index 5497ab35..4d3c7a85 100644 --- a/tachyon/files/usr/lib/diagnostics/fuzzer.uc +++ b/tachyon/files/usr/lib/diagnostics/fuzzer.uc @@ -84,14 +84,117 @@ function validate_strategy_args(engine, args_val) { return true; } -// Target definitions +const PATTERNS_FILE = "/etc/tachyon/fuzzer_patterns.json"; + +const DEFAULT_PATTERNS = { + zapret2: { + splits: [ "1", "2", "3", "midsld", "sniext+4", "1,midsld", "1,sniext+2" ], + foolings: [ "badseq", "md5sig", "badack", "datanoack", "fakeddrop" ], + ttls: [ 2, 3, 4, 5, 6, 8 ], + seqovls: [ "1", "2" ], + wsizes: [ "1" ], + payloads: [ "tls_client_hello", "http_req", "quic_initial" ] + }, + zapret: { + splits: [ "1", "2", "midsld", "sniext+4", "1,midsld" ], + foolings: [ "badseq", "md5sig", "badack", "datanoack" ], + ttls: [ 2, 3, 4, 6, 8 ], + split_modes: [ "split2", "disorder2", "fake,split2", "fake,disorder2" ] + }, + byedpi: { + splits: [ "1", "2", "1+sniext", "midsld" ], + disorders: [ "1", "2" ], + ttls: [ 2, 3, 4, 6, 8 ], + oobs: [ "1", "2" ], + autos: [ "t,r,a,s", "r,s", "t,a" ], + tlsrecs: [ "1+sniext" ], + ipfrags: [ "24" ] + }, + custom_strategies: [] +}; + +function get_patterns_config() { + let custom = read_json_file(PATTERNS_FILE); + if (custom && type(custom) == "object") { + return { + zapret2: custom.zapret2 || DEFAULT_PATTERNS.zapret2, + zapret: custom.zapret || DEFAULT_PATTERNS.zapret, + byedpi: custom.byedpi || DEFAULT_PATTERNS.byedpi, + custom_strategies: custom.custom_strategies || [] + }; + } + return DEFAULT_PATTERNS; +} + +function save_patterns_config(cfg_obj) { + if (!cfg_obj || type(cfg_obj) != "object") { + print(sprintf("%J\n", { success: false, error: "Invalid patterns configuration object" })); + return; + } + common.ensure_dir("/etc/tachyon"); + write_json_file(PATTERNS_FILE, cfg_obj); + print(sprintf("%J\n", { success: true, message: "Patterns configuration saved successfully" })); +} + +function reset_patterns_config() { + try { fs.unlink(PATTERNS_FILE); } catch(e) {} + print(sprintf("%J\n", { success: true, message: "Patterns configuration reset to factory defaults", patterns: DEFAULT_PATTERNS })); +} + +// Target Suites & Definitions +const TARGET_SUITES = { + youtube_suite: { + name: "YouTube Full Suite (Web + Static CDN + 4K Stream)", + urls: [ + { name: "Web Interface", url: "https://www.youtube.com", weight: 30 }, + { name: "Static Assets (i.ytimg)", url: "https://i.ytimg.com/generate_204", weight: 20 }, + { name: "GoogleVideo Stream Chunk", url: "https://rr1---sn-4g5ednss.googlevideo.com/generate_204", weight: 50 } + ] + }, + discord_suite: { + name: "Discord Full Suite (API + WSS Gateway + CDN)", + urls: [ + { name: "API Gateway", url: "https://discord.com/api/v9/gateway", weight: 40 }, + { name: "Media Attachments CDN", url: "https://media.discordapp.net/", weight: 30 }, + { name: "Global Assets CDN", url: "https://cdn.discordapp.com/generate_204", weight: 30 } + ] + }, + instagram_suite: { + name: "Instagram / Meta Suite (Web + Static CDN)", + urls: [ + { name: "Web Interface", url: "https://www.instagram.com", weight: 50 }, + { name: "CDN Static Assets", url: "https://static.cdninstagram.com/rsrc.php/v3/y4/r/dukNmT7A9dd.webp", weight: 50 } + ] + }, + telegram_suite: { + name: "Telegram Suite (Web + API)", + urls: [ + { name: "Web App", url: "https://web.telegram.org", weight: 50 }, + { name: "Bot API", url: "https://api.telegram.org", weight: 50 } + ] + }, + rutracker_suite: { + name: "RuTracker Suite (HTTP / HTTPS)", + urls: [ + { name: "Main Portal", url: "https://rutracker.org", weight: 60 }, + { name: "CDN Static Logo", url: "https://static.rutracker.cc/logo/logo-3.png", weight: 40 } + ] + } +}; + const TARGET_URLS = { + youtube_suite: "https://www.youtube.com", youtube: "https://www.youtube.com", youtube_web: "https://www.youtube.com", + discord_suite: "https://discord.com/api/v9/gateway", discord: "https://discord.com/api/v9/gateway", + instagram_suite: "https://www.instagram.com", instagram: "https://www.instagram.com", + rutracker_suite: "https://rutracker.org", rutracker: "https://rutracker.org", - telegram: "https://web.telegram.org" + telegram_suite: "https://web.telegram.org", + telegram: "https://web.telegram.org", + quic_http3: "https://www.google.com" }; // Strategy Matrices (Expanded Production Suite: 38 strategies across engines) @@ -385,6 +488,8 @@ const STRATEGIES_BYEDPI = [ ]; function generate_combinatorial_zapret2() { + let cfg = get_patterns_config(); + let p = cfg.zapret2 || DEFAULT_PATTERNS.zapret2; let list = []; let seen = {}; @@ -394,7 +499,7 @@ function generate_combinatorial_zapret2() { if (!validate_strategy_args("zapret2", args)) return; seen[args] = true; push(list, { - id: sprintf("z2_gen_%d", length(list) + 1), + id: sprintf("z2_comb_%d", length(list) + 1), name: name, engine: "zapret2", args: args, @@ -404,24 +509,41 @@ function generate_combinatorial_zapret2() { for (let s in STRATEGIES_ZAPRET2) add(s.name, s.args, s.description); - let positions = ["1", "midsld", "sniext+4", "1,midsld", "1,sniext+2"]; - let foolings = ["badseq", "md5sig", "badack"]; - let ttls = [3, 4, 5, 8]; + if (cfg.custom_strategies && length(cfg.custom_strategies) > 0) { + for (let cs in cfg.custom_strategies) { + if (cs && cs.engine == "zapret2" && cs.args) { + add(cs.name || "Custom Zapret v2", cs.args, cs.description || "User custom strategy"); + } + } + } - for (let pos in positions) { + let splits = p.splits || [ "1", "2", "3", "midsld", "sniext+4", "1,midsld", "1,sniext+2" ]; + let foolings = p.foolings || [ "badseq", "md5sig", "badack", "datanoack", "fakeddrop" ]; + let ttls = p.ttls || [ 2, 3, 4, 5, 6, 8 ]; + let seqovls = p.seqovls || [ "1", "2" ]; + let wsizes = p.wsizes || [ "1" ]; + + for (let pos in splits) { for (let fooling in foolings) { add(sprintf("Multisplit (pos=%s, %s)", pos, fooling), sprintf("--lua-desync=multisplit:pos=%s:fooling=%s", pos, fooling), "Multisplit position and fooling method"); - add(sprintf("Multisplit + SeqOvl (pos=%s, %s)", pos, fooling), - sprintf("--lua-desync=multisplit:pos=%s:seqovl=1:fooling=%s", pos, fooling), - "Multisplit with sequence overlap"); + for (let sq in seqovls) { + add(sprintf("Multisplit + SeqOvl %s (pos=%s, %s)", sq, pos, fooling), + sprintf("--lua-desync=multisplit:pos=%s:seqovl=%s:fooling=%s", pos, sq, fooling), + "Multisplit with sequence overlap"); + } + for (let w in wsizes) { + add(sprintf("Multisplit + Window %s (pos=%s, %s)", w, pos, fooling), + sprintf("--lua-desync=multisplit:pos=%s:wsize=%s:fooling=%s", pos, w, fooling), + "Multisplit with TCP window size clamping"); + } } } for (let ttl in ttls) { - for (let fooling in ["badseq", "md5sig", "badack"]) { - for (let pos in ["1", "midsld", "1,midsld"]) { + for (let fooling in foolings) { + for (let pos in splits) { add(sprintf("Fake (TTL=%d, %s) + Multisplit (pos=%s)", ttl, fooling, pos), sprintf("--lua-desync=fake:ttl=%d:fooling=%s --lua-desync=multisplit:pos=%s", ttl, fooling, pos), "Low-TTL fake injection followed by multisplit payload"); @@ -436,6 +558,8 @@ function generate_combinatorial_zapret2() { } function generate_combinatorial_zapret() { + let cfg = get_patterns_config(); + let p = cfg.zapret || DEFAULT_PATTERNS.zapret; let list = []; let seen = {}; @@ -455,10 +579,18 @@ function generate_combinatorial_zapret() { for (let s in STRATEGIES_ZAPRET) add(s.name, s.args, s.description); - let modes = ["split2", "disorder2", "fake,split2", "fake,disorder2"]; - let positions = ["1", "2", "midsld"]; - let foolings = ["badseq", "md5sig", "badack"]; - let ttls = [4, 6, 8]; + if (cfg.custom_strategies && length(cfg.custom_strategies) > 0) { + for (let cs in cfg.custom_strategies) { + if (cs && cs.engine == "zapret" && cs.args) { + add(cs.name || "Custom Zapret v1", cs.args, cs.description || "User custom strategy"); + } + } + } + + let modes = p.split_modes || [ "split2", "disorder2", "fake,split2", "fake,disorder2" ]; + let positions = p.splits || [ "1", "2", "midsld" ]; + let foolings = p.foolings || [ "badseq", "md5sig", "badack", "datanoack" ]; + let ttls = p.ttls || [ 2, 3, 4, 6, 8 ]; for (let mode in modes) { for (let pos in positions) { @@ -485,6 +617,8 @@ function generate_combinatorial_zapret() { } function generate_combinatorial_byedpi() { + let cfg = get_patterns_config(); + let p = cfg.byedpi || DEFAULT_PATTERNS.byedpi; let list = []; let seen = {}; @@ -504,11 +638,21 @@ function generate_combinatorial_byedpi() { for (let s in STRATEGIES_BYEDPI) add(s.name, s.args, s.description); - let splits = ["1", "2", "1+sniext", "midsld"]; - let disorders = ["1", "2"]; - let ttls = [3, 4, 6, 8]; - let oobs = ["1", "2"]; - let autos = ["t,r,a,s", "r,s", "t,a"]; + if (cfg.custom_strategies && length(cfg.custom_strategies) > 0) { + for (let cs in cfg.custom_strategies) { + if (cs && cs.engine == "byedpi" && cs.args) { + add(cs.name || "Custom ByeDPI", cs.args, cs.description || "User custom strategy"); + } + } + } + + let splits = p.splits || [ "1", "2", "1+sniext", "midsld" ]; + let disorders = p.disorders || [ "1", "2" ]; + let ttls = p.ttls || [ 2, 3, 4, 6, 8 ]; + let oobs = p.oobs || [ "1", "2" ]; + let autos = p.autos || [ "t,r,a,s", "r,s", "t,a" ]; + let tlsrecs = p.tlsrecs || [ "1+sniext" ]; + let ipfrags = p.ipfrags || [ "24" ]; for (let a in autos) { for (let o in oobs) { @@ -536,12 +680,16 @@ function generate_combinatorial_byedpi() { } for (let s in splits) { - add(sprintf("TLS-Rec (1+sniext) + Split=%s", s), - sprintf("--tlsrec 1+sniext --split %s", s), - "TLS record boundary fragmentation"); - add(sprintf("IP-Frag (24) + Split=%s", s), - sprintf("--ip-frag 24 --split %s", s), - "IP packet fragmentation"); + for (let tr in tlsrecs) { + add(sprintf("TLS-Rec (%s) + Split=%s", tr, s), + sprintf("--tlsrec %s --split %s", tr, s), + "TLS record boundary fragmentation"); + } + for (let ipf in ipfrags) { + add(sprintf("IP-Frag (%s) + Split=%s", ipf, s), + sprintf("--ip-frag %s --split %s", ipf, s), + "IP packet fragmentation"); + } } return list; @@ -550,17 +698,62 @@ function generate_combinatorial_byedpi() { function get_strategies_for_engine(engine, mode) { engine = lc(as_string(engine)); mode = lc(trim(as_string(mode || "presets"))); + let cfg = get_patterns_config(); + + if (mode == "custom" || mode == "user") { + let custom_list = []; + for (let cs in cfg.custom_strategies) { + if (cs && (engine == "all" || cs.engine == engine) && cs.args) { + push(custom_list, { + id: cs.id || sprintf("custom_%d", length(custom_list) + 1), + name: cs.name || "Custom Strategy", + engine: cs.engine || engine, + args: cs.args, + description: cs.description || "" + }); + } + } + return custom_list; + } if (mode == "combinatorial" || mode == "deep_fuzz" || mode == "deep") { if (engine == "zapret2") return generate_combinatorial_zapret2(); if (engine == "zapret") return generate_combinatorial_zapret(); if (engine == "byedpi") return generate_combinatorial_byedpi(); + if (engine == "all") { + let combined = []; + for (let s in generate_combinatorial_zapret2()) push(combined, s); + for (let s in generate_combinatorial_zapret()) push(combined, s); + for (let s in generate_combinatorial_byedpi()) push(combined, s); + return combined; + } } - if (engine == "zapret2") return STRATEGIES_ZAPRET2; - if (engine == "zapret") return STRATEGIES_ZAPRET; - if (engine == "byedpi") return STRATEGIES_BYEDPI; - return []; + let base = []; + if (engine == "zapret2") base = STRATEGIES_ZAPRET2; + else if (engine == "zapret") base = STRATEGIES_ZAPRET; + else if (engine == "byedpi") base = STRATEGIES_BYEDPI; + else if (engine == "all") { + for (let s in STRATEGIES_ZAPRET2) push(base, s); + for (let s in STRATEGIES_ZAPRET) push(base, s); + for (let s in STRATEGIES_BYEDPI) push(base, s); + } + + let result = []; + for (let s in base) push(result, s); + for (let cs in cfg.custom_strategies) { + if (cs && (engine == "all" || cs.engine == engine) && cs.args) { + push(result, { + id: cs.id || sprintf("custom_%d", length(result) + 1), + name: cs.name || "Custom Strategy", + engine: cs.engine || engine, + args: cs.args, + description: cs.description || "User custom strategy" + }); + } + } + + return result; } function resolve_target_url(target_key, custom_url) { @@ -569,6 +762,19 @@ function resolve_target_url(target_key, custom_url) { return TARGET_URLS[target_key] || TARGET_URLS.youtube; } +function resolve_target_urls_list(target_key, custom_url) { + if (custom_url && custom_url != "") { + return [ { name: "Custom Target", url: custom_url, weight: 100 } ]; + } + target_key = as_string(target_key || "youtube_suite"); + let suite = TARGET_SUITES[target_key]; + if (suite && suite.urls && length(suite.urls) > 0) { + return suite.urls; + } + let single = TARGET_URLS[target_key] || TARGET_URLS.youtube; + return [ { name: target_key, url: single, weight: 100 } ]; +} + function ensure_state_dir() { common.ensure_dir(STATE_DIR); } @@ -578,6 +784,17 @@ function save_fuzzer_state(state) { common.write_json_file(STATE_FILE, state); } +function safe_json_parse(str) { + if (!str || str == "") return null; + let obj = null; + try { + obj = json(str); + } catch (e) { + obj = null; + } + return obj; +} + function query_llm(provider, api_key, custom_url, prompt_text, model_override) { provider = lc(trim(as_string(provider || "openai"))); model_override = trim(as_string(model_override || "")); @@ -599,7 +816,7 @@ function query_llm(provider, api_key, custom_url, prompt_text, model_override) { let pipe = fs.popen(cmd, "r"); let output = pipe ? pipe.read("all") : ""; if (pipe) pipe.close(); - let parsed = common.json_parse(output); + let parsed = safe_json_parse(output); if (parsed && parsed.content && type(parsed.content) == "array" && length(parsed.content) > 0) { return parsed.content[0].text; } @@ -644,7 +861,7 @@ function query_llm(provider, api_key, custom_url, prompt_text, model_override) { let pipe = fs.popen(cmd, "r"); let output = pipe ? pipe.read("all") : ""; if (pipe) pipe.close(); - let parsed = common.json_parse(output); + let parsed = safe_json_parse(output); if (parsed && parsed.choices && type(parsed.choices) == "array" && length(parsed.choices) > 0) { let msg = parsed.choices[0].message; if (msg && msg.content) { @@ -657,18 +874,18 @@ function query_llm(provider, api_key, custom_url, prompt_text, model_override) { function parse_llm_json(raw_text) { raw_text = trim(as_string(raw_text)); if (raw_text == "") return null; - let direct = common.json_parse(raw_text); + let direct = safe_json_parse(raw_text); if (direct && type(direct) == "object") return direct; let m = match(raw_text, /```json\s*([\s\S]*?)\s*```/); if (m && m[1]) { - let parsed = common.json_parse(m[1]); + let parsed = safe_json_parse(m[1]); if (parsed && type(parsed) == "object") return parsed; } m = match(raw_text, /\{[\s\S]*\}/); if (m && m[0]) { - let parsed = common.json_parse(m[0]); + let parsed = safe_json_parse(m[0]); if (parsed && type(parsed) == "object") return parsed; } return null; @@ -682,11 +899,11 @@ function synthesize_ai_strategies(engine, target, custom_url, user_prompt) { } engine = lc(as_string(engine || "zapret2")); - target = trim(as_string(target || "youtube")); + target = trim(as_string(target || "youtube_suite")); user_prompt = trim(as_string(user_prompt || "")); let target_url = resolve_target_url(target, custom_url); - let baseline = run_probe(engine, "", target_url); + let baseline = run_probe(engine, "", target, custom_url); let query_text = sprintf("%s %s %s", engine, target, user_prompt); let rag_docs = rag.retrieve(query_text, 4); @@ -800,7 +1017,7 @@ function get_fuzzer_state() { running: false, job_id: null, engine: "zapret2", - target: "youtube", + target: "youtube_suite", progress_pct: 0, current_index: 0, total_strategies: 0, @@ -834,14 +1051,24 @@ function cleanup_temp_daemons() { } function parse_curl_output(output, result) { + result = result || {}; output = trim(as_string(output)); if (output == "") { + result.success = false; + result.http_code = 0; + result.handshake_ms = 0; + result.ttfb_ms = 0; + result.speed_kbps = 0; + result.score = 0; result.error = "Probe timeout or connection refused"; return result; } let parts = split(output, "\t"); if (length(parts) < 4) { + result.success = false; + result.http_code = 0; + result.score = 0; result.error = "Malformed probe metrics output"; return result; } @@ -862,6 +1089,7 @@ function parse_curl_output(output, result) { let latency_score = max(0, 1000 - result.ttfb_ms); let speed_score = int(result.speed_kbps / 10.0); result.score = base_score + latency_score + speed_score; + result.error = ""; } else { result.success = false; result.score = 0; @@ -871,9 +1099,12 @@ function parse_curl_output(output, result) { return result; } -function run_probe(engine, args_str, target_url) { +function run_probe(engine, args_str, target_key, custom_url) { cleanup_temp_daemons(); + let urls_list = resolve_target_urls_list(target_key, custom_url); + let total_urls = length(urls_list); + let result = { success: false, http_code: 0, @@ -881,10 +1112,12 @@ function run_probe(engine, args_str, target_url) { ttfb_ms: 0, speed_kbps: 0, score: 0, - error: "" + error: "", + sub_probes: [] }; engine = lc(as_string(engine)); + let is_udp = index(args_str, "--filter-udp") >= 0 || index(args_str, "--dpi-desync-any-protocol") >= 0 || target_key == "quic_http3"; if (engine == "byedpi") { let bin = get_byedpi_bin(); @@ -898,19 +1131,55 @@ function run_probe(engine, args_str, target_url) { system(common.background_command_with_pid(spawn_cmd, ">/dev/null", ">" + shell_quote(pid_path))); system("sleep 0.15"); - let curl_cmd = sprintf( - "curl -x socks5h://127.0.0.1:%d -so /dev/null -w '%%{http_code}\\t%%{time_appconnect}\\t%%{time_starttransfer}\\t%%{speed_download}' -L --connect-timeout 3 --max-time 4 %s 2>/dev/null", - BYEDPI_PORT, - shell_quote(target_url) - ); + let passed_count = 0; + let sum_handshake = 0; + let sum_ttfb = 0; + let max_speed = 0; + let last_http = 0; - let pipe = fs.popen(curl_cmd, "r"); - let output = pipe ? pipe.read("all") : ""; - if (pipe) pipe.close(); + for (let target_item in urls_list) { + let curl_cmd = sprintf( + "curl -x socks5h://127.0.0.1:%d -so /dev/null -w '%%{http_code}\\t%%{time_appconnect}\\t%%{time_starttransfer}\\t%%{speed_download}' -L --connect-timeout 3 --max-time 4 %s 2>/dev/null", + BYEDPI_PORT, + shell_quote(target_item.url) + ); + let pipe = fs.popen(curl_cmd, "r"); + let output = pipe ? pipe.read("all") : ""; + if (pipe) pipe.close(); + + let single_res = parse_curl_output(output, {}); + single_res.target_name = target_item.name; + single_res.url = target_item.url; + push(result.sub_probes, single_res); + + if (single_res.success) { + passed_count++; + sum_handshake += single_res.handshake_ms; + sum_ttfb += single_res.ttfb_ms; + if (single_res.speed_kbps > max_speed) max_speed = single_res.speed_kbps; + last_http = single_res.http_code; + } else if (last_http == 0) { + last_http = single_res.http_code; + } + } cleanup_temp_daemons(); - return parse_curl_output(output, result); + if (passed_count == total_urls) { + result.success = true; + result.http_code = last_http > 0 ? last_http : 200; + result.handshake_ms = int(sum_handshake / double(total_urls)); + result.ttfb_ms = int(sum_ttfb / double(total_urls)); + result.speed_kbps = max_speed; + result.score = 100 + max(0, 1000 - result.ttfb_ms) + int(result.speed_kbps / 10.0); + } else { + result.success = false; + result.http_code = last_http; + result.score = 0; + result.error = sprintf("Failed %d of %d endpoints", total_urls - passed_count, total_urls); + } + + return result; } if (engine == "zapret" || engine == "zapret2") { @@ -933,30 +1202,71 @@ function run_probe(engine, args_str, target_url) { if (is_z2 && index(args_str, "--filter-tcp") < 0 && index(args_str, "--filter-l7") < 0) { filter_prefix = "--filter-tcp=443 --filter-l7=tls --payload=tls_client_hello "; } + if (is_z2 && is_udp && index(args_str, "--filter-udp") < 0) { + filter_prefix += "--filter-udp=443 --payload=quic_initial "; + } let spawn_cmd = sprintf("cd /tmp && %s --qnum=%d --fwmark=%s %s%s%s --pidfile=%s --daemon", bin, qnum, FUZZER_FWMARK, lua_init_flags, filter_prefix, args_str, pid_path); system(common.background_command(spawn_cmd)); system("sleep 0.15"); - // Setup temporary isolated nftables queue for probe with high priority (-200) system("nft add table inet tachyon_fuzzer 2>/dev/null"); system("nft 'add chain inet tachyon_fuzzer output { type filter hook output priority -200 ; }' 2>/dev/null"); system(sprintf("nft add rule inet tachyon_fuzzer output meta mark %s counter return 2>/dev/null", FUZZER_FWMARK)); - system(sprintf("nft 'add rule inet tachyon_fuzzer output meta l4proto tcp tcp dport { 80, 443 } counter queue num %d bypass' 2>/dev/null", qnum)); + if (is_udp) { + system(sprintf("nft 'add rule inet tachyon_fuzzer output meta l4proto { tcp, udp } th dport { 80, 443, 50000-65535 } counter queue num %d bypass' 2>/dev/null", qnum)); + } else { + system(sprintf("nft 'add rule inet tachyon_fuzzer output meta l4proto tcp tcp dport { 80, 443 } counter queue num %d bypass' 2>/dev/null", qnum)); + } - // Execute probe with direct curl - let curl_cmd = sprintf( - "curl -so /dev/null -w '%%{http_code}\\t%%{time_appconnect}\\t%%{time_starttransfer}\\t%%{speed_download}' -L --connect-timeout 3 --max-time 4 %s 2>/dev/null", - shell_quote(target_url) - ); + let passed_count = 0; + let sum_handshake = 0; + let sum_ttfb = 0; + let max_speed = 0; + let last_http = 0; - let pipe = fs.popen(curl_cmd, "r"); - let output = pipe ? pipe.read("all") : ""; - if (pipe) pipe.close(); + for (let target_item in urls_list) { + let curl_cmd = sprintf( + "curl -so /dev/null -w '%%{http_code}\\t%%{time_appconnect}\\t%%{time_starttransfer}\\t%%{speed_download}' -L --connect-timeout 3 --max-time 4 %s 2>/dev/null", + shell_quote(target_item.url) + ); + let pipe = fs.popen(curl_cmd, "r"); + let output = pipe ? pipe.read("all") : ""; + if (pipe) pipe.close(); + + let single_res = parse_curl_output(output, {}); + single_res.target_name = target_item.name; + single_res.url = target_item.url; + push(result.sub_probes, single_res); + + if (single_res.success) { + passed_count++; + sum_handshake += single_res.handshake_ms; + sum_ttfb += single_res.ttfb_ms; + if (single_res.speed_kbps > max_speed) max_speed = single_res.speed_kbps; + last_http = single_res.http_code; + } else if (last_http == 0) { + last_http = single_res.http_code; + } + } cleanup_temp_daemons(); - return parse_curl_output(output, result); + if (passed_count == total_urls) { + result.success = true; + result.http_code = last_http > 0 ? last_http : 200; + result.handshake_ms = int(sum_handshake / double(total_urls)); + result.ttfb_ms = int(sum_ttfb / double(total_urls)); + result.speed_kbps = max_speed; + result.score = 100 + max(0, 1000 - result.ttfb_ms) + int(result.speed_kbps / 10.0); + } else { + result.success = false; + result.http_code = last_http; + result.score = 0; + result.error = sprintf("Failed %d of %d endpoints", total_urls - passed_count, total_urls); + } + + return result; } result.error = "Unknown engine: " + engine; @@ -1007,7 +1317,7 @@ function run_fuzzer_worker(engine, target, custom_url, rule_section, custom_file state.progress_pct = int(((i) / double(total)) * 100.0); save_fuzzer_state(state); - let probe = run_probe(strat.engine || engine, strat.args, target_url); + let probe = run_probe(strat.engine || engine, strat.args, target, custom_url); let item_result = { id: strat.id || sprintf("strat_%d", i + 1), @@ -1023,6 +1333,7 @@ function run_fuzzer_worker(engine, target, custom_url, rule_section, custom_file speed_kbps: probe.speed_kbps, score: probe.score, error: probe.error, + sub_probes: probe.sub_probes || [], badge: "" }; @@ -1082,7 +1393,7 @@ function start_fuzzer(engine, target, custom_url, rule_section, custom_file, mod let cmd = sprintf( "ucode -L /usr/lib/tachyon /usr/lib/tachyon/diagnostics/fuzzer.uc worker %s %s %s %s %s %s", shell_quote(engine || "zapret2"), - shell_quote(target || "youtube"), + shell_quote(target || "youtube_suite"), shell_quote(custom_url || ""), shell_quote(rule_section || ""), shell_quote(custom_file || ""), @@ -1091,7 +1402,7 @@ function start_fuzzer(engine, target, custom_url, rule_section, custom_file, mod system(common.background_command_with_pid(cmd, ">/dev/null", ">" + shell_quote(PID_FILE))); - print(sprintf("%J\n", { success: true, job_id, engine: engine || "zapret2", target: target || "youtube", mode: mode || "presets" })); + print(sprintf("%J\n", { success: true, job_id, engine: engine || "zapret2", target: target || "youtube_suite", mode: mode || "presets" })); } function stop_fuzzer() { @@ -1128,7 +1439,6 @@ function apply_strategy(engine, args_val, target_rule) { let uci = uci_core.cursor(); let applied = false; - // If target rule section is specified, update that rule if (target_rule != "" && target_rule != "global") { uci.set(CONFIG_NAME, target_rule, "action", engine); if (engine == "zapret2") @@ -1139,7 +1449,6 @@ function apply_strategy(engine, args_val, target_rule) { uci.set(CONFIG_NAME, target_rule, "byedpi_cmd_opts", args_val); applied = true; } else { - // Apply as provider global setting let provider_sec = engine; let sec_obj = uci.get_all(CONFIG_NAME, provider_sec); if (sec_obj == null) { @@ -1156,8 +1465,6 @@ function apply_strategy(engine, args_val, target_rule) { } uci.commit(CONFIG_NAME); - - // Mark reload pending system(common.background_command("tachyon reload")); print(sprintf("%J\n", { @@ -1181,6 +1488,13 @@ if (op == "start") { stop_fuzzer(); } else if (op == "apply") { apply_strategy(ARGV[1], ARGV[2], ARGV[3]); +} else if (op == "get_patterns" || op == "patterns") { + print(sprintf("%J\n", { success: true, patterns: get_patterns_config() })); +} else if (op == "save_patterns") { + let cfg = safe_json_parse(ARGV[1]); + save_patterns_config(cfg); +} else if (op == "reset_patterns") { + reset_patterns_config(); } else if (op == "ai_synthesize" || op == "synthesize") { synthesize_ai_strategies(ARGV[1], ARGV[2], ARGV[3], ARGV[4]); } else if (op == "generate" || op == "strategies_generate") { @@ -1189,11 +1503,14 @@ if (op == "start") { let strat_mode = ARGV[1] || "presets"; print(sprintf("%J\n", { available_engines: get_available_engines(), + target_suites: TARGET_SUITES, + patterns: get_patterns_config(), zapret2: get_strategies_for_engine("zapret2", strat_mode), zapret: get_strategies_for_engine("zapret", strat_mode), byedpi: get_strategies_for_engine("byedpi", strat_mode) })); } else { - warn("Usage: fuzzer.uc [start|status|stop|apply|strategies|generate|ai_synthesize|worker] ...\n"); + warn("Usage: fuzzer.uc [start|status|stop|apply|strategies|generate|get_patterns|save_patterns|reset_patterns|ai_synthesize|worker] ...\n"); exit(1); } +