From dc6f0547b46beb3e987150335fa0173d9005fee4 Mon Sep 17 00:00:00 2001 From: Dushnilin Date: Wed, 26 Aug 2026 22:18:35 +0300 Subject: [PATCH] =?UTF-8?q?feat(fuzzer):=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B9=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=D0=B1=D0=BE=D1=80=20=D0=B8=20=D1=82=D1=8E=D0=BD?= =?UTF-8?q?=D0=B8=D0=BD=D0=B3=20DPI-=D1=81=D1=82=D1=80=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=B3=D0=B8=D0=B9=20=D0=B4=D0=BB=D1=8F=20Zapret=20v2,=20Zapret?= =?UTF-8?q?=20v1=20=D0=B8=20ByeDPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- docs/knowledge-base/04_DPI_BYPASS_ENGINES.md | 140 +- fe-app-tachyon/fill-po-translations.js | 45 + fe-app-tachyon/locales/calls.json | 2513 ++++++++++------- fe-app-tachyon/locales/tachyon.pot | 2306 ++++++++------- fe-app-tachyon/locales/tachyon.ru.po | 263 +- .../src/tachyon/methods/shell/index.ts | 156 + .../methods/shell/tests/fuzzerAction.test.ts | 114 + .../tachyon/tabs/diagnostic/initController.ts | 22 + .../tachyon/tabs/diagnostic/partials/index.ts | 1 + .../partials/renderAvailableActions.ts | 12 + .../partials/renderStrategyFuzzerModal.ts | 595 ++++ .../tests/strategyFuzzerModal.test.ts | 136 + fe-app-tachyon/src/tachyon/types.ts | 75 + .../resources/view/tachyon/main.js | 645 +++++ luci-app-tachyon/po/ru/tachyon.po | 263 +- luci-app-tachyon/po/templates/tachyon.pot | 2306 ++++++++------- tachyon/files/usr/bin/tachyon | 5 + tachyon/files/usr/lib/diagnostics/fuzzer.uc | 619 ++++ tachyon/files/usr/lib/diagnostics/status.uc | 1 + tests/fuzzer_strategy_cli.sh | 124 + 21 files changed, 7242 insertions(+), 3102 deletions(-) create mode 100644 fe-app-tachyon/src/tachyon/methods/shell/tests/fuzzerAction.test.ts create mode 100644 fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts create mode 100644 fe-app-tachyon/src/tachyon/tabs/diagnostic/tests/strategyFuzzerModal.test.ts create mode 100644 tachyon/files/usr/lib/diagnostics/fuzzer.uc create mode 100644 tests/fuzzer_strategy_cli.sh diff --git a/.gitignore b/.gitignore index c867190a..b9d83d59 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,5 @@ scratch/ tmp_*/ tmp_test*.uc test_out.txt -uc.out \ No newline at end of file +uc.out +filtered-bin/ \ No newline at end of file diff --git a/docs/knowledge-base/04_DPI_BYPASS_ENGINES.md b/docs/knowledge-base/04_DPI_BYPASS_ENGINES.md index 5c6445b2..8b2bc336 100644 --- a/docs/knowledge-base/04_DPI_BYPASS_ENGINES.md +++ b/docs/knowledge-base/04_DPI_BYPASS_ENGINES.md @@ -1,53 +1,55 @@ -# 04. DPI Bypass & Desynchronization Engines +# 04. Движки обхода DPI и десинхронизации пакетов -Tachyon integrates three distinct local packet desynchronization engines that operate entirely on the router hardware without requiring an external proxy server (Zero-VPS mode). +Tachyon интегрирует три независимых локальных движка десинхронизации сетевых пакетов, которые функционируют непосредственно на оборудовании роутера без необходимости использования внешнего VPS или прокси-сервера (режим «Zero-VPS»). --- -## 1. Comparison Matrix: Zapret v1 vs Zapret v2 vs ByeDPI +## 1. Сравнительная матрица: Zapret v1 vs Zapret v2 vs ByeDPI -| Feature | Zapret v1 (`nfqws`) | Zapret v2 (`nfqws2`) | ByeDPI (`ciadpi`) | +| Параметр | Zapret v1 (`nfqws`) | Zapret v2 (`nfqws2`) | ByeDPI (`ciadpi`) | |---|---|---|---| -| **Binary** | `/usr/bin/nfqws` | `/usr/bin/nfqws2` | `/usr/bin/ciadpi` | -| **Operating Model** | Kernel NFQueue Intercept | Kernel NFQueue Multi-Q | Local SOCKS5 / TProxy | -| **Target Protocols** | HTTP, TLS (ClientHello) | HTTP, TLS, QUIC, WireGuard | HTTP, TLS | -| **Packet Splitting** | `split2`, `disorder`, `fake` | `multisplit`, `seqovl`, `wsize`, `fake` | `--split-pos`, `--disorder`, `--fake` | -| **Multi-Vector Chains** | Single strategy per rule | Multi-phase composite chains | Composite SOCKS args | -| **CPU Overhead** | Minimal (< 1%) | Low (< 2%) | Low (< 2%) | -| **Best For** | Legacy OpenWrt, Basic DPI | YouTube 4K, Discord, TSPU | Non-root users, SOCKS routing | +| **Исполняемый файл** | `/usr/bin/nfqws` | `/usr/bin/nfqws2` | `/usr/bin/ciadpi` | +| **Модель работы** | Перехват через Kernel NFQueue | Multi-Queue NFQueue с Lua | Локальный SOCKS5 / TProxy | +| **Целевые протоколы** | HTTP, TLS (ClientHello) | HTTP, TLS, QUIC, WireGuard, UDP | HTTP, TLS | +| **Методы фрагментации** | `split2`, `disorder`, `fake` | `multisplit`, `seqovl`, `wsize`, `fake` | `--split-pos`, `--disorder`, `--fake` | +| **Многоуровневые цепочки** | 1 стратегия на правило | Сложные составные цепочки | Составные аргументы SOCKS | +| **Нагрузка на CPU** | Минимальная (< 1%) | Низкая (< 2%) | Низкая (< 2%) | +| **Оптимально для** | Базового DPI, старых роутеров | YouTube 4K, Discord, ТСПУ | Не-root окружений, SOCKS-роутинга | --- -## 2. Desynchronization Techniques Explained +## 2. Принципы и техники десинхронизации пакетов -Deep Packet Inspection (DPI) systems inspect packet headers (such as TLS Server Name Indication `SNI` or HTTP `Host` headers) to detect and block access. Desynchronization tricks the DPI into losing track of the connection state while the destination server reconstructs the stream normally. +Системы глубокого анализа пакетов (DPI / ТСПУ) анализируют заголовки сетевых протоколов (такие как `SNI` в расширении TLS ClientHello или заголовок `Host` в HTTP) для блокировки или замедления трафика. + +Десинхронизация обманывает конечный автомат DPI, заставляя его потерять контекст TCP-сессии или пропустить целевой заголовок, в то время как целевой сервер корректно собирает исходный поток данных. ``` -Original Stream: [TLS ClientHello with SNI] ──────────► (Blocked by DPI) +Исходный поток: [TLS ClientHello с SNI] ──────────► (Блокируется ТСПУ / DPI) -Desynchronized: [Fake Bad Checksum Packet] ──────────► (DPI resets state) - [Payload Part 1: Snippet] ──────────► (DPI misses SNI) - [Payload Part 2: Remainder] ─────────► (Server merges stream) +Десинхронизация: [Fake-пакет с неверной суммой/TTL] ──► (DPI сбрасывает состояние) + [Фрагмент 1: Начало ClientHello] ───► (DPI не видит полный SNI) + [Фрагмент 2: Окончание данных] ─────► (Сервер собирает TCP-поток) ``` -### 2.1. Key Desync Strategies +### 2.1. Основные стратегии обхода -1. **`split2` / `multisplit`**: - * Splits the TCP segment right inside the TLS SNI or HTTP Host header. The DPI does not reassemble small fragments, while the end server's TCP stack reconstructs the full buffer seamlessly. -2. **`disorder` / `disorder2`**: - * Sends the second half of the packet before the first half with appropriate TCP sequence numbers. The DPI sees out-of-order data and skips inspection. -3. **`fake` / `fake_sni`**: - * Sends a fake TLS ClientHello packet with a low TTL (Time To Live). The DPI intercepts the fake packet and approves the connection; the packet dies before reaching the destination server. -4. **`seqovl` (Sequence Overlap)**: - * Sends a fake packet with overlapping sequence numbers that the server's TCP stack discards while the DPI's state machine is fooled. -5. **`wsize` (Window Size Manipulation)**: - * Forces a small TCP window size to prevent DPI from receiving full payloads in single bursts. +1. **`split2` / `multisplit` (Многопозиционное разделение)**: + * Разрезает TCP-сегмент непосредственно внутри поля TLS SNI или заголовка HTTP Host. Оборудование DPI не выполняет глубокую реассемблинг-сборку мелких фрагментов, а стек TCP целевого сервера склеивает поток без потерь. +2. **`disorder` / `disorder2` (Изменение порядка доставки)**: + * Отправляет вторую часть пакета раньше первой с корректными TCP Sequence Numbers. DPI видит фрагменты не по порядку и пропускает инспекцию. +3. **`fake` / `fake_sni` (Внедрение фейковых пакетов)**: + * Отправляет поддельный пакет TLS ClientHello с намеренно заниженным TTL (Time To Live). DPI перехватывает поддельный пакет и считает соединение легитимным, после чего пакет угасает в сети, не доходя до целевого сервера. +4. **`seqovl` (Наложение порядковых номеров / Sequence Overlap)**: + * Посылает пакет с перекрывающимся диапазоном TCP Sequence. Стек TCP на сервере отбрасывает дублирующиеся байты, тогда как DPI парсит неверные данные и теряет контроль над сессией. +5. **`wsize` (Манипуляция размером окна TCP Window Size)**: + * Принудительно устанавливает размер TCP-окна в 1–2 байта, заставляя клиент слать данные микросегментами, что ломает эвристики DPI. --- -## 3. Configuration & Runtime Management +## 3. Конфигурация и управление в UCI -### 3.1. Zapret v2 Configuration Example (`/etc/config/tachyon`) +### 3.1. Пример настройки Zapret v2 (`/etc/config/tachyon`) ```ini config provider 'zapret2' @@ -68,7 +70,7 @@ config rule 'youtube_rule' list domain_pattern 'discord.com' ``` -### 3.2. ByeDPI Configuration Example +### 3.2. Пример настройки ByeDPI ```ini config provider 'byedpi' @@ -81,42 +83,54 @@ config provider 'byedpi' --- -## 4. NFQueue Multiplexing & Conflict Prevention +## 4. Мультиплексирование NFQueue и изоляция очередей -* Kernel `nfnetlink_queue` requires unique queue numbers per daemon instance. -* Tachyon's `providers/nfqueue/runtime.uc` dynamically manages queue allocation: - * Default Zapret v1 queue: `200` - * Default Zapret v2 queue: `201` -* If both Zapret v1 and v2 are enabled simultaneously for different rules, Tachyon enforces strict queue isolation and prevents PID collisions. +* Подсистема ядра Linux `nfnetlink_queue` требует уникальный номер очереди (`qnum`) для каждого запущенного процесса демона. +* Модуль `providers/nfqueue/runtime.uc` в Tachyon динамически управляет выделением очередей: + * Базовая очередь Zapret v1: `200` + * Базовая очередь Zapret v2: `201` + * Очередь Strategy Fuzzer: `298` / `299` +* При одновременной активации Zapret v1 и Zapret v2 для разных правил маршрутизации Tachyon гарантирует строгую изоляцию очередей и исключает конфликты PID и fwmark. -## 4. AmneziaWG в sing-box-extended: верификация (2026-08) +--- -Проверено против бинарника релиза `v1.13.18-extended-2.6.5` (shtorm-7/sing-box-extended): +## 5. Интеграция AmneziaWG в sing-box-extended (2026) -- `endpoint.amnezia` полностью реализован: `AmneziaOptions` (`transport/wireguard/endpoint_options.go`) - → IPC `jc/jmin/jmax/s1-s4/h1-h4/i1-i5` (`transport/wireguard/endpoint.go`) - → wireguard-go форк `shtorm-7/wireguard-go v0.0.4-extended-1.5.3`: - I1-I5 шлются отдельными пакетами ПЕРЕД handshake initiation - (`device/send.go SendHandshakeInitiation`), формат значения — hex-строка. -- Парсер конфига строгий: неизвестные поля и мусорные значения в `amnezia.*` - дают FATAL при старте, «молчаливого игнорирования» не существует. -- Генерация Tachyon (`generator_outbounds.uc add_awg_endpoint`) совпадает со - схемой форка: peer содержит required `allowed_ips`, `pre_shared_key` и - `persistent_keepalive_interval` опциональны, hex i1-i5 проходит - `uci_bin_to_hex` без двойного кодирования. +Проверено против релизного бинарника `v1.13.18-extended-2.6.5` (`shtorm-7/sing-box-extended`): -Следствие для диагностики: если AWG/WARP-туннель «TX есть, RX нет» на -sing-box-extended, конфиг секции применён корректно — причина вне Tachyon -(сервер, провайдер, UDP-фильтрация). Чек 6c доктора (1.2.91+) сообщает это -пользователю по свидетельствам из лога ядра. +- Секция `endpoint.amnezia` полностью реализована в форке: `AmneziaOptions` (`transport/wireguard/endpoint_options.go`) → параметры IPC `jc / jmin / jmax / s1-s4 / h1-h4 / i1-i5`. +- Форк `shtorm-7/wireguard-go v0.0.4-extended-1.5.3`: пакеты `I1–I5` отправляются отдельными дейтаграммами **перед** инициализацией рукопожатия (`SendHandshakeInitiation`), значение задается в hex-формате. +- Генератор Tachyon (`singbox/generator_outbounds.uc` -> `add_awg_endpoint`) формирует конфигурацию, полностью совместимую со схемой форка: + - Секция `peer` содержит обязательный `allowed_ips`. + - Параметры `pre_shared_key` и `persistent_keepalive_interval` опциональны. + - Hex-значения `i1–i5` передаются через `uci_bin_to_hex` без повторного кодирования. +- **Диагностика:** если AWG/WARP-туннель имеет состояние «TX есть, RX нет» на sing-box-extended, конфиг применен корректно — причина во внешней UDP-фильтрации провайдера или блокировке сервера. -Кейс «kernel работает, sing-box нет» с идентичным conf остаётся внешним: -различие в реализации special-handshake между amneziawg-linux kernel-модом -и userspace-форком может быть критично только для конкретных строгих -серверов. Шаги диагностики для таких случаев: +--- -1. `tcpdump -i any -X udp port <порт>` — сравнить первые байты I1-пакетов - kernel vs sing-box (у special-handshake пакетов префикс `c7`). -2. Временно убрать i1-i5 из секции: если handshake поднимется — сервер - не требует special handshake, а требует его некорректную передачу. -3. Попробовать вариант ядра sing-box-lx как эксперимент. +## 6. Strategy Fuzzer и автоматический подбор стратегий + +Tachyon включает встроенный модуль автоматического тестирования стратегий обхода — **Strategy Fuzzer & Auto-Tuner** (`diagnostics/fuzzer.uc`), который избавляет от необходимости вручную подбирать флаги `nfqws2` или `ciadpi`. + +### 6.1. Механизм работы +- **Изолированный сэндбокс:** Тестирование выполняется через временные очереди `qnum 298/299` с сокетной меткой `0x08000000` (для Zapret) либо через локальный порт `127.0.0.1:11089` (для ByeDPI), не затрагивая активный домашний трафик. +- **Метрический скоринг:** Замеряются время TLS-рукопожатия, TTFB (время до первого байта), битрейт загрузки чанка потокового видео (MB/s) и HTTP-код ответа. +- **1-Click Apply:** Победившая стратегия мгновенно применяется к правилу YouTube/Discord или в глобальные параметры провайдера с автоматической перезагрузкой службы. + +### 6.2. Команды управления через CLI +```sh +# Запуск бенчмарка стратегий +tachyon fuzzer_start [custom_url] [rule_section] + +# Просмотр текущего прогресса и результатов +tachyon fuzzer_status + +# Остановка фонового бенчмарка +tachyon fuzzer_stop + +# Применение выбранной стратегии в UCI +tachyon fuzzer_apply "" [target_rule_or_global] + +# Вывод доступной матрицы стратегий +tachyon fuzzer_strategies +``` diff --git a/fe-app-tachyon/fill-po-translations.js b/fe-app-tachyon/fill-po-translations.js index 9b3e397b..57869604 100644 --- a/fe-app-tachyon/fill-po-translations.js +++ b/fe-app-tachyon/fill-po-translations.js @@ -2,6 +2,51 @@ import fs from 'fs/promises'; const dictionary = { "Service Health Check": "Проверка доступности сервисов", + "Automated DPI Strategy Fuzzer & Auto-Tuner": "Автоматический подборщик и оптимизатор стратегий DPI", + "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput.": "Тестирует набор стратегий десинхронизации пакетов в изолированном сэндбоксе без влияния на активный трафик и ранжирует их по задержке, TTFB и скорости.", + "DPI Engine": "Движок DPI", + "Zapret v2 (nfqws2)": "Zapret v2 (nfqws2)", + "Zapret v1 (nfqws)": "Zapret v1 (nfqws)", + "ByeDPI (ciadpi)": "ByeDPI (ciadpi)", + "All Engines (Full Matrix)": "Все движки (Полная матрица)", + "Installed": "Установлен", + "Not installed": "Не установлен", + "Target Service": "Целевой сервис", + "YouTube (GoogleVideo 4K stream)": "YouTube (4K видеопоток GoogleVideo)", + "YouTube Web (Interface)": "YouTube Web (Интерфейс)", + "Discord (Gateway / API / Voice)": "Discord (Шлюз / API / Голосовые каналы)", + "Instagram / Meta (TLS 1.3)": "Instagram / Meta (TLS 1.3)", + "RuTracker (HTTP/HTTPS)": "RuTracker (HTTP/HTTPS)", + "Telegram Web": "Telegram Web", + "Custom Target URL...": "Свой URL для теста...", + "Apply Strategy To": "Применить стратегию к", + "Provider Global Default": "Глобальные настройки провайдера", + "Rule:": "Правило:", + "Benchmarking in progress...": "Выполняется бенчмарк...", + "Testing strategy": "Тестирование стратегии", + "Strategy & Parameters": "Стратегия и параметры", + "Status": "Статус", + "TTFB": "TTFB", + "Speed": "Скорость", + "Score": "Баллы", + "Action": "Действие", + "No benchmark results yet. Select engine and click \"Start Benchmark\".": "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк».", + "🚀 Start Benchmark": "🚀 Начать бенчмарк", + "🚀 Run Benchmark Again": "🚀 Запустить бенчмарк снова", + "🛑 Stop Benchmark": "🛑 Остановить бенчмарк", + "🏆 Apply Best Strategy": "🏆 Применить лучшую стратегию", + "Apply": "Применить", + "Applied": "Применено", + "Benchmark stopped": "Бенчмарк остановлен", + "Strategy benchmark started": "Бенчмарк стратегий запущен", + "Failed to start benchmark": "Не удалось запустить бенчмарк", + "Failed to apply strategy": "Не удалось применить стратегию", + "⚡ Strategy Fuzzer & Auto-Tuner": "⚡ Подборщик стратегий и авто-тюнер", + "⚡ DPI Strategy Fuzzer": "⚡ DPI Strategy Fuzzer", + "Find optimal DPI bypass strategies with isolated live probing": "Автоматический подбор оптимальных параметров обхода DPI в изолированном сэндбоксе", + "✅ Benchmark completed! Optimal strategy identified.": "✅ Бенчмарк завершен! Оптимальная стратегия определена.", + "⚠️ Benchmark completed. No working bypass found for this target.": "⚠️ Бенчмарк завершен. Не найдено рабочих стратегий для данной цели.", + "Running initial strategy probe...": "Запуск первого зонда стратегии...", "Total Targets": "Всего целей", "Passed": "Успешно", "Failed": "Ошибки", diff --git a/fe-app-tachyon/locales/calls.json b/fe-app-tachyon/locales/calls.json index f9046b06..bf7b5a3d 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:1742" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1767" ] }, { @@ -77,6 +77,14 @@ "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1245" ] }, + { + "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:12034", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:469" + ] + }, { "call": "⚠️ If all Bootstrap 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.", "key": "⚠️ If all Bootstrap 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.", @@ -91,28 +99,76 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:897" ] }, + { + "call": "⚡ DPI Strategy Fuzzer", + "key": "⚡ DPI Strategy Fuzzer", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10523", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:162" + ] + }, + { + "call": "⚡ Strategy Fuzzer & Auto-Tuner", + "key": "⚡ Strategy Fuzzer & Auto-Tuner", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12135", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:590" + ] + }, + { + "call": "✅ Benchmark completed! Optimal strategy identified.", + "key": "✅ Benchmark completed! Optimal strategy identified.", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12034", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:468" + ] + }, + { + "call": "✔ Online", + "key": "✔ Online", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8160", + "src/tachyon/tabs/dashboard/initController.ts:1941" + ] + }, { "call": "✔ Running", "key": "✔ Running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7983", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7990", - "src/tachyon/tabs/dashboard/initController.ts:1888", - "src/tachyon/tabs/dashboard/initController.ts:1897", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8117", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8124", + "src/tachyon/tabs/dashboard/initController.ts:1891", + "src/tachyon/tabs/dashboard/initController.ts:1900", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473" ] }, + { + "call": "✘ Offline", + "key": "✘ Offline", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8160", + "src/tachyon/tabs/dashboard/initController.ts:1941" + ] + }, { "call": "✘ Stopped", "key": "✘ Stopped", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7983", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7990", - "src/tachyon/tabs/dashboard/initController.ts:1888", - "src/tachyon/tabs/dashboard/initController.ts:1897", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8117", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8124", + "src/tachyon/tabs/dashboard/initController.ts:1891", + "src/tachyon/tabs/dashboard/initController.ts:1900", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473" ] }, + { + "call": "🏆 Apply Best Strategy", + "key": "🏆 Apply Best Strategy", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11920", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:330" + ] + }, { "call": "🔑 Generate", "key": "🔑 Generate", @@ -120,6 +176,32 @@ "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:728" ] }, + { + "call": "🚀 Run Benchmark Again", + "key": "🚀 Run Benchmark Again", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12060", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:501" + ] + }, + { + "call": "🚀 Start Benchmark", + "key": "🚀 Start Benchmark", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11915", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12105", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:324", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:553" + ] + }, + { + "call": "🛑 Stop Benchmark", + "key": "🛑 Stop Benchmark", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12089", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:535" + ] + }, { "call": "Accept external proxy connections and route them with sing-box.", "key": "Accept external proxy connections and route them with sing-box.", @@ -138,15 +220,17 @@ "call": "Action", "key": "Action", "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11890", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7245", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7275" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7275", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:296" ] }, { "call": "Action failed", "key": "Action failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8914", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9123", "src/tachyon/helpers/notifyActionFailure.ts:40" ] }, @@ -154,17 +238,17 @@ "call": "Action Mode", "key": "Action Mode", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:445" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:467" ] }, { "call": "Active", "key": "Active", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7385", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14009", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14594", - "src/tachyon/tabs/dashboard/initController.ts:1126", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7519", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14707", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15292", + "src/tachyon/tabs/dashboard/initController.ts:1127", "src/tachyon/tabs/monitoring/initController.ts:722", "src/tachyon/tabs/monitoring/render.ts:20" ] @@ -173,23 +257,23 @@ "call": "Active (Allowed)", "key": "Active (Allowed)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:357", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:377" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:379", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:399" ] }, { "call": "Active (Blocking)", "key": "Active (Blocking)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:357", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:377" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:379", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:399" ] }, { "call": "Active Bootstrap DNS", "key": "Active Bootstrap DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9009", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9218", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:56" ] }, @@ -207,15 +291,15 @@ "call": "Active Connections", "key": "Active Connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7969", - "src/tachyon/tabs/dashboard/initController.ts:1873" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8103", + "src/tachyon/tabs/dashboard/initController.ts:1876" ] }, { "call": "Active Main DNS", "key": "Active Main DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9016", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9225", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67" ] }, @@ -223,7 +307,7 @@ "call": "Active routes", "key": "Active routes", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10707", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10929", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:245" ] }, @@ -303,7 +387,7 @@ "call": "Additional marking rules found", "key": "Additional marking rules found", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9351", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9560", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:106" ] }, @@ -348,7 +432,7 @@ "call": "Administrator Chat IDs", "key": "Administrator Chat IDs", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2161" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2186" ] }, { @@ -411,14 +495,14 @@ "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:1693" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1718" ] }, { "call": "AI API Key", "key": "AI API Key", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1761", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1786", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:942" ] }, @@ -426,7 +510,7 @@ "call": "AI Chat & Tachyon Assistant", "key": "AI Chat & Tachyon Assistant", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11451", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11673", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:235" ] }, @@ -434,8 +518,8 @@ "call": "AI Chat Assistant", "key": "AI Chat Assistant", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10301", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:150" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10513", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:152" ] }, { @@ -449,27 +533,27 @@ "call": "AI Doctor Diagnosis", "key": "AI Doctor Diagnosis", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13183", - "src/tachyon/tabs/diagnostic/initController.ts:1561" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13867", + "src/tachyon/tabs/diagnostic/initController.ts:1563" ] }, { "call": "AI Doctor failed", "key": "AI Doctor failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12644", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13186", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13194", - "src/tachyon/tabs/diagnostic/initController.ts:855", - "src/tachyon/tabs/diagnostic/initController.ts:1567", - "src/tachyon/tabs/diagnostic/initController.ts:1575" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13328", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13870", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13878", + "src/tachyon/tabs/diagnostic/initController.ts:857", + "src/tachyon/tabs/diagnostic/initController.ts:1569", + "src/tachyon/tabs/diagnostic/initController.ts:1577" ] }, { "call": "AI Doctor Language", "key": "AI Doctor Language", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1748", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1773", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:909" ] }, @@ -477,7 +561,7 @@ "call": "AI Model", "key": "AI Model", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1735", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1760", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:884" ] }, @@ -485,7 +569,7 @@ "call": "AI Provider", "key": "AI Provider", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1718", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1743", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:806" ] }, @@ -493,7 +577,7 @@ "call": "AI service error", "key": "AI service error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11378", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11600", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:151" ] }, @@ -515,8 +599,8 @@ "call": "All", "key": "All", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14028", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14559", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14726", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15257", "src/tachyon/tabs/monitoring/initController.ts:681", "src/tachyon/tabs/monitoring/render.ts:40" ] @@ -525,7 +609,7 @@ "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:2373" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2398" ] }, { @@ -536,6 +620,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:225" ] }, + { + "call": "All Engines (Full Matrix)", + "key": "All Engines (Full Matrix)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11727", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:69" + ] + }, { "call": "All except selected", "key": "All except selected", @@ -555,7 +647,7 @@ "call": "All Internet (Complete internet cutoff)", "key": "All Internet (Complete internet cutoff)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:417" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:439" ] }, { @@ -583,8 +675,8 @@ "call": "All Routes", "key": "All Routes", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14036", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14532", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14734", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15230", "src/tachyon/tabs/monitoring/initController.ts:644", "src/tachyon/tabs/monitoring/render.ts:49" ] @@ -600,8 +692,8 @@ "call": "All services", "key": "All services", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10716", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10819", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10938", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11041", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:257", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:376" ] @@ -617,7 +709,7 @@ "call": "Allow / Enable ONLY in scheduled hours (White period)", "key": "Allow / Enable ONLY in scheduled hours (White period)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:451" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:473" ] }, { @@ -639,21 +731,21 @@ "call": "Allow only", "key": "Allow only", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:318" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:340" ] }, { "call": "Allow only listed sites (Whitelist)", "key": "Allow only listed sites (Whitelist)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:591" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:634" ] }, { "call": "Allow only:", "key": "Allow only:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:334" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:356" ] }, { @@ -681,7 +773,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:1707" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1732" ] }, { @@ -716,23 +808,39 @@ "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:12719", - "src/tachyon/tabs/diagnostic/initController.ts:968" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13403", + "src/tachyon/tabs/diagnostic/initController.ts:970" ] }, { "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:17175", - "src/tachyon/tabs/updates/initController.ts:902" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17877", + "src/tachyon/tabs/updates/initController.ts:906" ] }, { "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:1762" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1787" + ] + }, + { + "call": "Applied", + "key": "Applied", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12116", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:565" + ] + }, + { + "call": "Apply", + "key": "Apply", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12007", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:434" ] }, { @@ -749,27 +857,35 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9487" ] }, + { + "call": "Apply Strategy To", + "key": "Apply Strategy To", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11811", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:204" + ] + }, { "call": "Applying fix", "key": "Applying fix", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12849", - "src/tachyon/tabs/diagnostic/initController.ts:1179" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13533", + "src/tachyon/tabs/diagnostic/initController.ts:1181" ] }, { "call": "Applying...", "key": "Applying...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12847", - "src/tachyon/tabs/diagnostic/initController.ts:1177" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13531", + "src/tachyon/tabs/diagnostic/initController.ts:1179" ] }, { "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:11302", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11524", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:60" ] }, @@ -777,7 +893,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:2172" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2197" ] }, { @@ -806,11 +922,11 @@ "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:7225", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7565", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10534", - "src/tachyon/tabs/dashboard/initController.ts:922", - "src/tachyon/tabs/dashboard/initController.ts:1354", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7359", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7699", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10756", + "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" ] @@ -819,7 +935,7 @@ "call": "Auto refresh", "key": "Auto refresh", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10131", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10342", "src/partials/modal/renderModal.ts:286" ] }, @@ -834,7 +950,7 @@ "call": "Auto-detected domains", "key": "Auto-detected domains", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1964" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1989" ] }, { @@ -848,10 +964,17 @@ "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:1924", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1949", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1102" ] }, + { + "call": "Auto-failover of proxy sections", + "key": "Auto-failover of proxy sections", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1514" + ] + }, { "call": "Auto-generate HWID", "key": "Auto-generate HWID", @@ -863,8 +986,8 @@ "call": "Auto-Heal Network Stack", "key": "Auto-Heal Network Stack", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12777", - "src/tachyon/tabs/diagnostic/initController.ts:1092" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13461", + "src/tachyon/tabs/diagnostic/initController.ts:1094" ] }, { @@ -874,6 +997,14 @@ "../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:11703", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:40" + ] + }, { "call": "Automatic component update checks", "key": "Automatic component update checks", @@ -913,16 +1044,16 @@ "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:1898" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1923" ] }, { "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:7645", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7779", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3157", - "src/tachyon/tabs/dashboard/initController.ts:1457" + "src/tachyon/tabs/dashboard/initController.ts:1458" ] }, { @@ -936,8 +1067,8 @@ "call": "Available", "key": "Available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10604", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10794", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10826", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11016", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:125", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:346" ] @@ -946,15 +1077,15 @@ "call": "Available actions", "key": "Available actions", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10207", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:56" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10419", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:58" ] }, { "call": "Avg. latency", "key": "Avg. latency", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10796", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11018", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:348" ] }, @@ -971,7 +1102,7 @@ "call": "Basic connectivity", "key": "Basic connectivity", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10551", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10773", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:58" ] }, @@ -986,7 +1117,7 @@ "call": "Beginning of the schedule interval (e.g. 22:00)", "key": "Beginning of the schedule interval (e.g. 22:00)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:458" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:480" ] }, { @@ -996,6 +1127,30 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9258" ] }, + { + "call": "Benchmark stopped", + "key": "Benchmark stopped", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12083", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:528" + ] + }, + { + "call": "Benchmarking in progress...", + "key": "Benchmarking in progress...", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11832", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:230" + ] + }, + { + "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:11711", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:48" + ] + }, { "call": "BitTorrent / P2P", "key": "BitTorrent / P2P", @@ -1008,21 +1163,21 @@ "call": "Block", "key": "Block", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:319" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:341" ] }, { "call": "Block / Disable in scheduled hours (Standard)", "key": "Block / Disable in scheduled hours (Standard)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:450" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:472" ] }, { "call": "Block at DNS level", "key": "Block at DNS level", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:597" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:640" ] }, { @@ -1044,28 +1199,28 @@ "call": "Block listed sites (Standard)", "key": "Block listed sites (Standard)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:590" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:633" ] }, { "call": "Block:", "key": "Block:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:334" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:356" ] }, { "call": "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.", "key": "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.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:586" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:629" ] }, { "call": "Blocked resources", "key": "Blocked resources", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10552", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10774", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:59" ] }, @@ -1073,21 +1228,21 @@ "call": "Blocked Sites", "key": "Blocked Sites", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:307" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:329" ] }, { "call": "Blocked Sites (Domains)", "key": "Blocked Sites (Domains)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:496" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:539" ] }, { "call": "Bootstrap DNS", "key": "Bootstrap DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9009", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9218", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:57" ] }, @@ -1102,15 +1257,15 @@ "call": "Bot Status", "key": "Bot Status", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2123" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2148" ] }, { "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:9389", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9408", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9598", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9617", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:51", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:79" ] @@ -1119,7 +1274,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:9408", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9617", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:82" ] }, @@ -1127,7 +1282,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:9408", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9617", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:81" ] }, @@ -1135,8 +1290,8 @@ "call": "Bug report downloaded", "key": "Bug report downloaded", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13325", - "src/tachyon/tabs/diagnostic/initController.ts:1729" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14017", + "src/tachyon/tabs/diagnostic/initController.ts:1745" ] }, { @@ -1153,6 +1308,15 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:1985" ] }, + { + "call": "ByeDPI (ciadpi)", + "key": "ByeDPI (ciadpi)", + "places": [ + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:68", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:111" + ] + }, { "call": "ByeDPI listen address and port are assigned by Tachyon and must not be set in the strategy.", "key": "ByeDPI listen address and port are assigned by Tachyon and must not be set in the strategy.", @@ -1188,7 +1352,7 @@ "call": "ByeDPI package is installed", "key": "ByeDPI package is installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9661", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9870", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:71" ] }, @@ -1196,7 +1360,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:9661", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9870", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:72" ] }, @@ -1204,7 +1368,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:9656", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:64" ] }, @@ -1212,7 +1376,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:9656", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:65" ] }, @@ -1220,7 +1384,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:9676", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9885", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:107" ] }, @@ -1228,7 +1392,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:9676", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9885", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:108" ] }, @@ -1271,41 +1435,41 @@ "call": "Cache File Path", "key": "Cache File Path", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1528" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1553" ] }, { "call": "Cache file path cannot be empty", "key": "Cache file path cannot be empty", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1542" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1567" ] }, { "call": "Cancel", "key": "Cancel", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13222", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13914", "../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", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:607", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:655", - "src/tachyon/tabs/diagnostic/initController.ts:1606" + "src/tachyon/tabs/diagnostic/initController.ts:1622" ] }, { "call": "Cannot receive checks result", "key": "Cannot receive checks result", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8989", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9053", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9234", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9297", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9459", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9543", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9631", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11583", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9198", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9262", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9443", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9506", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9668", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9752", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12267", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:26", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:27", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:172", @@ -1355,7 +1519,7 @@ "call": "Check again", "key": "Check again", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11229", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11451", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:865" ] }, @@ -1363,7 +1527,7 @@ "call": "Check all", "key": "Check all", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11179", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11401", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:793" ] }, @@ -1371,9 +1535,9 @@ "call": "Check completed!", "key": "Check completed!", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16389", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16899", - "src/tachyon/tabs/updates/initController.ts:536", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17087", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17601", + "src/tachyon/tabs/updates/initController.ts:540", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:321" ] }, @@ -1391,8 +1555,8 @@ "call": "Check domain", "key": "Check domain", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11054", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11167", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11276", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11389", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:652", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:778" ] @@ -1401,17 +1565,17 @@ "call": "Check interval", "key": "Check interval", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7632", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7766", "../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:1444" + "src/tachyon/tabs/dashboard/initController.ts:1445" ] }, { "call": "Check mode:", "key": "Check mode:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10733", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10955", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:276" ] }, @@ -1419,8 +1583,8 @@ "call": "Check Services", "key": "Check Services", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10311", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:160" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10533", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:172" ] }, { @@ -1434,25 +1598,25 @@ "call": "Check update", "key": "Check update", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17233", - "src/tachyon/tabs/updates/initController.ts:971" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17935", + "src/tachyon/tabs/updates/initController.ts:975" ] }, { "call": "Check URL", "key": "Check URL", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7630", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7764", "../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:1442" + "src/tachyon/tabs/dashboard/initController.ts:1443" ] }, { "call": "Check YouTube", "key": "Check YouTube", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11394", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11616", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:170" ] }, @@ -1460,15 +1624,15 @@ "call": "Checking Connection...", "key": "Checking Connection...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7761", - "src/tachyon/tabs/dashboard/initController.ts:1623" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7895", + "src/tachyon/tabs/dashboard/initController.ts:1624" ] }, { "call": "Checking for updates...", "key": "Checking for updates...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16218", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16916", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:112" ] }, @@ -1476,17 +1640,17 @@ "call": "Checking, please wait", "key": "Checking, please wait", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8979", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9043", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9224", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9285", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9368", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9449", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9533", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9621", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11571", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13576", - "src/tachyon/tabs/diagnostic/initController.ts:2029", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9188", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9252", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9433", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9494", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9577", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9658", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9742", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9830", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12255", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14274", + "src/tachyon/tabs/diagnostic/initController.ts:2051", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:14", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:15", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:15", @@ -1517,14 +1681,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:2015" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2040" ] }, { "call": "checks", "key": "checks", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5135", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5251", "src/tachyon/tabs/diagnostic/helpers/getCheckTitle.ts:2" ] }, @@ -1532,8 +1696,8 @@ "call": "Checks failed", "key": "Checks failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8949", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9427", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9158", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9636", "src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:10", "src/tachyon/tabs/diagnostic/helpers/getMeta.ts:26" ] @@ -1542,9 +1706,9 @@ "call": "Checks passed", "key": "Checks passed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8938", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9384", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9438", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9147", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9593", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9647", "src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:23", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:43", "src/tachyon/tabs/diagnostic/helpers/getMeta.ts:13" @@ -1554,7 +1718,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:8961", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9170", "src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:27" ] }, @@ -1576,7 +1740,7 @@ "call": "Choose whether to restrict the entire internet or only specific Tachyon routing sections.", "key": "Choose whether to restrict the entire internet or only specific Tachyon routing sections.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:413" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:435" ] }, { @@ -1590,7 +1754,7 @@ "call": "Choose which routing sections to apply this schedule to.", "key": "Choose which routing sections to apply this schedule to.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:425" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:447" ] }, { @@ -1626,15 +1790,15 @@ "call": "Clear DNS cache", "key": "Clear DNS cache", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12770", - "src/tachyon/tabs/diagnostic/initController.ts:1085" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13454", + "src/tachyon/tabs/diagnostic/initController.ts:1087" ] }, { "call": "Client Address", "key": "Client Address", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3296" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3336" ] }, { @@ -1648,7 +1812,7 @@ "call": "Client DNS", "key": "Client DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3308" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3348" ] }, { @@ -1690,48 +1854,50 @@ "call": "Client Private Key", "key": "Client Private Key", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3356" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3396" ] }, { "call": "Client Public Key", "key": "Client Public Key", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3366" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3406" ] }, { "call": "Client VPN IP address (e.g. 10.0.0.2/32)", "key": "Client VPN IP address (e.g. 10.0.0.2/32)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3297" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3337" ] }, { "call": "Close", "key": "Close", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7503", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10110", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10652", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11234", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11444", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13174", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14733", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14776", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16484", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16519", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7637", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10321", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10874", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11456", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11666", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11926", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13858", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15431", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15474", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17182", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17217", "../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", "src/partials/modal/renderModal.ts:263", - "src/tachyon/tabs/dashboard/initController.ts:1266", - "src/tachyon/tabs/diagnostic/initController.ts:1551", + "src/tachyon/tabs/dashboard/initController.ts:1267", + "src/tachyon/tabs/diagnostic/initController.ts:1553", "src/tachyon/tabs/monitoring/initController.ts:893", "src/tachyon/tabs/monitoring/initController.ts:948", "src/tachyon/tabs/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:337", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:442", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:488" ] @@ -1740,8 +1906,8 @@ "call": "Close all connections", "key": "Close all connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14055", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14056", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14753", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14754", "src/tachyon/tabs/monitoring/render.ts:68", "src/tachyon/tabs/monitoring/render.ts:69" ] @@ -1750,8 +1916,8 @@ "call": "Close connection", "key": "Close connection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14702", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14703", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15400", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15401", "src/tachyon/tabs/monitoring/initController.ts:860", "src/tachyon/tabs/monitoring/initController.ts:861" ] @@ -1760,8 +1926,8 @@ "call": "Closed", "key": "Closed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14018", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14600", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14716", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15298", "src/tachyon/tabs/monitoring/initController.ts:729", "src/tachyon/tabs/monitoring/render.ts:29" ] @@ -1798,7 +1964,7 @@ "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:2162" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2187" ] }, { @@ -1812,7 +1978,7 @@ "call": "Component update available", "key": "Component update available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6067", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6200", "src/tachyon/services/core.service.ts:43" ] }, @@ -1834,7 +2000,7 @@ "call": "compressed", "key": "compressed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5711", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5841", "src/tachyon/helpers/singBoxVariant.ts:60" ] }, @@ -1856,14 +2022,14 @@ "call": "Config File Path", "key": "Config File Path", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1514" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1539" ] }, { "call": "Config Snapshots", "key": "Config Snapshots", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1668" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1693" ] }, { @@ -1885,8 +2051,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:4963", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11649", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12333", "src/tachyon/methods/custom/getDashboardSections.ts:1651", "src/tachyon/tabs/dashboard/partials/renderSections.ts:620", "src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:141" @@ -1920,8 +2086,8 @@ "call": "Connected Devices", "key": "Connected Devices", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12930", - "src/tachyon/tabs/diagnostic/initController.ts:1274" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13614", + "src/tachyon/tabs/diagnostic/initController.ts:1276" ] }, { @@ -1935,7 +2101,7 @@ "call": "Connections are unavailable", "key": "Connections are unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14828", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15526", "src/tachyon/tabs/monitoring/initController.ts:1012" ] }, @@ -1943,7 +2109,7 @@ "call": "Connectivity probe failed", "key": "Connectivity probe failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11678", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12362", "src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:174" ] }, @@ -1951,21 +2117,21 @@ "call": "Content Mode", "key": "Content Mode", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:585" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:628" ] }, { "call": "Cookie packet junk size (S3)", "key": "Cookie packet junk size (S3)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3415" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3455" ] }, { "call": "Copied", "key": "Copied", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2975", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2985", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1623", "src/helpers/copyToClipboard.ts:10" ] @@ -1974,7 +2140,7 @@ "call": "Copy", "key": "Copy", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10103", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10314", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1753", "src/partials/modal/renderModal.ts:258" ] @@ -1983,7 +2149,7 @@ "call": "Copy log", "key": "Copy log", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16260", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16958", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:160" ] }, @@ -1993,8 +2159,8 @@ "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:7435", - "src/tachyon/tabs/dashboard/initController.ts:1191", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7569", + "src/tachyon/tabs/dashboard/initController.ts:1192", "src/tachyon/tabs/dashboard/partials/renderSections.ts:498", "src/tachyon/tabs/dashboard/partials/renderSections.ts:499" ] @@ -2003,15 +2169,15 @@ "call": "Copy Support Report", "key": "Copy Support Report", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13136", - "src/tachyon/tabs/diagnostic/initController.ts:1509" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13820", + "src/tachyon/tabs/diagnostic/initController.ts:1511" ] }, { "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:9414", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9623", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:89" ] }, @@ -2026,8 +2192,8 @@ "call": "Current Diagnosis", "key": "Current Diagnosis", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13087", - "src/tachyon/tabs/diagnostic/initController.ts:1450" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13771", + "src/tachyon/tabs/diagnostic/initController.ts:1452" ] }, { @@ -2056,7 +2222,7 @@ "call": "Custom", "key": "Custom", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10554", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10776", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:61" ] }, @@ -2064,7 +2230,7 @@ "call": "Custom API Endpoint URL", "key": "Custom API Endpoint URL", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1772", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1797", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:964" ] }, @@ -2086,7 +2252,7 @@ "call": "Custom domains", "key": "Custom domains", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10553", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10775", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:60" ] }, @@ -2094,42 +2260,42 @@ "call": "Custom header for cookie packet", "key": "Custom header for cookie packet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3440" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3480" ] }, { "call": "Custom header for data packet", "key": "Custom header for data packet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3446" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3486" ] }, { "call": "Custom header for handshake initiation", "key": "Custom header for handshake initiation", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3428" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3468" ] }, { "call": "Custom header for handshake response", "key": "Custom header for handshake response", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3434" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3474" ] }, { "call": "Custom OpenAI-Compatible API", "key": "Custom OpenAI-Compatible API", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1728" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1753" ] }, { "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:1773" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1798" ] }, { @@ -2139,6 +2305,28 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8869" ] }, + { + "call": "Custom Target URL...", + "key": "Custom Target URL...", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11759", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:144" + ] + }, + { + "call": "Daily Quota", + "key": "Daily Quota", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:307" + ] + }, + { + "call": "Daily time quota (minutes)", + "key": "Daily time quota (minutes)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:516" + ] + }, { "call": "Dashboard", "key": "Dashboard", @@ -2158,22 +2346,22 @@ "call": "Days of Week", "key": "Days of Week", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:481" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:503" ] }, { "call": "Default (auto)", "key": "Default (auto)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2288" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2313" ] }, { "call": "Default (Direct WAN / Default mixed proxy)", "key": "Default (Direct WAN / Default mixed proxy)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1609", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1620" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1634", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1645" ] }, { @@ -2240,7 +2428,7 @@ "call": "Detects and drops STUN/TURN packets in nftables to prevent real IP leaks via WebRTC.", "key": "Detects and drops STUN/TURN packets in nftables to prevent real IP leaks via WebRTC.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1584" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1609" ] }, { @@ -2290,8 +2478,8 @@ "call": "Device updated", "key": "Device updated", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13005", - "src/tachyon/tabs/diagnostic/initController.ts:1357" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13689", + "src/tachyon/tabs/diagnostic/initController.ts:1359" ] }, { @@ -2305,7 +2493,7 @@ "call": "DHCP has DNS server", "key": "DHCP has DNS server", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8963", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9172", "src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:37" ] }, @@ -2313,7 +2501,7 @@ "call": "DHCP is managed manually", "key": "DHCP is managed manually", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8963", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9172", "src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:36" ] }, @@ -2328,8 +2516,8 @@ "call": "Direct", "key": "Direct", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10525", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10531", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10747", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10753", "../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" @@ -2346,8 +2534,8 @@ "call": "Direct Bypass", "key": "Direct Bypass", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12993", - "src/tachyon/tabs/diagnostic/initController.ts:1344" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13677", + "src/tachyon/tabs/diagnostic/initController.ts:1346" ] }, { @@ -2361,16 +2549,16 @@ "call": "Direct WAN", "key": "Direct WAN", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12987", - "src/tachyon/tabs/diagnostic/initController.ts:1335" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13671", + "src/tachyon/tabs/diagnostic/initController.ts:1337" ] }, { "call": "Disable autostart", "key": "Disable autostart", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10243", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:92" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10455", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:94" ] }, { @@ -2391,8 +2579,8 @@ "call": "Disabled", "key": "Disabled", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:347", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:374" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:369", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:396" ] }, { @@ -2402,6 +2590,13 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:6105" ] }, + { + "call": "Discord (Gateway / API / Voice)", + "key": "Discord (Gateway / API / Voice)", + "places": [ + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:140" + ] + }, { "call": "Display name", "key": "Display name", @@ -2429,7 +2624,7 @@ "call": "DNS Check Interval (s)", "key": "DNS Check Interval (s)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1842" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1867" ] }, { @@ -2443,7 +2638,7 @@ "call": "DNS on router", "key": "DNS on router", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9021", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9230", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:75" ] }, @@ -2529,7 +2724,7 @@ "call": "DNS server pushed to the client configuration", "key": "DNS server pushed to the client configuration", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3309" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3349" ] }, { @@ -2615,7 +2810,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:11528", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12212", "src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:26" ] }, @@ -2665,31 +2860,31 @@ "call": "Doctor failed", "key": "Doctor failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12558", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12578", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12586", - "src/tachyon/tabs/diagnostic/initController.ts:729", - "src/tachyon/tabs/diagnostic/initController.ts:771", - "src/tachyon/tabs/diagnostic/initController.ts:779" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13242", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13262", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13270", + "src/tachyon/tabs/diagnostic/initController.ts:731", + "src/tachyon/tabs/diagnostic/initController.ts:773", + "src/tachyon/tabs/diagnostic/initController.ts:781" ] }, { "call": "Doctor repair", "key": "Doctor repair", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12567", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12569", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12569", - "src/tachyon/tabs/diagnostic/initController.ts:745", - "src/tachyon/tabs/diagnostic/initController.ts:757", - "src/tachyon/tabs/diagnostic/initController.ts:758" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13251", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13253", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13253", + "src/tachyon/tabs/diagnostic/initController.ts:747", + "src/tachyon/tabs/diagnostic/initController.ts:759", + "src/tachyon/tabs/diagnostic/initController.ts:760" ] }, { "call": "Does not resolve", "key": "Does not resolve", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9142", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9351", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:54" ] }, @@ -2718,7 +2913,7 @@ "call": "Domain test sections", "key": "Domain test sections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1936" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1961" ] }, { @@ -2740,7 +2935,7 @@ "call": "Domains to block for the selected devices. Leave empty to block all internet. Enter one domain per line, e.g. youtube.com. Use the preset buttons to quickly add common categories.", "key": "Domains to block for the selected devices. Leave empty to block all internet. Enter one domain per line, e.g. youtube.com. Use the preset buttons to quickly add common categories.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:497" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:540" ] }, { @@ -2761,17 +2956,17 @@ "call": "Downlink", "key": "Downlink", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7946", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7958", - "src/tachyon/tabs/dashboard/initController.ts:1848", - "src/tachyon/tabs/dashboard/initController.ts:1861" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8080", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8092", + "src/tachyon/tabs/dashboard/initController.ts:1851", + "src/tachyon/tabs/dashboard/initController.ts:1864" ] }, { "call": "Download", "key": "Download", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10098", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10309", "src/partials/modal/renderModal.ts:253" ] }, @@ -2849,9 +3044,9 @@ "call": "Downloaded", "key": "Downloaded", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14726", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14773", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14912", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15424", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15471", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15610", "src/tachyon/tabs/monitoring/initController.ts:886", "src/tachyon/tabs/monitoring/initController.ts:945", "src/tachyon/tabs/monitoring/initController.ts:1134" @@ -2864,6 +3059,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1367" ] }, + { + "call": "DPI Engine", + "key": "DPI Engine", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11740", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:84" + ] + }, { "call": "Drag rows to change priority. The rule at the top is checked first.", "key": "Drag rows to change priority. The rule at the top is checked first.", @@ -2912,7 +3115,7 @@ "call": "e.g. Kids Phone (Night YouTube)", "key": "e.g. Kids Phone (Night YouTube)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:387" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:409" ] }, { @@ -2950,14 +3153,14 @@ "call": "Enable Adaptive Intervals", "key": "Enable Adaptive Intervals", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1897" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1922" ] }, { "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:1706" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1731" ] }, { @@ -2971,7 +3174,7 @@ "call": "Enable Anomaly Detection", "key": "Enable Anomaly Detection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1904" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1929" ] }, { @@ -2992,8 +3195,8 @@ "call": "Enable autostart", "key": "Enable autostart", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10253", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:102" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10465", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:104" ] }, { @@ -3007,22 +3210,22 @@ "call": "Enable Config Validation", "key": "Enable Config Validation", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1876" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1901" ] }, { "call": "Enable Direct WAN Bypass", "key": "Enable Direct WAN Bypass", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12778", - "src/tachyon/tabs/diagnostic/initController.ts:1093" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462", + "src/tachyon/tabs/diagnostic/initController.ts:1095" ] }, { "call": "Enable DNS Continuous Check", "key": "Enable DNS Continuous Check", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1836" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1861" ] }, { @@ -3036,21 +3239,21 @@ "call": "Enable Firewall Reload Dedup", "key": "Enable Firewall Reload Dedup", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1849" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1874" ] }, { "call": "Enable Graceful Degradation", "key": "Enable Graceful Degradation", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1883" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1908" ] }, { "call": "Enable Health Metrics", "key": "Enable Health Metrics", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1856" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1881" ] }, { @@ -3085,14 +3288,14 @@ "call": "Enable Proxy Health Monitor", "key": "Enable Proxy Health Monitor", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1812" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1837" ] }, { "call": "Enable RAG (Knowledge Base Retrieval)", "key": "Enable RAG (Knowledge Base Retrieval)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1788", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1813", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:778" ] }, @@ -3100,14 +3303,14 @@ "call": "Enable Smart Cooldowns", "key": "Enable Smart Cooldowns", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1869" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1894" ] }, { "call": "Enable Smart Detect", "key": "Enable Smart Detect", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1923", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1948", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1119" ] }, @@ -3115,7 +3318,7 @@ "call": "Enable Telegram Bot", "key": "Enable Telegram Bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2133" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2158" ] }, { @@ -3136,7 +3339,7 @@ "call": "Enable Watchdog", "key": "Enable Watchdog", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1680" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1705" ] }, { @@ -3157,28 +3360,36 @@ "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:2134" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2159" ] }, { "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:1681" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1706" ] }, { "call": "End of the schedule interval (e.g. 08:00). Supports spans crossing midnight.", "key": "End of the schedule interval (e.g. 08:00). Supports spans crossing midnight.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:470" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:492" ] }, { "call": "End Time (HH:MM)", "key": "End Time (HH:MM)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:469" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:491" + ] + }, + { + "call": "Engine", + "key": "Engine", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11877", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:283" ] }, { @@ -3209,7 +3420,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:11047", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11269", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:644" ] }, @@ -3221,6 +3432,13 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2907" ] }, + { + "call": "Enter a whole number of minutes between 0 and 1440", + "key": "Enter a whole number of minutes between 0 and 1440", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:529" + ] + }, { "call": "Enter HWID", "key": "Enter HWID", @@ -3232,7 +3450,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:2145" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2170" ] }, { @@ -3419,16 +3637,26 @@ "call": "Failed to apply fix", "key": "Failed to apply fix", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12865", - "src/tachyon/tabs/diagnostic/initController.ts:1200" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13549", + "src/tachyon/tabs/diagnostic/initController.ts:1202" + ] + }, + { + "call": "Failed to apply strategy", + "key": "Failed to apply strategy", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4016", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12120", + "src/tachyon/methods/shell/index.ts:1140", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:569" ] }, { "call": "Failed to close connection", "key": "Failed to close connection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15101", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15115", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15799", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15813", "src/tachyon/tabs/monitoring/initController.ts:1400", "src/tachyon/tabs/monitoring/initController.ts:1415" ] @@ -3437,8 +3665,8 @@ "call": "Failed to close connections", "key": "Failed to close connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15130", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15142", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15828", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15840", "src/tachyon/tabs/monitoring/initController.ts:1434", "src/tachyon/tabs/monitoring/initController.ts:1447" ] @@ -3447,15 +3675,15 @@ "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:12723", - "src/tachyon/tabs/diagnostic/initController.ts:972" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13407", + "src/tachyon/tabs/diagnostic/initController.ts:974" ] }, { "call": "Failed to copy!", "key": "Failed to copy!", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2977", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2987", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1625", "src/helpers/copyToClipboard.ts:12" ] @@ -3471,26 +3699,26 @@ "call": "Failed to execute", "key": "Failed to execute", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3260", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3263", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16984", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16984", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17044", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17216", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3276", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3279", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17686", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17686", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17746", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17918", "src/tachyon/methods/shell/index.ts:171", "src/tachyon/methods/shell/index.ts:178", - "src/tachyon/tabs/updates/initController.ts:657", - "src/tachyon/tabs/updates/initController.ts:658", - "src/tachyon/tabs/updates/initController.ts:735", - "src/tachyon/tabs/updates/initController.ts:949" + "src/tachyon/tabs/updates/initController.ts:661", + "src/tachyon/tabs/updates/initController.ts:662", + "src/tachyon/tabs/updates/initController.ts:739", + "src/tachyon/tabs/updates/initController.ts:953" ] }, { "call": "Failed to generate bug report", "key": "Failed to generate bug report", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13328", - "src/tachyon/tabs/diagnostic/initController.ts:1732" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14020", + "src/tachyon/tabs/diagnostic/initController.ts:1748" ] }, { @@ -3501,6 +3729,21 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8103" ] }, + { + "call": "Failed to get fuzzer status", + "key": "Failed to get fuzzer status", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3974", + "src/tachyon/methods/shell/index.ts:1092" + ] + }, + { + "call": "Failed to get fuzzer strategies", + "key": "Failed to get fuzzer strategies", + "places": [ + "src/tachyon/methods/shell/index.ts:1175" + ] + }, { "call": "Failed to load snapshots", "key": "Failed to load snapshots", @@ -3519,7 +3762,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:10695", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10917", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:231" ] }, @@ -3534,15 +3777,15 @@ "call": "Failed to read operation log", "key": "Failed to read operation log", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3631", - "src/tachyon/methods/shell/index.ts:657" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3653", + "src/tachyon/methods/shell/index.ts:664" ] }, { "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:11347", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11569", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:115" ] }, @@ -3557,10 +3800,10 @@ "call": "Failed to restore native internet", "key": "Failed to restore native internet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13164", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13247", - "src/tachyon/tabs/diagnostic/initController.ts:1541", - "src/tachyon/tabs/diagnostic/initController.ts:1635" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13848", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13939", + "src/tachyon/tabs/diagnostic/initController.ts:1543", + "src/tachyon/tabs/diagnostic/initController.ts:1651" ] }, { @@ -3574,8 +3817,8 @@ "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:2360", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2382" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2385", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2407" ] }, { @@ -3613,19 +3856,35 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:669" ] }, + { + "call": "Failed to start benchmark", + "key": "Failed to start benchmark", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12103", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:551" + ] + }, { "call": "Failed to start bot", "key": "Failed to start bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2079" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2104" + ] + }, + { + "call": "Failed to start fuzzer", + "key": "Failed to start fuzzer", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3951", + "src/tachyon/methods/shell/index.ts:1066" ] }, { "call": "Failed to start service check.", "key": "Failed to start service check.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10678", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11250", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10900", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11472", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:213", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:890" ] @@ -3641,7 +3900,15 @@ "call": "Failed to stop bot", "key": "Failed to stop bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2093" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2118" + ] + }, + { + "call": "Failed to stop fuzzer", + "key": "Failed to stop fuzzer", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3988", + "src/tachyon/methods/shell/index.ts:1107" ] }, { @@ -3655,45 +3922,52 @@ "call": "Failed to switch proxy", "key": "Failed to switch proxy", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7046", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7052", - "src/tachyon/tabs/dashboard/initController.ts:699", - "src/tachyon/tabs/dashboard/initController.ts:705" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7180", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7186", + "src/tachyon/tabs/dashboard/initController.ts:700", + "src/tachyon/tabs/dashboard/initController.ts:706" ] }, { "call": "Failed to update device", "key": "Failed to update device", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13010", - "src/tachyon/tabs/diagnostic/initController.ts:1362" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13694", + "src/tachyon/tabs/diagnostic/initController.ts:1364" ] }, { "call": "Failed to update subscriptions", "key": "Failed to update subscriptions", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6753", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6753", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6768", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6800", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6803", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7703", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7706", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6886", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6886", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6901", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6934", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6937", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7837", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7840", "src/tachyon/tabs/dashboard/initController.ts:309", "src/tachyon/tabs/dashboard/initController.ts:310", "src/tachyon/tabs/dashboard/initController.ts:330", - "src/tachyon/tabs/dashboard/initController.ts:376", - "src/tachyon/tabs/dashboard/initController.ts:380", - "src/tachyon/tabs/dashboard/initController.ts:1536", - "src/tachyon/tabs/dashboard/initController.ts:1540" + "src/tachyon/tabs/dashboard/initController.ts:377", + "src/tachyon/tabs/dashboard/initController.ts:381", + "src/tachyon/tabs/dashboard/initController.ts:1537", + "src/tachyon/tabs/dashboard/initController.ts:1541" + ] + }, + { + "call": "Failover failure threshold", + "key": "Failover failure threshold", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1526" ] }, { "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:9414", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9623", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:91" ] }, @@ -3701,7 +3975,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:9414", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9623", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:92" ] }, @@ -3709,7 +3983,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:9386", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9595", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:46" ] }, @@ -3731,23 +4005,23 @@ "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:1837" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1862" ] }, { "call": "Faster server search interval", "key": "Faster server search interval", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7650", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7784", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3168", - "src/tachyon/tabs/dashboard/initController.ts:1463" + "src/tachyon/tabs/dashboard/initController.ts:1464" ] }, { "call": "Fastest", "key": "Fastest", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4285", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4401", "src/tachyon/methods/custom/getDashboardSections.ts:661" ] }, @@ -3755,7 +4029,7 @@ "call": "Filter by service:", "key": "Filter by service:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10861", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11083", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:425" ] }, @@ -3777,7 +4051,7 @@ "call": "Firewall WAN port", "key": "Firewall WAN port", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9206", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9415", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:136" ] }, @@ -3785,16 +4059,16 @@ "call": "Fix applied", "key": "Fix applied", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12859", - "src/tachyon/tabs/diagnostic/initController.ts:1194" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13543", + "src/tachyon/tabs/diagnostic/initController.ts:1196" ] }, { "call": "Fix resolv.conf", "key": "Fix resolv.conf", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12764", - "src/tachyon/tabs/diagnostic/initController.ts:1079" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13448", + "src/tachyon/tabs/diagnostic/initController.ts:1081" ] }, { @@ -3809,18 +4083,18 @@ "call": "Fixed", "key": "Fixed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12567", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12855", - "src/tachyon/tabs/diagnostic/initController.ts:751", - "src/tachyon/tabs/diagnostic/initController.ts:1190" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13251", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13539", + "src/tachyon/tabs/diagnostic/initController.ts:753", + "src/tachyon/tabs/diagnostic/initController.ts:1192" ] }, { "call": "Flush Conntrack Table", "key": "Flush Conntrack Table", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12781", - "src/tachyon/tabs/diagnostic/initController.ts:1096" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13465", + "src/tachyon/tabs/diagnostic/initController.ts:1098" ] }, { @@ -3841,7 +4115,7 @@ "call": "Forces sing-box to tunnel DNS requests via DoQ with Encrypted Client Hello (ECH) for SNI hiding.", "key": "Forces sing-box to tunnel DNS requests via DoQ with Encrypted Client Hello (ECH) for SNI hiding.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1594" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1619" ] }, { @@ -3890,7 +4164,7 @@ "call": "Full System Diagnostic", "key": "Full System Diagnostic", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11397", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11619", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:173" ] }, @@ -3933,8 +4207,8 @@ "call": "Generate bug report", "key": "Generate bug report", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10338", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:187" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10560", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:199" ] }, { @@ -3965,7 +4239,7 @@ "call": "Generated inbound", "key": "Generated inbound", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9170", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9379", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:89" ] }, @@ -4022,8 +4296,8 @@ "call": "Get global check", "key": "Get global check", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10262", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:111" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10474", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:113" ] }, { @@ -4037,18 +4311,26 @@ "call": "Global check", "key": "Global check", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12533", - "src/tachyon/tabs/diagnostic/initController.ts:701" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13217", + "src/tachyon/tabs/diagnostic/initController.ts:703" ] }, { "call": "Global check failed", "key": "Global check failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12544", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12548", - "src/tachyon/tabs/diagnostic/initController.ts:712", - "src/tachyon/tabs/diagnostic/initController.ts:716" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13228", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13232", + "src/tachyon/tabs/diagnostic/initController.ts:714", + "src/tachyon/tabs/diagnostic/initController.ts:718" + ] + }, + { + "call": "Global Default", + "key": "Global Default", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12116", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:565" ] }, { @@ -4076,7 +4358,7 @@ "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:11262", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11484", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:14" ] }, @@ -4084,32 +4366,32 @@ "call": "Hex or binary junk payload", "key": "Hex or binary junk payload", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3482", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3488", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3494" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3522", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3528", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3534" ] }, { "call": "Hex or binary payload", "key": "Hex or binary payload", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3464", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3470", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3476" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3504", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3510", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3516" ] }, { "call": "Hex or binary payload for init", "key": "Hex or binary payload for init", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3452" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3492" ] }, { "call": "Hex or binary payload for response", "key": "Hex or binary payload for response", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3458" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3498" ] }, { @@ -4193,7 +4475,7 @@ "call": "Hide values", "key": "Hide values", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10150", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10361", "src/partials/modal/renderModal.ts:310" ] }, @@ -4201,9 +4483,9 @@ "call": "Higher-level check interval", "key": "Higher-level check interval", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7637", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7771", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3132", - "src/tachyon/tabs/dashboard/initController.ts:1449" + "src/tachyon/tabs/dashboard/initController.ts:1450" ] }, { @@ -4217,16 +4499,16 @@ "call": "History", "key": "History", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13111", - "src/tachyon/tabs/diagnostic/initController.ts:1478" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13795", + "src/tachyon/tabs/diagnostic/initController.ts:1480" ] }, { "call": "Host", "key": "Host", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14716", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14769", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15414", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15467", "src/tachyon/tabs/monitoring/initController.ts:876", "src/tachyon/tabs/monitoring/initController.ts:941" ] @@ -4249,7 +4531,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:1863" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1888" ] }, { @@ -4270,21 +4552,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:1843" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1868" ] }, { "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:1819" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1844" ] }, { "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:2185" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2210" ] }, { @@ -4313,7 +4595,7 @@ "call": "HTTP error", "key": "HTTP error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5026", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5142", "src/tachyon/api.ts:27" ] }, @@ -4342,17 +4624,17 @@ "call": "Idle timeout", "key": "Idle timeout", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7521", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7655", "../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:1294" + "src/tachyon/tabs/dashboard/initController.ts:1295" ] }, { "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:1884" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1909" ] }, { @@ -4482,21 +4764,21 @@ "call": "Init handshake timeout", "key": "Init handshake timeout", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3500" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3540" ] }, { "call": "Init packet header (H1)", "key": "Init packet header (H1)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3427" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3467" ] }, { "call": "Init packet junk size (S1)", "key": "Init packet junk size (S1)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3403" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3443" ] }, { @@ -4552,23 +4834,30 @@ "call": "Init payload (I1)", "key": "Init payload (I1)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3451" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3491" ] }, { "call": "Init timeout (Itime)", "key": "Init timeout (Itime)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3499" + "../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": [ + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:141" ] }, { "call": "Install", "key": "Install", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16474", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17242", - "src/tachyon/tabs/updates/initController.ts:985", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17172", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17944", + "src/tachyon/tabs/updates/initController.ts:989", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:431" ] }, @@ -4576,26 +4865,35 @@ "call": "Install another build:", "key": "Install another build:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17644", - "src/tachyon/tabs/updates/initController.ts:1473" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18367", + "src/tachyon/tabs/updates/initController.ts:1502" + ] + }, + { + "call": "Installed", + "key": "Installed", + "places": [ + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:100", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110" ] }, { "call": "Installed build → Available build", "key": "Installed build → Available build", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17524", - "src/tachyon/tabs/updates/initController.ts:1334" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18247", + "src/tachyon/tabs/updates/initController.ts:1363" ] }, { "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:16763", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17532", - "src/tachyon/tabs/updates/initController.ts:355", - "src/tachyon/tabs/updates/initController.ts:1342" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17465", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18255", + "src/tachyon/tabs/updates/initController.ts:359", + "src/tachyon/tabs/updates/initController.ts:1371" ] }, { @@ -4623,12 +4921,12 @@ "call": "Interrupt connections", "key": "Interrupt connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7523", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7655", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7657", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7789", "../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:1296", - "src/tachyon/tabs/dashboard/initController.ts:1469" + "src/tachyon/tabs/dashboard/initController.ts:1297", + "src/tachyon/tabs/dashboard/initController.ts:1470" ] }, { @@ -4649,8 +4947,8 @@ "call": "Interval", "key": "Interval", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7519", - "src/tachyon/tabs/dashboard/initController.ts:1292" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7653", + "src/tachyon/tabs/dashboard/initController.ts:1293" ] }, { @@ -4699,7 +4997,7 @@ "call": "Invalid domain: empty prefix value", "key": "Invalid domain: empty prefix value", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:511" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:554" ] }, { @@ -5266,16 +5564,16 @@ "call": "Issues", "key": "Issues", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12567", - "src/tachyon/tabs/diagnostic/initController.ts:747" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13251", + "src/tachyon/tabs/diagnostic/initController.ts:749" ] }, { "call": "Issues detected", "key": "Issues detected", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8944", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9433", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9153", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9642", "src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:17", "src/tachyon/tabs/diagnostic/helpers/getMeta.ts:20" ] @@ -5284,8 +5582,8 @@ "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:12881", - "src/tachyon/tabs/diagnostic/initController.ts:1219" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13565", + "src/tachyon/tabs/diagnostic/initController.ts:1221" ] }, { @@ -5362,7 +5660,7 @@ "call": "Junk packet count (Jc)", "key": "Junk packet count (Jc)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3385" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3425" ] }, { @@ -5376,63 +5674,63 @@ "call": "Junk packet max size (Jmax)", "key": "Junk packet max size (Jmax)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3397" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3437" ] }, { "call": "Junk packet min size (Jmin)", "key": "Junk packet min size (Jmin)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3391" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3431" ] }, { "call": "Junk payload (J1)", "key": "Junk payload (J1)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3481" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3521" ] }, { "call": "Junk payload (J2)", "key": "Junk payload (J2)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3487" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3527" ] }, { "call": "Junk payload (J3)", "key": "Junk payload (J3)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3493" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3533" ] }, { "call": "Junk size for cookie packet", "key": "Junk size for cookie packet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3416" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3456" ] }, { "call": "Junk size for initiation packet", "key": "Junk size for initiation packet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3404" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3444" ] }, { "call": "Junk size for response packet", "key": "Junk size for response packet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3410" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3450" ] }, { "call": "Junk size for transport packet", "key": "Junk size for transport packet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3422" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3462" ] }, { @@ -5489,25 +5787,25 @@ "call": "LAN Devices", "key": "LAN Devices", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13097", - "src/tachyon/tabs/diagnostic/initController.ts:1462" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13781", + "src/tachyon/tabs/diagnostic/initController.ts:1464" ] }, { "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:1749" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1774" ] }, { "call": "Latency test failed", "key": "Latency test failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3517", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3536", - "src/tachyon/methods/shell/index.ts:512", - "src/tachyon/methods/shell/index.ts:533" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3539", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3558", + "src/tachyon/methods/shell/index.ts:519", + "src/tachyon/methods/shell/index.ts:540" ] }, { @@ -5521,18 +5819,18 @@ "call": "Latest version is installed", "key": "Latest version is installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16765", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17530", - "src/tachyon/tabs/updates/initController.ts:358", - "src/tachyon/tabs/updates/initController.ts:1340" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17467", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18253", + "src/tachyon/tabs/updates/initController.ts:362", + "src/tachyon/tabs/updates/initController.ts:1369" ] }, { "call": "Latest version:", "key": "Latest version:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17532", - "src/tachyon/tabs/updates/initController.ts:1342" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18255", + "src/tachyon/tabs/updates/initController.ts:1371" ] }, { @@ -5549,6 +5847,13 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2902" ] }, + { + "call": "Limit device network usage per day. When the quota is exhausted, the device is blocked until midnight. 0 disables the limit.", + "key": "Limit device network usage per day. When the quota is exhausted, the device is blocked until midnight. 0 disables the limit.", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:517" + ] + }, { "call": "List must be an HTTP(S) URL or a local .lst path", "key": "List must be an HTTP(S) URL or a local .lst path", @@ -5560,7 +5865,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:1965" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1990" ] }, { @@ -5588,7 +5893,7 @@ "call": "Listening port", "key": "Listening port", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9200", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9409", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:125" ] }, @@ -5603,7 +5908,7 @@ "call": "LM Studio (Local PC / Server)", "key": "LM Studio (Local PC / Server)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1727", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1752", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:869" ] }, @@ -5654,16 +5959,16 @@ "call": "Loading connected LAN devices...", "key": "Loading connected LAN devices...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12900", - "src/tachyon/tabs/diagnostic/initController.ts:1241" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13584", + "src/tachyon/tabs/diagnostic/initController.ts:1243" ] }, { "call": "Loading connections", "key": "Loading connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14087", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14819", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14785", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15517", "src/tachyon/tabs/monitoring/initController.ts:1002", "src/tachyon/tabs/monitoring/render.ts:101" ] @@ -5672,8 +5977,8 @@ "call": "Loading service list...", "key": "Loading service list...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10627", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10666", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10849", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10888", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:150", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:194" ] @@ -5682,16 +5987,18 @@ "call": "Loading...", "key": "Loading...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17406", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17419", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17429", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17439", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17449", - "src/tachyon/tabs/updates/initController.ts:1186", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18119", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18132", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18142", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18152", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18162", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18172", "src/tachyon/tabs/updates/initController.ts:1201", - "src/tachyon/tabs/updates/initController.ts:1219", - "src/tachyon/tabs/updates/initController.ts:1233", - "src/tachyon/tabs/updates/initController.ts:1247" + "src/tachyon/tabs/updates/initController.ts:1216", + "src/tachyon/tabs/updates/initController.ts:1234", + "src/tachyon/tabs/updates/initController.ts:1248", + "src/tachyon/tabs/updates/initController.ts:1262", + "src/tachyon/tabs/updates/initController.ts:1276" ] }, { @@ -5712,14 +6019,14 @@ "call": "Log Level", "key": "Log Level", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1565" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1590" ] }, { "call": "lx", "key": "lx", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5713", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5843", "src/tachyon/helpers/singBoxVariant.ts:62" ] }, @@ -5727,7 +6034,7 @@ "call": "Main DNS", "key": "Main DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9016", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9225", "src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67" ] }, @@ -5743,10 +6050,10 @@ "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:7218", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7558", - "src/tachyon/tabs/dashboard/initController.ts:913", - "src/tachyon/tabs/dashboard/initController.ts:1345", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7352", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7692", + "src/tachyon/tabs/dashboard/initController.ts:914", + "src/tachyon/tabs/dashboard/initController.ts:1346", "src/tachyon/tabs/dashboard/partials/renderSections.ts:450" ] }, @@ -5778,6 +6085,13 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8625" ] }, + { + "call": "Masquerade LAN traffic into tailnet", + "key": "Masquerade LAN traffic into tailnet", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3297" + ] + }, { "call": "Match destination IPs or subnets", "key": "Match destination IPs or subnets", @@ -5810,14 +6124,14 @@ "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:1911" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1936" ] }, { "call": "Maximum size of junk packets", "key": "Maximum size of junk packets", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3398" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3438" ] }, { @@ -5831,8 +6145,8 @@ "call": "Memory Usage", "key": "Memory Usage", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7970", - "src/tachyon/tabs/dashboard/initController.ts:1874" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8104", + "src/tachyon/tabs/dashboard/initController.ts:1877" ] }, { @@ -5853,7 +6167,15 @@ "call": "Metrics Retention (hours)", "key": "Metrics Retention (hours)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1862" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1887" + ] + }, + { + "call": "min/day", + "key": "min/day", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:319", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:325" ] }, { @@ -5867,7 +6189,7 @@ "call": "Minimum size of junk packets", "key": "Minimum size of junk packets", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3392" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3432" ] }, { @@ -5902,7 +6224,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:1736" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1761" ] }, { @@ -5944,7 +6266,7 @@ "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:1905" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1930" ] }, { @@ -5966,14 +6288,14 @@ "key": "MTU", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8384", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3316" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3356" ] }, { "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:2175" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2200" ] }, { @@ -6003,10 +6325,17 @@ "call": "Native internet restored. Tachyon stopped.", "key": "Native internet restored. Tachyon stopped.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13154", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13239", - "src/tachyon/tabs/diagnostic/initController.ts:1531", - "src/tachyon/tabs/diagnostic/initController.ts:1627" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13838", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13931", + "src/tachyon/tabs/diagnostic/initController.ts:1533", + "src/tachyon/tabs/diagnostic/initController.ts:1643" + ] + }, + { + "call": "Native tailscaled (tailnet reachable from LAN without client)", + "key": "Native tailscaled (tailnet reachable from LAN without client)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3287" ] }, { @@ -6049,7 +6378,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:6065", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6198", "src/tachyon/services/core.service.ts:38" ] }, @@ -6057,8 +6386,8 @@ "call": "NFQUEUE range is available", "key": "NFQUEUE range is available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9501", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9587", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9710", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9796", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:100", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:97" ] @@ -6067,8 +6396,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:9501", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9587", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9710", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9796", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:99", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:96" ] @@ -6105,14 +6434,14 @@ "call": "No", "key": "No", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7146", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7149", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7209", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7549", - "src/tachyon/tabs/dashboard/initController.ts:821", - "src/tachyon/tabs/dashboard/initController.ts:825", - "src/tachyon/tabs/dashboard/initController.ts:901", - "src/tachyon/tabs/dashboard/initController.ts:1333" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7280", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7283", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7343", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7683", + "src/tachyon/tabs/dashboard/initController.ts:822", + "src/tachyon/tabs/dashboard/initController.ts:826", + "src/tachyon/tabs/dashboard/initController.ts:902", + "src/tachyon/tabs/dashboard/initController.ts:1334" ] }, { @@ -6127,7 +6456,7 @@ "call": "No active connections", "key": "No active connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14838", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15536", "src/tachyon/tabs/monitoring/initController.ts:1026" ] }, @@ -6135,8 +6464,8 @@ "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:12911", - "src/tachyon/tabs/diagnostic/initController.ts:1253" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13595", + "src/tachyon/tabs/diagnostic/initController.ts:1255" ] }, { @@ -6147,11 +6476,19 @@ "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1161" ] }, + { + "call": "No benchmark results yet. Select engine and click \"Start Benchmark\".", + "key": "No benchmark results yet. Select engine and click \"Start Benchmark\".", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11905", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:311" + ] + }, { "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:10702", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10924", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:239" ] }, @@ -6159,7 +6496,7 @@ "call": "No closed connections", "key": "No closed connections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14838", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15536", "src/tachyon/tabs/monitoring/initController.ts:1027" ] }, @@ -6167,7 +6504,7 @@ "call": "No conflict detected", "key": "No conflict detected", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9126", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9335", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:32" ] }, @@ -6182,30 +6519,30 @@ "call": "No DHCP clients detected", "key": "No DHCP clients detected", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12694", - "src/tachyon/tabs/diagnostic/initController.ts:941" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13378", + "src/tachyon/tabs/diagnostic/initController.ts:943" ] }, { "call": "No diagnostic history available yet.", "key": "No diagnostic history available yet.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13027", - "src/tachyon/tabs/diagnostic/initController.ts:1380" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13711", + "src/tachyon/tabs/diagnostic/initController.ts:1382" ] }, { "call": "No domains detected yet", "key": "No domains detected yet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1980" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2005" ] }, { "call": "No enabled server inbounds configured", "key": "No enabled server inbounds configured", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9246", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9455", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:187" ] }, @@ -6220,23 +6557,23 @@ "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:12888", - "src/tachyon/tabs/diagnostic/initController.ts:1228" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13572", + "src/tachyon/tabs/diagnostic/initController.ts:1230" ] }, { "call": "No issues found", "key": "No issues found", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12569", - "src/tachyon/tabs/diagnostic/initController.ts:758" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13253", + "src/tachyon/tabs/diagnostic/initController.ts:760" ] }, { "call": "No other marking rules found", "key": "No other marking rules found", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9351", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9560", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:105" ] }, @@ -6244,7 +6581,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:9179", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9388", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:99" ] }, @@ -6252,7 +6589,7 @@ "call": "No rules use ByeDPI", "key": "No rules use ByeDPI", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9666", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9875", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:79" ] }, @@ -6260,7 +6597,7 @@ "call": "No rules use Zapret", "key": "No rules use Zapret", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9491", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9700", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:79" ] }, @@ -6268,7 +6605,7 @@ "call": "No rules use Zapret2", "key": "No rules use Zapret2", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9577", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9786", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:82" ] }, @@ -6291,30 +6628,32 @@ "call": "Node list is empty", "key": "Node list is empty", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7451", - "src/tachyon/tabs/dashboard/initController.ts:1210" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7585", + "src/tachyon/tabs/dashboard/initController.ts:1211" ] }, { "call": "Nodes", "key": "Nodes", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7290", - "src/tachyon/tabs/dashboard/initController.ts:1009" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7424", + "src/tachyon/tabs/dashboard/initController.ts:1010" ] }, { "call": "None", "key": "None", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12691", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:314", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:333", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13375", + "../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", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:355", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:449", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2741", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3033", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3042", - "src/tachyon/tabs/diagnostic/initController.ts:932" + "src/tachyon/tabs/diagnostic/initController.ts:934" ] }, { @@ -6322,9 +6661,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:4963", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9135", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11660", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9344", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12344", "src/tachyon/methods/custom/getDashboardSections.ts:1654", "src/tachyon/tabs/dashboard/partials/renderSections.ts:623", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:46", @@ -6345,8 +6684,8 @@ "call": "Not detected", "key": "Not detected", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9156", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9256", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9365", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9465", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:70", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:199" ] @@ -6355,7 +6694,7 @@ "call": "Not implement yet", "key": "Not implement yet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10502", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10724", "src/tachyon/tabs/diagnostic/partials/renderCheckSection.ts:193" ] }, @@ -6363,23 +6702,28 @@ "call": "Not installed", "key": "Not installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5698", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5703", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17429", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17439", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17449", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5828", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5833", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18142", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18152", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18162", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18172", "src/tachyon/helpers/singBoxVariant.ts:38", "src/tachyon/helpers/singBoxVariant.ts:46", - "src/tachyon/tabs/updates/initController.ts:1222", - "src/tachyon/tabs/updates/initController.ts:1236", - "src/tachyon/tabs/updates/initController.ts:1250" + "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:101", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:106", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:111" ] }, { "call": "Not public", "key": "Not public", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9149", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9358", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:62" ] }, @@ -6387,7 +6731,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:9207", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9416", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:139" ] }, @@ -6397,10 +6741,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:11611", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11630", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11635", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11683", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12295", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12314", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12319", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12367", "src/tachyon/tabs/dashboard/partials/renderSections.ts:332", "src/tachyon/tabs/dashboard/partials/renderSections.ts:826", "src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:91", @@ -6413,16 +6757,16 @@ "call": "Not running", "key": "Not running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5299", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12091", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12261", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12307", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12369", - "src/tachyon/tabs/diagnostic/diagnostic.store.ts:140", - "src/tachyon/tabs/diagnostic/initController.ts:125", - "src/tachyon/tabs/diagnostic/initController.ts:356", - "src/tachyon/tabs/diagnostic/initController.ts:414", - "src/tachyon/tabs/diagnostic/initController.ts:500" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5417", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12775", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12945", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12991", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13053", + "src/tachyon/tabs/diagnostic/diagnostic.store.ts:142", + "src/tachyon/tabs/diagnostic/initController.ts:127", + "src/tachyon/tabs/diagnostic/initController.ts:358", + "src/tachyon/tabs/diagnostic/initController.ts:416", + "src/tachyon/tabs/diagnostic/initController.ts:502" ] }, { @@ -6436,49 +6780,49 @@ "call": "Notify in Telegram", "key": "Notify in Telegram", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:608" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:651" ] }, { "call": "Notify on Certificate Warnings", "key": "Notify on Certificate Warnings", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2257" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2282" ] }, { "call": "Notify on Core Crashes", "key": "Notify on Core Crashes", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2205" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2230" ] }, { "call": "Notify on DNS Leaks", "key": "Notify on DNS Leaks", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2270" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2295" ] }, { "call": "Notify on Server Switches", "key": "Notify on Server Switches", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2231" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2256" ] }, { "call": "Notify on Service Restarts", "key": "Notify on Service Restarts", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2218" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2243" ] }, { "call": "Notify on Subscription Updates", "key": "Notify on Subscription Updates", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2244" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2269" ] }, { @@ -6488,11 +6832,18 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:945" ] }, + { + "call": "Number of consecutive failed probes before switching sections", + "key": "Number of consecutive failed probes before switching sections", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1527" + ] + }, { "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:1825" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1850" ] }, { @@ -6506,7 +6857,7 @@ "call": "Number of junk packets before handshake (1-10)", "key": "Number of junk packets before handshake (1-10)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3386" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3426" ] }, { @@ -6527,7 +6878,7 @@ "call": "Ollama (Local PC / Server)", "key": "Ollama (Local PC / Server)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1726", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1751", "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:861" ] }, @@ -6600,10 +6951,10 @@ "call": "Open", "key": "Open", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17507", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17544", - "src/tachyon/tabs/updates/initController.ts:1316", - "src/tachyon/tabs/updates/initController.ts:1355" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18230", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18267", + "src/tachyon/tabs/updates/initController.ts:1345", + "src/tachyon/tabs/updates/initController.ts:1384" ] }, { @@ -6617,7 +6968,7 @@ "call": "Open Project Page", "key": "Open Project Page", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11533", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12217", "src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:31" ] }, @@ -6625,7 +6976,7 @@ "call": "Operation completed successfully!", "key": "Operation completed successfully!", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16389", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17087", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:324" ] }, @@ -6633,7 +6984,7 @@ "call": "Operation failed", "key": "Operation failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16515", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17213", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:483" ] }, @@ -6641,8 +6992,8 @@ "call": "Operation in progress...", "key": "Operation in progress...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16216", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16271", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16914", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16969", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:110", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:172" ] @@ -6651,7 +7002,7 @@ "call": "Operation log", "key": "Operation log", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16257", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16955", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:157" ] }, @@ -6659,15 +7010,15 @@ "call": "Operation log is not available", "key": "Operation log is not available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3631", - "src/tachyon/methods/shell/index.ts:656" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3653", + "src/tachyon/methods/shell/index.ts:663" ] }, { "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:16253", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16951", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:152" ] }, @@ -6676,11 +7027,11 @@ "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:3497", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3565", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3519", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3587", "src/helpers/withTimeout.ts:7", - "src/tachyon/methods/shell/index.ts:482", - "src/tachyon/methods/shell/index.ts:570" + "src/tachyon/methods/shell/index.ts:489", + "src/tachyon/methods/shell/index.ts:577" ] }, { @@ -6694,16 +7045,16 @@ "call": "Optimize AWG MTU", "key": "Optimize AWG MTU", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12783", - "src/tachyon/tabs/diagnostic/initController.ts:1098" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13467", + "src/tachyon/tabs/diagnostic/initController.ts:1100" ] }, { "call": "Optimize RAM memory", "key": "Optimize RAM memory", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12775", - "src/tachyon/tabs/diagnostic/initController.ts:1090" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13459", + "src/tachyon/tabs/diagnostic/initController.ts:1092" ] }, { @@ -6756,6 +7107,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7705" ] }, + { + "call": "Other peers", + "key": "Other peers", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8193", + "src/tachyon/tabs/dashboard/initController.ts:1985" + ] + }, { "call": "outbounds must be a non-empty array of strings", "key": "outbounds must be a non-empty array of strings", @@ -6856,30 +7215,30 @@ "call": "Path must be absolute (start with /)", "key": "Path must be absolute (start with /)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1546" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1571" ] }, { "call": "Path must contain at least one directory (like /tmp/cache.db)", "key": "Path must contain at least one directory (like /tmp/cache.db)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1555" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1580" ] }, { "call": "Path must end with cache.db", "key": "Path must end with cache.db", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1550" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1575" ] }, { "call": "Pause updates", "key": "Pause updates", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14067", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14068", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14611", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14765", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14766", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15309", "src/tachyon/tabs/monitoring/initController.ts:746", "src/tachyon/tabs/monitoring/render.ts:80", "src/tachyon/tabs/monitoring/render.ts:81" @@ -6889,21 +7248,21 @@ "call": "Payload (I3)", "key": "Payload (I3)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3463" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3503" ] }, { "call": "Payload (I4)", "key": "Payload (I4)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3469" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3509" ] }, { "call": "Payload (I5)", "key": "Payload (I5)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3475" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3515" ] }, { @@ -6938,9 +7297,9 @@ "call": "Pending", "key": "Pending", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5231", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:368", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:378", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5347", + "../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" ] }, @@ -6948,7 +7307,7 @@ "call": "Pending...", "key": "Pending...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10582", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10804", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:98" ] }, @@ -6971,7 +7330,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:1813" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1838" ] }, { @@ -6979,14 +7338,14 @@ "key": "Persistent Keepalive", "places": [ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8391", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3326" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3366" ] }, { "call": "Persistent Smart Detect", "key": "Persistent Smart Detect", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1890" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1915" ] }, { @@ -7008,14 +7367,14 @@ "call": "Polling Interval (seconds)", "key": "Polling Interval (seconds)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2184" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2209" ] }, { "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:2197" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2222" ] }, { @@ -7029,7 +7388,7 @@ "call": "Port conflict", "key": "Port conflict", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9115", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9324", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:19" ] }, @@ -7081,7 +7440,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:1789" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1814" ] }, { @@ -7102,7 +7461,7 @@ "call": "Pre-shared Key (PSK)", "key": "Pre-shared Key (PSK)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3376" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3416" ] }, { @@ -7144,7 +7503,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:1850" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1875" ] }, { @@ -7161,8 +7520,8 @@ "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:7673", - "src/tachyon/tabs/dashboard/initController.ts:1493", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7807", + "src/tachyon/tabs/dashboard/initController.ts:1494", "src/tachyon/tabs/dashboard/partials/renderSections.ts:536", "src/tachyon/tabs/dashboard/partials/renderSections.ts:537" ] @@ -7171,8 +7530,8 @@ "call": "Priority details are unavailable", "key": "Priority details are unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7623", - "src/tachyon/tabs/dashboard/initController.ts:1430" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7757", + "src/tachyon/tabs/dashboard/initController.ts:1431" ] }, { @@ -7223,11 +7582,19 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2658" ] }, + { + "call": "Provider Global Default", + "key": "Provider Global Default", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11793", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:185" + ] + }, { "call": "Proxy", "key": "Proxy", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10528", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10750", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:29" ] }, @@ -7235,44 +7602,44 @@ "call": "Proxy / DPI", "key": "Proxy / DPI", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12987", - "src/tachyon/tabs/diagnostic/initController.ts:1336" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13671", + "src/tachyon/tabs/diagnostic/initController.ts:1338" ] }, { "call": "Proxy Fail Threshold", "key": "Proxy Fail Threshold", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1824" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1849" ] }, { "call": "Proxy Health Check Interval (s)", "key": "Proxy Health Check Interval (s)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1818" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1843" ] }, { "call": "Proxy Health Check URL", "key": "Proxy Health Check URL", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1830" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1855" ] }, { "call": "Proxy link is unavailable", "key": "Proxy link is unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7142", - "src/tachyon/tabs/dashboard/initController.ts:816" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7276", + "src/tachyon/tabs/dashboard/initController.ts:817" ] }, { "call": "Proxy Section for Bot", "key": "Proxy Section for Bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2281" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2306" ] }, { @@ -7293,7 +7660,7 @@ "call": "Public host", "key": "Public host", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9130", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9339", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2690", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:40" ] @@ -7381,46 +7748,46 @@ "call": "Rebuild firewall rules", "key": "Rebuild firewall rules", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12762", - "src/tachyon/tabs/diagnostic/initController.ts:1077" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13446", + "src/tachyon/tabs/diagnostic/initController.ts:1079" ] }, { "call": "Rebuilt release", "key": "Rebuilt release", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17526", - "src/tachyon/tabs/updates/initController.ts:1336" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18249", + "src/tachyon/tabs/updates/initController.ts:1365" ] }, { "call": "Recommended Quick Fixes:", "key": "Recommended Quick Fixes:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12832", - "src/tachyon/tabs/diagnostic/initController.ts:1161" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13516", + "src/tachyon/tabs/diagnostic/initController.ts:1163" ] }, { "call": "Reconnect Threshold", "key": "Reconnect Threshold", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1910" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1935" ] }, { "call": "Reconnect WAN", "key": "Reconnect WAN", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12768", - "src/tachyon/tabs/diagnostic/initController.ts:1083" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13452", + "src/tachyon/tabs/diagnostic/initController.ts:1085" ] }, { "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:1857" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1882" ] }, { @@ -7442,16 +7809,16 @@ "call": "Refresh", "key": "Refresh", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12934", - "src/tachyon/tabs/diagnostic/initController.ts:1278" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13618", + "src/tachyon/tabs/diagnostic/initController.ts:1280" ] }, { "call": "Refresh Device List", "key": "Refresh Device List", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12915", - "src/tachyon/tabs/diagnostic/initController.ts:1257" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13599", + "src/tachyon/tabs/diagnostic/initController.ts:1259" ] }, { @@ -7472,15 +7839,15 @@ "call": "Reinstall", "key": "Reinstall", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17323", - "src/tachyon/tabs/updates/initController.ts:1099" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18029", + "src/tachyon/tabs/updates/initController.ts:1107" ] }, { "call": "Reload now", "key": "Reload now", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16409", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17107", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:349" ] }, @@ -7488,7 +7855,7 @@ "call": "Reloading...", "key": "Reloading...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16441", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17139", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:390" ] }, @@ -7503,7 +7870,7 @@ "call": "Removal completed successfully!", "key": "Removal completed successfully!", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16389", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17087", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:323" ] }, @@ -7511,9 +7878,9 @@ "call": "Remove", "key": "Remove", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17291", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17995", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7927", - "src/tachyon/tabs/updates/initController.ts:1055" + "src/tachyon/tabs/updates/initController.ts:1061" ] }, { @@ -7541,7 +7908,7 @@ "call": "Removing", "key": "Removing", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16220", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16918", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:114" ] }, @@ -7563,8 +7930,8 @@ "call": "Reset Bootstrap DNS", "key": "Reset Bootstrap DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12782", - "src/tachyon/tabs/diagnostic/initController.ts:1097" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13466", + "src/tachyon/tabs/diagnostic/initController.ts:1099" ] }, { @@ -7573,7 +7940,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:1654" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1679" ] }, { @@ -7594,8 +7961,8 @@ "call": "Resolve gateway", "key": "Resolve gateway", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12769", - "src/tachyon/tabs/diagnostic/initController.ts:1084" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13453", + "src/tachyon/tabs/diagnostic/initController.ts:1086" ] }, { @@ -7637,14 +8004,14 @@ "call": "Response packet header (H2)", "key": "Response packet header (H2)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3433" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3473" ] }, { "call": "Response packet junk size (S2)", "key": "Response packet junk size (S2)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3409" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3449" ] }, { @@ -7665,55 +8032,55 @@ "call": "Response payload (I2)", "key": "Response payload (I2)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3457" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3497" ] }, { "call": "Restart dnsmasq", "key": "Restart dnsmasq", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12763", - "src/tachyon/tabs/diagnostic/initController.ts:1078" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13447", + "src/tachyon/tabs/diagnostic/initController.ts:1080" ] }, { "call": "Restart firewall", "key": "Restart firewall", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12772", - "src/tachyon/tabs/diagnostic/initController.ts:1087" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13456", + "src/tachyon/tabs/diagnostic/initController.ts:1089" ] }, { "call": "Restart network", "key": "Restart network", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12773", - "src/tachyon/tabs/diagnostic/initController.ts:1088" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13457", + "src/tachyon/tabs/diagnostic/initController.ts:1090" ] }, { "call": "Restart sing-box DNS", "key": "Restart sing-box DNS", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12766", - "src/tachyon/tabs/diagnostic/initController.ts:1081" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13450", + "src/tachyon/tabs/diagnostic/initController.ts:1083" ] }, { "call": "Restart Tachyon", "key": "Restart Tachyon", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10213", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:62" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10425", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:64" ] }, { "call": "Restart Zapret/ByeDPI", "key": "Restart Zapret/ByeDPI", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12774", - "src/tachyon/tabs/diagnostic/initController.ts:1089" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13458", + "src/tachyon/tabs/diagnostic/initController.ts:1091" ] }, { @@ -7736,30 +8103,30 @@ "call": "Restore config backup", "key": "Restore config backup", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12767", - "src/tachyon/tabs/diagnostic/initController.ts:1082" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13451", + "src/tachyon/tabs/diagnostic/initController.ts:1084" ] }, { "call": "Restore Native Internet", "key": "Restore Native Internet", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10291", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13204", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13227", - "src/tachyon/tabs/diagnostic/initController.ts:1587", - "src/tachyon/tabs/diagnostic/initController.ts:1611", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:140" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10503", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13896", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13919", + "src/tachyon/tabs/diagnostic/initController.ts:1603", + "src/tachyon/tabs/diagnostic/initController.ts:1627", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:142" ] }, { "call": "Restore Native Internet (Stop Tachyon)", "key": "Restore Native Internet (Stop Tachyon)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12779", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13141", - "src/tachyon/tabs/diagnostic/initController.ts:1094", - "src/tachyon/tabs/diagnostic/initController.ts:1514" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13463", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13825", + "src/tachyon/tabs/diagnostic/initController.ts:1096", + "src/tachyon/tabs/diagnostic/initController.ts:1516" ] }, { @@ -7773,24 +8140,24 @@ "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:1655" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1680" ] }, { "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:13144", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13231", - "src/tachyon/tabs/diagnostic/initController.ts:1517", - "src/tachyon/tabs/diagnostic/initController.ts:1615" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13828", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13923", + "src/tachyon/tabs/diagnostic/initController.ts:1519", + "src/tachyon/tabs/diagnostic/initController.ts:1631" ] }, { "call": "Resume updates", "key": "Resume updates", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14611", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15309", "src/tachyon/tabs/monitoring/initController.ts:746" ] }, @@ -7798,26 +8165,33 @@ "call": "Return NXDOMAIN for blocked domains (recommended). When enabled, blocked domains are not resolved at all. When disabled, only direct connections are rejected.", "key": "Return NXDOMAIN for blocked domains (recommended). When enabled, blocked domains are not resolved at all. When disabled, only direct connections are rejected.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:598" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:641" ] }, { "call": "Route", "key": "Route", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10878", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14720", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14771", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11100", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15418", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15469", "src/tachyon/tabs/monitoring/initController.ts:880", "src/tachyon/tabs/monitoring/initController.ts:943", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:444" ] }, + { + "call": "Route all non-local LAN traffic through the tailnet exit node instead of the proxy engines.", + "key": "Route all non-local LAN traffic through the tailnet exit node instead of the proxy engines.", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3311" + ] + }, { "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:2282" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2307" ] }, { @@ -7838,8 +8212,8 @@ "call": "Route via Proxy", "key": "Route via Proxy", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12993", - "src/tachyon/tabs/diagnostic/initController.ts:1343" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13677", + "src/tachyon/tabs/diagnostic/initController.ts:1345" ] }, { @@ -7860,9 +8234,9 @@ "call": "Routing rules", "key": "Routing rules", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9183", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9192", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9211", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9392", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9401", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9420", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:103", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:114", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:144" @@ -7886,7 +8260,7 @@ "call": "Rule Name", "key": "Rule Name", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:384" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:406" ] }, { @@ -7918,6 +8292,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10222" ] }, + { + "call": "Rule:", + "key": "Rule:", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11794", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:186" + ] + }, { "call": "Rules", "key": "Rules", @@ -7931,7 +8313,7 @@ "call": "Rules mangle counters", "key": "Rules mangle counters", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9326", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9535", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:79" ] }, @@ -7939,7 +8321,7 @@ "call": "Rules mangle exist", "key": "Rules mangle exist", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9321", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9530", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:74" ] }, @@ -7947,7 +8329,7 @@ "call": "Rules mangle output counters", "key": "Rules mangle output counters", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9336", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9545", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:89" ] }, @@ -7955,7 +8337,7 @@ "call": "Rules mangle output exist", "key": "Rules mangle output exist", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9331", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9540", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:84" ] }, @@ -7963,7 +8345,7 @@ "call": "Rules proxy counters", "key": "Rules proxy counters", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9346", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9555", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:99" ] }, @@ -7971,7 +8353,7 @@ "call": "Rules proxy exist", "key": "Rules proxy exist", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9341", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9550", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:94" ] }, @@ -7979,15 +8361,15 @@ "call": "Run AI Doctor", "key": "Run AI Doctor", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10281", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:130" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10493", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:132" ] }, { "call": "Run Diagnostic", "key": "Run Diagnostic", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10513", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10735", "src/tachyon/tabs/diagnostic/partials/renderRunAction.ts:17" ] }, @@ -7995,8 +8377,8 @@ "call": "Run doctor repair", "key": "Run doctor repair", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10271", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:120" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10483", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:122" ] }, { @@ -8004,11 +8386,11 @@ "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:4963", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11643", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12327", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:301", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2043", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2044", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2068", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2069", "src/tachyon/methods/custom/getDashboardSections.ts:1649", "src/tachyon/tabs/dashboard/partials/renderSections.ts:618", "src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:135" @@ -8018,7 +8400,15 @@ "call": "Running diagnostics…", "key": "Running diagnostics…", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2347" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2372" + ] + }, + { + "call": "Running initial strategy probe...", + "key": "Running initial strategy probe...", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11948", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:364" ] }, { @@ -8028,6 +8418,13 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9246" ] }, + { + "call": "RuTracker (HTTP/HTTPS)", + "key": "RuTracker (HTTP/HTTPS)", + "places": [ + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:142" + ] + }, { "call": "Sat", "key": "Sat", @@ -8055,7 +8452,7 @@ "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:1669" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1694" ] }, { @@ -8104,11 +8501,19 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:472" ] }, + { + "call": "Score", + "key": "Score", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11886", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:292" + ] + }, { "call": "Search", "key": "Search", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14044", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14742", "src/tachyon/tabs/monitoring/render.ts:57" ] }, @@ -8116,7 +8521,7 @@ "call": "Search domain or service...", "key": "Search domain or service...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10837", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11059", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:397" ] }, @@ -8138,7 +8543,7 @@ "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:1694" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1719" ] }, { @@ -8194,7 +8599,7 @@ "call": "Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy.", "key": "Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1605" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1630" ] }, { @@ -8216,8 +8621,8 @@ "call": "Select", "key": "Select", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7431", - "src/tachyon/tabs/dashboard/initController.ts:1184" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7565", + "src/tachyon/tabs/dashboard/initController.ts:1185" ] }, { @@ -8274,14 +8679,14 @@ "call": "Select active days. If none selected, the rule applies every day.", "key": "Select active days. If none selected, the rule applies every day.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:482" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:504" ] }, { "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:1719" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1744" ] }, { @@ -8309,7 +8714,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:1937" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1962" ] }, { @@ -8323,7 +8728,7 @@ "call": "Select LAN devices to apply this schedule to, or enter IP or MAC addresses manually. MAC addresses (e.g. AA:BB:CC:DD:EE:FF) work even if the device's IP changes. IP addresses (e.g. 192.168.1.150) are used for DNS-level blocking and require a stable lease.", "key": "Select LAN devices to apply this schedule to, or enter IP or MAC addresses manually. MAC addresses (e.g. AA:BB:CC:DD:EE:FF) work even if the device's IP changes. IP addresses (e.g. 192.168.1.150) are used for DNS-level blocking and require a stable lease.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:394" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:416" ] }, { @@ -8351,7 +8756,7 @@ "call": "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing", "key": "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1529" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1554" ] }, { @@ -8365,30 +8770,30 @@ "call": "Select path for sing-box config file. Change this ONLY if you know what you are doing", "key": "Select path for sing-box config file. Change this ONLY if you know what you are doing", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1515" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1540" ] }, { "call": "Select Sections", "key": "Select Sections", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:424" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:446" ] }, { "call": "Select the fastest node", "key": "Select the fastest node", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7641", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7775", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3146", - "src/tachyon/tabs/dashboard/initController.ts:1453" + "src/tachyon/tabs/dashboard/initController.ts:1454" ] }, { "call": "Select the log level for sing-box", "key": "Select the log level for sing-box", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1566" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1591" ] }, { @@ -8416,17 +8821,17 @@ "call": "Select whether to disable the target during the schedule or enable it ONLY during the schedule.", "key": "Select whether to disable the target during the schedule or enable it ONLY during the schedule.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:446" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:468" ] }, { "call": "Selected", "key": "Selected", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7515", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7627", - "src/tachyon/tabs/dashboard/initController.ts:1288", - "src/tachyon/tabs/dashboard/initController.ts:1439" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7649", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7761", + "src/tachyon/tabs/dashboard/initController.ts:1289", + "src/tachyon/tabs/dashboard/initController.ts:1440" ] }, { @@ -8448,7 +8853,7 @@ "call": "Send", "key": "Send", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11307", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11529", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:67" ] }, @@ -8456,49 +8861,49 @@ "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:2271" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2296" ] }, { "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:2206" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2231" ] }, { "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:2258" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2283" ] }, { "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:2219" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2244" ] }, { "call": "Send a Telegram notification to admins when a blocked site is accessed. Requires the Telegram bot to be enabled.", "key": "Send a Telegram notification to admins when a blocked site is accessed. Requires the Telegram bot to be enabled.", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:609" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:652" ] }, { "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:2232" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2257" ] }, { "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:2245" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2270" ] }, { @@ -8518,7 +8923,7 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8554", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8589", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8659", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3284" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3324" ] }, { @@ -8604,21 +9009,21 @@ "call": "Server Private Key", "key": "Server Private Key", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3337" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3377" ] }, { "call": "Server Public Key", "key": "Server Public Key", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3347" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3387" ] }, { "call": "Server unavailable", "key": "Server unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11375", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11597", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:148" ] }, @@ -8626,7 +9031,7 @@ "call": "Server VPN IP address and subnet (e.g. 10.0.0.1/24)", "key": "Server VPN IP address and subnet (e.g. 10.0.0.1/24)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3285" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3325" ] }, { @@ -8655,7 +9060,7 @@ "call": "Service / Target", "key": "Service / Target", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10873", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11095", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:439" ] }, @@ -8663,19 +9068,19 @@ "call": "Service action failed", "key": "Service action failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3456", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3475", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12453", - "src/tachyon/methods/shell/index.ts:433", - "src/tachyon/methods/shell/index.ts:454", - "src/tachyon/tabs/diagnostic/initController.ts:607" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3478", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3497", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13137", + "src/tachyon/methods/shell/index.ts:440", + "src/tachyon/methods/shell/index.ts:461", + "src/tachyon/tabs/diagnostic/initController.ts:609" ] }, { "call": "Service availability check", "key": "Service availability check", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10659", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10881", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:186" ] }, @@ -8697,7 +9102,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:16438", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17136", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:387" ] }, @@ -8705,7 +9110,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:16430", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17128", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:375" ] }, @@ -8713,15 +9118,15 @@ "call": "Services info", "key": "Services info", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7979", - "src/tachyon/tabs/dashboard/initController.ts:1884" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8113", + "src/tachyon/tabs/dashboard/initController.ts:1887" ] }, { "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:16463", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17161", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:418" ] }, @@ -8808,20 +9213,20 @@ "call": "Show sing-box config", "key": "Show sing-box config", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10329", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13268", - "src/tachyon/tabs/diagnostic/initController.ts:1661", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:178" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10551", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13960", + "src/tachyon/tabs/diagnostic/initController.ts:1677", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:190" ] }, { "call": "Show sing-box config failed", "key": "Show sing-box config failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13279", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13286", - "src/tachyon/tabs/diagnostic/initController.ts:1672", - "src/tachyon/tabs/diagnostic/initController.ts:1679" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13971", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13978", + "src/tachyon/tabs/diagnostic/initController.ts:1688", + "src/tachyon/tabs/diagnostic/initController.ts:1695" ] }, { @@ -8835,15 +9240,22 @@ "call": "Sing-box autostart disabled", "key": "Sing-box autostart disabled", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9087", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9296", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:77" ] }, + { + "call": "sing-box endpoint (userspace, default)", + "key": "sing-box endpoint (userspace, default)", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3283" + ] + }, { "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:9403", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9612", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:69" ] }, @@ -8851,7 +9263,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:9403", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9612", "src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:68" ] }, @@ -8859,7 +9271,7 @@ "call": "Sing-box installed", "key": "Sing-box installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9072", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9281", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:62" ] }, @@ -8867,7 +9279,7 @@ "call": "Sing-box listening ports", "key": "Sing-box listening ports", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9097", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9306", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:87" ] }, @@ -8875,7 +9287,7 @@ "call": "Sing-box process running", "key": "Sing-box process running", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9092", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9301", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:82" ] }, @@ -8883,7 +9295,7 @@ "call": "Sing-box service exist", "key": "Sing-box service exist", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9082", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9291", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:72" ] }, @@ -8891,7 +9303,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:9077", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9286", "src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:67" ] }, @@ -8958,6 +9370,13 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:508" ] }, + { + "call": "SNAT LAN sources when leaving through tailscale0 so peers can answer. Required unless every peer accepts routes.", + "key": "SNAT LAN sources when leaving through tailscale0 so peers can answer. Required unless every peer accepts routes.", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3298" + ] + }, { "call": "Snell Version", "key": "Snell Version", @@ -8997,8 +9416,8 @@ "call": "Source", "key": "Source", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14732", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14775", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15430", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15473", "../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" @@ -9022,7 +9441,7 @@ "call": "Specific Sections (Select sections below)", "key": "Specific Sections (Select sections below)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:418" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:440" ] }, { @@ -9040,6 +9459,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2047" ] }, + { + "call": "Speed", + "key": "Speed", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11885", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:291" + ] + }, { "call": "SSH", "key": "SSH", @@ -9052,7 +9479,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:9681", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:122" ] }, @@ -9060,7 +9487,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:9681", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:119" ] }, @@ -9068,7 +9495,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:9681", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:120" ] }, @@ -9076,7 +9503,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:9681", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:123" ] }, @@ -9084,7 +9511,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:9511", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:111" ] }, @@ -9092,7 +9519,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:9511", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:112" ] }, @@ -9100,7 +9527,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:9511", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:113" ] }, @@ -9108,7 +9535,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:9599", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9808", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:123" ] }, @@ -9116,7 +9543,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:9597", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9806", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:118" ] }, @@ -9124,7 +9551,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:9599", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9808", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:121" ] }, @@ -9132,7 +9559,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:9599", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9808", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:124" ] }, @@ -9147,38 +9574,38 @@ "call": "Start bot", "key": "Start bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2025" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2050" ] }, { "call": "Start sing-box", "key": "Start sing-box", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12761", - "src/tachyon/tabs/diagnostic/initController.ts:1076" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13445", + "src/tachyon/tabs/diagnostic/initController.ts:1078" ] }, { "call": "Start Tachyon", "key": "Start Tachyon", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10233", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:82" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10445", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:84" ] }, { "call": "Start Time (HH:MM)", "key": "Start Time (HH:MM)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:457" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:479" ] }, { "call": "Start watchdog", "key": "Start watchdog", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12765", - "src/tachyon/tabs/diagnostic/initController.ts:1080" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13449", + "src/tachyon/tabs/diagnostic/initController.ts:1082" ] }, { @@ -9193,7 +9620,15 @@ "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:2072" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2097" + ] + }, + { + "call": "State", + "key": "State", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8175", + "src/tachyon/tabs/dashboard/initController.ts:1964" ] }, { @@ -9201,11 +9636,13 @@ "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:10915", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:338", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11137", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11883", + "../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/renderSections.ts:670", - "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481" + "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:289" ] }, { @@ -9219,7 +9656,7 @@ "call": "Stop bot", "key": "Stop bot", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2032" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2057" ] }, { @@ -9233,8 +9670,8 @@ "call": "Stop Tachyon", "key": "Stop Tachyon", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10223", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:72" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10435", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:74" ] }, { @@ -9242,10 +9679,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:4963", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11655", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12339", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:307", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2049", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2074", "src/tachyon/methods/custom/getDashboardSections.ts:1653", "src/tachyon/tabs/dashboard/partials/renderSections.ts:622", "src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:147" @@ -9256,21 +9693,37 @@ "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:2086" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2111" ] }, { "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:1891" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1916" + ] + }, + { + "call": "Strategy & Parameters", + "key": "Strategy & Parameters", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11881", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:287" + ] + }, + { + "call": "Strategy benchmark started", + "key": "Strategy benchmark started", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12097", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:545" ] }, { "call": "Strict ECH + DoQ DNS Enforcer", "key": "Strict ECH + DoQ DNS Enforcer", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1593" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1618" ] }, { @@ -9307,10 +9760,10 @@ "call": "Subscription update failed", "key": "Subscription update failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3812", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3830", - "src/tachyon/methods/shell/index.ts:922", - "src/tachyon/methods/shell/index.ts:942" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3834", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3852", + "src/tachyon/methods/shell/index.ts:929", + "src/tachyon/methods/shell/index.ts:949" ] }, { @@ -9338,7 +9791,7 @@ "call": "Subscriptions updated", "key": "Subscriptions updated", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6773", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6906", "src/tachyon/tabs/dashboard/initController.ts:336" ] }, @@ -9381,39 +9834,39 @@ "call": "Switch DNS to DoH", "key": "Switch DNS to DoH", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12776", - "src/tachyon/tabs/diagnostic/initController.ts:1091" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13460", + "src/tachyon/tabs/diagnostic/initController.ts:1093" ] }, { "call": "Switch to auto-selection", "key": "Switch to auto-selection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7491", - "src/tachyon/tabs/dashboard/initController.ts:1253" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7625", + "src/tachyon/tabs/dashboard/initController.ts:1254" ] }, { "call": "Sync System Time (NTP)", "key": "Sync System Time (NTP)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12780", - "src/tachyon/tabs/diagnostic/initController.ts:1095" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464", + "src/tachyon/tabs/diagnostic/initController.ts:1097" ] }, { "call": "System info", "key": "System info", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7967", - "src/tachyon/tabs/dashboard/initController.ts:1871" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8101", + "src/tachyon/tabs/dashboard/initController.ts:1874" ] }, { "call": "System information", "key": "System information", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11463", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12147", "src/tachyon/tabs/diagnostic/partials/renderSystemInfo.ts:24" ] }, @@ -9421,7 +9874,7 @@ "call": "Table exist", "key": "Table exist", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9316", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9525", "src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:69" ] }, @@ -9429,7 +9882,7 @@ "call": "Tachyon Error", "key": "Tachyon Error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6075", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6208", "src/tachyon/services/core.service.ts:52" ] }, @@ -9465,7 +9918,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:14809", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15507", "src/tachyon/tabs/monitoring/initController.ts:991" ] }, @@ -9488,8 +9941,8 @@ "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:3729", - "src/tachyon/methods/shell/index.ts:810" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3751", + "src/tachyon/methods/shell/index.ts:817" ] }, { @@ -9503,7 +9956,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:9671", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:91" ] }, @@ -9511,7 +9964,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:9671", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:94" ] }, @@ -9519,7 +9972,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:9671", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:97" ] }, @@ -9527,7 +9980,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:9671", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:93" ] }, @@ -9535,7 +9988,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:9496", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:87" ] }, @@ -9543,7 +9996,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:9496", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:90" ] }, @@ -9551,7 +10004,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:9496", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:86" ] }, @@ -9559,7 +10012,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:9582", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:90" ] }, @@ -9567,7 +10020,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:9582", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:93" ] }, @@ -9575,10 +10028,18 @@ "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:9582", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:89" ] }, + { + "call": "Tailscale", + "key": "Tailscale", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8170", + "src/tachyon/tabs/dashboard/initController.ts:1954" + ] + }, { "call": "Tailscale auth key", "key": "Tailscale auth key", @@ -9597,7 +10058,7 @@ "call": "Tailscale endpoint", "key": "Tailscale endpoint", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9178", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9387", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:98" ] }, @@ -9608,6 +10069,13 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3239" ] }, + { + "call": "Tailscale mode", + "key": "Tailscale mode", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3280" + ] + }, { "call": "Target", "key": "Target", @@ -9619,14 +10087,22 @@ "call": "Target Devices (IP / MAC)", "key": "Target Devices (IP / MAC)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:393" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:415" ] }, { "call": "Target Scope", "key": "Target Scope", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:412" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:434" + ] + }, + { + "call": "Target Service", + "key": "Target Service", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11786", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:176" ] }, { @@ -9640,25 +10116,32 @@ "call": "Telegram Bot Token", "key": "Telegram Bot Token", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2144" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2169" ] }, { "call": "Telegram Channel", "key": "Telegram Channel", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11543", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12227", "src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:42" ] }, + { + "call": "Telegram Web", + "key": "Telegram Web", + "places": [ + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:143" + ] + }, { "call": "Test Connection", "key": "Test Connection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2333", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2362", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2378", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2384" + "../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" ] }, { @@ -9719,23 +10202,31 @@ "call": "Test Telegram Connection", "key": "Test Telegram Connection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2320" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2345" + ] + }, + { + "call": "Testing strategy", + "key": "Testing strategy", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12032", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:465" ] }, { "call": "Testing URL", "key": "Testing URL", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7518", - "src/tachyon/tabs/dashboard/initController.ts:1291" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7652", + "src/tachyon/tabs/dashboard/initController.ts:1292" ] }, { "call": "Testing...", "key": "Testing...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10592", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11183", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10814", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11405", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:108", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:797" ] @@ -9744,7 +10235,7 @@ "call": "Testing…", "key": "Testing…", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2344" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2369" ] }, { @@ -9774,7 +10265,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:9666", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9875", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:78" ] }, @@ -9782,7 +10273,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:9491", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9700", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:78" ] }, @@ -9790,7 +10281,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:9577", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9786", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:81" ] }, @@ -9798,7 +10289,7 @@ "call": "Thinking...", "key": "Thinking...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11331", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11553", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:97" ] }, @@ -9806,8 +10297,8 @@ "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:13209", - "src/tachyon/tabs/diagnostic/initController.ts:1592" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13901", + "src/tachyon/tabs/diagnostic/initController.ts:1608" ] }, { @@ -9874,6 +10365,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:6337" ] }, + { + "call": "This router", + "key": "This router", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8183", + "src/tachyon/tabs/dashboard/initController.ts:1975" + ] + }, { "call": "This will erase all Tachyon settings and restore the factory defaults. The service will restart. This action cannot be undone.", "key": "This will erase all Tachyon settings and restore the factory defaults. The service will restart. This action cannot be undone.", @@ -9906,9 +10405,9 @@ "call": "Time", "key": "Time", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14723", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14772", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14906", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15421", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15470", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15604", "src/tachyon/tabs/monitoring/initController.ts:883", "src/tachyon/tabs/monitoring/initController.ts:944", "src/tachyon/tabs/monitoring/initController.ts:1127" @@ -9939,7 +10438,7 @@ "call": "tiny", "key": "tiny", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5715", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5845", "src/tachyon/helpers/singBoxVariant.ts:64" ] }, @@ -9969,16 +10468,16 @@ "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:2153" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2178" ] }, { "call": "Tolerance", "key": "Tolerance", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7520", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7654", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2657", - "src/tachyon/tabs/dashboard/initController.ts:1293" + "src/tachyon/tabs/dashboard/initController.ts:1294" ] }, { @@ -9999,7 +10498,7 @@ "call": "Total targets", "key": "Total targets", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10793", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11015", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:345" ] }, @@ -10022,8 +10521,8 @@ "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:7943", - "src/tachyon/tabs/dashboard/initController.ts:1845", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8077", + "src/tachyon/tabs/dashboard/initController.ts:1848", "src/tachyon/tabs/dashboard/partials/renderSections.ts:133" ] }, @@ -10052,8 +10551,8 @@ "call": "Traffic Total", "key": "Traffic Total", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7955", - "src/tachyon/tabs/dashboard/initController.ts:1858" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8089", + "src/tachyon/tabs/dashboard/initController.ts:1861" ] }, { @@ -10074,8 +10573,8 @@ "call": "Transient connection error", "key": "Transient connection error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17190", - "src/tachyon/tabs/updates/initController.ts:918" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17892", + "src/tachyon/tabs/updates/initController.ts:922" ] }, { @@ -10105,14 +10604,14 @@ "call": "Transport packet header (H4)", "key": "Transport packet header (H4)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3445" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3485" ] }, { "call": "Transport packet junk size (S4)", "key": "Transport packet junk size (S4)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3421" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3461" ] }, { @@ -10133,7 +10632,7 @@ "call": "Troubleshooting", "key": "Troubleshooting", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11527", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12211", "src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:25" ] }, @@ -10144,6 +10643,14 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2434" ] }, + { + "call": "TTFB", + "key": "TTFB", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11884", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:290" + ] + }, { "call": "TTL must be a positive number", "key": "TTL must be a positive number", @@ -10183,8 +10690,8 @@ "call": "Type", "key": "Type", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14717", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14770", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15415", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15468", "../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" @@ -10201,7 +10708,7 @@ "call": "UDP / QUIC protocols", "key": "UDP / QUIC protocols", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10558", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10780", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:65" ] }, @@ -10239,17 +10746,17 @@ "call": "Unavailability timeout", "key": "Unavailability timeout", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7635", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7769", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3120", - "src/tachyon/tabs/dashboard/initController.ts:1447" + "src/tachyon/tabs/dashboard/initController.ts:1448" ] }, { "call": "Unavailable", "key": "Unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10613", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10795", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10835", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11017", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:135", "src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:347" ] @@ -10258,7 +10765,7 @@ "call": "Underload packet header (H3)", "key": "Underload packet header (H3)", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3439" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3479" ] }, { @@ -10309,7 +10816,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:9671", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880", "src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:96" ] }, @@ -10317,7 +10824,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:9496", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:89" ] }, @@ -10325,7 +10832,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:9582", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:92" ] }, @@ -10354,18 +10861,19 @@ "call": "unknown", "key": "unknown", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5698", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9120", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9701", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9703", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9704", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9712", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9714", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9716", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9719", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16810", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5828", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9329", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9910", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9912", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9913", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9914", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9921", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9923", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9925", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9927", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9930", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9931", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17512", "src/tachyon/helpers/singBoxVariant.ts:37", "src/tachyon/services/systemInfo.service.ts:10", "src/tachyon/services/systemInfo.service.ts:12", @@ -10374,9 +10882,10 @@ "src/tachyon/services/systemInfo.service.ts:21", "src/tachyon/services/systemInfo.service.ts:23", "src/tachyon/services/systemInfo.service.ts:25", - "src/tachyon/services/systemInfo.service.ts:28", - "src/tachyon/services/systemInfo.service.ts:29", - "src/tachyon/tabs/updates/initController.ts:417", + "src/tachyon/services/systemInfo.service.ts:27", + "src/tachyon/services/systemInfo.service.ts:30", + "src/tachyon/services/systemInfo.service.ts:31", + "src/tachyon/tabs/updates/initController.ts:421", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:25" ] }, @@ -10384,9 +10893,9 @@ "call": "Unknown", "key": "Unknown", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4963", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079", "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:328", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2066", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2091", "src/tachyon/methods/custom/getDashboardSections.ts:1655" ] }, @@ -10410,16 +10919,18 @@ "call": "Unknown error", "key": "Unknown error", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5037", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12558", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12577", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12644", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13185", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5153", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12102", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13242", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13261", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13328", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13869", "src/tachyon/api.ts:40", - "src/tachyon/tabs/diagnostic/initController.ts:729", - "src/tachyon/tabs/diagnostic/initController.ts:770", - "src/tachyon/tabs/diagnostic/initController.ts:855", - "src/tachyon/tabs/diagnostic/initController.ts:1566" + "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:550" ] }, { @@ -10470,32 +10981,32 @@ "call": "Update", "key": "Update", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17242", - "src/tachyon/tabs/updates/initController.ts:985" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17944", + "src/tachyon/tabs/updates/initController.ts:989" ] }, { "call": "Update is available", "key": "Update is available", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16760", - "src/tachyon/tabs/updates/initController.ts:351" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17462", + "src/tachyon/tabs/updates/initController.ts:355" ] }, { "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:17514", - "src/tachyon/tabs/updates/initController.ts:1323" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18237", + "src/tachyon/tabs/updates/initController.ts:1352" ] }, { "call": "Update is available:", "key": "Update is available:", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17495", - "src/tachyon/tabs/updates/initController.ts:1302" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18218", + "src/tachyon/tabs/updates/initController.ts:1331" ] }, { @@ -10512,8 +11023,8 @@ "../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:12771", - "src/tachyon/tabs/diagnostic/initController.ts:1086", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13455", + "src/tachyon/tabs/diagnostic/initController.ts:1088", "src/tachyon/tabs/dashboard/partials/renderSections.ts:224", "src/tachyon/tabs/dashboard/partials/renderSections.ts:237", "src/tachyon/tabs/dashboard/partials/renderSections.ts:238" @@ -10544,7 +11055,7 @@ "call": "Updating", "key": "Updating", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16222", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16920", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:116" ] }, @@ -10552,8 +11063,8 @@ "call": "Updating device routing mode...", "key": "Updating device routing mode...", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12996", - "src/tachyon/tabs/diagnostic/initController.ts:1347" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13680", + "src/tachyon/tabs/diagnostic/initController.ts:1349" ] }, { @@ -10567,19 +11078,19 @@ "call": "Uplink", "key": "Uplink", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7945", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7957", - "src/tachyon/tabs/dashboard/initController.ts:1847", - "src/tachyon/tabs/dashboard/initController.ts:1860" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8079", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8091", + "src/tachyon/tabs/dashboard/initController.ts:1850", + "src/tachyon/tabs/dashboard/initController.ts:1863" ] }, { "call": "Uploaded", "key": "Uploaded", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14729", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14774", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14918", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15427", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15472", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15616", "src/tachyon/tabs/monitoring/initController.ts:889", "src/tachyon/tabs/monitoring/initController.ts:946", "src/tachyon/tabs/monitoring/initController.ts:1141" @@ -10605,7 +11116,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:1831" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1856" ] }, { @@ -10642,8 +11153,8 @@ "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:7541", - "src/tachyon/tabs/dashboard/initController.ts:1320", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7675", + "src/tachyon/tabs/dashboard/initController.ts:1321", "src/tachyon/tabs/dashboard/partials/renderSections.ts:517", "src/tachyon/tabs/dashboard/partials/renderSections.ts:518" ] @@ -10652,8 +11163,8 @@ "call": "URLTest details are unavailable", "key": "URLTest details are unavailable", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7511", - "src/tachyon/tabs/dashboard/initController.ts:1279" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7645", + "src/tachyon/tabs/dashboard/initController.ts:1280" ] }, { @@ -10668,7 +11179,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:1870" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1895" ] }, { @@ -10791,11 +11302,18 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8006" ] }, + { + "call": "Use tailnet exit node for LAN", + "key": "Use tailnet exit node for LAN", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3310" + ] + }, { "call": "Used by", "key": "Used by", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9120", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9329", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:25" ] }, @@ -10865,7 +11383,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:1877" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1902" ] }, { @@ -10901,7 +11419,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:16426", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17124", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:370" ] }, @@ -10923,20 +11441,20 @@ "call": "View logs", "key": "View logs", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10320", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12621", - "src/tachyon/tabs/diagnostic/initController.ts:829", - "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:169" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10542", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13305", + "src/tachyon/tabs/diagnostic/initController.ts:831", + "src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:181" ] }, { "call": "View logs failed", "key": "View logs failed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12631", - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12634", - "src/tachyon/tabs/diagnostic/initController.ts:839", - "src/tachyon/tabs/diagnostic/initController.ts:842" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13315", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13318", + "src/tachyon/tabs/diagnostic/initController.ts:841", + "src/tachyon/tabs/diagnostic/initController.ts:844" ] }, { @@ -10964,7 +11482,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:16405", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17103", "src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:344" ] }, @@ -10972,7 +11490,7 @@ "call": "WAN", "key": "WAN", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9156", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9365", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:70" ] }, @@ -10980,7 +11498,7 @@ "call": "WAN public IP", "key": "WAN public IP", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9255", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9464", "src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:198" ] }, @@ -11009,7 +11527,7 @@ "call": "WARP Generator Proxy Section", "key": "WARP Generator Proxy Section", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1604" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1629" ] }, { @@ -11033,18 +11551,25 @@ "src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:462" ] }, + { + "call": "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect.", + "key": "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect.", + "places": [ + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1515" + ] + }, { "call": "Watchdog Status", "key": "Watchdog Status", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1801" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1826" ] }, { "call": "WebRTC Leak Protection", "key": "WebRTC Leak Protection", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1583" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1608" ] }, { @@ -11093,7 +11618,7 @@ "call": "Why Discord fails?", "key": "Why Discord fails?", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11395", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11617", "src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:171" ] }, @@ -11129,8 +11654,8 @@ "call": "Yes", "key": "Yes", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7146", - "src/tachyon/tabs/dashboard/initController.ts:821" + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7280", + "src/tachyon/tabs/dashboard/initController.ts:822" ] }, { @@ -11140,6 +11665,20 @@ "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1073" ] }, + { + "call": "YouTube (GoogleVideo 4K stream)", + "key": "YouTube (GoogleVideo 4K stream)", + "places": [ + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:137" + ] + }, + { + "call": "YouTube Web (Interface)", + "key": "YouTube Web (Interface)", + "places": [ + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:139" + ] + }, { "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.", @@ -11151,7 +11690,7 @@ "call": "Zapret package is installed", "key": "Zapret package is installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9486", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:71" ] }, @@ -11159,7 +11698,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:9486", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:72" ] }, @@ -11167,7 +11706,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:9481", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9690", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:60" ] }, @@ -11175,7 +11714,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:9481", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9690", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:61" ] }, @@ -11183,7 +11722,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:9506", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9715", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:103" ] }, @@ -11191,10 +11730,28 @@ "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:9506", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9715", "src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:104" ] }, + { + "call": "Zapret v1 (nfqws)", + "key": "Zapret v1 (nfqws)", + "places": [ + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:67", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:106" + ] + }, + { + "call": "Zapret v2 (nfqws2)", + "key": "Zapret v2 (nfqws2)", + "places": [ + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:66", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:100", + "src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:101" + ] + }, { "call": "Zapret2 hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS2 strategies.", "key": "Zapret2 hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS2 strategies.", @@ -11206,7 +11763,7 @@ "call": "Zapret2 package is installed", "key": "Zapret2 package is installed", "places": [ - "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9572", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9781", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:74" ] }, @@ -11214,7 +11771,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:9572", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9781", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:75" ] }, @@ -11222,7 +11779,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:9567", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9776", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:63" ] }, @@ -11230,7 +11787,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:9567", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9776", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:64" ] }, @@ -11238,7 +11795,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:9592", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9801", "src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:106" ] }, @@ -11246,7 +11803,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:9592", + "../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9801", "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 a83ff647..f66ed0e5 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-25 18:31+0300\n" -"PO-Revision-Date: 2026-08-25 18:31+0300\n" +"POT-Creation-Date: 2026-08-26 18:45+0300\n" +"PO-Revision-Date: 2026-08-26 18:45+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:1742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1767 msgid "(provider default)" msgstr "" @@ -64,6 +64,11 @@ msgstr "" msgid "⚙ Advanced Settings" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12034 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:469 +msgid "⚠️ Benchmark completed. No working bypass found for this target." +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:906 msgid "⚠️ If all Bootstrap 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 "" @@ -72,26 +77,73 @@ 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:7983 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7990 -#: src/tachyon/tabs/dashboard/initController.ts:1888 -#: src/tachyon/tabs/dashboard/initController.ts:1897 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10523 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:162 +msgid "⚡ DPI Strategy Fuzzer" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12135 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:590 +msgid "⚡ Strategy Fuzzer & Auto-Tuner" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12034 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:468 +msgid "✅ Benchmark completed! Optimal strategy identified." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8160 +#: src/tachyon/tabs/dashboard/initController.ts:1941 +msgid "✔ Online" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8117 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8124 +#: src/tachyon/tabs/dashboard/initController.ts:1891 +#: src/tachyon/tabs/dashboard/initController.ts:1900 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473 msgid "✔ Running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7983 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7990 -#: src/tachyon/tabs/dashboard/initController.ts:1888 -#: src/tachyon/tabs/dashboard/initController.ts:1897 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8160 +#: src/tachyon/tabs/dashboard/initController.ts:1941 +msgid "✘ Offline" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8117 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8124 +#: src/tachyon/tabs/dashboard/initController.ts:1891 +#: src/tachyon/tabs/dashboard/initController.ts:1900 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473 msgid "✘ Stopped" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11920 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:330 +msgid "🏆 Apply Best Strategy" +msgstr "" + #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:728 msgid "🔑 Generate" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12060 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:501 +msgid "🚀 Run Benchmark Again" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11915 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12105 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:324 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:553 +msgid "🚀 Start Benchmark" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12089 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:535 +msgid "🛑 Stop Benchmark" +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 "" @@ -100,40 +152,42 @@ msgstr "" msgid "Accept routes" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11890 #: ../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:296 msgid "Action" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8914 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9123 #: src/tachyon/helpers/notifyActionFailure.ts:40 msgid "Action failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:445 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:467 msgid "Action Mode" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7385 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14009 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14594 -#: src/tachyon/tabs/dashboard/initController.ts:1126 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7519 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14707 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15292 +#: src/tachyon/tabs/dashboard/initController.ts:1127 #: src/tachyon/tabs/monitoring/initController.ts:722 #: src/tachyon/tabs/monitoring/render.ts:20 msgid "Active" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:357 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:377 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:379 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:399 msgid "Active (Allowed)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:357 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:377 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:379 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:399 msgid "Active (Blocking)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9009 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9218 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:56 msgid "Active Bootstrap DNS" msgstr "" @@ -145,17 +199,17 @@ msgstr "" msgid "Active Clients" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7969 -#: src/tachyon/tabs/dashboard/initController.ts:1873 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8103 +#: src/tachyon/tabs/dashboard/initController.ts:1876 msgid "Active Connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9016 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9225 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67 msgid "Active Main DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10707 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10929 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:245 msgid "Active routes" msgstr "" @@ -202,7 +256,7 @@ msgstr "" msgid "Add URLTest / Priority group" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9351 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9560 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:106 msgid "Additional marking rules found" msgstr "" @@ -229,7 +283,7 @@ msgstr "" msgid "Address" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2161 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2186 msgid "Administrator Chat IDs" msgstr "" @@ -265,22 +319,22 @@ msgstr "" msgid "AI Agent REST API (12 Endpoints)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1693 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1718 msgid "AI Agent REST API Bearer Token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1761 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1786 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:942 msgid "AI API Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11451 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11673 #: 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:10301 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:150 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10513 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:152 msgid "AI Chat Assistant" msgstr "" @@ -288,36 +342,36 @@ msgstr "" msgid "AI Doctor (ChatGPT / DeepSeek API)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13183 -#: src/tachyon/tabs/diagnostic/initController.ts:1561 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13867 +#: src/tachyon/tabs/diagnostic/initController.ts:1563 msgid "AI Doctor Diagnosis" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12644 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13186 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13194 -#: src/tachyon/tabs/diagnostic/initController.ts:855 -#: src/tachyon/tabs/diagnostic/initController.ts:1567 -#: src/tachyon/tabs/diagnostic/initController.ts:1575 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13328 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13870 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13878 +#: 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:1748 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1773 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:909 msgid "AI Doctor Language" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1735 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1760 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:884 msgid "AI Model" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1718 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1743 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:806 msgid "AI Provider" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11378 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11600 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:151 msgid "AI service error" msgstr "" @@ -330,14 +384,14 @@ msgstr "" msgid "AI Watchdog settings saved. Restart watchdog to apply." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14028 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14559 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14726 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15257 #: src/tachyon/tabs/monitoring/initController.ts:681 #: src/tachyon/tabs/monitoring/render.ts:40 msgid "All" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2373 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2398 msgid "All checks passed — Telegram bot should work correctly" msgstr "" @@ -346,6 +400,11 @@ msgstr "" msgid "All devices" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11727 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:69 +msgid "All Engines (Full Matrix)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:1968 msgid "All except selected" msgstr "" @@ -355,7 +414,7 @@ msgstr "" msgid "All Internet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:417 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:439 msgid "All Internet (Complete internet cutoff)" msgstr "" @@ -371,8 +430,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:14036 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14532 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14734 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15230 #: src/tachyon/tabs/monitoring/initController.ts:644 #: src/tachyon/tabs/monitoring/render.ts:49 msgid "All Routes" @@ -382,8 +441,8 @@ msgstr "" msgid "All servers" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10716 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10819 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10938 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11041 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:257 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:376 msgid "All services" @@ -393,7 +452,7 @@ msgstr "" msgid "All traffic from these IP addresses will be routed through the section unconditionally, ignoring all other conditions." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:451 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:473 msgid "Allow / Enable ONLY in scheduled hours (White period)" msgstr "" @@ -406,15 +465,15 @@ msgstr "" msgid "Allow Insecure TLS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:318 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:340 msgid "Allow only" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:591 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:634 msgid "Allow only listed sites (Whitelist)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:334 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:356 msgid "Allow only:" msgstr "" @@ -430,7 +489,7 @@ msgstr "" msgid "Allows limiting the list of servers for URLTest" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1707 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1732 msgid "Allows Tachyon to send diagnostic snapshots to ChatGPT or DeepSeek API for intelligent root-cause analysis and auto-repair recommendations." msgstr "" @@ -450,20 +509,30 @@ msgstr "" msgid "AmneziaWG Generator" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12719 -#: src/tachyon/tabs/diagnostic/initController.ts:968 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13403 +#: 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:17175 -#: src/tachyon/tabs/updates/initController.ts:902 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17877 +#: 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:1762 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1787 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:12116 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:565 +msgid "Applied" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12007 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:434 +msgid "Apply" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9552 msgid "Apply rules of this section only to selected protocols." msgstr "" @@ -472,22 +541,27 @@ msgstr "" msgid "Apply section rules only to the specified local IP addresses" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12849 -#: src/tachyon/tabs/diagnostic/initController.ts:1179 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11811 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:204 +msgid "Apply Strategy To" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13533 +#: src/tachyon/tabs/diagnostic/initController.ts:1181 msgid "Applying fix" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12847 -#: src/tachyon/tabs/diagnostic/initController.ts:1177 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13531 +#: src/tachyon/tabs/diagnostic/initController.ts:1179 msgid "Applying..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11302 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11524 #: 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:2172 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2197 msgid "At least one Admin Chat ID is required" msgstr "" @@ -504,17 +578,17 @@ 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:7225 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7565 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10534 -#: src/tachyon/tabs/dashboard/initController.ts:922 -#: src/tachyon/tabs/dashboard/initController.ts:1354 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7359 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7699 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10756 +#: 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 msgid "Auto" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10131 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10342 #: src/partials/modal/renderModal.ts:286 msgid "Auto refresh" msgstr "" @@ -523,7 +597,7 @@ msgstr "" msgid "Auto update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1964 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1989 msgid "Auto-detected domains" msgstr "" @@ -531,17 +605,21 @@ msgstr "" msgid "Auto-detected Domains" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1924 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1949 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1102 msgid "Auto-detects blocked domains from logs and adds them to the first section where they work via proxy." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1514 +msgid "Auto-failover of proxy sections" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2464 msgid "Auto-generate HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12777 -#: src/tachyon/tabs/diagnostic/initController.ts:1092 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13461 +#: src/tachyon/tabs/diagnostic/initController.ts:1094 msgid "Auto-Heal Network Stack" msgstr "" @@ -549,6 +627,11 @@ msgstr "" msgid "Auto-update Hosts Lists" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11703 +#: 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 "" @@ -569,13 +652,13 @@ 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:1898 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1923 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:7645 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7779 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3157 -#: src/tachyon/tabs/dashboard/initController.ts:1457 +#: src/tachyon/tabs/dashboard/initController.ts:1458 msgid "Automatically select the fastest node in the current level" msgstr "" @@ -583,19 +666,19 @@ msgstr "" msgid "Automatically update remote hosts lists on schedule" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10604 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10794 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10826 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11016 #: 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:10207 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:56 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10419 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:58 msgid "Available actions" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10796 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11018 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:348 msgid "Avg. latency" msgstr "" @@ -606,7 +689,7 @@ msgstr "" msgid "Backend validation failed: %s" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10551 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10773 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:58 msgid "Basic connectivity" msgstr "" @@ -615,7 +698,7 @@ msgstr "" msgid "Bearer Auth Token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:458 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:480 msgid "Beginning of the schedule interval (e.g. 22:00)" msgstr "" @@ -623,20 +706,35 @@ msgstr "" msgid "Belarus (by)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12083 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:528 +msgid "Benchmark stopped" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11832 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:230 +msgid "Benchmarking in progress..." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11711 +#: 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" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:319 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:341 msgid "Block" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:450 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:472 msgid "Block / Disable in scheduled hours (Standard)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:597 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:640 msgid "Block at DNS level" msgstr "" @@ -649,32 +747,32 @@ msgstr "" msgid "Block internet access or specific proxy sections for individual devices based on time and days." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:590 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:633 msgid "Block listed sites (Standard)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:334 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:356 msgid "Block:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:586 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:629 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:10552 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10774 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:59 msgid "Blocked resources" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:307 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:329 msgid "Blocked Sites" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:496 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:539 msgid "Blocked Sites (Domains)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9009 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9218 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:57 msgid "Bootstrap DNS" msgstr "" @@ -683,29 +781,29 @@ msgstr "" msgid "Bootstrap DNS Servers" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2123 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2148 msgid "Bot Status" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9389 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9408 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9598 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9617 #: 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:9408 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9617 #: 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:9408 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9617 #: 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:13325 -#: src/tachyon/tabs/diagnostic/initController.ts:1729 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14017 +#: src/tachyon/tabs/diagnostic/initController.ts:1745 msgid "Bug report downloaded" msgstr "" @@ -717,6 +815,12 @@ msgstr "" msgid "By flag emoji from name" msgstr "" +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:68 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:111 +msgid "ByeDPI (ciadpi)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:6504 msgid "ByeDPI listen address and port are assigned by Tachyon and must not be set in the strategy." msgstr "" @@ -736,32 +840,32 @@ msgstr "" msgid "ByeDPI option requires a value: %s" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9661 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9870 #: 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:9661 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9870 #: 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:9656 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 #: 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:9656 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 #: 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:9676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9885 #: 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:9676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9885 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:108 msgid "ByeDPI sing-box outbound is not configured" msgstr "" @@ -786,32 +890,32 @@ msgstr "" msgid "Cache all built-in lists and databases even if they are not currently selected in any section. Recommended if you have plenty of storage space or USB drive." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1528 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1553 msgid "Cache File Path" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1542 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1567 msgid "Cache file path cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13222 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13914 #: ../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 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:607 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:655 -#: src/tachyon/tabs/diagnostic/initController.ts:1606 +#: src/tachyon/tabs/diagnostic/initController.ts:1622 msgid "Cancel" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8989 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9053 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9234 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9297 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9459 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9543 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9631 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11583 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9198 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9262 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9443 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9506 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9668 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9752 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12267 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:26 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:27 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:172 @@ -843,19 +947,19 @@ 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:11229 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11451 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:865 msgid "Check again" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11179 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11401 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:793 msgid "Check all" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16389 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16899 -#: src/tachyon/tabs/updates/initController.ts:536 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17087 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17601 +#: src/tachyon/tabs/updates/initController.ts:540 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:321 msgid "Check completed!" msgstr "" @@ -867,27 +971,27 @@ msgstr "" msgid "Check Connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11054 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11167 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11276 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11389 #: 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:7632 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7766 #: ../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:1444 +#: src/tachyon/tabs/dashboard/initController.ts:1445 msgid "Check interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10733 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10955 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:276 msgid "Check mode:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10311 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:160 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10533 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:172 msgid "Check Services" msgstr "" @@ -895,44 +999,44 @@ msgstr "" msgid "Check timeout after which the server is considered dead" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17233 -#: src/tachyon/tabs/updates/initController.ts:971 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17935 +#: src/tachyon/tabs/updates/initController.ts:975 msgid "Check update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7630 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7764 #: ../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:1442 +#: src/tachyon/tabs/dashboard/initController.ts:1443 msgid "Check URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11394 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11616 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:170 msgid "Check YouTube" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7761 -#: src/tachyon/tabs/dashboard/initController.ts:1623 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7895 +#: src/tachyon/tabs/dashboard/initController.ts:1624 msgid "Checking Connection..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16218 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16916 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:112 msgid "Checking for updates..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8979 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9043 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9224 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9285 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9368 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9449 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9533 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9621 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11571 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13576 -#: src/tachyon/tabs/diagnostic/initController.ts:2029 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9188 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9252 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9433 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9494 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9577 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9658 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9830 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12255 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14274 +#: src/tachyon/tabs/diagnostic/initController.ts:2051 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:14 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:15 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:15 @@ -957,32 +1061,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:2015 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2040 msgid "Checking…" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5135 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5251 #: src/tachyon/tabs/diagnostic/helpers/getCheckTitle.ts:2 msgid "checks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8949 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9427 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9158 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9636 #: 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:8938 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9384 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9438 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9147 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9593 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9647 #: 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:8961 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9170 #: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:27 msgid "Checks passed with manual DHCP" msgstr "" @@ -995,7 +1099,7 @@ msgstr "" msgid "Choose Hosts File..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:413 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:435 msgid "Choose whether to restrict the entire internet or only specific Tachyon routing sections." msgstr "" @@ -1003,7 +1107,7 @@ msgstr "" msgid "Choose whether to route traffic to all destinations except selected countries (Exclude) or only to selected countries (Include)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:425 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:447 msgid "Choose which routing sections to apply this schedule to." msgstr "" @@ -1024,12 +1128,12 @@ msgstr "" msgid "Clear" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12770 -#: src/tachyon/tabs/diagnostic/initController.ts:1085 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13454 +#: src/tachyon/tabs/diagnostic/initController.ts:1087 msgid "Clear DNS cache" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3296 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3336 msgid "Client Address" msgstr "" @@ -1037,7 +1141,7 @@ msgstr "" msgid "Client Certificate" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3308 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3348 msgid "Client DNS" msgstr "" @@ -1061,60 +1165,62 @@ msgstr "" msgid "Client link QR code" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3356 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3396 msgid "Client Private Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3366 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3406 msgid "Client Public Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3297 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3337 msgid "Client VPN IP address (e.g. 10.0.0.2/32)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7503 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10110 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10652 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11234 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11444 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13174 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14733 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14776 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16484 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16519 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7637 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10321 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10874 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11456 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11666 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11926 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13858 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15431 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15474 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17182 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17217 #: ../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 #: src/partials/modal/renderModal.ts:263 -#: src/tachyon/tabs/dashboard/initController.ts:1266 -#: src/tachyon/tabs/diagnostic/initController.ts:1551 +#: src/tachyon/tabs/dashboard/initController.ts:1267 +#: src/tachyon/tabs/diagnostic/initController.ts:1553 #: src/tachyon/tabs/monitoring/initController.ts:893 #: src/tachyon/tabs/monitoring/initController.ts:948 #: src/tachyon/tabs/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:337 #: 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:14055 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14056 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14753 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14754 #: 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:14702 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14703 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15400 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15401 #: 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:14018 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14600 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14716 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15298 #: src/tachyon/tabs/monitoring/initController.ts:729 #: src/tachyon/tabs/monitoring/render.ts:29 msgid "Closed" @@ -1136,7 +1242,7 @@ msgstr "" msgid "Cloudflare WARP API access token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2162 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2187 msgid "Comma-separated list of Telegram user IDs authorized to control the bot." msgstr "" @@ -1144,7 +1250,7 @@ msgstr "" msgid "Community Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6067 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6200 #: src/tachyon/services/core.service.ts:43 msgid "Component update available" msgstr "" @@ -1157,7 +1263,7 @@ msgstr "" msgid "Components" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5711 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5841 #: src/tachyon/helpers/singBoxVariant.ts:60 msgid "compressed" msgstr "" @@ -1170,11 +1276,11 @@ msgstr "" msgid "Conditions" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1514 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1539 msgid "Config File Path" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1668 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1693 msgid "Config Snapshots" msgstr "" @@ -1187,8 +1293,8 @@ 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:4963 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11649 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12333 #: src/tachyon/methods/custom/getDashboardSections.ts:1651 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:620 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:141 @@ -1210,8 +1316,8 @@ msgstr "" msgid "Connected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12930 -#: src/tachyon/tabs/diagnostic/initController.ts:1274 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13614 +#: src/tachyon/tabs/diagnostic/initController.ts:1276 msgid "Connected Devices" msgstr "" @@ -1219,56 +1325,56 @@ msgstr "" msgid "Connection URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15526 #: src/tachyon/tabs/monitoring/initController.ts:1012 msgid "Connections are unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11678 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12362 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:174 msgid "Connectivity probe failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:585 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:628 msgid "Content Mode" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3415 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3455 msgid "Cookie packet junk size (S3)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2975 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2985 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1623 #: src/helpers/copyToClipboard.ts:10 msgid "Copied" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10103 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10314 #: ../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:16260 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16958 #: 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:7435 -#: src/tachyon/tabs/dashboard/initController.ts:1191 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7569 +#: 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:13136 -#: src/tachyon/tabs/diagnostic/initController.ts:1509 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13820 +#: src/tachyon/tabs/diagnostic/initController.ts:1511 msgid "Copy Support Report" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9414 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9623 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:89 msgid "Could not compare FakeIP and control public IPs" msgstr "" @@ -1277,8 +1383,8 @@ msgstr "" msgid "Country code (e.g. ru, us, de)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13087 -#: src/tachyon/tabs/diagnostic/initController.ts:1450 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13771 +#: src/tachyon/tabs/diagnostic/initController.ts:1452 msgid "Current Diagnosis" msgstr "" @@ -1295,12 +1401,12 @@ msgstr "" msgid "Currently unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10554 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10776 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:61 msgid "Custom" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1772 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1797 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:964 msgid "Custom API Endpoint URL" msgstr "" @@ -1313,32 +1419,32 @@ msgstr "" msgid "Custom DNS Records (Hosts)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10553 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10775 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:60 msgid "Custom domains" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3440 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3480 msgid "Custom header for cookie packet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3446 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3486 msgid "Custom header for data packet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3428 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3468 msgid "Custom header for handshake initiation" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3434 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3474 msgid "Custom header for handshake response" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1728 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1753 msgid "Custom OpenAI-Compatible API" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1773 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1798 msgid "Custom OpenAI-compatible API endpoint URL (e.g. http://192.168.1.100:11434/v1/chat/completions)" msgstr "" @@ -1346,6 +1452,19 @@ msgstr "" msgid "Custom outbound configurations in JSON format" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11759 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:144 +msgid "Custom Target URL..." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:307 +msgid "Daily Quota" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:516 +msgid "Daily time quota (minutes)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:515 msgid "Dashboard" msgstr "" @@ -1355,16 +1474,16 @@ msgstr "" msgid "Dashboard currently unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:481 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:503 msgid "Days of Week" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2288 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2313 msgid "Default (auto)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1609 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1620 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1634 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1645 msgid "Default (Direct WAN / Default mixed proxy)" msgstr "" @@ -1404,7 +1523,7 @@ msgstr "" msgid "Detect server country" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1584 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1609 msgid "Detects and drops STUN/TURN packets in nftables to prevent real IP leaks via WebRTC." msgstr "" @@ -1433,8 +1552,8 @@ msgstr "" msgid "Device or IP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13005 -#: src/tachyon/tabs/diagnostic/initController.ts:1357 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13689 +#: src/tachyon/tabs/diagnostic/initController.ts:1359 msgid "Device updated" msgstr "" @@ -1442,12 +1561,12 @@ msgstr "" 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:8963 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9172 #: 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:8963 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9172 #: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:36 msgid "DHCP is managed manually" msgstr "" @@ -1456,8 +1575,8 @@ msgstr "" msgid "Diagnostics" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10525 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10531 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10747 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10753 #: ../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 @@ -1468,8 +1587,8 @@ msgstr "" msgid "Direct (Default)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12993 -#: src/tachyon/tabs/diagnostic/initController.ts:1344 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13677 +#: src/tachyon/tabs/diagnostic/initController.ts:1346 msgid "Direct Bypass" msgstr "" @@ -1477,13 +1596,13 @@ msgstr "" msgid "Direct connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12987 -#: src/tachyon/tabs/diagnostic/initController.ts:1335 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13671 +#: src/tachyon/tabs/diagnostic/initController.ts:1337 msgid "Direct WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10243 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:92 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10455 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:94 msgid "Disable autostart" msgstr "" @@ -1495,8 +1614,8 @@ msgstr "" msgid "Disable the QUIC protocol to improve compatibility or fix issues with video streaming" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:347 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:374 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:369 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:396 msgid "Disabled" msgstr "" @@ -1504,6 +1623,10 @@ msgstr "" msgid "Disabling interception is incompatible with action=zapret2 because Tachyon sends matched traffic through NFQUEUE." msgstr "" +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:140 +msgid "Discord (Gateway / API / Voice)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2627 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3084 msgid "Display name" @@ -1518,7 +1641,7 @@ msgstr "" msgid "DNS Check Interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1842 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1867 msgid "DNS Check Interval (s)" msgstr "" @@ -1526,7 +1649,7 @@ msgstr "" msgid "DNS Failures Before Switching" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9021 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9230 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:75 msgid "DNS on router" msgstr "" @@ -1579,7 +1702,7 @@ msgstr "" msgid "DNS server address cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3309 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3349 msgid "DNS server pushed to the client configuration" msgstr "" @@ -1629,7 +1752,7 @@ msgstr "" msgid "DNS Unavailability Timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11528 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12212 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:26 msgid "Do not panic, everything can be fixed, just..." msgstr "" @@ -1658,25 +1781,25 @@ msgstr "" msgid "Do not test specified servers." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12558 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12578 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12586 -#: src/tachyon/tabs/diagnostic/initController.ts:729 -#: src/tachyon/tabs/diagnostic/initController.ts:771 -#: src/tachyon/tabs/diagnostic/initController.ts:779 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13242 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13262 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13270 +#: 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:12567 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12569 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12569 -#: src/tachyon/tabs/diagnostic/initController.ts:745 -#: src/tachyon/tabs/diagnostic/initController.ts:757 -#: src/tachyon/tabs/diagnostic/initController.ts:758 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13251 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13253 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13253 +#: 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:9142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9351 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:54 msgid "Does not resolve" msgstr "" @@ -1693,7 +1816,7 @@ msgstr "" msgid "Domain Resolver" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1936 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1961 msgid "Domain test sections" msgstr "" @@ -1706,7 +1829,7 @@ msgstr "" msgid "Domains automatically detected by Smart Detect or added via Telegram bot. You can manually edit or remove them here." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:497 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:540 msgid "Domains to block for the selected devices. Leave empty to block all internet. Enter one domain per line, e.g. youtube.com. Use the preset buttons to quickly add common categories." msgstr "" @@ -1718,14 +1841,14 @@ msgstr "" msgid "Dont Touch My DHCP!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7946 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7958 -#: src/tachyon/tabs/dashboard/initController.ts:1848 -#: src/tachyon/tabs/dashboard/initController.ts:1861 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8080 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8092 +#: 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:10098 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10309 #: src/partials/modal/renderModal.ts:253 msgid "Download" msgstr "" @@ -1770,9 +1893,9 @@ msgstr "" msgid "Download through" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14726 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14773 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14912 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15424 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15471 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15610 #: src/tachyon/tabs/monitoring/initController.ts:886 #: src/tachyon/tabs/monitoring/initController.ts:945 #: src/tachyon/tabs/monitoring/initController.ts:1134 @@ -1783,6 +1906,11 @@ msgstr "" msgid "Downloading and applying rule sets and lists..." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11740 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:84 +msgid "DPI Engine" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:432 msgid "Drag rows to change priority. The rule at the top is checked first." msgstr "" @@ -1809,7 +1937,7 @@ msgstr "" msgid "e.g. google.com, 1.1.1.1, 443" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:387 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:409 msgid "e.g. Kids Phone (Night YouTube)" msgstr "" @@ -1832,11 +1960,11 @@ msgstr "" msgid "Enable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1897 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1922 msgid "Enable Adaptive Intervals" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1706 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1731 msgid "Enable AI Doctor (ChatGPT / LLM Analysis)" msgstr "" @@ -1844,7 +1972,7 @@ msgstr "" msgid "Enable AI Doctor (LLM Integration)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1904 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1929 msgid "Enable Anomaly Detection" msgstr "" @@ -1856,8 +1984,8 @@ msgstr "" msgid "Enable automatic updates for remote lists and rule sets" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10253 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:102 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10465 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:104 msgid "Enable autostart" msgstr "" @@ -1865,16 +1993,16 @@ 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:1876 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1901 msgid "Enable Config Validation" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12778 -#: src/tachyon/tabs/diagnostic/initController.ts:1093 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462 +#: src/tachyon/tabs/diagnostic/initController.ts:1095 msgid "Enable Direct WAN Bypass" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1836 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1861 msgid "Enable DNS Continuous Check" msgstr "" @@ -1882,15 +2010,15 @@ msgstr "" msgid "Enable DNS Turbo Cache" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1849 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1874 msgid "Enable Firewall Reload Dedup" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1883 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1908 msgid "Enable Graceful Degradation" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1856 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1881 msgid "Enable Health Metrics" msgstr "" @@ -1910,25 +2038,25 @@ msgstr "" msgid "Enable Output Network Interface" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1812 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1837 msgid "Enable Proxy Health Monitor" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1788 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1813 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:778 msgid "Enable RAG (Knowledge Base Retrieval)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1869 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1894 msgid "Enable Smart Cooldowns" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1923 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1948 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1119 msgid "Enable Smart Detect" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2133 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2158 msgid "Enable Telegram Bot" msgstr "" @@ -1940,7 +2068,7 @@ msgstr "" msgid "Enable WAN DNS Fallback for Main DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1680 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1705 msgid "Enable Watchdog" msgstr "" @@ -1952,22 +2080,27 @@ msgstr "" msgid "Enable YACD WAN Access" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2134 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2159 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:1681 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1706 msgid "Enables the background watchdog process to monitor services and auto-recover on failures." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:470 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:492 msgid "End of the schedule interval (e.g. 08:00). Supports spans crossing midnight." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:469 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:491 msgid "End Time (HH:MM)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11877 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:283 +msgid "Engine" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2727 msgid "Enter a complete sing-box inbound object" msgstr "" @@ -1983,7 +2116,7 @@ msgstr "" msgid "Enter a display name" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11047 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11269 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:644 msgid "Enter a domain or IP to check (e.g. example.com)..." msgstr "" @@ -1993,11 +2126,15 @@ msgstr "" msgid "Enter a level name" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:529 +msgid "Enter a whole number of minutes between 0 and 1440" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2482 msgid "Enter HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2145 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2170 msgid "Enter the API token obtained from @BotFather." msgstr "" @@ -2112,31 +2249,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:12865 -#: src/tachyon/tabs/diagnostic/initController.ts:1200 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13549 +#: src/tachyon/tabs/diagnostic/initController.ts:1202 msgid "Failed to apply fix" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15101 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15115 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4016 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12120 +#: src/tachyon/methods/shell/index.ts:1140 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:569 +msgid "Failed to apply strategy" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15799 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15813 #: 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:15130 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15840 #: 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:12723 -#: src/tachyon/tabs/diagnostic/initController.ts:972 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13407 +#: src/tachyon/tabs/diagnostic/initController.ts:974 msgid "Failed to copy report to clipboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2977 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2987 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1625 #: src/helpers/copyToClipboard.ts:12 msgid "Failed to copy!" @@ -2146,23 +2290,23 @@ msgstr "" msgid "Failed to delete snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3260 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3263 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16984 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16984 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17044 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17216 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3276 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3279 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17686 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17686 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17746 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17918 #: src/tachyon/methods/shell/index.ts:171 #: src/tachyon/methods/shell/index.ts:178 -#: src/tachyon/tabs/updates/initController.ts:657 -#: src/tachyon/tabs/updates/initController.ts:658 -#: src/tachyon/tabs/updates/initController.ts:735 -#: src/tachyon/tabs/updates/initController.ts:949 +#: src/tachyon/tabs/updates/initController.ts:661 +#: src/tachyon/tabs/updates/initController.ts:662 +#: src/tachyon/tabs/updates/initController.ts:739 +#: src/tachyon/tabs/updates/initController.ts:953 msgid "Failed to execute" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13328 -#: src/tachyon/tabs/diagnostic/initController.ts:1732 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14020 +#: src/tachyon/tabs/diagnostic/initController.ts:1748 msgid "Failed to generate bug report" msgstr "" @@ -2171,6 +2315,15 @@ msgstr "" msgid "Failed to generate WARP config:" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3974 +#: src/tachyon/methods/shell/index.ts:1092 +msgid "Failed to get fuzzer status" +msgstr "" + +#: src/tachyon/methods/shell/index.ts:1175 +msgid "Failed to get fuzzer strategies" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:630 msgid "Failed to load snapshots" msgstr "" @@ -2179,7 +2332,7 @@ msgstr "" msgid "Failed to parse file:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10695 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10917 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:231 msgid "Failed to parse target list." msgstr "" @@ -2188,12 +2341,12 @@ msgstr "" msgid "Failed to parse WARP config:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3631 -#: src/tachyon/methods/shell/index.ts:657 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3653 +#: 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:11347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11569 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:115 msgid "Failed to receive response from AI service." msgstr "" @@ -2202,10 +2355,10 @@ msgstr "" msgid "Failed to reset settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13164 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13247 -#: src/tachyon/tabs/diagnostic/initController.ts:1541 -#: src/tachyon/tabs/diagnostic/initController.ts:1635 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13848 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13939 +#: src/tachyon/tabs/diagnostic/initController.ts:1543 +#: src/tachyon/tabs/diagnostic/initController.ts:1651 msgid "Failed to restore native internet" msgstr "" @@ -2213,8 +2366,8 @@ msgstr "" msgid "Failed to restore snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2360 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2382 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2385 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2407 msgid "Failed to run diagnostics — is the tachyon binary installed?" msgstr "" @@ -2238,12 +2391,22 @@ msgstr "" msgid "Failed to save snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12103 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:551 +msgid "Failed to start benchmark" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2104 msgid "Failed to start bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10678 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11250 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3951 +#: src/tachyon/methods/shell/index.ts:1066 +msgid "Failed to start fuzzer" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10900 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11472 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:213 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:890 msgid "Failed to start service check." @@ -2253,54 +2416,63 @@ msgstr "" msgid "Failed to start watchdog" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2093 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2118 msgid "Failed to stop bot" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3988 +#: src/tachyon/methods/shell/index.ts:1107 +msgid "Failed to stop fuzzer" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:355 msgid "Failed to stop watchdog" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7046 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7052 -#: src/tachyon/tabs/dashboard/initController.ts:699 -#: src/tachyon/tabs/dashboard/initController.ts:705 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7180 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7186 +#: 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:13010 -#: src/tachyon/tabs/diagnostic/initController.ts:1362 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13694 +#: src/tachyon/tabs/diagnostic/initController.ts:1364 msgid "Failed to update device" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6753 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6753 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6768 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6800 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6803 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7703 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7706 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6886 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6886 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6901 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6934 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6937 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7837 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7840 #: src/tachyon/tabs/dashboard/initController.ts:309 #: src/tachyon/tabs/dashboard/initController.ts:310 #: src/tachyon/tabs/dashboard/initController.ts:330 -#: src/tachyon/tabs/dashboard/initController.ts:376 -#: src/tachyon/tabs/dashboard/initController.ts:380 -#: src/tachyon/tabs/dashboard/initController.ts:1536 -#: src/tachyon/tabs/dashboard/initController.ts:1540 +#: src/tachyon/tabs/dashboard/initController.ts:377 +#: src/tachyon/tabs/dashboard/initController.ts:381 +#: src/tachyon/tabs/dashboard/initController.ts:1537 +#: src/tachyon/tabs/dashboard/initController.ts:1541 msgid "Failed to update subscriptions" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9414 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1526 +msgid "Failover failure threshold" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9623 #: 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:9414 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9623 #: 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:9386 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9595 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:46 msgid "FakeIP works; public IP comparison is inconclusive" msgstr "" @@ -2313,22 +2485,22 @@ msgstr "" msgid "Fallback on unknown DC" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1837 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1862 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:7650 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7784 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3168 -#: src/tachyon/tabs/dashboard/initController.ts:1463 +#: src/tachyon/tabs/dashboard/initController.ts:1464 msgid "Faster server search interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4285 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4401 #: src/tachyon/methods/custom/getDashboardSections.ts:661 msgid "Fastest" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10861 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11083 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:425 msgid "Filter by service:" msgstr "" @@ -2341,18 +2513,18 @@ msgstr "" msgid "Finland (fi)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9206 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9415 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:136 msgid "Firewall WAN port" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12859 -#: src/tachyon/tabs/diagnostic/initController.ts:1194 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13543 +#: src/tachyon/tabs/diagnostic/initController.ts:1196 msgid "Fix applied" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12764 -#: src/tachyon/tabs/diagnostic/initController.ts:1079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13448 +#: src/tachyon/tabs/diagnostic/initController.ts:1081 msgid "Fix resolv.conf" msgstr "" @@ -2361,15 +2533,15 @@ msgstr "" msgid "Fix the highlighted fields and save again." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12567 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12855 -#: src/tachyon/tabs/diagnostic/initController.ts:751 -#: src/tachyon/tabs/diagnostic/initController.ts:1190 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13251 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13539 +#: 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:12781 -#: src/tachyon/tabs/diagnostic/initController.ts:1096 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13465 +#: src/tachyon/tabs/diagnostic/initController.ts:1098 msgid "Flush Conntrack Table" msgstr "" @@ -2381,7 +2553,7 @@ msgstr "" msgid "Forced device routing" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1594 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1619 msgid "Forces sing-box to tunnel DNS requests via DoQ with Encrypted Client Hello (ECH) for SNI hiding." msgstr "" @@ -2409,7 +2581,7 @@ msgstr "" msgid "Fronting proxy protocol" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11397 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11619 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:173 msgid "Full System Diagnostic" msgstr "" @@ -2434,8 +2606,8 @@ msgstr "" msgid "Generate a random 16-character hexadecimal HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10338 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:187 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10560 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:199 msgid "Generate bug report" msgstr "" @@ -2454,7 +2626,7 @@ msgstr "" msgid "Generate WARP Config" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9170 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9379 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:89 msgid "Generated inbound" msgstr "" @@ -2487,8 +2659,8 @@ msgstr "" msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer ." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10262 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:111 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10474 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:113 msgid "Get global check" msgstr "" @@ -2496,18 +2668,23 @@ 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:12533 -#: src/tachyon/tabs/diagnostic/initController.ts:701 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13217 +#: src/tachyon/tabs/diagnostic/initController.ts:703 msgid "Global check" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12544 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12548 -#: src/tachyon/tabs/diagnostic/initController.ts:712 -#: src/tachyon/tabs/diagnostic/initController.ts:716 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13228 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13232 +#: 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:12116 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:565 +msgid "Global Default" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2961 msgid "gRPC service" msgstr "" @@ -2520,28 +2697,28 @@ msgstr "" msgid "Health Checks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11262 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11484 #: 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 "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3482 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3488 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3494 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3522 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3528 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3534 msgid "Hex or binary junk payload" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3464 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3470 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3476 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3504 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3510 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3516 msgid "Hex or binary payload" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3452 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3492 msgid "Hex or binary payload for init" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3458 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3498 msgid "Hex or binary payload for response" msgstr "" @@ -2589,14 +2766,14 @@ msgstr "" msgid "Hide URLTest group nodes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10150 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10361 #: src/partials/modal/renderModal.ts:310 msgid "Hide values" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7637 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7771 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3132 -#: src/tachyon/tabs/dashboard/initController.ts:1449 +#: src/tachyon/tabs/dashboard/initController.ts:1450 msgid "Higher-level check interval" msgstr "" @@ -2604,13 +2781,13 @@ msgstr "" msgid "Higher-priority DNS Check" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13111 -#: src/tachyon/tabs/diagnostic/initController.ts:1478 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13795 +#: src/tachyon/tabs/diagnostic/initController.ts:1480 msgid "History" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14716 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14769 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15414 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15467 #: src/tachyon/tabs/monitoring/initController.ts:876 #: src/tachyon/tabs/monitoring/initController.ts:941 msgid "Host" @@ -2624,7 +2801,7 @@ msgstr "" msgid "Hosts Lists Update Interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1863 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1888 msgid "How many hours of metrics to keep (default 24)." msgstr "" @@ -2636,15 +2813,15 @@ msgstr "" msgid "How often the currently selected server is checked" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1843 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1868 msgid "How often to check DNS health in seconds (default 60)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1819 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1844 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:2185 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2210 msgid "How often to check Telegram for new messages (default: 5)." msgstr "" @@ -2661,7 +2838,7 @@ msgstr "" msgid "HTTP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5026 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5142 #: src/tachyon/api.ts:27 msgid "HTTP error" msgstr "" @@ -2678,14 +2855,14 @@ msgstr "" msgid "HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7521 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7655 #: ../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:1294 +#: src/tachyon/tabs/dashboard/initController.ts:1295 msgid "Idle timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1884 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1909 msgid "If one health check fails with an error, continue running other checks instead of stopping." msgstr "" @@ -2764,15 +2941,15 @@ msgstr "" msgid "Information" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3500 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3540 msgid "Init handshake timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3427 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3467 msgid "Init packet header (H1)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3403 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3443 msgid "Init packet junk size (S1)" msgstr "" @@ -2804,35 +2981,45 @@ msgstr "" msgid "Init Packet Payload (I5)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3451 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3491 msgid "Init payload (I1)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3499 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3539 msgid "Init timeout (Itime)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16474 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17242 -#: src/tachyon/tabs/updates/initController.ts:985 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:141 +msgid "Instagram / Meta (TLS 1.3)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17172 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17944 +#: 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:17644 -#: src/tachyon/tabs/updates/initController.ts:1473 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18367 +#: src/tachyon/tabs/updates/initController.ts:1502 msgid "Install another build:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17524 -#: src/tachyon/tabs/updates/initController.ts:1334 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:100 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110 +msgid "Installed" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18247 +#: src/tachyon/tabs/updates/initController.ts:1363 msgid "Installed build → Available build" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16763 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17532 -#: src/tachyon/tabs/updates/initController.ts:355 -#: src/tachyon/tabs/updates/initController.ts:1342 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17465 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18255 +#: src/tachyon/tabs/updates/initController.ts:359 +#: src/tachyon/tabs/updates/initController.ts:1371 msgid "Installed version is newer than release" msgstr "" @@ -2848,12 +3035,12 @@ msgstr "" msgid "Interface monitoring for Bad WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7523 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7655 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7657 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7789 #: ../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:1296 -#: src/tachyon/tabs/dashboard/initController.ts:1469 +#: src/tachyon/tabs/dashboard/initController.ts:1297 +#: src/tachyon/tabs/dashboard/initController.ts:1470 msgid "Interrupt connections" msgstr "" @@ -2865,8 +3052,8 @@ msgstr "" msgid "Interrupt connections when URLTest switches the selected server" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7519 -#: src/tachyon/tabs/dashboard/initController.ts:1292 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7653 +#: src/tachyon/tabs/dashboard/initController.ts:1293 msgid "Interval" msgstr "" @@ -2897,7 +3084,7 @@ msgstr "" msgid "Invalid domain address" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:511 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:554 msgid "Invalid domain: empty prefix value" msgstr "" @@ -3251,20 +3438,20 @@ 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:12567 -#: src/tachyon/tabs/diagnostic/initController.ts:747 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13251 +#: src/tachyon/tabs/diagnostic/initController.ts:749 msgid "Issues" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8944 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9433 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9153 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9642 #: 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:12881 -#: src/tachyon/tabs/diagnostic/initController.ts:1219 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13565 +#: src/tachyon/tabs/diagnostic/initController.ts:1221 msgid "Issues detected. Review the diagnosis above." msgstr "" @@ -3311,7 +3498,7 @@ msgstr "" msgid "Junk Min Size (Jmin)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3385 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3425 msgid "Junk packet count (Jc)" msgstr "" @@ -3319,39 +3506,39 @@ msgstr "" msgid "Junk Packet Count (Jc)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3397 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3437 msgid "Junk packet max size (Jmax)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3391 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3431 msgid "Junk packet min size (Jmin)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3481 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3521 msgid "Junk payload (J1)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3487 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3527 msgid "Junk payload (J2)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3493 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3533 msgid "Junk payload (J3)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3416 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3456 msgid "Junk size for cookie packet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3404 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3444 msgid "Junk size for initiation packet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3410 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3450 msgid "Junk size for response packet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3422 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3462 msgid "Junk size for transport packet" msgstr "" @@ -3384,19 +3571,19 @@ msgstr "" msgid "Keyword must not contain spaces or commas" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13097 -#: src/tachyon/tabs/diagnostic/initController.ts:1462 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13781 +#: src/tachyon/tabs/diagnostic/initController.ts:1464 msgid "LAN Devices" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1749 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1774 msgid "Language for AI Doctor diagnosis responses" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3517 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3536 -#: src/tachyon/methods/shell/index.ts:512 -#: src/tachyon/methods/shell/index.ts:533 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3539 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3558 +#: src/tachyon/methods/shell/index.ts:519 +#: src/tachyon/methods/shell/index.ts:540 msgid "Latency test failed" msgstr "" @@ -3404,15 +3591,15 @@ msgstr "" msgid "Latency test URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16765 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17530 -#: src/tachyon/tabs/updates/initController.ts:358 -#: src/tachyon/tabs/updates/initController.ts:1340 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17467 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18253 +#: 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:17532 -#: src/tachyon/tabs/updates/initController.ts:1342 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18255 +#: src/tachyon/tabs/updates/initController.ts:1371 msgid "Latest version:" msgstr "" @@ -3424,11 +3611,15 @@ msgstr "" msgid "Level name" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:517 +msgid "Limit device network usage per day. When the quota is exhausted, the device is blocked until midnight. 0 disables the limit." +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7166 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:1965 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1990 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 "" @@ -3444,7 +3635,7 @@ msgstr "" msgid "Listen port" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9200 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9409 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:125 msgid "Listening port" msgstr "" @@ -3453,7 +3644,7 @@ msgstr "" msgid "Lists and rule sets successfully updated!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1727 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1752 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:869 msgid "LM Studio (Local PC / Server)" msgstr "" @@ -3483,35 +3674,37 @@ msgstr "" msgid "Loading client link..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12900 -#: src/tachyon/tabs/diagnostic/initController.ts:1241 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13584 +#: src/tachyon/tabs/diagnostic/initController.ts:1243 msgid "Loading connected LAN devices..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14087 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14819 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14785 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15517 #: 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:10627 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10666 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10849 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10888 #: 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:17406 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17419 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17429 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17439 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17449 -#: src/tachyon/tabs/updates/initController.ts:1186 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18119 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18132 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18152 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18162 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18172 #: src/tachyon/tabs/updates/initController.ts:1201 -#: src/tachyon/tabs/updates/initController.ts:1219 -#: src/tachyon/tabs/updates/initController.ts:1233 -#: src/tachyon/tabs/updates/initController.ts:1247 +#: src/tachyon/tabs/updates/initController.ts:1216 +#: src/tachyon/tabs/updates/initController.ts:1234 +#: src/tachyon/tabs/updates/initController.ts:1248 +#: src/tachyon/tabs/updates/initController.ts:1262 +#: src/tachyon/tabs/updates/initController.ts:1276 msgid "Loading..." msgstr "" @@ -3523,16 +3716,16 @@ msgstr "" msgid "Local Address" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1565 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1590 msgid "Log Level" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5713 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5843 #: src/tachyon/helpers/singBoxVariant.ts:62 msgid "lx" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9016 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9225 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67 msgid "Main DNS" msgstr "" @@ -3542,10 +3735,10 @@ 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:7218 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7558 -#: src/tachyon/tabs/dashboard/initController.ts:913 -#: src/tachyon/tabs/dashboard/initController.ts:1345 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7352 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7692 +#: src/tachyon/tabs/dashboard/initController.ts:914 +#: src/tachyon/tabs/dashboard/initController.ts:1346 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:450 msgid "Manual" msgstr "" @@ -3566,6 +3759,10 @@ msgstr "" msgid "MASQUE Private Key" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3297 +msgid "Masquerade LAN traffic into tailnet" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9321 msgid "Match destination IPs or subnets" msgstr "" @@ -3582,11 +3779,11 @@ 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:1911 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1936 msgid "Max reconnects per hour before alert (default 10)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3398 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3438 msgid "Maximum size of junk packets" msgstr "" @@ -3594,8 +3791,8 @@ 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:7970 -#: src/tachyon/tabs/dashboard/initController.ts:1874 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8104 +#: src/tachyon/tabs/dashboard/initController.ts:1877 msgid "Memory Usage" msgstr "" @@ -3607,15 +3804,20 @@ msgstr "" msgid "Method" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1862 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1887 msgid "Metrics Retention (hours)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:319 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:325 +msgid "min/day" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2658 msgid "Minimum latency difference in milliseconds that triggers switching to a faster server." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3392 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3432 msgid "Minimum size of junk packets" msgstr "" @@ -3635,7 +3837,7 @@ msgstr "" msgid "Mode" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1736 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1761 msgid "Model name to use. Leave empty to use default (gpt-4o-mini / claude-3-5-haiku / deepseek-chat / llama3:latest)." msgstr "" @@ -3659,7 +3861,7 @@ msgstr "" msgid "Monitoring & Analytics" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1905 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1930 msgid "Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour." msgstr "" @@ -3672,11 +3874,11 @@ msgid "Move up" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8384 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3316 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3356 msgid "MTU" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2175 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2200 msgid "Must be a comma-separated list of numeric IDs" msgstr "" @@ -3694,13 +3896,17 @@ msgstr "" msgid "Name shown in the priority level list" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13154 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13239 -#: src/tachyon/tabs/diagnostic/initController.ts:1531 -#: src/tachyon/tabs/diagnostic/initController.ts:1627 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13931 +#: src/tachyon/tabs/diagnostic/initController.ts:1533 +#: src/tachyon/tabs/diagnostic/initController.ts:1643 msgid "Native internet restored. Tachyon stopped." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3287 +msgid "Native tailscaled (tailnet reachable from LAN without client)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9249 msgid "Netherlands (nl)" msgstr "" @@ -3722,20 +3928,20 @@ msgstr "" msgid "New domains:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6065 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6198 #: 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:9501 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9587 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9710 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9796 #: 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:9501 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9587 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9710 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9796 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:99 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:96 msgid "NFQUEUE range overlaps with another rule" @@ -3757,14 +3963,14 @@ msgstr "" msgid "NFQWS2 strategy cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7146 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7149 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7209 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7549 -#: src/tachyon/tabs/dashboard/initController.ts:821 -#: src/tachyon/tabs/dashboard/initController.ts:825 -#: src/tachyon/tabs/dashboard/initController.ts:901 -#: src/tachyon/tabs/dashboard/initController.ts:1333 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7280 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7283 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7343 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7683 +#: src/tachyon/tabs/dashboard/initController.ts:822 +#: src/tachyon/tabs/dashboard/initController.ts:826 +#: src/tachyon/tabs/dashboard/initController.ts:902 +#: src/tachyon/tabs/dashboard/initController.ts:1334 msgid "No" msgstr "" @@ -3773,13 +3979,13 @@ msgstr "" msgid "No active clients" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15536 #: src/tachyon/tabs/monitoring/initController.ts:1026 msgid "No active connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12911 -#: src/tachyon/tabs/diagnostic/initController.ts:1253 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13595 +#: src/tachyon/tabs/diagnostic/initController.ts:1255 msgid "No active DHCP clients found on local network." msgstr "" @@ -3788,17 +3994,22 @@ msgstr "" msgid "No active routing sections found." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10702 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11905 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:311 +msgid "No benchmark results yet. Select engine and click \"Start Benchmark\"." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10924 #: 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:14838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15536 #: src/tachyon/tabs/monitoring/initController.ts:1027 msgid "No closed connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9126 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9335 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:32 msgid "No conflict detected" msgstr "" @@ -3807,21 +4018,21 @@ msgstr "" msgid "No Custom Rules Matched" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12694 -#: src/tachyon/tabs/diagnostic/initController.ts:941 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13378 +#: src/tachyon/tabs/diagnostic/initController.ts:943 msgid "No DHCP clients detected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13027 -#: src/tachyon/tabs/diagnostic/initController.ts:1380 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13711 +#: 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:1980 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2005 msgid "No domains detected yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9246 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9455 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:187 msgid "No enabled server inbounds configured" msgstr "" @@ -3830,37 +4041,37 @@ msgstr "" msgid "No file selected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12888 -#: src/tachyon/tabs/diagnostic/initController.ts:1228 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13572 +#: 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:12569 -#: src/tachyon/tabs/diagnostic/initController.ts:758 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13253 +#: src/tachyon/tabs/diagnostic/initController.ts:760 msgid "No issues found" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9351 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9560 #: 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:9179 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9388 #: 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:9666 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9875 #: 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:9491 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9700 #: 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:9577 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9786 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:82 msgid "No rules use Zapret2" msgstr "" @@ -3874,31 +4085,33 @@ msgstr "" msgid "No snapshots yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7451 -#: src/tachyon/tabs/dashboard/initController.ts:1210 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7585 +#: src/tachyon/tabs/dashboard/initController.ts:1211 msgid "Node list is empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7290 -#: src/tachyon/tabs/dashboard/initController.ts:1009 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7424 +#: src/tachyon/tabs/dashboard/initController.ts:1010 msgid "Nodes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12691 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:314 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:333 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13375 +#: ../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 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:355 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:449 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2741 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3033 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3042 -#: src/tachyon/tabs/diagnostic/initController.ts:932 +#: src/tachyon/tabs/diagnostic/initController.ts:934 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:4963 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9135 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11660 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9344 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12344 #: src/tachyon/methods/custom/getDashboardSections.ts:1654 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:623 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:46 @@ -3913,47 +4126,52 @@ msgstr "" msgid "Not connected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9156 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9256 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9365 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9465 #: 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:10502 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10724 #: src/tachyon/tabs/diagnostic/partials/renderCheckSection.ts:193 msgid "Not implement yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5698 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5703 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17429 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17439 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17449 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5833 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18152 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18162 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18172 #: src/tachyon/helpers/singBoxVariant.ts:38 #: src/tachyon/helpers/singBoxVariant.ts:46 -#: src/tachyon/tabs/updates/initController.ts:1222 -#: src/tachyon/tabs/updates/initController.ts:1236 -#: src/tachyon/tabs/updates/initController.ts:1250 +#: 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:101 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:106 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:111 msgid "Not installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9149 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9358 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:62 msgid "Not public" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9207 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9416 #: 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:11611 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11630 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11635 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11683 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12295 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12314 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12319 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12367 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:332 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:826 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:91 @@ -3963,16 +4181,16 @@ msgstr "" msgid "Not responding" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5299 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12091 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12261 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12307 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12369 -#: src/tachyon/tabs/diagnostic/diagnostic.store.ts:140 -#: src/tachyon/tabs/diagnostic/initController.ts:125 -#: src/tachyon/tabs/diagnostic/initController.ts:356 -#: src/tachyon/tabs/diagnostic/initController.ts:414 -#: src/tachyon/tabs/diagnostic/initController.ts:500 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5417 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12775 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12945 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12991 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13053 +#: src/tachyon/tabs/diagnostic/diagnostic.store.ts:142 +#: src/tachyon/tabs/diagnostic/initController.ts:127 +#: src/tachyon/tabs/diagnostic/initController.ts:358 +#: src/tachyon/tabs/diagnostic/initController.ts:416 +#: src/tachyon/tabs/diagnostic/initController.ts:502 msgid "Not running" msgstr "" @@ -3980,31 +4198,31 @@ msgstr "" msgid "Not set" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:608 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:651 msgid "Notify in Telegram" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2257 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2282 msgid "Notify on Certificate Warnings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2205 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2230 msgid "Notify on Core Crashes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2270 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2295 msgid "Notify on DNS Leaks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2231 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2256 msgid "Notify on Server Switches" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2218 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2243 msgid "Notify on Service Restarts" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2244 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2269 msgid "Notify on Subscription Updates" msgstr "" @@ -4012,7 +4230,11 @@ msgstr "" msgid "Number of consecutive failed checks required before switching DNS servers." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1825 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1527 +msgid "Number of consecutive failed probes before switching sections" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1850 msgid "Number of consecutive failures before restarting (default 3)." msgstr "" @@ -4020,7 +4242,7 @@ msgstr "" msgid "Number of consecutive successful checks required before returning to a higher-priority DNS server." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3386 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3426 msgid "Number of junk packets before handshake (1-10)" msgstr "" @@ -4032,7 +4254,7 @@ msgstr "" msgid "Obfuscation password" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1726 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1751 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:861 msgid "Ollama (Local PC / Server)" msgstr "" @@ -4075,10 +4297,10 @@ msgstr "" msgid "Only the specified servers." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17507 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17544 -#: src/tachyon/tabs/updates/initController.ts:1316 -#: src/tachyon/tabs/updates/initController.ts:1355 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18230 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18267 +#: src/tachyon/tabs/updates/initController.ts:1345 +#: src/tachyon/tabs/updates/initController.ts:1384 msgid "Open" msgstr "" @@ -4086,49 +4308,49 @@ msgstr "" msgid "Open priority settings and enter a display name" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11533 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12217 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:31 msgid "Open Project Page" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16389 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17087 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:324 msgid "Operation completed successfully!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16515 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17213 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:483 msgid "Operation failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16216 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16271 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16914 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16969 #: 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:16257 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16955 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:157 msgid "Operation log" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3631 -#: src/tachyon/methods/shell/index.ts:656 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3653 +#: 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:16253 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16951 #: 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:3497 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3565 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3519 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3587 #: src/helpers/withTimeout.ts:7 -#: src/tachyon/methods/shell/index.ts:482 -#: src/tachyon/methods/shell/index.ts:570 +#: src/tachyon/methods/shell/index.ts:489 +#: src/tachyon/methods/shell/index.ts:577 msgid "Operation timed out" msgstr "" @@ -4136,13 +4358,13 @@ msgstr "" msgid "Optimization" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12783 -#: src/tachyon/tabs/diagnostic/initController.ts:1098 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13467 +#: src/tachyon/tabs/diagnostic/initController.ts:1100 msgid "Optimize AWG MTU" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12775 -#: src/tachyon/tabs/diagnostic/initController.ts:1090 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13459 +#: src/tachyon/tabs/diagnostic/initController.ts:1092 msgid "Optimize RAM memory" msgstr "" @@ -4175,6 +4397,11 @@ msgstr "" msgid "Or paste hosts file content:" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8193 +#: src/tachyon/tabs/dashboard/initController.ts:1985 +msgid "Other peers" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:318 #: src/validators/validateOutboundJson.ts:111 msgid "outbounds must be a non-empty array of strings" @@ -4232,36 +4459,36 @@ msgstr "" msgid "Path cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1546 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1571 msgid "Path must be absolute (start with /)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1555 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1580 msgid "Path must contain at least one directory (like /tmp/cache.db)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1550 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1575 msgid "Path must end with cache.db" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14067 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14068 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14611 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14765 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14766 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15309 #: src/tachyon/tabs/monitoring/initController.ts:746 #: src/tachyon/tabs/monitoring/render.ts:80 #: src/tachyon/tabs/monitoring/render.ts:81 msgid "Pause updates" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3463 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3503 msgid "Payload (I3)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3469 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3509 msgid "Payload (I4)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3475 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3515 msgid "Payload (I5)" msgstr "" @@ -4281,14 +4508,14 @@ msgstr "" msgid "PEM-encoded client private key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5231 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:368 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:378 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5347 +#: ../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:10582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10804 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:98 msgid "Pending..." msgstr "" @@ -4302,16 +4529,16 @@ 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:1813 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1838 msgid "Periodically checks if the proxy is responding. Restarts Tachyon after consecutive failures." msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8391 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3326 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3366 msgid "Persistent Keepalive" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1890 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1915 msgid "Persistent Smart Detect" msgstr "" @@ -4324,11 +4551,11 @@ 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:2184 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2209 msgid "Polling Interval (seconds)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2197 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2222 msgid "Polling interval must be at least 1 second" msgstr "" @@ -4336,7 +4563,7 @@ msgstr "" msgid "Port cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9115 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9324 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:19 msgid "Port conflict" msgstr "" @@ -4367,7 +4594,7 @@ msgstr "" msgid "Ports must be between 1 and 65535" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1789 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1814 msgid "Pre-built index of Tachyon documentation chunks. When enabled, AI Doctor searches relevant docs before generating a diagnosis." msgstr "" @@ -4379,7 +4606,7 @@ msgstr "" msgid "Pre-shared key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3376 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3416 msgid "Pre-shared Key (PSK)" msgstr "" @@ -4403,7 +4630,7 @@ msgstr "" msgid "Preshared Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1875 msgid "Prevents multiple reload_firewall calls within 120 seconds to avoid connection drops." msgstr "" @@ -4414,15 +4641,15 @@ 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:7673 -#: src/tachyon/tabs/dashboard/initController.ts:1493 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7807 +#: 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:7623 -#: src/tachyon/tabs/dashboard/initController.ts:1430 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7757 +#: src/tachyon/tabs/dashboard/initController.ts:1431 msgid "Priority details are unavailable" msgstr "" @@ -4456,34 +4683,39 @@ msgstr "" msgid "Protocol" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10528 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11793 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:185 +msgid "Provider Global Default" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10750 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:29 msgid "Proxy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12987 -#: src/tachyon/tabs/diagnostic/initController.ts:1336 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13671 +#: src/tachyon/tabs/diagnostic/initController.ts:1338 msgid "Proxy / DPI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1824 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1849 msgid "Proxy Fail Threshold" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1818 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1843 msgid "Proxy Health Check Interval (s)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1830 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1855 msgid "Proxy Health Check URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7142 -#: src/tachyon/tabs/dashboard/initController.ts:816 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7276 +#: src/tachyon/tabs/dashboard/initController.ts:817 msgid "Proxy link is unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2281 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2306 msgid "Proxy Section for Bot" msgstr "" @@ -4495,7 +4727,7 @@ msgstr "" msgid "PSK" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9130 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9339 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2690 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:40 msgid "Public host" @@ -4547,31 +4779,31 @@ msgstr "" msgid "Reality short ID must contain 1-8 hex digits" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12762 -#: src/tachyon/tabs/diagnostic/initController.ts:1077 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13446 +#: src/tachyon/tabs/diagnostic/initController.ts:1079 msgid "Rebuild firewall rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17526 -#: src/tachyon/tabs/updates/initController.ts:1336 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18249 +#: src/tachyon/tabs/updates/initController.ts:1365 msgid "Rebuilt release" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12832 -#: src/tachyon/tabs/diagnostic/initController.ts:1161 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13516 +#: src/tachyon/tabs/diagnostic/initController.ts:1163 msgid "Recommended Quick Fixes:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1910 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1935 msgid "Reconnect Threshold" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12768 -#: src/tachyon/tabs/diagnostic/initController.ts:1083 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13452 +#: src/tachyon/tabs/diagnostic/initController.ts:1085 msgid "Reconnect WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1857 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1882 msgid "Records proxy/DNS latency and health status in hourly buckets for analysis." msgstr "" @@ -4584,13 +4816,13 @@ msgstr "" msgid "Refill" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12934 -#: src/tachyon/tabs/diagnostic/initController.ts:1278 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13618 +#: src/tachyon/tabs/diagnostic/initController.ts:1280 msgid "Refresh" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12915 -#: src/tachyon/tabs/diagnostic/initController.ts:1257 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13599 +#: src/tachyon/tabs/diagnostic/initController.ts:1259 msgid "Refresh Device List" msgstr "" @@ -4602,17 +4834,17 @@ msgstr "" msgid "Regular expression must not contain spaces or commas" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17323 -#: src/tachyon/tabs/updates/initController.ts:1099 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18029 +#: src/tachyon/tabs/updates/initController.ts:1107 msgid "Reinstall" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16409 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17107 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:349 msgid "Reload now" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16441 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17139 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:390 msgid "Reloading..." msgstr "" @@ -4621,14 +4853,14 @@ msgstr "" msgid "Remote Hosts Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16389 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17087 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:323 msgid "Removal completed successfully!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17291 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17995 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7927 -#: src/tachyon/tabs/updates/initController.ts:1055 +#: src/tachyon/tabs/updates/initController.ts:1061 msgid "Remove" msgstr "" @@ -4644,7 +4876,7 @@ msgstr "" msgid "Remove the specified servers from this level." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16220 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16918 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:114 msgid "Removing" msgstr "" @@ -4657,14 +4889,14 @@ msgstr "" msgid "Reset" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12782 -#: src/tachyon/tabs/diagnostic/initController.ts:1097 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13466 +#: 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:1654 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1679 msgid "Reset Settings" msgstr "" @@ -4676,8 +4908,8 @@ 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:12769 -#: src/tachyon/tabs/diagnostic/initController.ts:1084 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13453 +#: src/tachyon/tabs/diagnostic/initController.ts:1086 msgid "Resolve gateway" msgstr "" @@ -4701,11 +4933,11 @@ msgstr "" msgid "Resource selection by IP or CIDR inside nfqws2 is not supported here; sing-box selects resources before NFQUEUE." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3433 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3473 msgid "Response packet header (H2)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3409 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3449 msgid "Response packet junk size (S2)" msgstr "" @@ -4717,37 +4949,37 @@ msgstr "" msgid "Response Packet Magic Header (S4)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3457 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3497 msgid "Response payload (I2)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12763 -#: src/tachyon/tabs/diagnostic/initController.ts:1078 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13447 +#: src/tachyon/tabs/diagnostic/initController.ts:1080 msgid "Restart dnsmasq" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12772 -#: src/tachyon/tabs/diagnostic/initController.ts:1087 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13456 +#: src/tachyon/tabs/diagnostic/initController.ts:1089 msgid "Restart firewall" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12773 -#: src/tachyon/tabs/diagnostic/initController.ts:1088 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13457 +#: src/tachyon/tabs/diagnostic/initController.ts:1090 msgid "Restart network" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12766 -#: src/tachyon/tabs/diagnostic/initController.ts:1081 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13450 +#: src/tachyon/tabs/diagnostic/initController.ts:1083 msgid "Restart sing-box DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10213 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:62 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10425 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:64 msgid "Restart Tachyon" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12774 -#: src/tachyon/tabs/diagnostic/initController.ts:1089 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13458 +#: src/tachyon/tabs/diagnostic/initController.ts:1091 msgid "Restart Zapret/ByeDPI" msgstr "" @@ -4761,24 +4993,24 @@ msgstr "" msgid "Restore" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12767 -#: src/tachyon/tabs/diagnostic/initController.ts:1082 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13451 +#: src/tachyon/tabs/diagnostic/initController.ts:1084 msgid "Restore config backup" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10291 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13204 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13227 -#: src/tachyon/tabs/diagnostic/initController.ts:1587 -#: src/tachyon/tabs/diagnostic/initController.ts:1611 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:140 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10503 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13896 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13919 +#: 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:12779 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13141 -#: src/tachyon/tabs/diagnostic/initController.ts:1094 -#: src/tachyon/tabs/diagnostic/initController.ts:1514 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13463 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13825 +#: src/tachyon/tabs/diagnostic/initController.ts:1096 +#: src/tachyon/tabs/diagnostic/initController.ts:1516 msgid "Restore Native Internet (Stop Tachyon)" msgstr "" @@ -4786,36 +5018,40 @@ msgstr "" msgid "Restore Snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1655 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1680 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:13144 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13231 -#: src/tachyon/tabs/diagnostic/initController.ts:1517 -#: src/tachyon/tabs/diagnostic/initController.ts:1615 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13923 +#: 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:14611 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15309 #: src/tachyon/tabs/monitoring/initController.ts:746 msgid "Resume updates" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:598 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:641 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:10878 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14720 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14771 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11100 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15418 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15469 #: src/tachyon/tabs/monitoring/initController.ts:880 #: src/tachyon/tabs/monitoring/initController.ts:943 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:444 msgid "Route" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2282 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3311 +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 msgid "Route bot API requests through this section. Leave empty to use the default mixed proxy." msgstr "" @@ -4827,8 +5063,8 @@ msgstr "" msgid "Route requests to this DNS server through another section." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12993 -#: src/tachyon/tabs/diagnostic/initController.ts:1343 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13677 +#: src/tachyon/tabs/diagnostic/initController.ts:1345 msgid "Route via Proxy" msgstr "" @@ -4840,9 +5076,9 @@ msgstr "" msgid "Routing Rule Tracer" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9183 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9192 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9211 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9392 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9401 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9420 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:103 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:114 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:144 @@ -4857,7 +5093,7 @@ msgstr "" msgid "Rule" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:384 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:406 msgid "Rule Name" msgstr "" @@ -4878,77 +5114,91 @@ msgstr "" msgid "Rule Sets (.srs / .json)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11794 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:186 +msgid "Rule:" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2703 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:104 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:111 msgid "Rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9326 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9535 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:79 msgid "Rules mangle counters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9321 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9530 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:74 msgid "Rules mangle exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9336 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9545 #: 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:9331 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9540 #: 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:9346 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9555 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:99 msgid "Rules proxy counters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9341 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9550 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:94 msgid "Rules proxy exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10281 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:130 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10493 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:132 msgid "Run AI Doctor" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10513 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10735 #: src/tachyon/tabs/diagnostic/partials/renderRunAction.ts:17 msgid "Run Diagnostic" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10271 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:120 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10483 +#: 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:4963 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11643 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12327 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:301 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2043 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2044 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2068 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2069 #: 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:2347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2372 msgid "Running diagnostics…" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11948 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:364 +msgid "Running initial strategy probe..." +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9246 msgid "Russia (ru)" msgstr "" +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:142 +msgid "RuTracker (HTTP/HTTPS)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:27 msgid "Sat" msgstr "" @@ -4963,7 +5213,7 @@ msgstr "" msgid "Save" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1669 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1694 msgid "Save a snapshot of the working config and restore it later if something breaks." msgstr "" @@ -4995,12 +5245,17 @@ msgstr "" msgid "Schedule Rule" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14044 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11886 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:292 +msgid "Score" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14742 #: src/tachyon/tabs/monitoring/render.ts:57 msgid "Search" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10837 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11059 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:397 msgid "Search domain or service..." msgstr "" @@ -5013,7 +5268,7 @@ 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:1694 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1719 msgid "Secret token for authorizing WRITE operations (POST/PUT) on /cgi-bin/tachyon-agent/. Leave empty if auth is not required." msgstr "" @@ -5045,7 +5300,7 @@ msgstr "" msgid "Section test order (checked = active, drag rows with △▽):" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1605 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1630 msgid "Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy." msgstr "" @@ -5058,8 +5313,8 @@ msgstr "" msgid "Security" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7431 -#: src/tachyon/tabs/dashboard/initController.ts:1184 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7565 +#: src/tachyon/tabs/dashboard/initController.ts:1185 msgid "Select" msgstr "" @@ -5092,11 +5347,11 @@ msgstr "" msgid "Select a transit section" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:482 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:504 msgid "Select active days. If none selected, the rule applies every day." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1719 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1744 msgid "Select AI LLM provider for diagnostics" msgstr "" @@ -5112,7 +5367,7 @@ msgstr "" msgid "Select an intermediate section" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1937 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1962 msgid "Select and order the sections through which blocked domains are tested. Checked sections are tried top-to-bottom." msgstr "" @@ -5120,7 +5375,7 @@ msgstr "" msgid "Select DNS protocol to use" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:394 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:416 msgid "Select LAN devices to apply this schedule to, or enter IP or MAC addresses manually. MAC addresses (e.g. AA:BB:CC:DD:EE:FF) work even if the device's IP changes. IP addresses (e.g. 192.168.1.150) are used for DNS-level blocking and require a stable lease." msgstr "" @@ -5136,7 +5391,7 @@ msgstr "" msgid "Select or enter a User-Agent" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1529 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1554 msgid "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing" msgstr "" @@ -5144,21 +5399,21 @@ msgstr "" msgid "Select or enter the IP addresses of your game consoles." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1515 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1540 msgid "Select path for sing-box config file. Change this ONLY if you know what you are doing" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:424 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:446 msgid "Select Sections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7641 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7775 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3146 -#: src/tachyon/tabs/dashboard/initController.ts:1453 +#: src/tachyon/tabs/dashboard/initController.ts:1454 msgid "Select the fastest node" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1566 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1591 msgid "Select the log level for sing-box" msgstr "" @@ -5174,14 +5429,14 @@ msgstr "" msgid "Select the WAN interfaces to be monitored" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:446 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:468 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:7515 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7627 -#: src/tachyon/tabs/dashboard/initController.ts:1288 -#: src/tachyon/tabs/dashboard/initController.ts:1439 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7649 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7761 +#: src/tachyon/tabs/dashboard/initController.ts:1289 +#: src/tachyon/tabs/dashboard/initController.ts:1440 msgid "Selected" msgstr "" @@ -5194,36 +5449,36 @@ 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:11307 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11529 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:67 msgid "Send" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2271 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2296 msgid "Send a Telegram notification if a potential DNS leak is detected." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2206 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2231 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:2258 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2283 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:2219 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2244 msgid "Send a Telegram notification if the Tachyon service is restarted by the watchdog." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:609 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:652 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:2232 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2257 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:2245 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2270 msgid "Send a Telegram notification when proxy subscriptions are successfully updated." msgstr "" @@ -5237,7 +5492,7 @@ msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8554 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8589 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8659 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3284 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3324 msgid "Server Address" msgstr "" @@ -5290,20 +5545,20 @@ msgstr "" msgid "Server Port" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3337 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3377 msgid "Server Private Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3387 msgid "Server Public Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11375 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11597 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:148 msgid "Server unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3285 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3325 msgid "Server VPN IP address and subnet (e.g. 10.0.0.1/24)" msgstr "" @@ -5320,21 +5575,21 @@ msgstr "" msgid "Servers on dashboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10873 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11095 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:439 msgid "Service / Target" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3456 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3475 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12453 -#: src/tachyon/methods/shell/index.ts:433 -#: src/tachyon/methods/shell/index.ts:454 -#: src/tachyon/tabs/diagnostic/initController.ts:607 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3478 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3497 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13137 +#: 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:10659 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10881 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:186 msgid "Service availability check" msgstr "" @@ -5347,22 +5602,22 @@ msgstr "" msgid "Services & Access" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16438 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17136 #: 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:16430 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17128 #: 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:7979 -#: src/tachyon/tabs/dashboard/initController.ts:1884 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8113 +#: src/tachyon/tabs/dashboard/initController.ts:1887 msgid "Services info" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16463 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17161 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:418 msgid "Services restarted. Click to reload page." msgstr "" @@ -5413,17 +5668,17 @@ msgstr "" msgid "Show servers whose names match the expression." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10329 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13268 -#: src/tachyon/tabs/diagnostic/initController.ts:1661 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:178 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10551 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13960 +#: 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:13279 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13286 -#: src/tachyon/tabs/diagnostic/initController.ts:1672 -#: src/tachyon/tabs/diagnostic/initController.ts:1679 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13971 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13978 +#: src/tachyon/tabs/diagnostic/initController.ts:1688 +#: src/tachyon/tabs/diagnostic/initController.ts:1695 msgid "Show sing-box config failed" msgstr "" @@ -5431,42 +5686,46 @@ msgstr "" msgid "Show subscription metadata for this source on the dashboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9087 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9296 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:77 msgid "Sing-box autostart disabled" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9403 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3283 +msgid "sing-box endpoint (userspace, default)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9612 #: 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:9403 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9612 #: 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:9072 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9281 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:62 msgid "Sing-box installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9097 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9306 #: 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:9092 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9301 #: 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:9082 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9291 #: 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:9077 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9286 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:67 msgid "Sing-box version is compatible (newer than 1.12.4)" msgstr "" @@ -5507,6 +5766,10 @@ msgstr "" msgid "Snapshot restored. The service restarts and the page will reload." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3298 +msgid "SNAT LAN sources when leaving through tailscale0 so peers can answer. Required unless every peer accepts routes." +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8542 msgid "Snell Version" msgstr "" @@ -5527,8 +5790,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:14732 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14775 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15430 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15473 #: ../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 @@ -5543,7 +5806,7 @@ msgstr "" msgid "Source Network Interface" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:418 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:440 msgid "Specific Sections (Select sections below)" msgstr "" @@ -5556,62 +5819,67 @@ msgstr "" msgid "Specify different files" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11885 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:291 +msgid "Speed" +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:9681 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890 #: 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:9681 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890 #: 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:9681 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890 #: 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:9681 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890 #: 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:9511 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720 #: 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:9511 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720 #: 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:9511 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720 #: 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:9599 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9808 #: 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:9597 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9806 #: 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:9599 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9808 #: 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:9599 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9808 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:124 msgid "Standalone Zapret2 service is inactive" msgstr "" @@ -5620,26 +5888,26 @@ msgstr "" msgid "Start" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2025 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2050 msgid "Start bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12761 -#: src/tachyon/tabs/diagnostic/initController.ts:1076 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13445 +#: src/tachyon/tabs/diagnostic/initController.ts:1078 msgid "Start sing-box" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10233 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:82 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10445 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:84 msgid "Start Tachyon" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:457 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:479 msgid "Start Time (HH:MM)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12765 -#: src/tachyon/tabs/diagnostic/initController.ts:1080 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13449 +#: src/tachyon/tabs/diagnostic/initController.ts:1082 msgid "Start watchdog" msgstr "" @@ -5648,16 +5916,23 @@ 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:2072 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2097 msgid "Starting…" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8175 +#: 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:10915 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:338 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11137 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11883 +#: ../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/renderSections.ts:670 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:289 msgid "Status" msgstr "" @@ -5665,7 +5940,7 @@ msgstr "" msgid "Stop" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2032 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2057 msgid "Stop bot" msgstr "" @@ -5673,16 +5948,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:10223 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:72 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10435 +#: 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:4963 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11655 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12339 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:307 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2049 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2074 #: src/tachyon/methods/custom/getDashboardSections.ts:1653 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:622 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:147 @@ -5690,15 +5965,25 @@ 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:2086 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2111 msgid "Stopping…" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1891 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1916 msgid "Store auto-detected domains in /etc instead of /tmp to survive reboots." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1593 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11881 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:287 +msgid "Strategy & Parameters" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12097 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:545 +msgid "Strategy benchmark started" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1618 msgid "Strict ECH + DoQ DNS Enforcer" msgstr "" @@ -5720,10 +6005,10 @@ msgstr "" msgid "Subscription info:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3812 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3830 -#: src/tachyon/methods/shell/index.ts:922 -#: src/tachyon/methods/shell/index.ts:942 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3834 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3852 +#: src/tachyon/methods/shell/index.ts:929 +#: src/tachyon/methods/shell/index.ts:949 msgid "Subscription update failed" msgstr "" @@ -5739,7 +6024,7 @@ msgstr "" msgid "Subscription URL settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6773 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6906 #: src/tachyon/tabs/dashboard/initController.ts:336 msgid "Subscriptions updated" msgstr "" @@ -5764,37 +6049,37 @@ msgstr "" msgid "Sweden (se)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12776 -#: src/tachyon/tabs/diagnostic/initController.ts:1091 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13460 +#: src/tachyon/tabs/diagnostic/initController.ts:1093 msgid "Switch DNS to DoH" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7491 -#: src/tachyon/tabs/dashboard/initController.ts:1253 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7625 +#: src/tachyon/tabs/dashboard/initController.ts:1254 msgid "Switch to auto-selection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12780 -#: src/tachyon/tabs/diagnostic/initController.ts:1095 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464 +#: src/tachyon/tabs/diagnostic/initController.ts:1097 msgid "Sync System Time (NTP)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7967 -#: src/tachyon/tabs/dashboard/initController.ts:1871 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8101 +#: src/tachyon/tabs/dashboard/initController.ts:1874 msgid "System info" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11463 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12147 #: src/tachyon/tabs/diagnostic/partials/renderSystemInfo.ts:24 msgid "System information" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9316 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9525 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:69 msgid "Table exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6075 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6208 #: src/tachyon/services/core.service.ts:52 msgid "Tachyon Error" msgstr "" @@ -5815,7 +6100,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:14809 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15507 #: src/tachyon/tabs/monitoring/initController.ts:991 msgid "Tachyon service is stopped. Start the service to display connections." msgstr "" @@ -5829,8 +6114,8 @@ msgstr "" msgid "Tachyon Settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3729 -#: src/tachyon/methods/shell/index.ts:810 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3751 +#: src/tachyon/methods/shell/index.ts:817 msgid "Tachyon update did not complete within the timeout" msgstr "" @@ -5838,56 +6123,61 @@ msgstr "" msgid "Tachyon will not modify your DHCP configuration" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880 #: 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:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880 #: 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:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880 #: 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:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880 #: 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:9496 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: 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:9496 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: 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:9496 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: 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:9582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791 #: 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:9582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791 #: 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:9582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791 #: 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:8170 +#: src/tachyon/tabs/dashboard/initController.ts:1954 +msgid "Tailscale" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3222 msgid "Tailscale auth key" msgstr "" @@ -5896,7 +6186,7 @@ msgstr "" msgid "Tailscale control URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9178 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9387 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:98 msgid "Tailscale endpoint" msgstr "" @@ -5905,35 +6195,48 @@ msgstr "" msgid "Tailscale hostname" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3280 +msgid "Tailscale mode" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:229 msgid "Target" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:393 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:415 msgid "Target Devices (IP / MAC)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:412 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:434 msgid "Target Scope" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11786 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:176 +msgid "Target Service" +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:2144 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2169 msgid "Telegram Bot Token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11543 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12227 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:42 msgid "Telegram Channel" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2333 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2362 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2378 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2384 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:143 +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 msgid "Test Connection" msgstr "" @@ -5970,23 +6273,28 @@ msgstr "" msgid "Test servers whose names match the expression." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2320 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2345 msgid "Test Telegram Connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7518 -#: src/tachyon/tabs/dashboard/initController.ts:1291 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12032 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:465 +msgid "Testing strategy" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7652 +#: src/tachyon/tabs/dashboard/initController.ts:1292 msgid "Testing URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10592 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11183 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10814 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11405 #: 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:2344 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2369 msgid "Testing…" msgstr "" @@ -6004,28 +6312,28 @@ 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:9666 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9875 #: 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:9491 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9700 #: 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:9577 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9786 #: 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:11331 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11553 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:97 msgid "Thinking..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13209 -#: src/tachyon/tabs/diagnostic/initController.ts:1592 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13901 +#: 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 "" @@ -6069,6 +6377,11 @@ msgstr "" msgid "This option requires a value." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8183 +#: src/tachyon/tabs/dashboard/initController.ts:1975 +msgid "This router" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:426 msgid "This will erase all Tachyon settings and restore the factory defaults. The service will restart. This action cannot be undone." msgstr "" @@ -6085,9 +6398,9 @@ msgstr "" msgid "Thursday" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14723 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14772 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14906 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15421 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15470 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15604 #: src/tachyon/tabs/monitoring/initController.ts:883 #: src/tachyon/tabs/monitoring/initController.ts:944 #: src/tachyon/tabs/monitoring/initController.ts:1127 @@ -6106,7 +6419,7 @@ msgstr "" msgid "Time skew tolerance" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5715 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5845 #: src/tachyon/helpers/singBoxVariant.ts:64 msgid "tiny" msgstr "" @@ -6124,13 +6437,13 @@ msgstr "" msgid "TLS SNI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2153 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2178 msgid "Token is required when the bot is enabled" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7520 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7654 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2657 -#: src/tachyon/tabs/dashboard/initController.ts:1293 +#: src/tachyon/tabs/dashboard/initController.ts:1294 msgid "Tolerance" msgstr "" @@ -6142,7 +6455,7 @@ msgstr "" msgid "Total lines:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10793 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11015 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:345 msgid "Total targets" msgstr "" @@ -6156,8 +6469,8 @@ 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:7943 -#: src/tachyon/tabs/dashboard/initController.ts:1845 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8077 +#: src/tachyon/tabs/dashboard/initController.ts:1848 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:133 msgid "Traffic" msgstr "" @@ -6174,8 +6487,8 @@ 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:7955 -#: src/tachyon/tabs/dashboard/initController.ts:1858 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8089 +#: src/tachyon/tabs/dashboard/initController.ts:1861 msgid "Traffic Total" msgstr "" @@ -6187,8 +6500,8 @@ msgstr "" msgid "Traffic will go through the default route (Direct/Default)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17190 -#: src/tachyon/tabs/updates/initController.ts:918 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17892 +#: src/tachyon/tabs/updates/initController.ts:922 msgid "Transient connection error" msgstr "" @@ -6206,11 +6519,11 @@ msgstr "" msgid "Transport host" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3445 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3485 msgid "Transport packet header (H4)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3421 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3461 msgid "Transport packet junk size (S4)" msgstr "" @@ -6222,7 +6535,7 @@ msgstr "" msgid "Transport path must start with /" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11527 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12211 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:25 msgid "Troubleshooting" msgstr "" @@ -6231,6 +6544,11 @@ msgstr "" msgid "Try compatible User-Agent profiles automatically when downloading this subscription" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11884 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:290 +msgid "TTFB" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:984 msgid "TTL must be a positive number" msgstr "" @@ -6251,8 +6569,8 @@ msgstr "" msgid "Turkey (tr)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14717 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14770 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15415 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15468 #: ../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 @@ -6263,7 +6581,7 @@ msgstr "" msgid "UDP (Unprotected DNS)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10558 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10780 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:65 msgid "UDP / QUIC protocols" msgstr "" @@ -6286,20 +6604,20 @@ msgstr "" msgid "Unable to validate the NFQWS2 strategy through the backend parser." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7635 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7769 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3120 -#: src/tachyon/tabs/dashboard/initController.ts:1447 +#: src/tachyon/tabs/dashboard/initController.ts:1448 msgid "Unavailability timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10613 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10795 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10835 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11017 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:135 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:347 msgid "Unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3439 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3479 msgid "Underload packet header (H3)" msgstr "" @@ -6329,17 +6647,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:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880 #: 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:9496 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: 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:9582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:92 msgid "Unexpected Tachyon-managed nfqws2 runtime is running" msgstr "" @@ -6356,18 +6674,19 @@ msgstr "" msgid "United States (us)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5698 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9120 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9701 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9703 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9704 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9712 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9714 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9716 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9719 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16810 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9329 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9910 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9912 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9913 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9914 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9921 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9923 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9925 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9927 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9930 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9931 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17512 #: src/tachyon/helpers/singBoxVariant.ts:37 #: src/tachyon/services/systemInfo.service.ts:10 #: src/tachyon/services/systemInfo.service.ts:12 @@ -6376,16 +6695,17 @@ msgstr "" #: src/tachyon/services/systemInfo.service.ts:21 #: src/tachyon/services/systemInfo.service.ts:23 #: src/tachyon/services/systemInfo.service.ts:25 -#: src/tachyon/services/systemInfo.service.ts:28 -#: src/tachyon/services/systemInfo.service.ts:29 -#: src/tachyon/tabs/updates/initController.ts:417 +#: src/tachyon/services/systemInfo.service.ts:27 +#: src/tachyon/services/systemInfo.service.ts:30 +#: src/tachyon/services/systemInfo.service.ts:31 +#: src/tachyon/tabs/updates/initController.ts:421 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:25 msgid "unknown" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4963 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:328 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2066 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2091 #: src/tachyon/methods/custom/getDashboardSections.ts:1655 msgid "Unknown" msgstr "" @@ -6400,16 +6720,18 @@ msgstr "" msgid "Unknown country" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5037 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12558 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12577 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12644 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13185 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5153 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12102 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13242 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13261 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13328 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13869 #: src/tachyon/api.ts:40 -#: src/tachyon/tabs/diagnostic/initController.ts:729 -#: src/tachyon/tabs/diagnostic/initController.ts:770 -#: src/tachyon/tabs/diagnostic/initController.ts:855 -#: src/tachyon/tabs/diagnostic/initController.ts:1566 +#: 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:550 msgid "Unknown error" msgstr "" @@ -6439,23 +6761,23 @@ 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:17242 -#: src/tachyon/tabs/updates/initController.ts:985 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17944 +#: src/tachyon/tabs/updates/initController.ts:989 msgid "Update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16760 -#: src/tachyon/tabs/updates/initController.ts:351 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17462 +#: src/tachyon/tabs/updates/initController.ts:355 msgid "Update is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17514 -#: src/tachyon/tabs/updates/initController.ts:1323 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18237 +#: 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:17495 -#: src/tachyon/tabs/updates/initController.ts:1302 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18218 +#: src/tachyon/tabs/updates/initController.ts:1331 msgid "Update is available:" msgstr "" @@ -6466,8 +6788,8 @@ 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:12771 -#: src/tachyon/tabs/diagnostic/initController.ts:1086 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13455 +#: src/tachyon/tabs/diagnostic/initController.ts:1088 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:224 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:237 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:238 @@ -6486,13 +6808,13 @@ msgstr "" msgid "Updates & Downloads" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16222 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16920 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:116 msgid "Updating" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12996 -#: src/tachyon/tabs/diagnostic/initController.ts:1347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13680 +#: src/tachyon/tabs/diagnostic/initController.ts:1349 msgid "Updating device routing mode..." msgstr "" @@ -6500,16 +6822,16 @@ msgstr "" msgid "Updating lists..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7945 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7957 -#: src/tachyon/tabs/dashboard/initController.ts:1847 -#: src/tachyon/tabs/dashboard/initController.ts:1860 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8091 +#: 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:14729 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14774 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14918 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15427 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15472 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15616 #: src/tachyon/tabs/monitoring/initController.ts:889 #: src/tachyon/tabs/monitoring/initController.ts:946 #: src/tachyon/tabs/monitoring/initController.ts:1141 @@ -6526,7 +6848,7 @@ msgstr "" msgid "URL must use one of the following protocols:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1831 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1856 msgid "URL to test through the proxy (default: Cloudflare 204)." msgstr "" @@ -6548,15 +6870,15 @@ 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:7541 -#: src/tachyon/tabs/dashboard/initController.ts:1320 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7675 +#: 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:7511 -#: src/tachyon/tabs/dashboard/initController.ts:1279 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7645 +#: src/tachyon/tabs/dashboard/initController.ts:1280 msgid "URLTest details are unavailable" msgstr "" @@ -6565,7 +6887,7 @@ msgstr "" msgid "URLTest settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1870 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1895 msgid "Use 3-tier check intervals: fast (15s), normal (120s), slow (300s) instead of a single interval." msgstr "" @@ -6644,7 +6966,11 @@ msgstr "" msgid "Use sing-box duration format like 1d, 12h or 6h" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9120 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3310 +msgid "Use tailnet exit node for LAN" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9329 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:25 msgid "Used by" msgstr "" @@ -6699,7 +7025,7 @@ msgstr "" msgid "Valid" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1877 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1902 msgid "Validates sing-box config before restart to prevent boot loops on broken configs." msgstr "" @@ -6720,7 +7046,7 @@ msgstr "" msgid "Value must not contain control characters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16426 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17124 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:370 msgid "Verifying router and service readiness..." msgstr "" @@ -6733,17 +7059,17 @@ msgstr "" msgid "Video streaming" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10320 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12621 -#: src/tachyon/tabs/diagnostic/initController.ts:829 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:169 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10542 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13305 +#: 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:12631 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12634 -#: src/tachyon/tabs/diagnostic/initController.ts:839 -#: src/tachyon/tabs/diagnostic/initController.ts:842 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13315 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13318 +#: src/tachyon/tabs/diagnostic/initController.ts:841 +#: src/tachyon/tabs/diagnostic/initController.ts:844 msgid "View logs failed" msgstr "" @@ -6759,17 +7085,17 @@ msgstr "" msgid "vless://, vmess://, ss://, trojan://, socks4/5://, hy2/hysteria2:// links" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16405 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17103 #: 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:9156 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9365 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:70 msgid "WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9255 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9464 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:198 msgid "WAN public IP" msgstr "" @@ -6786,7 +7112,7 @@ msgstr "" msgid "WARP Configuration generated and loaded successfully!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1604 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1629 msgid "WARP Generator Proxy Section" msgstr "" @@ -6802,11 +7128,15 @@ msgstr "" msgid "Watchdog" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1801 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1515 +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 msgid "Watchdog Status" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1583 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1608 msgid "WebRTC Leak Protection" msgstr "" @@ -6834,7 +7164,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:11395 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11617 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:171 msgid "Why Discord fails?" msgstr "" @@ -6855,8 +7185,8 @@ msgstr "" msgid "YACD Secret Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7146 -#: src/tachyon/tabs/dashboard/initController.ts:821 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7280 +#: src/tachyon/tabs/dashboard/initController.ts:822 msgid "Yes" msgstr "" @@ -6864,70 +7194,90 @@ msgstr "" msgid "You can select Output Network Interface, by default autodetect" msgstr "" +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:137 +msgid "YouTube (GoogleVideo 4K stream)" +msgstr "" + +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:139 +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:9486 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695 #: 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:9486 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695 #: 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:9481 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9690 #: 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:9481 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9690 #: 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:9506 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9715 #: 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:9506 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9715 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:104 msgid "Zapret sing-box outbound is not configured" msgstr "" +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:67 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:106 +msgid "Zapret v1 (nfqws)" +msgstr "" + +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:66 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:100 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:101 +msgid "Zapret v2 (nfqws2)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:6093 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:9572 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9781 #: 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:9572 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9781 #: 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:9567 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9776 #: 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:9567 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9776 #: 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:9592 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9801 #: 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:9592 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9801 #: 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 bd1860ef..c73ae39d 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-25 21:32+0300\n" -"PO-Revision-Date: 2026-08-25 21:32+0300\n" +"POT-Creation-Date: 2026-08-26 21:45+0300\n" +"PO-Revision-Date: 2026-08-26 21:45+0300\n" "Last-Translator: Dushnilin\n" "Language-Team: none\n" "Language: ru\n" @@ -47,21 +47,51 @@ msgstr "▶ Старт" msgid "⚙ Advanced Settings" msgstr "⚙ Настройки" +msgid "⚠️ Benchmark completed. No working bypass found for this target." +msgstr "⚠️ Бенчмарк завершен. Не найдено рабочих стратегий для данной цели." + msgid "⚠️ If all Bootstrap 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 "⚠️ Если все Bootstrap DNS завершатся с ошибкой 3 раза, запросы будут отправлены в DNS вашего провайдера в открытом виде. Используйте только в крайнем случае для предотвращения полной потери интернета." 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 "⚠️ Если все основные DNS завершатся с ошибкой 3 раза, запросы будут отправлены в DNS вашего провайдера в открытом виде. Используйте только в крайнем случае для предотвращения полной потери интернета." +msgid "⚡ DPI Strategy Fuzzer" +msgstr "⚡ DPI Strategy Fuzzer" + +msgid "⚡ Strategy Fuzzer & Auto-Tuner" +msgstr "⚡ Подборщик стратегий и авто-тюнер" + +msgid "✅ Benchmark completed! Optimal strategy identified." +msgstr "✅ Бенчмарк завершен! Оптимальная стратегия определена." + +msgid "✔ Online" +msgstr "" + msgid "✔ Running" msgstr "✔ Работает" +msgid "✘ Offline" +msgstr "" + msgid "✘ Stopped" msgstr "✘ Остановлено" +msgid "🏆 Apply Best Strategy" +msgstr "🏆 Применить лучшую стратегию" + msgid "🔑 Generate" msgstr "🔑 Сгенерировать" +msgid "🚀 Run Benchmark Again" +msgstr "🚀 Запустить бенчмарк снова" + +msgid "🚀 Start Benchmark" +msgstr "🚀 Начать бенчмарк" + +msgid "🛑 Stop Benchmark" +msgstr "🛑 Остановить бенчмарк" + msgid "Accept external proxy connections and route them with sing-box." msgstr "Принимать внешние прокси-подключения и маршрутизировать их через sing-box." @@ -224,6 +254,9 @@ msgstr "Все проверки пройдены — бот должен раб msgid "All devices" msgstr "Все устройства" +msgid "All Engines (Full Matrix)" +msgstr "Все движки (Полная матрица)" + msgid "All except selected" msgstr "Все кроме выбранных" @@ -305,12 +338,21 @@ msgstr "Другое действие уже выполняется" msgid "API Key for OpenAI (sk-...) or DeepSeek (optional for Ollama / LM Studio)" msgstr "API-ключ для OpenAI (sk-...) или DeepSeek (опционально для Ollama / LM Studio)" +msgid "Applied" +msgstr "Применено" + +msgid "Apply" +msgstr "Применить" + msgid "Apply rules of this section only to selected protocols." msgstr "Применять правила этой секции только к выбранным протоколам." msgid "Apply section rules only to the specified local IP addresses" msgstr "Применять правила секции только к указанным локальным IP-адресам" +msgid "Apply Strategy To" +msgstr "Применить стратегию к" + msgid "Applying fix" msgstr "Применение исправления" @@ -350,6 +392,9 @@ msgstr "Автоопределённые домены" msgid "Auto-detects blocked domains from logs and adds them to the first section where they work via proxy." msgstr "Автоматически определяет заблокированные домены из логов и добавляет их в первую секцию, где они работают через прокси." +msgid "Auto-failover of proxy sections" +msgstr "Авто-failover прокси-секций" + msgid "Auto-generate HWID" msgstr "Авто-генерация HWID" @@ -359,6 +404,9 @@ msgstr "Автолечение сетевого стека" msgid "Auto-update Hosts Lists" msgstr "Автообновление списков Hosts" +msgid "Automated DPI Strategy Fuzzer & Auto-Tuner" +msgstr "Автоматический подборщик и оптимизатор стратегий DPI" + msgid "Automatic component update checks" msgstr "Автоматическая проверка обновлений компонентов" @@ -407,6 +455,15 @@ msgstr "Начало интервала расписания (например, msgid "Belarus (by)" msgstr "Беларусь (by)" +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" @@ -470,6 +527,9 @@ msgstr "Встроенные наборы правил" msgid "By flag emoji from name" msgstr "По эмодзи флага из имени" +msgid "ByeDPI (ciadpi)" +msgstr "ByeDPI (ciadpi)" + msgid "ByeDPI listen address and port are assigned by Tachyon and must not be set in the strategy." msgstr "Адрес и порт прослушивания ByeDPI назначаются Tachyon и не должны задаваться в стратегии." @@ -827,6 +887,15 @@ msgstr "Пользовательский URL эндпоинта OpenAI-совм msgid "Custom outbound configurations in JSON format" msgstr "Пользовательские конфигурации outbound в формате JSON" +msgid "Custom Target URL..." +msgstr "Свой URL для теста..." + +msgid "Daily Quota" +msgstr "Дневная квота" + +msgid "Daily time quota (minutes)" +msgstr "Дневной лимит времени (минуты)" + msgid "Dashboard" msgstr "Панель управления" @@ -836,33 +905,6 @@ msgstr "Дашборд сейчас недоступен" msgid "Days of Week" msgstr "Дни недели" -msgid "Auto-failover of proxy sections" -msgstr "Авто-failover прокси-секций" - -msgid "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect." -msgstr "Watchdog проверяет каждую Connection-секцию; если активная падает несколько проверок подряд, трафик переключается на живую резервную, а Telegram получает уведомление. Нужен reload конфигурации." - -msgid "Failover failure threshold" -msgstr "Порог срабатывания failover" - -msgid "Number of consecutive failed probes before switching sections" -msgstr "Сколько неудачных проверок подряд до переключения секции" - -msgid "Daily time quota (minutes)" -msgstr "Дневной лимит времени (минуты)" - -msgid "Limit device network usage per day. When the quota is exhausted, the device is blocked until midnight. 0 disables the limit." -msgstr "Ограничьте использование сети устройством за день. Когда квота исчерпана, устройство блокируется до полуночи. 0 — без лимита." - -msgid "Enter a whole number of minutes between 0 and 1440" -msgstr "Введите целое число минут от 0 до 1440" - -msgid "Daily Quota" -msgstr "Дневная квота" - -msgid "min/day" -msgstr "мин/день" - msgid "Default (auto)" msgstr "По умолчанию (авто)" @@ -959,6 +1001,9 @@ 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 "Display name" msgstr "Отображаемое имя" @@ -1142,6 +1187,9 @@ msgstr "Загружено" msgid "Downloading and applying rule sets and lists..." msgstr "Загрузка и применение наборов правил и списков..." +msgid "DPI Engine" +msgstr "Движок DPI" + msgid "Drag rows to change priority. The rule at the top is checked first." msgstr "Перетащите строки для изменения приоритета. Правило вверху проверяется первым." @@ -1274,6 +1322,9 @@ msgstr "Конец интервала расписания (например, 08 msgid "End Time (HH:MM)" msgstr "Время окончания (ЧЧ:ММ)" +msgid "Engine" +msgstr "" + msgid "Enter a complete sing-box inbound object" msgstr "Введите полный JSON объект inbound для sing-box" @@ -1289,6 +1340,9 @@ msgstr "Введите домен или IP для проверки (напр. e msgid "Enter a level name" msgstr "Введите имя уровня" +msgid "Enter a whole number of minutes between 0 and 1440" +msgstr "Введите целое число минут от 0 до 1440" + msgid "Enter HWID" msgstr "Введите HWID" @@ -1367,6 +1421,9 @@ msgstr "Внешние файлы конфигурации nfqws2 обходят msgid "Failed to apply fix" msgstr "Не удалось применить исправление" +msgid "Failed to apply strategy" +msgstr "Не удалось применить стратегию" + msgid "Failed to close connection" msgstr "Не удалось закрыть подключение" @@ -1391,6 +1448,12 @@ msgstr "Не удалось создать отчёт об ошибке" msgid "Failed to generate WARP config:" msgstr "Не удалось сгенерировать конфигурацию WARP:" +msgid "Failed to get fuzzer status" +msgstr "" + +msgid "Failed to get fuzzer strategies" +msgstr "" + msgid "Failed to load snapshots" msgstr "Не удалось загрузить снапшоты" @@ -1436,9 +1499,15 @@ msgstr "Ошибка сохранения настроек Smart Detect" msgid "Failed to save snapshot" msgstr "Не удалось сохранить снапшот" +msgid "Failed to start benchmark" +msgstr "Не удалось запустить бенчмарк" + msgid "Failed to start bot" msgstr "Не удалось запустить бота" +msgid "Failed to start fuzzer" +msgstr "" + msgid "Failed to start service check." msgstr "Не удалось запустить проверку сервисов." @@ -1448,6 +1517,9 @@ msgstr "Не удалось запустить watchdog" msgid "Failed to stop bot" msgstr "Не удалось остановить бота" +msgid "Failed to stop fuzzer" +msgstr "" + msgid "Failed to stop watchdog" msgstr "Не удалось остановить watchdog" @@ -1460,6 +1532,9 @@ msgstr "Не удалось обновить устройство" msgid "Failed to update subscriptions" msgstr "Не удалось обновить подписки" +msgid "Failover failure threshold" +msgstr "Порог срабатывания failover" + msgid "FakeIP and control checks use different public IPs" msgstr "FakeIP и контрольная проверка используют разные публичные IP" @@ -1604,6 +1679,9 @@ msgstr "Глобальная проверка" msgid "Global check failed" msgstr "Не удалось выполнить глобальную проверку" +msgid "Global Default" +msgstr "" + msgid "gRPC service" msgstr "Сервис gRPC" @@ -1811,12 +1889,18 @@ 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 "Установить" msgid "Install another build:" msgstr "Установить другую сборку:" +msgid "Installed" +msgstr "Установлен" + msgid "Installed build → Available build" msgstr "Установленная сборка → Доступная сборка" @@ -2186,6 +2270,9 @@ msgstr "Оставьте пустым, чтобы пропустить этот msgid "Level name" msgstr "Имя уровня" +msgid "Limit device network usage per day. When the quota is exhausted, the device is blocked until midnight. 0 disables the limit." +msgstr "Ограничьте использование сети устройством за день. Когда квота исчерпана, устройство блокируется до полуночи. 0 — без лимита." + msgid "List must be an HTTP(S) URL or a local .lst path" msgstr "Список должен быть HTTP(S) URL или локальным путём .lst" @@ -2273,6 +2360,9 @@ msgstr "ID аккаунта MASQUE" msgid "MASQUE Private Key" msgstr "Приватный ключ MASQUE" +msgid "Masquerade LAN traffic into tailnet" +msgstr "Маскарадинг LAN-трафика в тейлнет" + msgid "Match destination IPs or subnets" msgstr "Сопоставлять IP-адреса или подсети назначения" @@ -2306,6 +2396,9 @@ msgstr "Метод" msgid "Metrics Retention (hours)" msgstr "Хранение метрик (часы)" +msgid "min/day" +msgstr "мин/день" + msgid "Minimum latency difference in milliseconds that triggers switching to a faster server." msgstr "Минимальная разница задержки в миллисекундах, при которой происходит переключение на более быстрый сервер." @@ -2369,6 +2462,9 @@ msgstr "Имя в списке уровней приоритета" msgid "Native internet restored. Tachyon stopped." msgstr "Обычный интернет восстановлен. Tachyon остановлен." +msgid "Native tailscaled (tailnet reachable from LAN without client)" +msgstr "Нативный tailscaled (тейлнет доступен из LAN без клиента)" + msgid "Netherlands (nl)" msgstr "Нидерланды (nl)" @@ -2420,6 +2516,9 @@ msgstr "Активные устройства в локальной сети н msgid "No active routing sections found." msgstr "Активные секции маршрутизации не найдены." +msgid "No benchmark results yet. Select engine and click \"Start Benchmark\"." +msgstr "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк»." + msgid "No check targets found in the configuration." msgstr "Цели для проверки не найдены в конфигурации." @@ -2537,6 +2636,9 @@ msgstr "Уведомлять об обновлениях подписок" msgid "Number of consecutive failed checks required before switching DNS servers." msgstr "Количество последовательных неудачных проверок до переключения DNS-серверов." +msgid "Number of consecutive failed probes before switching sections" +msgstr "Сколько неудачных проверок подряд до переключения секции" + msgid "Number of consecutive failures before restarting (default 3)." msgstr "Количество последовательных ошибок до перезапуска (по умолчанию 3)." @@ -2642,6 +2744,9 @@ msgstr "Опциональные значения должны быть прис msgid "Or paste hosts file content:" msgstr "Или вставьте содержимое файла hosts:" +msgid "Other peers" +msgstr "" + msgid "outbounds must be a non-empty array of strings" msgstr "outbounds должен быть непустым массивом строк" @@ -2828,6 +2933,9 @@ msgstr "Защита" msgid "Protocol" msgstr "Протокол" +msgid "Provider Global Default" +msgstr "Глобальные настройки провайдера" + msgid "Proxy" msgstr "Прокси" @@ -3059,6 +3167,9 @@ msgstr "Возвращать NXDOMAIN для заблокированных до msgid "Route" msgstr "Маршрут" +msgid "Route all non-local LAN traffic through the tailnet exit node instead of the proxy engines." +msgstr "Направлять весь не-локальный LAN-трафик через exit-node тейлнета вместо прокси-движков." + msgid "Route bot API requests through this section. Leave empty to use the default mixed proxy." msgstr "Маршрутизировать запросы API бота через эту секцию. Оставьте пустым для использования смешанного прокси по умолчанию." @@ -3101,6 +3212,9 @@ msgstr "Наборы правил" msgid "Rule Sets (.srs / .json)" msgstr "Наборы правил (.srs / .json)" +msgid "Rule:" +msgstr "Правило:" + msgid "Rules" msgstr "Правила" @@ -3137,9 +3251,15 @@ 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 "Сб" @@ -3170,6 +3290,9 @@ msgstr "Расписание" msgid "Schedule Rule" msgstr "Правило расписания" +msgid "Score" +msgstr "Баллы" + msgid "Search" msgstr "Поиск" @@ -3464,6 +3587,9 @@ msgstr "Показывать метаданные подписки для это msgid "Sing-box autostart disabled" msgstr "Автостарт sing-box отключен" +msgid "sing-box endpoint (userspace, default)" +msgstr "Endpoint в sing-box (userspace, по умолчанию)" + msgid "Sing-box FakeIP DNS does not work" msgstr "FakeIP DNS sing-box не работает" @@ -3512,6 +3638,9 @@ msgstr "Имя снапшота" msgid "Snapshot restored. The service restarts and the page will reload." msgstr "Снапшот восстановлен. Сервис перезапускается, страница будет перезагружена." +msgid "SNAT LAN sources when leaving through tailscale0 so peers can answer. Required unless every peer accepts routes." +msgstr "Подменять LAN-адреса при выходе через tailscale0, чтобы пиры могли отвечать. Нужно, если не все пиры принимают маршруты." + msgid "Snell Version" msgstr "Версия Snell" @@ -3545,6 +3674,9 @@ msgstr "Укажите путь к файлу" msgid "Specify different files" msgstr "Укажите разные файлы" +msgid "Speed" +msgstr "Скорость" + msgid "SSH" msgstr "SSH" @@ -3605,6 +3737,9 @@ msgstr "Сначала запустите Watchdog" msgid "Starting…" msgstr "Запуск…" +msgid "State" +msgstr "" + msgid "Status" msgstr "Статус" @@ -3629,6 +3764,12 @@ msgstr "Остановка…" msgid "Store auto-detected domains in /etc instead of /tmp to survive reboots." msgstr "Хранить автоопределённые домены в /etc вместо /tmp для сохранения после перезагрузки." +msgid "Strategy & Parameters" +msgstr "Стратегия и параметры" + +msgid "Strategy benchmark started" +msgstr "Бенчмарк стратегий запущен" + msgid "Strict ECH + DoQ DNS Enforcer" msgstr "Строгий ECH + DoQ DNS Enforcer" @@ -3752,32 +3893,11 @@ msgstr "NFQWS2 Tachyon не запущен" msgid "Tachyon-managed nfqws2 runtime is ready" msgstr "NFQWS2 Tachyon готов" -msgid "Tailscale auth key" -msgid "Tailscale mode" -msgstr "Режим Tailscale" - -msgid "sing-box endpoint (userspace, default)" -msgstr "Endpoint в sing-box (userspace, по умолчанию)" - -msgid "Native tailscaled (tailnet reachable from LAN without client)" -msgstr "Нативный tailscaled (тейлнет доступен из LAN без клиента)" - -msgid "Masquerade LAN traffic into tailnet" -msgstr "Маскарадинг LAN-трафика в тейлнет" - -msgid "SNAT LAN sources when leaving through tailscale0 so peers can answer. Required unless every peer accepts routes." -msgstr "Подменять LAN-адреса при выходе через tailscale0, чтобы пиры могли отвечать. Нужно, если не все пиры принимают маршруты." - -msgid "Use tailnet exit node for LAN" -msgstr "Использовать exit-node тейлнета для LAN" - -msgid "Route all non-local LAN traffic through the tailnet exit node instead of the proxy engines." -msgstr "Направлять весь не-локальный LAN-трафик через exit-node тейлнета вместо прокси-движков." - msgid "Tailscale" msgstr "Tailscale" -msgstr "Ключ аутентификации Tailscale" +msgid "Tailscale auth key" +msgstr "" msgid "Tailscale control URL" msgstr "Control URL Tailscale" @@ -3788,6 +3908,9 @@ msgstr "Tailscale endpoint" msgid "Tailscale hostname" msgstr "Имя хоста Tailscale" +msgid "Tailscale mode" +msgstr "Режим Tailscale" + msgid "Target" msgstr "Цель" @@ -3797,6 +3920,9 @@ msgstr "Целевые устройства (IP / MAC)" msgid "Target Scope" msgstr "Область действия" +msgid "Target Service" +msgstr "Целевой сервис" + msgid "Telegram Bot" msgstr "Telegram Бот" @@ -3806,6 +3932,9 @@ msgstr "Токен Telegram-бота" msgid "Telegram Channel" msgstr "Telegram канал" +msgid "Telegram Web" +msgstr "Telegram Web" + msgid "Test Connection" msgstr "Проверить подключение" @@ -3833,6 +3962,9 @@ msgstr "Тестировать серверы, чьи имена соответ msgid "Test Telegram Connection" msgstr "Проверить подключение к Telegram" +msgid "Testing strategy" +msgstr "Тестирование стратегии" + msgid "Testing URL" msgstr "URL проверки" @@ -3890,6 +4022,9 @@ msgstr "Этот флаг не принимает значение." msgid "This option requires a value." msgstr "Этот параметр требует значение." +msgid "This router" +msgstr "" + msgid "This will erase all Tachyon settings and restore the factory defaults. The service will restart. This action cannot be undone." msgstr "Все настройки Tachyon будут удалены и восстановлены заводские значения. Сервис будет перезапущен. Это действие нельзя отменить." @@ -3998,6 +4133,9 @@ msgstr "Устранение неполадок" msgid "Try compatible User-Agent profiles automatically when downloading this subscription" msgstr "Пробовать совместимые профили User-Agent автоматически при загрузке этой подписки" +msgid "TTFB" +msgstr "TTFB" + msgid "TTL must be a positive number" msgstr "TTL должен быть положительным числом" @@ -4232,6 +4370,9 @@ msgstr "Используйте формат длительности sing-box, msgid "Use sing-box duration format like 1d, 12h or 6h" msgstr "Используйте формат длительности sing-box, например 1d, 12h или 6h" +msgid "Use tailnet exit node for LAN" +msgstr "Использовать exit-node тейлнета для LAN" + msgid "Used by" msgstr "Используется" @@ -4316,6 +4457,9 @@ msgstr "Секция прокси WARP" msgid "Watchdog" msgstr "Сторожевой таймер" +msgid "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect." +msgstr "Watchdog проверяет каждую Connection-секцию; если активная падает несколько проверок подряд, трафик переключается на живую резервную, а Telegram получает уведомление. Нужен reload конфигурации." + msgid "Watchdog Status" msgstr "Статус Watchdog" @@ -4361,6 +4505,12 @@ 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 по правилам." @@ -4382,6 +4532,12 @@ msgstr "sing-box outbound для Zapret настроен" msgid "Zapret sing-box outbound is not configured" msgstr "sing-box outbound для Zapret не настроен" +msgid "Zapret v1 (nfqws)" +msgstr "Zapret v1 (nfqws)" + +msgid "Zapret v2 (nfqws2)" +msgstr "Zapret v2 (nfqws2)" + msgid "Zapret2 hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS2 strategies." msgstr "Шаблоны hostlist Zapret2 не поддерживаются здесь, потому что Tachyon не расширяет их для стратегий NFQWS2 по правилам." @@ -4690,3 +4846,6 @@ msgstr "Предотвращать множественные вызовы reloa msgid "Restoring native direct internet..." msgstr "Восстановление прямого интернета..." + +msgid "Find optimal DPI bypass strategies with isolated live probing" +msgstr "Автоматический подбор оптимальных параметров обхода DPI в изолированном сэндбоксе" diff --git a/fe-app-tachyon/src/tachyon/methods/shell/index.ts b/fe-app-tachyon/src/tachyon/methods/shell/index.ts index 2e92f54a..770144f0 100644 --- a/fe-app-tachyon/src/tachyon/methods/shell/index.ts +++ b/fe-app-tachyon/src/tachyon/methods/shell/index.ts @@ -1031,4 +1031,160 @@ export const TachyonShellMethods = { success: (response.code ?? 1) === 0, } as Tachyon.MethodResponse; }, + + startFuzzer: async ( + engine: Tachyon.FuzzerEngine = 'zapret2', + target: Tachyon.FuzzerTarget = 'youtube', + customUrl?: string, + ruleSection?: string, + ): Promise> => { + const response = await executeShellCommand({ + command: '/usr/bin/tachyon', + args: [ + Tachyon.AvailableMethods.FUZZER_START, + engine, + target, + customUrl || '', + ruleSection || '', + ], + timeout: 10000, + }); + let parsed: Tachyon.FuzzerStartResponse | 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: parsed?.error || response.stderr || _('Failed to start fuzzer'), + }; + }, + + getFuzzerStatus: async (): Promise< + Tachyon.MethodResponse + > => { + const response = await executeShellCommand({ + command: '/usr/bin/tachyon', + args: [Tachyon.AvailableMethods.FUZZER_STATUS], + timeout: 8000, + }); + let parsed: Tachyon.FuzzerState | null = null; + try { + parsed = JSON.parse(response.stdout?.trim() || '{}'); + } catch { + parsed = null; + } + if ((response.code ?? 1) === 0 && parsed) { + return { + success: true, + data: parsed, + }; + } + return { + success: false, + error: response.stderr || _('Failed to get fuzzer status'), + }; + }, + + stopFuzzer: async (): Promise> => { + const response = await executeShellCommand({ + command: '/usr/bin/tachyon', + args: [Tachyon.AvailableMethods.FUZZER_STOP], + timeout: 8000, + }); + if ((response.code ?? 1) === 0) { + return { success: true, data: undefined }; + } + return { + success: false, + error: response.stderr || _('Failed to stop fuzzer'), + }; + }, + + applyFuzzerStrategy: async ( + engine: string, + args: string, + targetRuleOrGlobal?: string, + ): Promise> => { + const response = await executeShellCommand({ + command: '/usr/bin/tachyon', + args: [ + Tachyon.AvailableMethods.FUZZER_APPLY, + engine, + args, + targetRuleOrGlobal || 'global', + ], + timeout: 10000, + }); + let parsed: Tachyon.FuzzerApplyResponse | 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: parsed?.error || response.stderr || _('Failed to apply strategy'), + }; + }, + + getFuzzerStrategies: async (): Promise< + Tachyon.MethodResponse<{ + available_engines?: { + zapret2: boolean; + zapret: boolean; + byedpi: boolean; + }; + zapret2: Tachyon.FuzzerStrategyDefinition[]; + zapret: Tachyon.FuzzerStrategyDefinition[]; + byedpi: Tachyon.FuzzerStrategyDefinition[]; + }> + > => { + type FuzzerStrategiesData = { + available_engines?: { + zapret2: boolean; + zapret: boolean; + byedpi: boolean; + }; + zapret2: Tachyon.FuzzerStrategyDefinition[]; + zapret: Tachyon.FuzzerStrategyDefinition[]; + byedpi: Tachyon.FuzzerStrategyDefinition[]; + }; + const response = await executeShellCommand({ + command: '/usr/bin/tachyon', + args: [Tachyon.AvailableMethods.FUZZER_STRATEGIES], + timeout: 8000, + }); + let parsed: FuzzerStrategiesData | null = null; + try { + parsed = JSON.parse( + response.stdout?.trim() || '{}', + ) as FuzzerStrategiesData; + } catch { + parsed = null; + } + if ((response.code ?? 1) === 0 && parsed) { + return { + success: true, + data: parsed, + }; + } + return { + success: false, + error: response.stderr || _('Failed to get fuzzer strategies'), + }; + }, }; 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 new file mode 100644 index 00000000..8d06fea7 --- /dev/null +++ b/fe-app-tachyon/src/tachyon/methods/shell/tests/fuzzerAction.test.ts @@ -0,0 +1,114 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +const mocks = vi.hoisted(() => ({ + executeShellCommand: vi.fn(), +})); + +vi.mock('../../../../helpers', () => ({ + executeShellCommand: mocks.executeShellCommand, +})); + +import { TachyonShellMethods } from '../index'; + +describe('TachyonShellMethods Fuzzer Actions', () => { + beforeEach(() => { + mocks.executeShellCommand.mockReset(); + }); + + afterEach(() => { + vi.clearAllMocks(); + }); + + it('starts fuzzer with specified engine and target', async () => { + mocks.executeShellCommand.mockResolvedValueOnce({ + stdout: JSON.stringify({ + success: true, + job_id: 'fuzz_12345', + engine: 'zapret2', + target: 'youtube', + }), + stderr: '', + code: 0, + }); + + const res = await TachyonShellMethods.startFuzzer('zapret2', 'youtube'); + expect(res.success).toBe(true); + if (res.success) { + expect(res.data.job_id).toBe('fuzz_12345'); + } + expect(mocks.executeShellCommand).toHaveBeenCalledWith( + expect.objectContaining({ + args: ['fuzzer_start', 'zapret2', 'youtube', '', ''], + }), + ); + }); + + it('gets fuzzer status and results', async () => { + mocks.executeShellCommand.mockResolvedValueOnce({ + stdout: JSON.stringify({ + running: false, + job_id: 'fuzz_12345', + engine: 'zapret2', + target: 'youtube', + target_url: 'https://www.youtube.com', + progress_pct: 100, + results: [ + { + id: 'z2_yt_multisplit_midsld', + name: 'YouTube 4K Multisplit + MidSLD', + engine: 'zapret2', + args: '--dpi-desync=multisplit', + success: true, + http_code: 200, + ttfb_ms: 120, + speed_kbps: 4500, + score: 180, + badge: '🏆 Best Match', + }, + ], + best_strategy: { + id: 'z2_yt_multisplit_midsld', + score: 180, + }, + }), + stderr: '', + code: 0, + }); + + const res = await TachyonShellMethods.getFuzzerStatus(); + expect(res.success).toBe(true); + if (res.success) { + expect(res.data.running).toBe(false); + expect(res.data.results).toHaveLength(1); + expect(res.data.results[0].badge).toBe('🏆 Best Match'); + } + }); + + it('applies winning strategy', async () => { + mocks.executeShellCommand.mockResolvedValueOnce({ + stdout: JSON.stringify({ + success: true, + engine: 'zapret2', + applied_to: 'global', + args: '--dpi-desync=multisplit', + }), + stderr: '', + code: 0, + }); + + const res = await TachyonShellMethods.applyFuzzerStrategy( + 'zapret2', + '--dpi-desync=multisplit', + 'global', + ); + expect(res.success).toBe(true); + if (res.success) { + expect(res.data.applied_to).toBe('global'); + } + expect(mocks.executeShellCommand).toHaveBeenCalledWith( + expect.objectContaining({ + args: ['fuzzer_apply', 'zapret2', '--dpi-desync=multisplit', 'global'], + }), + ); + }); +}); diff --git a/fe-app-tachyon/src/tachyon/tabs/diagnostic/initController.ts b/fe-app-tachyon/src/tachyon/tabs/diagnostic/initController.ts index 85275b2f..e2afee69 100644 --- a/fe-app-tachyon/src/tachyon/tabs/diagnostic/initController.ts +++ b/fe-app-tachyon/src/tachyon/tabs/diagnostic/initController.ts @@ -40,8 +40,10 @@ import { renderSystemInfo, renderServiceCheckModal, renderAiChatModal, + renderStrategyFuzzerModal, } from './partials'; import { TachyonShellMethods } from '../../methods'; +import { getConfigSections } from '../../methods/custom/getConfigSections'; import { fetchServicesInfo } from '../../fetchers/fetchServicesInfo'; import { normalizeCompiledVersion } from '../../../helpers/normalizeCompiledVersion'; import { renderModal, renderButton } from '../../../partials'; @@ -1582,6 +1584,20 @@ function handleOpenAiChat() { renderAiChatModal(); } +function handleOpenStrategyFuzzer() { + getConfigSections() + .then((sections) => { + const ruleNames = sections + .filter((s) => s['.type'] === 'section' || s['.type'] === 'rule') + .map((s) => s.name || s['.name']) + .filter((n): n is string => Boolean(n)); + renderStrategyFuzzerModal(ruleNames); + }) + .catch(() => { + renderStrategyFuzzerModal([]); + }); +} + function handleRestoreNativeInternet() { ui.showModal( _('Restore Native Internet'), @@ -1870,6 +1886,12 @@ function renderDiagnosticAvailableActionsWidget() { onClick: handleOpenAiChat, disabled: false, }, + strategyFuzzer: { + loading: false, + visible: true, + onClick: handleOpenStrategyFuzzer, + disabled: false, + }, checkServices: { visible: true, loading: diagnosticsActions.checkServices.loading, diff --git a/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/index.ts b/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/index.ts index aadbbd2c..6a6d1d65 100644 --- a/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/index.ts +++ b/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/index.ts @@ -3,4 +3,5 @@ export * from './renderCheckSection'; export * from './renderRunAction'; export * from './renderServiceCheckModal'; export * from './renderAiChatModal'; +export * from './renderStrategyFuzzerModal'; export * from './renderSystemInfo'; diff --git a/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts b/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts index 0720e4b0..3aae7cc0 100644 --- a/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts +++ b/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts @@ -29,6 +29,7 @@ interface IRenderAvailableActionsProps { doctor: ActionProps; aiDoctor: ActionProps; aiChat?: ActionProps; + strategyFuzzer?: ActionProps; restoreNativeInternet?: ActionProps; viewLogs: ActionProps; showSingBoxConfig: ActionProps; @@ -46,6 +47,7 @@ export function renderAvailableActions({ doctor, aiDoctor, aiChat, + strategyFuzzer, restoreNativeInternet, viewLogs, showSingBoxConfig, @@ -152,6 +154,16 @@ export function renderAvailableActions({ disabled: aiChat!.disabled, }), ]), + ...insertIf(!!strategyFuzzer?.visible, [ + renderButton({ + classNames: ['cbi-button-action'], + onClick: strategyFuzzer!.onClick, + icon: renderCirclePlayIcon24, + text: _('⚡ DPI Strategy Fuzzer'), + loading: strategyFuzzer!.loading, + disabled: strategyFuzzer!.disabled, + }), + ]), ...insertIf(checkServices.visible, [ renderButton({ classNames: ['cbi-button-action'], diff --git a/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts b/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts new file mode 100644 index 00000000..363b9aaf --- /dev/null +++ b/fe-app-tachyon/src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts @@ -0,0 +1,595 @@ +import { TachyonShellMethods } from '../../../methods'; +import { renderButton } from '../../../../partials'; +import { showToast } from '../../../../helpers/showToast'; +import { Tachyon } from '../../../types'; + +export function renderStrategyFuzzerModal(ruleNames: string[] = []) { + let pollingInterval: ReturnType | null = null; + let isPolling = false; + + // Modal State + let selectedEngine: Tachyon.FuzzerEngine = 'zapret2'; + let selectedTarget: Tachyon.FuzzerTarget = 'youtube'; + let customUrl = ''; + let selectedRuleSection = ''; + let isRunning = false; + let currentState: Tachyon.FuzzerState | null = null; + + 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;', + }); + + // ── Header & Description ────────────────────────────────────────────────── + const headerEl = 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;', + }, + [ + 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.', + ), + ), + ], + ); + + // ── Configuration Controls ──────────────────────────────────────────────── + const controlsGrid = E('div', { + style: + 'display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; align-items: end;', + }); + + // 1. Engine Select + const engineSelect = E( + 'select', + { class: 'cbi-input-select', style: 'width: 100%;' }, + [ + E( + 'option', + { value: 'zapret2', selected: true }, + _('Zapret v2 (nfqws2)'), + ), + E('option', { value: 'zapret' }, _('Zapret v1 (nfqws)')), + E('option', { value: 'byedpi' }, _('ByeDPI (ciadpi)')), + E('option', { value: 'all' }, _('All Engines (Full Matrix)')), + ], + ); + engineSelect.addEventListener('change', () => { + selectedEngine = (engineSelect as HTMLSelectElement) + .value as Tachyon.FuzzerEngine; + }); + + const engineGroup = E( + 'div', + { style: 'display: flex; flex-direction: column; gap: 4px;' }, + [ + E( + 'label', + { style: 'font-size: 12px; font-weight: 600;' }, + _('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', + { class: 'cbi-input-select', style: 'width: 100%;' }, + [ + E( + 'option', + { value: 'youtube', selected: true }, + _('YouTube (GoogleVideo 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...')), + ], + ); + + const customUrlInput = E('input', { + type: 'text', + class: 'cbi-input-text', + placeholder: 'https://example.com', + style: 'width: 100%; display: none; margin-top: 4px;', + }); + + 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.addEventListener('input', () => { + customUrl = (customUrlInput as HTMLInputElement).value.trim(); + }); + + const targetGroup = E( + 'div', + { style: 'display: flex; flex-direction: column; gap: 4px;' }, + [ + E( + 'label', + { style: 'font-size: 12px; font-weight: 600;' }, + _('Target Service'), + ), + 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, + ], + ); + + controlsGrid.append(engineGroup, targetGroup, ruleGroup); + + // ── Progress & Status 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));', + }, + [ + E( + 'div', + { + style: + 'display: flex; justify-content: space-between; font-size: 12px; font-weight: 600;', + }, + [ + E( + 'span', + { id: 'tachyon-fuzzer-status-text' }, + _('Benchmarking in progress...'), + ), + E('span', { id: 'tachyon-fuzzer-progress-pct' }, '0%'), + ], + ), + E( + 'div', + { + style: + 'width: 100%; height: 8px; background: rgba(255,255,255,0.1); border-radius: 4px; 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;', + }), + ], + ), + E( + 'div', + { + id: 'tachyon-fuzzer-current-strategy', + style: 'font-size: 11px; opacity: 0.7; font-family: monospace;', + }, + '', + ), + ], + ); + + // ── 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;', + }); + + const tableEl = E( + 'table', + { + class: 'table', + style: + 'width: 100%; margin: 0; font-size: 12px; text-align: left; border-collapse: collapse;', + }, + [ + E( + 'thead', + { + style: + 'background: var(--background-color-secondary, rgba(0,0,0,0.3)); 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;' }, + _('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'), + ), + ]), + ], + ), + E('tbody', { id: 'tachyon-fuzzer-results-tbody' }, [ + E( + 'tr', + {}, + E( + 'td', + { + colSpan: 8, + style: 'padding: 24px; text-align: center; opacity: 0.6;', + }, + _( + 'No benchmark results yet. Select engine and click "Start Benchmark".', + ), + ), + ), + ]), + ], + ); + + resultsContainer.appendChild(tableEl); + + // ── Action Buttons & Footer ─────────────────────────────────────────────── + 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));', + }, + [ + E('div', { style: 'display: flex; gap: 8px;' }, [startBtn]), + E('div', { style: 'display: flex; gap: 8px;' }, [applyBestBtn, closeBtn]), + ], + ); + + // ── Render Helpers ──────────────────────────────────────────────────────── + const renderResults = (state: Tachyon.FuzzerState) => { + 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...', + )}`; + } + return; + } + + tbody.innerHTML = ''; + state.results.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 badgeHtml = ''; + if (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;' + : '' + }`, + }, + [ + E('td', { style: 'padding: 8px 10px;' }, String(idx + 1)), + E( + 'td', + { + style: + 'padding: 8px 10px; font-family: monospace; font-size: 11px;', + }, + item.engine, + ), + E('td', { style: 'padding: 8px 10px;' }, [ + E('div', { style: 'font-weight: 600;' }, [ + E('span', {}, item.name), + E('span', { innerHTML: badgeHtml }), + ]), + E( + 'div', + { + style: + 'font-size: 10px; opacity: 0.7; font-family: monospace; word-break: break-all; margin-top: 2px;', + }, + item.args, + ), + ]), + E('td', { style: 'padding: 8px 10px;', innerHTML: statusBadge }), + E( + 'td', + { style: 'padding: 8px 10px;' }, + item.success ? `${item.ttfb_ms}ms` : '—', + ), + E( + 'td', + { style: 'padding: 8px 10px;' }, + item.success ? `${(item.speed_kbps / 1024).toFixed(1)}MB/s` : '—', + ), + E( + 'td', + { 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), + }), + ]), + ], + ); + + tbody.appendChild(tr); + }); + }; + + const updateProgressUI = (state: Tachyon.FuzzerState) => { + const statusText = document.getElementById('tachyon-fuzzer-status-text'); + const pctText = document.getElementById('tachyon-fuzzer-progress-pct'); + const progressBar = document.getElementById('tachyon-fuzzer-progress-bar'); + const currentStratEl = document.getElementById( + 'tachyon-fuzzer-current-strategy', + ); + + if (progressContainer) { + progressContainer.style.display = + state.running || state.results?.length ? 'flex' : 'none'; + } + + if (pctText) pctText.innerText = `${state.progress_pct}%`; + if (progressBar) progressBar.style.width = `${state.progress_pct}%`; + + if (statusText) { + if (state.running) { + statusText.innerText = `${_('Testing strategy')} ${state.current_index} / ${state.total_strategies}...`; + } else if (state.finished_at > 0) { + statusText.innerText = state.best_strategy + ? _('✅ Benchmark completed! Optimal strategy identified.') + : _( + '⚠️ Benchmark completed. No working bypass found for this target.', + ); + } + } + + if (currentStratEl && state.current_strategy) { + currentStratEl.innerText = `Testing: [${state.current_strategy.name}] -> ${state.current_strategy.args}`; + } else if (currentStratEl && !state.running) { + currentStratEl.innerText = ''; + } + + if (state.best_strategy && applyBestBtn) { + (applyBestBtn as HTMLButtonElement).disabled = false; + } + }; + + // ── Polling & Execution Logic ───────────────────────────────────────────── + const pollStatus = async () => { + if (isPolling) return; + isPolling = true; + try { + const res = await TachyonShellMethods.getFuzzerStatus(); + if (res.success && res.data) { + currentState = res.data; + isRunning = res.data.running; + + updateProgressUI(res.data); + renderResults(res.data); + + if (!isRunning) { + stopPolling(); + startBtn.innerText = _('🚀 Run Benchmark Again'); + (startBtn as HTMLButtonElement).disabled = false; + } + } + } catch { + // transient error ignore + } finally { + isPolling = false; + } + }; + + const startPolling = () => { + stopPolling(); + pollingInterval = setInterval(pollStatus, 1000); + pollStatus(); + }; + + const stopPolling = () => { + if (pollingInterval) { + clearInterval(pollingInterval); + pollingInterval = null; + } + }; + + const handleToggleRun = async () => { + if (isRunning) { + await TachyonShellMethods.stopFuzzer(); + showToast(_('Benchmark stopped'), 'success'); + stopPolling(); + pollStatus(); + return; + } + + (startBtn as HTMLButtonElement).disabled = true; + startBtn.innerText = _('🛑 Stop Benchmark'); + + const res = await TachyonShellMethods.startFuzzer( + selectedEngine, + selectedTarget, + customUrl, + selectedRuleSection, + ); + + if (res.success) { + showToast(_('Strategy benchmark started'), 'success'); + (startBtn as HTMLButtonElement).disabled = false; + isRunning = true; + startPolling(); + } else { + const errMsg = !res.success ? res.error : _('Unknown error'); + showToast(`${_('Failed to start benchmark')}: ${errMsg}`, 'error'); + (startBtn as HTMLButtonElement).disabled = false; + startBtn.innerText = _('🚀 Start Benchmark'); + } + }; + + const handleApplySingle = async (item: Tachyon.FuzzerStrategyResult) => { + const res = await TachyonShellMethods.applyFuzzerStrategy( + item.engine, + item.args, + selectedRuleSection, + ); + if (res.success) { + showToast( + `${_('Applied')} "${item.name}" -> ${selectedRuleSection || _('Global Default')}`, + 'success', + ); + } else { + showToast(_('Failed to apply strategy'), 'error'); + } + }; + + const handleApplyBest = async () => { + if (!currentState?.best_strategy) return; + await handleApplySingle(currentState.best_strategy); + }; + + // Build Modal Tree + modalContainer.append( + headerEl, + controlsGrid, + progressContainer, + resultsContainer, + footerActions, + ); + + // Check initial state + pollStatus(); + + ui.showModal(_('⚡ Strategy Fuzzer & Auto-Tuner'), modalContainer); +} diff --git a/fe-app-tachyon/src/tachyon/tabs/diagnostic/tests/strategyFuzzerModal.test.ts b/fe-app-tachyon/src/tachyon/tabs/diagnostic/tests/strategyFuzzerModal.test.ts new file mode 100644 index 00000000..878a8718 --- /dev/null +++ b/fe-app-tachyon/src/tachyon/tabs/diagnostic/tests/strategyFuzzerModal.test.ts @@ -0,0 +1,136 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +const mocks = vi.hoisted(() => { + class MockMutationObserver { + observe() {} + disconnect() {} + takeRecords() { + return []; + } + } + (globalThis as any).MutationObserver = MockMutationObserver; + + function createDummyElement(tag: string) { + return { + tagName: tag.toUpperCase(), + children: [] as any[], + style: {} as Record, + setAttribute() {}, + getAttribute() { + return null; + }, + addEventListener() {}, + querySelectorAll: () => [], + querySelector: () => null, + replaceChildren: function (...nodes: any[]) { + (this as any).children = nodes; + }, + appendChild: function (node: any) { + (this as any).children.push(node); + }, + append: function (...nodes: any[]) { + nodes.forEach((node) => (this as any).children.push(node)); + }, + classList: { + add() {}, + remove() {}, + }, + }; + } + + (globalThis as any).document = { + body: {} as any, + createElement: (tag: string) => createDummyElement(tag) as any, + createElementNS: (_ns: string, tag: string) => + createDummyElement(tag) as any, + getElementById: () => null, + querySelector: () => null, + querySelectorAll: () => [], + }; + + (globalThis as any).rpc = { declare: vi.fn() }; + (globalThis as any).uci = { sections: vi.fn().mockResolvedValue([]) }; + (globalThis as any).localStorage = { getItem: vi.fn(), setItem: vi.fn() }; + + (globalThis as any).E = (tag: string, attrs?: any, children?: any) => { + const el = (globalThis as any).document.createElement(tag); + if (attrs) { + const { style, ...rest } = attrs; + Object.assign(el, rest); + if (typeof style === 'string') { + el.style.cssText = style; + } else if (style && typeof style === 'object') { + Object.assign(el.style, style); + } + } + if (children) { + if (Array.isArray(children)) { + children.forEach((c) => + el.appendChild(typeof c === 'string' ? { textContent: c } : c), + ); + } else { + el.appendChild( + typeof children === 'string' ? { textContent: children } : children, + ); + } + } + return el; + }; + + (globalThis as any)._ = (s: string) => s; + (globalThis as any).sprintf = (s: string, ...args: any[]) => { + let res = s; + args.forEach((arg) => { + res = res.replace(/%[sdj]/, String(arg)); + }); + return res; + }; + + const showModal = vi.fn(); + const hideModal = vi.fn(); + const executeShellCommand = vi.fn(); + + (globalThis as any).ui = { + showModal, + hideModal, + }; + + return { + showModal, + hideModal, + executeShellCommand, + }; +}); + +vi.mock('../../../../helpers', async (importOriginal) => ({ + ...((await importOriginal()) as any), + executeShellCommand: mocks.executeShellCommand, +})); + +import { renderStrategyFuzzerModal } from '../partials/renderStrategyFuzzerModal'; + +describe('renderStrategyFuzzerModal', () => { + beforeEach(() => { + mocks.showModal.mockReset(); + mocks.executeShellCommand.mockReset(); + mocks.executeShellCommand.mockResolvedValue({ + stdout: JSON.stringify({ + running: false, + results: [], + }), + stderr: '', + code: 0, + }); + }); + + it('renders and displays the Strategy Fuzzer modal', () => { + renderStrategyFuzzerModal(['youtube_rule', 'discord_rule']); + + expect(mocks.showModal).toHaveBeenCalledTimes(1); + expect(mocks.showModal).toHaveBeenCalledWith( + '⚡ Strategy Fuzzer & Auto-Tuner', + expect.anything(), + ); + }); +}); diff --git a/fe-app-tachyon/src/tachyon/types.ts b/fe-app-tachyon/src/tachyon/types.ts index 853b9809..ecd37dd6 100644 --- a/fe-app-tachyon/src/tachyon/types.ts +++ b/fe-app-tachyon/src/tachyon/types.ts @@ -98,6 +98,11 @@ export namespace Tachyon { SUBSCRIPTION_UPDATE_ASYNC = 'subscription_update_async', SUBSCRIPTION_UPDATE_STATUS = 'subscription_update_status', SERVICE_HEALTH_CHECK = 'service_health_check', + FUZZER_START = 'fuzzer_start', + FUZZER_STATUS = 'fuzzer_status', + FUZZER_STOP = 'fuzzer_stop', + FUZZER_APPLY = 'fuzzer_apply', + FUZZER_STRATEGIES = 'fuzzer_strategies', } export enum AvailableClashAPIMethods { @@ -822,4 +827,74 @@ export namespace Tachyon { } export type GetClashApiGroupLatency = Record; + + export type FuzzerEngine = 'zapret2' | 'zapret' | 'byedpi' | 'all'; + export type FuzzerTarget = + | 'youtube' + | 'youtube_web' + | 'discord' + | 'instagram' + | 'rutracker' + | 'telegram' + | 'custom'; + + export interface FuzzerStrategyItem { + id: string; + name: string; + engine: 'zapret2' | 'zapret' | 'byedpi'; + args: string; + description: string; + } + + export type FuzzerStrategyDefinition = FuzzerStrategyItem; + + export interface FuzzerStrategyResult { + id: string; + name: string; + engine: 'zapret2' | 'zapret' | 'byedpi'; + args: string; + description: string; + success: boolean; + http_code: number; + handshake_ms: number; + ttfb_ms: number; + speed_kbps: number; + score: number; + error?: string; + badge?: string; + } + + export interface FuzzerState { + running: boolean; + job_id: string; + engine: FuzzerEngine; + target: FuzzerTarget; + target_url: string; + rule_section?: string; + progress_pct: number; + current_index: number; + total_strategies: number; + current_strategy?: FuzzerStrategyItem | null; + results: FuzzerStrategyResult[]; + best_strategy?: FuzzerStrategyResult | null; + error?: string | null; + started_at: number; + finished_at: number; + } + + export interface FuzzerStartResponse { + success: boolean; + job_id?: string; + engine?: string; + target?: string; + error?: string; + } + + export interface FuzzerApplyResponse { + success: boolean; + engine: string; + applied_to: string; + args: string; + error?: string; + } } 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 fff82db3..16dc85cc 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 @@ -3114,6 +3114,11 @@ var Tachyon; AvailableMethods2["SUBSCRIPTION_UPDATE_ASYNC"] = "subscription_update_async"; AvailableMethods2["SUBSCRIPTION_UPDATE_STATUS"] = "subscription_update_status"; AvailableMethods2["SERVICE_HEALTH_CHECK"] = "service_health_check"; + AvailableMethods2["FUZZER_START"] = "fuzzer_start"; + AvailableMethods2["FUZZER_STATUS"] = "fuzzer_status"; + AvailableMethods2["FUZZER_STOP"] = "fuzzer_stop"; + AvailableMethods2["FUZZER_APPLY"] = "fuzzer_apply"; + AvailableMethods2["FUZZER_STRATEGIES"] = "fuzzer_strategies"; })(AvailableMethods = Tachyon2.AvailableMethods || (Tachyon2.AvailableMethods = {})); let AvailableClashAPIMethods; ((AvailableClashAPIMethods2) => { @@ -3916,6 +3921,125 @@ var TachyonShellMethods = { return { success: (response.code ?? 1) === 0 }; + }, + startFuzzer: async (engine = "zapret2", target = "youtube", customUrl, ruleSection) => { + const response = await executeShellCommand({ + command: "/usr/bin/tachyon", + args: [ + Tachyon.AvailableMethods.FUZZER_START, + engine, + target, + customUrl || "", + ruleSection || "" + ], + 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: parsed + }; + } + return { + success: false, + error: parsed?.error || response.stderr || _("Failed to start fuzzer") + }; + }, + getFuzzerStatus: async () => { + const response = await executeShellCommand({ + command: "/usr/bin/tachyon", + args: [Tachyon.AvailableMethods.FUZZER_STATUS], + timeout: 8e3 + }); + let parsed = null; + try { + parsed = JSON.parse(response.stdout?.trim() || "{}"); + } catch { + parsed = null; + } + if ((response.code ?? 1) === 0 && parsed) { + return { + success: true, + data: parsed + }; + } + return { + success: false, + error: response.stderr || _("Failed to get fuzzer status") + }; + }, + stopFuzzer: async () => { + const response = await executeShellCommand({ + command: "/usr/bin/tachyon", + args: [Tachyon.AvailableMethods.FUZZER_STOP], + timeout: 8e3 + }); + if ((response.code ?? 1) === 0) { + return { success: true, data: void 0 }; + } + return { + success: false, + error: response.stderr || _("Failed to stop fuzzer") + }; + }, + applyFuzzerStrategy: async (engine, args, targetRuleOrGlobal) => { + const response = await executeShellCommand({ + command: "/usr/bin/tachyon", + args: [ + Tachyon.AvailableMethods.FUZZER_APPLY, + engine, + args, + targetRuleOrGlobal || "global" + ], + 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: parsed + }; + } + return { + success: false, + error: parsed?.error || response.stderr || _("Failed to apply strategy") + }; + }, + getFuzzerStrategies: async () => { + const response = await executeShellCommand({ + command: "/usr/bin/tachyon", + args: [Tachyon.AvailableMethods.FUZZER_STRATEGIES], + timeout: 8e3 + }); + let parsed = null; + try { + parsed = JSON.parse( + response.stdout?.trim() || "{}" + ); + } catch { + parsed = null; + } + if ((response.code ?? 1) === 0 && parsed) { + return { + success: true, + data: parsed + }; + } + return { + success: false, + error: response.stderr || _("Failed to get fuzzer strategies") + }; } }; @@ -10309,6 +10433,7 @@ function renderAvailableActions({ doctor, aiDoctor, aiChat, + strategyFuzzer, restoreNativeInternet, viewLogs, showSingBoxConfig, @@ -10415,6 +10540,16 @@ function renderAvailableActions({ disabled: aiChat.disabled }) ]), + ...insertIf(!!strategyFuzzer?.visible, [ + renderButton({ + classNames: ["cbi-button-action"], + onClick: strategyFuzzer.onClick, + icon: renderCirclePlayIcon24, + text: _("\u26A1 DPI Strategy Fuzzer"), + loading: strategyFuzzer.loading, + disabled: strategyFuzzer.disabled + }) + ]), ...insertIf(checkServices.visible, [ renderButton({ classNames: ["cbi-button-action"], @@ -11563,6 +11698,502 @@ function renderAiChatModal() { ui.showModal(_("AI Chat & Tachyon Assistant"), modalContent); } +// src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts +function renderStrategyFuzzerModal(ruleNames = []) { + let pollingInterval = null; + let isPolling = false; + let selectedEngine = "zapret2"; + let selectedTarget = "youtube"; + let customUrl = ""; + let selectedRuleSection = ""; + let isRunning = false; + let currentState = null; + 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;" + }); + const headerEl = 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;" + }, + [ + 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." + ) + ) + ] + ); + const controlsGrid = E("div", { + style: "display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; 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: "zapret" }, _("Zapret v1 (nfqws)")), + E("option", { value: "byedpi" }, _("ByeDPI (ciadpi)")), + E("option", { value: "all" }, _("All Engines (Full Matrix)")) + ] + ); + engineSelect.addEventListener("change", () => { + selectedEngine = engineSelect.value; + }); + const engineGroup = E( + "div", + { style: "display: flex; flex-direction: column; gap: 4px;" }, + [ + E( + "label", + { style: "font-size: 12px; font-weight: 600;" }, + _("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)") + ), + 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...")) + ] + ); + const customUrlInput = E("input", { + type: "text", + class: "cbi-input-text", + placeholder: "https://example.com", + style: "width: 100%; display: none; margin-top: 4px;" + }); + targetSelect.addEventListener("change", () => { + selectedTarget = targetSelect.value; + if (selectedTarget === "custom") { + customUrlInput.style.display = "block"; + } else { + customUrlInput.style.display = "none"; + } + }); + customUrlInput.addEventListener("input", () => { + customUrl = customUrlInput.value.trim(); + }); + const targetGroup = E( + "div", + { style: "display: flex; flex-direction: column; gap: 4px;" }, + [ + E( + "label", + { style: "font-size: 12px; font-weight: 600;" }, + _("Target Service") + ), + 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 + ] + ); + controlsGrid.append(engineGroup, targetGroup, 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));" + }, + [ + E( + "div", + { + style: "display: flex; justify-content: space-between; font-size: 12px; font-weight: 600;" + }, + [ + E( + "span", + { id: "tachyon-fuzzer-status-text" }, + _("Benchmarking in progress...") + ), + E("span", { id: "tachyon-fuzzer-progress-pct" }, "0%") + ] + ), + E( + "div", + { + style: "width: 100%; height: 8px; background: rgba(255,255,255,0.1); border-radius: 4px; 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;" + }) + ] + ), + E( + "div", + { + id: "tachyon-fuzzer-current-strategy", + style: "font-size: 11px; opacity: 0.7; font-family: monospace;" + }, + "" + ) + ] + ); + 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;" + }); + const tableEl = E( + "table", + { + class: "table", + style: "width: 100%; margin: 0; font-size: 12px; text-align: left; border-collapse: collapse;" + }, + [ + E( + "thead", + { + style: "background: var(--background-color-secondary, rgba(0,0,0,0.3)); 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;" }, + _("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") + ) + ]) + ] + ), + E("tbody", { id: "tachyon-fuzzer-results-tbody" }, [ + E( + "tr", + {}, + E( + "td", + { + colSpan: 8, + style: "padding: 24px; text-align: center; opacity: 0.6;" + }, + _( + 'No benchmark results yet. Select engine and click "Start Benchmark".' + ) + ) + ) + ]) + ] + ); + resultsContainer.appendChild(tableEl); + const startBtn = renderButton({ + text: _("\u{1F680} Start Benchmark"), + 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));" + }, + [ + E("div", { style: "display: flex; gap: 8px;" }, [startBtn]), + E("div", { style: "display: flex; gap: 8px;" }, [applyBestBtn, closeBtn]) + ] + ); + 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..." + )}`; + } + return; + } + tbody.innerHTML = ""; + state.results.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 badgeHtml = ""; + if (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;" : ""}` + }, + [ + E("td", { style: "padding: 8px 10px;" }, String(idx + 1)), + E( + "td", + { + style: "padding: 8px 10px; font-family: monospace; font-size: 11px;" + }, + item.engine + ), + E("td", { style: "padding: 8px 10px;" }, [ + E("div", { style: "font-weight: 600;" }, [ + E("span", {}, item.name), + E("span", { innerHTML: badgeHtml }) + ]), + E( + "div", + { + style: "font-size: 10px; opacity: 0.7; font-family: monospace; word-break: break-all; margin-top: 2px;" + }, + item.args + ) + ]), + E("td", { style: "padding: 8px 10px;", innerHTML: statusBadge }), + E( + "td", + { style: "padding: 8px 10px;" }, + item.success ? `${item.ttfb_ms}ms` : "\u2014" + ), + E( + "td", + { style: "padding: 8px 10px;" }, + item.success ? `${(item.speed_kbps / 1024).toFixed(1)}MB/s` : "\u2014" + ), + E( + "td", + { 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) + }) + ]) + ] + ); + tbody.appendChild(tr); + }); + }; + const updateProgressUI = (state) => { + const statusText = document.getElementById("tachyon-fuzzer-status-text"); + const pctText = document.getElementById("tachyon-fuzzer-progress-pct"); + const progressBar = document.getElementById("tachyon-fuzzer-progress-bar"); + const currentStratEl = document.getElementById( + "tachyon-fuzzer-current-strategy" + ); + if (progressContainer) { + progressContainer.style.display = state.running || state.results?.length ? "flex" : "none"; + } + if (pctText) pctText.innerText = `${state.progress_pct}%`; + if (progressBar) progressBar.style.width = `${state.progress_pct}%`; + if (statusText) { + if (state.running) { + statusText.innerText = `${_("Testing strategy")} ${state.current_index} / ${state.total_strategies}...`; + } else if (state.finished_at > 0) { + statusText.innerText = state.best_strategy ? _("\u2705 Benchmark completed! Optimal strategy identified.") : _( + "\u26A0\uFE0F Benchmark completed. No working bypass found for this target." + ); + } + } + if (currentStratEl && state.current_strategy) { + currentStratEl.innerText = `Testing: [${state.current_strategy.name}] -> ${state.current_strategy.args}`; + } else if (currentStratEl && !state.running) { + currentStratEl.innerText = ""; + } + if (state.best_strategy && applyBestBtn) { + applyBestBtn.disabled = false; + } + }; + const pollStatus = async () => { + if (isPolling) return; + isPolling = true; + try { + const res = await TachyonShellMethods.getFuzzerStatus(); + if (res.success && res.data) { + currentState = res.data; + isRunning = res.data.running; + updateProgressUI(res.data); + renderResults(res.data); + if (!isRunning) { + stopPolling(); + startBtn.innerText = _("\u{1F680} Run Benchmark Again"); + startBtn.disabled = false; + } + } + } catch { + } finally { + isPolling = false; + } + }; + const startPolling = () => { + stopPolling(); + pollingInterval = setInterval(pollStatus, 1e3); + pollStatus(); + }; + const stopPolling = () => { + if (pollingInterval) { + clearInterval(pollingInterval); + pollingInterval = null; + } + }; + const handleToggleRun = async () => { + if (isRunning) { + await TachyonShellMethods.stopFuzzer(); + showToast(_("Benchmark stopped"), "success"); + stopPolling(); + pollStatus(); + return; + } + startBtn.disabled = true; + startBtn.innerText = _("\u{1F6D1} Stop Benchmark"); + const res = await TachyonShellMethods.startFuzzer( + selectedEngine, + selectedTarget, + customUrl, + selectedRuleSection + ); + if (res.success) { + showToast(_("Strategy benchmark started"), "success"); + startBtn.disabled = false; + isRunning = true; + startPolling(); + } else { + const errMsg = !res.success ? res.error : _("Unknown error"); + showToast(`${_("Failed to start benchmark")}: ${errMsg}`, "error"); + startBtn.disabled = false; + startBtn.innerText = _("\u{1F680} Start Benchmark"); + } + }; + const handleApplySingle = async (item) => { + const res = await TachyonShellMethods.applyFuzzerStrategy( + item.engine, + item.args, + selectedRuleSection + ); + if (res.success) { + showToast( + `${_("Applied")} "${item.name}" -> ${selectedRuleSection || _("Global Default")}`, + "success" + ); + } else { + showToast(_("Failed to apply strategy"), "error"); + } + }; + const handleApplyBest = async () => { + if (!currentState?.best_strategy) return; + await handleApplySingle(currentState.best_strategy); + }; + modalContainer.append( + headerEl, + controlsGrid, + progressContainer, + resultsContainer, + footerActions + ); + pollStatus(); + ui.showModal(_("\u26A1 Strategy Fuzzer & Auto-Tuner"), modalContainer); +} + // src/tachyon/tabs/diagnostic/partials/renderSystemInfo.ts function renderSystemInfo({ items }) { return E( @@ -13311,6 +13942,14 @@ async function handleRunAiDoctor() { function handleOpenAiChat() { renderAiChatModal(); } +function handleOpenStrategyFuzzer() { + getConfigSections().then((sections) => { + const ruleNames = sections.filter((s) => s[".type"] === "section" || s[".type"] === "rule").map((s) => s.name || s[".name"]).filter((n) => Boolean(n)); + renderStrategyFuzzerModal(ruleNames); + }).catch(() => { + renderStrategyFuzzerModal([]); + }); +} function handleRestoreNativeInternet() { ui.showModal( _("Restore Native Internet"), @@ -13558,6 +14197,12 @@ function renderDiagnosticAvailableActionsWidget() { onClick: handleOpenAiChat, disabled: false }, + strategyFuzzer: { + loading: false, + visible: true, + onClick: handleOpenStrategyFuzzer, + disabled: false + }, checkServices: { visible: true, loading: diagnosticsActions.checkServices.loading, diff --git a/luci-app-tachyon/po/ru/tachyon.po b/luci-app-tachyon/po/ru/tachyon.po index bd1860ef..c73ae39d 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-25 21:32+0300\n" -"PO-Revision-Date: 2026-08-25 21:32+0300\n" +"POT-Creation-Date: 2026-08-26 21:45+0300\n" +"PO-Revision-Date: 2026-08-26 21:45+0300\n" "Last-Translator: Dushnilin\n" "Language-Team: none\n" "Language: ru\n" @@ -47,21 +47,51 @@ msgstr "▶ Старт" msgid "⚙ Advanced Settings" msgstr "⚙ Настройки" +msgid "⚠️ Benchmark completed. No working bypass found for this target." +msgstr "⚠️ Бенчмарк завершен. Не найдено рабочих стратегий для данной цели." + msgid "⚠️ If all Bootstrap 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 "⚠️ Если все Bootstrap DNS завершатся с ошибкой 3 раза, запросы будут отправлены в DNS вашего провайдера в открытом виде. Используйте только в крайнем случае для предотвращения полной потери интернета." 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 "⚠️ Если все основные DNS завершатся с ошибкой 3 раза, запросы будут отправлены в DNS вашего провайдера в открытом виде. Используйте только в крайнем случае для предотвращения полной потери интернета." +msgid "⚡ DPI Strategy Fuzzer" +msgstr "⚡ DPI Strategy Fuzzer" + +msgid "⚡ Strategy Fuzzer & Auto-Tuner" +msgstr "⚡ Подборщик стратегий и авто-тюнер" + +msgid "✅ Benchmark completed! Optimal strategy identified." +msgstr "✅ Бенчмарк завершен! Оптимальная стратегия определена." + +msgid "✔ Online" +msgstr "" + msgid "✔ Running" msgstr "✔ Работает" +msgid "✘ Offline" +msgstr "" + msgid "✘ Stopped" msgstr "✘ Остановлено" +msgid "🏆 Apply Best Strategy" +msgstr "🏆 Применить лучшую стратегию" + msgid "🔑 Generate" msgstr "🔑 Сгенерировать" +msgid "🚀 Run Benchmark Again" +msgstr "🚀 Запустить бенчмарк снова" + +msgid "🚀 Start Benchmark" +msgstr "🚀 Начать бенчмарк" + +msgid "🛑 Stop Benchmark" +msgstr "🛑 Остановить бенчмарк" + msgid "Accept external proxy connections and route them with sing-box." msgstr "Принимать внешние прокси-подключения и маршрутизировать их через sing-box." @@ -224,6 +254,9 @@ msgstr "Все проверки пройдены — бот должен раб msgid "All devices" msgstr "Все устройства" +msgid "All Engines (Full Matrix)" +msgstr "Все движки (Полная матрица)" + msgid "All except selected" msgstr "Все кроме выбранных" @@ -305,12 +338,21 @@ msgstr "Другое действие уже выполняется" msgid "API Key for OpenAI (sk-...) or DeepSeek (optional for Ollama / LM Studio)" msgstr "API-ключ для OpenAI (sk-...) или DeepSeek (опционально для Ollama / LM Studio)" +msgid "Applied" +msgstr "Применено" + +msgid "Apply" +msgstr "Применить" + msgid "Apply rules of this section only to selected protocols." msgstr "Применять правила этой секции только к выбранным протоколам." msgid "Apply section rules only to the specified local IP addresses" msgstr "Применять правила секции только к указанным локальным IP-адресам" +msgid "Apply Strategy To" +msgstr "Применить стратегию к" + msgid "Applying fix" msgstr "Применение исправления" @@ -350,6 +392,9 @@ msgstr "Автоопределённые домены" msgid "Auto-detects blocked domains from logs and adds them to the first section where they work via proxy." msgstr "Автоматически определяет заблокированные домены из логов и добавляет их в первую секцию, где они работают через прокси." +msgid "Auto-failover of proxy sections" +msgstr "Авто-failover прокси-секций" + msgid "Auto-generate HWID" msgstr "Авто-генерация HWID" @@ -359,6 +404,9 @@ msgstr "Автолечение сетевого стека" msgid "Auto-update Hosts Lists" msgstr "Автообновление списков Hosts" +msgid "Automated DPI Strategy Fuzzer & Auto-Tuner" +msgstr "Автоматический подборщик и оптимизатор стратегий DPI" + msgid "Automatic component update checks" msgstr "Автоматическая проверка обновлений компонентов" @@ -407,6 +455,15 @@ msgstr "Начало интервала расписания (например, msgid "Belarus (by)" msgstr "Беларусь (by)" +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" @@ -470,6 +527,9 @@ msgstr "Встроенные наборы правил" msgid "By flag emoji from name" msgstr "По эмодзи флага из имени" +msgid "ByeDPI (ciadpi)" +msgstr "ByeDPI (ciadpi)" + msgid "ByeDPI listen address and port are assigned by Tachyon and must not be set in the strategy." msgstr "Адрес и порт прослушивания ByeDPI назначаются Tachyon и не должны задаваться в стратегии." @@ -827,6 +887,15 @@ msgstr "Пользовательский URL эндпоинта OpenAI-совм msgid "Custom outbound configurations in JSON format" msgstr "Пользовательские конфигурации outbound в формате JSON" +msgid "Custom Target URL..." +msgstr "Свой URL для теста..." + +msgid "Daily Quota" +msgstr "Дневная квота" + +msgid "Daily time quota (minutes)" +msgstr "Дневной лимит времени (минуты)" + msgid "Dashboard" msgstr "Панель управления" @@ -836,33 +905,6 @@ msgstr "Дашборд сейчас недоступен" msgid "Days of Week" msgstr "Дни недели" -msgid "Auto-failover of proxy sections" -msgstr "Авто-failover прокси-секций" - -msgid "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect." -msgstr "Watchdog проверяет каждую Connection-секцию; если активная падает несколько проверок подряд, трафик переключается на живую резервную, а Telegram получает уведомление. Нужен reload конфигурации." - -msgid "Failover failure threshold" -msgstr "Порог срабатывания failover" - -msgid "Number of consecutive failed probes before switching sections" -msgstr "Сколько неудачных проверок подряд до переключения секции" - -msgid "Daily time quota (minutes)" -msgstr "Дневной лимит времени (минуты)" - -msgid "Limit device network usage per day. When the quota is exhausted, the device is blocked until midnight. 0 disables the limit." -msgstr "Ограничьте использование сети устройством за день. Когда квота исчерпана, устройство блокируется до полуночи. 0 — без лимита." - -msgid "Enter a whole number of minutes between 0 and 1440" -msgstr "Введите целое число минут от 0 до 1440" - -msgid "Daily Quota" -msgstr "Дневная квота" - -msgid "min/day" -msgstr "мин/день" - msgid "Default (auto)" msgstr "По умолчанию (авто)" @@ -959,6 +1001,9 @@ 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 "Display name" msgstr "Отображаемое имя" @@ -1142,6 +1187,9 @@ msgstr "Загружено" msgid "Downloading and applying rule sets and lists..." msgstr "Загрузка и применение наборов правил и списков..." +msgid "DPI Engine" +msgstr "Движок DPI" + msgid "Drag rows to change priority. The rule at the top is checked first." msgstr "Перетащите строки для изменения приоритета. Правило вверху проверяется первым." @@ -1274,6 +1322,9 @@ msgstr "Конец интервала расписания (например, 08 msgid "End Time (HH:MM)" msgstr "Время окончания (ЧЧ:ММ)" +msgid "Engine" +msgstr "" + msgid "Enter a complete sing-box inbound object" msgstr "Введите полный JSON объект inbound для sing-box" @@ -1289,6 +1340,9 @@ msgstr "Введите домен или IP для проверки (напр. e msgid "Enter a level name" msgstr "Введите имя уровня" +msgid "Enter a whole number of minutes between 0 and 1440" +msgstr "Введите целое число минут от 0 до 1440" + msgid "Enter HWID" msgstr "Введите HWID" @@ -1367,6 +1421,9 @@ msgstr "Внешние файлы конфигурации nfqws2 обходят msgid "Failed to apply fix" msgstr "Не удалось применить исправление" +msgid "Failed to apply strategy" +msgstr "Не удалось применить стратегию" + msgid "Failed to close connection" msgstr "Не удалось закрыть подключение" @@ -1391,6 +1448,12 @@ msgstr "Не удалось создать отчёт об ошибке" msgid "Failed to generate WARP config:" msgstr "Не удалось сгенерировать конфигурацию WARP:" +msgid "Failed to get fuzzer status" +msgstr "" + +msgid "Failed to get fuzzer strategies" +msgstr "" + msgid "Failed to load snapshots" msgstr "Не удалось загрузить снапшоты" @@ -1436,9 +1499,15 @@ msgstr "Ошибка сохранения настроек Smart Detect" msgid "Failed to save snapshot" msgstr "Не удалось сохранить снапшот" +msgid "Failed to start benchmark" +msgstr "Не удалось запустить бенчмарк" + msgid "Failed to start bot" msgstr "Не удалось запустить бота" +msgid "Failed to start fuzzer" +msgstr "" + msgid "Failed to start service check." msgstr "Не удалось запустить проверку сервисов." @@ -1448,6 +1517,9 @@ msgstr "Не удалось запустить watchdog" msgid "Failed to stop bot" msgstr "Не удалось остановить бота" +msgid "Failed to stop fuzzer" +msgstr "" + msgid "Failed to stop watchdog" msgstr "Не удалось остановить watchdog" @@ -1460,6 +1532,9 @@ msgstr "Не удалось обновить устройство" msgid "Failed to update subscriptions" msgstr "Не удалось обновить подписки" +msgid "Failover failure threshold" +msgstr "Порог срабатывания failover" + msgid "FakeIP and control checks use different public IPs" msgstr "FakeIP и контрольная проверка используют разные публичные IP" @@ -1604,6 +1679,9 @@ msgstr "Глобальная проверка" msgid "Global check failed" msgstr "Не удалось выполнить глобальную проверку" +msgid "Global Default" +msgstr "" + msgid "gRPC service" msgstr "Сервис gRPC" @@ -1811,12 +1889,18 @@ 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 "Установить" msgid "Install another build:" msgstr "Установить другую сборку:" +msgid "Installed" +msgstr "Установлен" + msgid "Installed build → Available build" msgstr "Установленная сборка → Доступная сборка" @@ -2186,6 +2270,9 @@ msgstr "Оставьте пустым, чтобы пропустить этот msgid "Level name" msgstr "Имя уровня" +msgid "Limit device network usage per day. When the quota is exhausted, the device is blocked until midnight. 0 disables the limit." +msgstr "Ограничьте использование сети устройством за день. Когда квота исчерпана, устройство блокируется до полуночи. 0 — без лимита." + msgid "List must be an HTTP(S) URL or a local .lst path" msgstr "Список должен быть HTTP(S) URL или локальным путём .lst" @@ -2273,6 +2360,9 @@ msgstr "ID аккаунта MASQUE" msgid "MASQUE Private Key" msgstr "Приватный ключ MASQUE" +msgid "Masquerade LAN traffic into tailnet" +msgstr "Маскарадинг LAN-трафика в тейлнет" + msgid "Match destination IPs or subnets" msgstr "Сопоставлять IP-адреса или подсети назначения" @@ -2306,6 +2396,9 @@ msgstr "Метод" msgid "Metrics Retention (hours)" msgstr "Хранение метрик (часы)" +msgid "min/day" +msgstr "мин/день" + msgid "Minimum latency difference in milliseconds that triggers switching to a faster server." msgstr "Минимальная разница задержки в миллисекундах, при которой происходит переключение на более быстрый сервер." @@ -2369,6 +2462,9 @@ msgstr "Имя в списке уровней приоритета" msgid "Native internet restored. Tachyon stopped." msgstr "Обычный интернет восстановлен. Tachyon остановлен." +msgid "Native tailscaled (tailnet reachable from LAN without client)" +msgstr "Нативный tailscaled (тейлнет доступен из LAN без клиента)" + msgid "Netherlands (nl)" msgstr "Нидерланды (nl)" @@ -2420,6 +2516,9 @@ msgstr "Активные устройства в локальной сети н msgid "No active routing sections found." msgstr "Активные секции маршрутизации не найдены." +msgid "No benchmark results yet. Select engine and click \"Start Benchmark\"." +msgstr "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк»." + msgid "No check targets found in the configuration." msgstr "Цели для проверки не найдены в конфигурации." @@ -2537,6 +2636,9 @@ msgstr "Уведомлять об обновлениях подписок" msgid "Number of consecutive failed checks required before switching DNS servers." msgstr "Количество последовательных неудачных проверок до переключения DNS-серверов." +msgid "Number of consecutive failed probes before switching sections" +msgstr "Сколько неудачных проверок подряд до переключения секции" + msgid "Number of consecutive failures before restarting (default 3)." msgstr "Количество последовательных ошибок до перезапуска (по умолчанию 3)." @@ -2642,6 +2744,9 @@ msgstr "Опциональные значения должны быть прис msgid "Or paste hosts file content:" msgstr "Или вставьте содержимое файла hosts:" +msgid "Other peers" +msgstr "" + msgid "outbounds must be a non-empty array of strings" msgstr "outbounds должен быть непустым массивом строк" @@ -2828,6 +2933,9 @@ msgstr "Защита" msgid "Protocol" msgstr "Протокол" +msgid "Provider Global Default" +msgstr "Глобальные настройки провайдера" + msgid "Proxy" msgstr "Прокси" @@ -3059,6 +3167,9 @@ msgstr "Возвращать NXDOMAIN для заблокированных до msgid "Route" msgstr "Маршрут" +msgid "Route all non-local LAN traffic through the tailnet exit node instead of the proxy engines." +msgstr "Направлять весь не-локальный LAN-трафик через exit-node тейлнета вместо прокси-движков." + msgid "Route bot API requests through this section. Leave empty to use the default mixed proxy." msgstr "Маршрутизировать запросы API бота через эту секцию. Оставьте пустым для использования смешанного прокси по умолчанию." @@ -3101,6 +3212,9 @@ msgstr "Наборы правил" msgid "Rule Sets (.srs / .json)" msgstr "Наборы правил (.srs / .json)" +msgid "Rule:" +msgstr "Правило:" + msgid "Rules" msgstr "Правила" @@ -3137,9 +3251,15 @@ 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 "Сб" @@ -3170,6 +3290,9 @@ msgstr "Расписание" msgid "Schedule Rule" msgstr "Правило расписания" +msgid "Score" +msgstr "Баллы" + msgid "Search" msgstr "Поиск" @@ -3464,6 +3587,9 @@ msgstr "Показывать метаданные подписки для это msgid "Sing-box autostart disabled" msgstr "Автостарт sing-box отключен" +msgid "sing-box endpoint (userspace, default)" +msgstr "Endpoint в sing-box (userspace, по умолчанию)" + msgid "Sing-box FakeIP DNS does not work" msgstr "FakeIP DNS sing-box не работает" @@ -3512,6 +3638,9 @@ msgstr "Имя снапшота" msgid "Snapshot restored. The service restarts and the page will reload." msgstr "Снапшот восстановлен. Сервис перезапускается, страница будет перезагружена." +msgid "SNAT LAN sources when leaving through tailscale0 so peers can answer. Required unless every peer accepts routes." +msgstr "Подменять LAN-адреса при выходе через tailscale0, чтобы пиры могли отвечать. Нужно, если не все пиры принимают маршруты." + msgid "Snell Version" msgstr "Версия Snell" @@ -3545,6 +3674,9 @@ msgstr "Укажите путь к файлу" msgid "Specify different files" msgstr "Укажите разные файлы" +msgid "Speed" +msgstr "Скорость" + msgid "SSH" msgstr "SSH" @@ -3605,6 +3737,9 @@ msgstr "Сначала запустите Watchdog" msgid "Starting…" msgstr "Запуск…" +msgid "State" +msgstr "" + msgid "Status" msgstr "Статус" @@ -3629,6 +3764,12 @@ msgstr "Остановка…" msgid "Store auto-detected domains in /etc instead of /tmp to survive reboots." msgstr "Хранить автоопределённые домены в /etc вместо /tmp для сохранения после перезагрузки." +msgid "Strategy & Parameters" +msgstr "Стратегия и параметры" + +msgid "Strategy benchmark started" +msgstr "Бенчмарк стратегий запущен" + msgid "Strict ECH + DoQ DNS Enforcer" msgstr "Строгий ECH + DoQ DNS Enforcer" @@ -3752,32 +3893,11 @@ msgstr "NFQWS2 Tachyon не запущен" msgid "Tachyon-managed nfqws2 runtime is ready" msgstr "NFQWS2 Tachyon готов" -msgid "Tailscale auth key" -msgid "Tailscale mode" -msgstr "Режим Tailscale" - -msgid "sing-box endpoint (userspace, default)" -msgstr "Endpoint в sing-box (userspace, по умолчанию)" - -msgid "Native tailscaled (tailnet reachable from LAN without client)" -msgstr "Нативный tailscaled (тейлнет доступен из LAN без клиента)" - -msgid "Masquerade LAN traffic into tailnet" -msgstr "Маскарадинг LAN-трафика в тейлнет" - -msgid "SNAT LAN sources when leaving through tailscale0 so peers can answer. Required unless every peer accepts routes." -msgstr "Подменять LAN-адреса при выходе через tailscale0, чтобы пиры могли отвечать. Нужно, если не все пиры принимают маршруты." - -msgid "Use tailnet exit node for LAN" -msgstr "Использовать exit-node тейлнета для LAN" - -msgid "Route all non-local LAN traffic through the tailnet exit node instead of the proxy engines." -msgstr "Направлять весь не-локальный LAN-трафик через exit-node тейлнета вместо прокси-движков." - msgid "Tailscale" msgstr "Tailscale" -msgstr "Ключ аутентификации Tailscale" +msgid "Tailscale auth key" +msgstr "" msgid "Tailscale control URL" msgstr "Control URL Tailscale" @@ -3788,6 +3908,9 @@ msgstr "Tailscale endpoint" msgid "Tailscale hostname" msgstr "Имя хоста Tailscale" +msgid "Tailscale mode" +msgstr "Режим Tailscale" + msgid "Target" msgstr "Цель" @@ -3797,6 +3920,9 @@ msgstr "Целевые устройства (IP / MAC)" msgid "Target Scope" msgstr "Область действия" +msgid "Target Service" +msgstr "Целевой сервис" + msgid "Telegram Bot" msgstr "Telegram Бот" @@ -3806,6 +3932,9 @@ msgstr "Токен Telegram-бота" msgid "Telegram Channel" msgstr "Telegram канал" +msgid "Telegram Web" +msgstr "Telegram Web" + msgid "Test Connection" msgstr "Проверить подключение" @@ -3833,6 +3962,9 @@ msgstr "Тестировать серверы, чьи имена соответ msgid "Test Telegram Connection" msgstr "Проверить подключение к Telegram" +msgid "Testing strategy" +msgstr "Тестирование стратегии" + msgid "Testing URL" msgstr "URL проверки" @@ -3890,6 +4022,9 @@ msgstr "Этот флаг не принимает значение." msgid "This option requires a value." msgstr "Этот параметр требует значение." +msgid "This router" +msgstr "" + msgid "This will erase all Tachyon settings and restore the factory defaults. The service will restart. This action cannot be undone." msgstr "Все настройки Tachyon будут удалены и восстановлены заводские значения. Сервис будет перезапущен. Это действие нельзя отменить." @@ -3998,6 +4133,9 @@ msgstr "Устранение неполадок" msgid "Try compatible User-Agent profiles automatically when downloading this subscription" msgstr "Пробовать совместимые профили User-Agent автоматически при загрузке этой подписки" +msgid "TTFB" +msgstr "TTFB" + msgid "TTL must be a positive number" msgstr "TTL должен быть положительным числом" @@ -4232,6 +4370,9 @@ msgstr "Используйте формат длительности sing-box, msgid "Use sing-box duration format like 1d, 12h or 6h" msgstr "Используйте формат длительности sing-box, например 1d, 12h или 6h" +msgid "Use tailnet exit node for LAN" +msgstr "Использовать exit-node тейлнета для LAN" + msgid "Used by" msgstr "Используется" @@ -4316,6 +4457,9 @@ msgstr "Секция прокси WARP" msgid "Watchdog" msgstr "Сторожевой таймер" +msgid "Watchdog probes every Connection section; when the active one fails several checks in a row, traffic switches to a healthy backup and Telegram is notified. Requires a config reload to take effect." +msgstr "Watchdog проверяет каждую Connection-секцию; если активная падает несколько проверок подряд, трафик переключается на живую резервную, а Telegram получает уведомление. Нужен reload конфигурации." + msgid "Watchdog Status" msgstr "Статус Watchdog" @@ -4361,6 +4505,12 @@ 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 по правилам." @@ -4382,6 +4532,12 @@ msgstr "sing-box outbound для Zapret настроен" msgid "Zapret sing-box outbound is not configured" msgstr "sing-box outbound для Zapret не настроен" +msgid "Zapret v1 (nfqws)" +msgstr "Zapret v1 (nfqws)" + +msgid "Zapret v2 (nfqws2)" +msgstr "Zapret v2 (nfqws2)" + msgid "Zapret2 hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS2 strategies." msgstr "Шаблоны hostlist Zapret2 не поддерживаются здесь, потому что Tachyon не расширяет их для стратегий NFQWS2 по правилам." @@ -4690,3 +4846,6 @@ msgstr "Предотвращать множественные вызовы reloa msgid "Restoring native direct internet..." msgstr "Восстановление прямого интернета..." + +msgid "Find optimal DPI bypass strategies with isolated live probing" +msgstr "Автоматический подбор оптимальных параметров обхода DPI в изолированном сэндбоксе" diff --git a/luci-app-tachyon/po/templates/tachyon.pot b/luci-app-tachyon/po/templates/tachyon.pot index a83ff647..f66ed0e5 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-25 18:31+0300\n" -"PO-Revision-Date: 2026-08-25 18:31+0300\n" +"POT-Creation-Date: 2026-08-26 18:45+0300\n" +"PO-Revision-Date: 2026-08-26 18:45+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:1742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1767 msgid "(provider default)" msgstr "" @@ -64,6 +64,11 @@ msgstr "" msgid "⚙ Advanced Settings" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12034 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:469 +msgid "⚠️ Benchmark completed. No working bypass found for this target." +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:906 msgid "⚠️ If all Bootstrap 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 "" @@ -72,26 +77,73 @@ 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:7983 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7990 -#: src/tachyon/tabs/dashboard/initController.ts:1888 -#: src/tachyon/tabs/dashboard/initController.ts:1897 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10523 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:162 +msgid "⚡ DPI Strategy Fuzzer" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12135 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:590 +msgid "⚡ Strategy Fuzzer & Auto-Tuner" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12034 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:468 +msgid "✅ Benchmark completed! Optimal strategy identified." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8160 +#: src/tachyon/tabs/dashboard/initController.ts:1941 +msgid "✔ Online" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8117 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8124 +#: src/tachyon/tabs/dashboard/initController.ts:1891 +#: src/tachyon/tabs/dashboard/initController.ts:1900 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473 msgid "✔ Running" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7983 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7990 -#: src/tachyon/tabs/dashboard/initController.ts:1888 -#: src/tachyon/tabs/dashboard/initController.ts:1897 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8160 +#: src/tachyon/tabs/dashboard/initController.ts:1941 +msgid "✘ Offline" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8117 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8124 +#: src/tachyon/tabs/dashboard/initController.ts:1891 +#: src/tachyon/tabs/dashboard/initController.ts:1900 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:473 msgid "✘ Stopped" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11920 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:330 +msgid "🏆 Apply Best Strategy" +msgstr "" + #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:728 msgid "🔑 Generate" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12060 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:501 +msgid "🚀 Run Benchmark Again" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11915 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12105 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:324 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:553 +msgid "🚀 Start Benchmark" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12089 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:535 +msgid "🛑 Stop Benchmark" +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 "" @@ -100,40 +152,42 @@ msgstr "" msgid "Accept routes" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11890 #: ../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:296 msgid "Action" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8914 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9123 #: src/tachyon/helpers/notifyActionFailure.ts:40 msgid "Action failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:445 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:467 msgid "Action Mode" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7385 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14009 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14594 -#: src/tachyon/tabs/dashboard/initController.ts:1126 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7519 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14707 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15292 +#: src/tachyon/tabs/dashboard/initController.ts:1127 #: src/tachyon/tabs/monitoring/initController.ts:722 #: src/tachyon/tabs/monitoring/render.ts:20 msgid "Active" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:357 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:377 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:379 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:399 msgid "Active (Allowed)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:357 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:377 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:379 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:399 msgid "Active (Blocking)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9009 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9218 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:56 msgid "Active Bootstrap DNS" msgstr "" @@ -145,17 +199,17 @@ msgstr "" msgid "Active Clients" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7969 -#: src/tachyon/tabs/dashboard/initController.ts:1873 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8103 +#: src/tachyon/tabs/dashboard/initController.ts:1876 msgid "Active Connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9016 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9225 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67 msgid "Active Main DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10707 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10929 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:245 msgid "Active routes" msgstr "" @@ -202,7 +256,7 @@ msgstr "" msgid "Add URLTest / Priority group" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9351 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9560 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:106 msgid "Additional marking rules found" msgstr "" @@ -229,7 +283,7 @@ msgstr "" msgid "Address" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2161 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2186 msgid "Administrator Chat IDs" msgstr "" @@ -265,22 +319,22 @@ msgstr "" msgid "AI Agent REST API (12 Endpoints)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1693 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1718 msgid "AI Agent REST API Bearer Token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1761 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1786 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:942 msgid "AI API Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11451 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11673 #: 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:10301 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:150 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10513 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:152 msgid "AI Chat Assistant" msgstr "" @@ -288,36 +342,36 @@ msgstr "" msgid "AI Doctor (ChatGPT / DeepSeek API)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13183 -#: src/tachyon/tabs/diagnostic/initController.ts:1561 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13867 +#: src/tachyon/tabs/diagnostic/initController.ts:1563 msgid "AI Doctor Diagnosis" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12644 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13186 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13194 -#: src/tachyon/tabs/diagnostic/initController.ts:855 -#: src/tachyon/tabs/diagnostic/initController.ts:1567 -#: src/tachyon/tabs/diagnostic/initController.ts:1575 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13328 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13870 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13878 +#: 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:1748 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1773 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:909 msgid "AI Doctor Language" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1735 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1760 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:884 msgid "AI Model" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1718 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1743 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:806 msgid "AI Provider" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11378 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11600 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:151 msgid "AI service error" msgstr "" @@ -330,14 +384,14 @@ msgstr "" msgid "AI Watchdog settings saved. Restart watchdog to apply." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14028 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14559 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14726 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15257 #: src/tachyon/tabs/monitoring/initController.ts:681 #: src/tachyon/tabs/monitoring/render.ts:40 msgid "All" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2373 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2398 msgid "All checks passed — Telegram bot should work correctly" msgstr "" @@ -346,6 +400,11 @@ msgstr "" msgid "All devices" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11727 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:69 +msgid "All Engines (Full Matrix)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:1968 msgid "All except selected" msgstr "" @@ -355,7 +414,7 @@ msgstr "" msgid "All Internet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:417 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:439 msgid "All Internet (Complete internet cutoff)" msgstr "" @@ -371,8 +430,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:14036 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14532 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14734 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15230 #: src/tachyon/tabs/monitoring/initController.ts:644 #: src/tachyon/tabs/monitoring/render.ts:49 msgid "All Routes" @@ -382,8 +441,8 @@ msgstr "" msgid "All servers" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10716 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10819 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10938 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11041 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:257 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:376 msgid "All services" @@ -393,7 +452,7 @@ msgstr "" msgid "All traffic from these IP addresses will be routed through the section unconditionally, ignoring all other conditions." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:451 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:473 msgid "Allow / Enable ONLY in scheduled hours (White period)" msgstr "" @@ -406,15 +465,15 @@ msgstr "" msgid "Allow Insecure TLS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:318 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:340 msgid "Allow only" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:591 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:634 msgid "Allow only listed sites (Whitelist)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:334 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:356 msgid "Allow only:" msgstr "" @@ -430,7 +489,7 @@ msgstr "" msgid "Allows limiting the list of servers for URLTest" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1707 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1732 msgid "Allows Tachyon to send diagnostic snapshots to ChatGPT or DeepSeek API for intelligent root-cause analysis and auto-repair recommendations." msgstr "" @@ -450,20 +509,30 @@ msgstr "" msgid "AmneziaWG Generator" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12719 -#: src/tachyon/tabs/diagnostic/initController.ts:968 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13403 +#: 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:17175 -#: src/tachyon/tabs/updates/initController.ts:902 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17877 +#: 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:1762 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1787 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:12116 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:565 +msgid "Applied" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12007 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:434 +msgid "Apply" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9552 msgid "Apply rules of this section only to selected protocols." msgstr "" @@ -472,22 +541,27 @@ msgstr "" msgid "Apply section rules only to the specified local IP addresses" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12849 -#: src/tachyon/tabs/diagnostic/initController.ts:1179 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11811 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:204 +msgid "Apply Strategy To" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13533 +#: src/tachyon/tabs/diagnostic/initController.ts:1181 msgid "Applying fix" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12847 -#: src/tachyon/tabs/diagnostic/initController.ts:1177 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13531 +#: src/tachyon/tabs/diagnostic/initController.ts:1179 msgid "Applying..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11302 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11524 #: 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:2172 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2197 msgid "At least one Admin Chat ID is required" msgstr "" @@ -504,17 +578,17 @@ 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:7225 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7565 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10534 -#: src/tachyon/tabs/dashboard/initController.ts:922 -#: src/tachyon/tabs/dashboard/initController.ts:1354 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7359 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7699 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10756 +#: 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 msgid "Auto" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10131 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10342 #: src/partials/modal/renderModal.ts:286 msgid "Auto refresh" msgstr "" @@ -523,7 +597,7 @@ msgstr "" msgid "Auto update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1964 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1989 msgid "Auto-detected domains" msgstr "" @@ -531,17 +605,21 @@ msgstr "" msgid "Auto-detected Domains" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1924 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1949 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1102 msgid "Auto-detects blocked domains from logs and adds them to the first section where they work via proxy." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1514 +msgid "Auto-failover of proxy sections" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2464 msgid "Auto-generate HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12777 -#: src/tachyon/tabs/diagnostic/initController.ts:1092 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13461 +#: src/tachyon/tabs/diagnostic/initController.ts:1094 msgid "Auto-Heal Network Stack" msgstr "" @@ -549,6 +627,11 @@ msgstr "" msgid "Auto-update Hosts Lists" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11703 +#: 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 "" @@ -569,13 +652,13 @@ 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:1898 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1923 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:7645 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7779 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3157 -#: src/tachyon/tabs/dashboard/initController.ts:1457 +#: src/tachyon/tabs/dashboard/initController.ts:1458 msgid "Automatically select the fastest node in the current level" msgstr "" @@ -583,19 +666,19 @@ msgstr "" msgid "Automatically update remote hosts lists on schedule" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10604 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10794 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10826 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11016 #: 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:10207 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:56 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10419 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:58 msgid "Available actions" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10796 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11018 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:348 msgid "Avg. latency" msgstr "" @@ -606,7 +689,7 @@ msgstr "" msgid "Backend validation failed: %s" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10551 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10773 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:58 msgid "Basic connectivity" msgstr "" @@ -615,7 +698,7 @@ msgstr "" msgid "Bearer Auth Token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:458 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:480 msgid "Beginning of the schedule interval (e.g. 22:00)" msgstr "" @@ -623,20 +706,35 @@ msgstr "" msgid "Belarus (by)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12083 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:528 +msgid "Benchmark stopped" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11832 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:230 +msgid "Benchmarking in progress..." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11711 +#: 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" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:319 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:341 msgid "Block" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:450 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:472 msgid "Block / Disable in scheduled hours (Standard)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:597 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:640 msgid "Block at DNS level" msgstr "" @@ -649,32 +747,32 @@ msgstr "" msgid "Block internet access or specific proxy sections for individual devices based on time and days." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:590 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:633 msgid "Block listed sites (Standard)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:334 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:356 msgid "Block:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:586 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:629 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:10552 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10774 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:59 msgid "Blocked resources" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:307 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:329 msgid "Blocked Sites" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:496 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:539 msgid "Blocked Sites (Domains)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9009 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9218 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:57 msgid "Bootstrap DNS" msgstr "" @@ -683,29 +781,29 @@ msgstr "" msgid "Bootstrap DNS Servers" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2123 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2148 msgid "Bot Status" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9389 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9408 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9598 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9617 #: 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:9408 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9617 #: 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:9408 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9617 #: 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:13325 -#: src/tachyon/tabs/diagnostic/initController.ts:1729 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14017 +#: src/tachyon/tabs/diagnostic/initController.ts:1745 msgid "Bug report downloaded" msgstr "" @@ -717,6 +815,12 @@ msgstr "" msgid "By flag emoji from name" msgstr "" +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:68 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:111 +msgid "ByeDPI (ciadpi)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:6504 msgid "ByeDPI listen address and port are assigned by Tachyon and must not be set in the strategy." msgstr "" @@ -736,32 +840,32 @@ msgstr "" msgid "ByeDPI option requires a value: %s" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9661 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9870 #: 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:9661 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9870 #: 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:9656 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 #: 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:9656 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9865 #: 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:9676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9885 #: 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:9676 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9885 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:108 msgid "ByeDPI sing-box outbound is not configured" msgstr "" @@ -786,32 +890,32 @@ msgstr "" msgid "Cache all built-in lists and databases even if they are not currently selected in any section. Recommended if you have plenty of storage space or USB drive." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1528 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1553 msgid "Cache File Path" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1542 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1567 msgid "Cache file path cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13222 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13914 #: ../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 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:607 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:655 -#: src/tachyon/tabs/diagnostic/initController.ts:1606 +#: src/tachyon/tabs/diagnostic/initController.ts:1622 msgid "Cancel" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8989 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9053 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9234 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9297 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9459 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9543 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9631 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11583 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9198 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9262 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9443 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9506 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9668 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9752 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9840 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12267 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:26 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:27 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:172 @@ -843,19 +947,19 @@ 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:11229 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11451 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:865 msgid "Check again" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11179 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11401 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:793 msgid "Check all" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16389 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16899 -#: src/tachyon/tabs/updates/initController.ts:536 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17087 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17601 +#: src/tachyon/tabs/updates/initController.ts:540 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:321 msgid "Check completed!" msgstr "" @@ -867,27 +971,27 @@ msgstr "" msgid "Check Connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11054 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11167 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11276 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11389 #: 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:7632 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7766 #: ../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:1444 +#: src/tachyon/tabs/dashboard/initController.ts:1445 msgid "Check interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10733 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10955 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:276 msgid "Check mode:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10311 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:160 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10533 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:172 msgid "Check Services" msgstr "" @@ -895,44 +999,44 @@ msgstr "" msgid "Check timeout after which the server is considered dead" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17233 -#: src/tachyon/tabs/updates/initController.ts:971 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17935 +#: src/tachyon/tabs/updates/initController.ts:975 msgid "Check update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7630 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7764 #: ../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:1442 +#: src/tachyon/tabs/dashboard/initController.ts:1443 msgid "Check URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11394 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11616 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:170 msgid "Check YouTube" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7761 -#: src/tachyon/tabs/dashboard/initController.ts:1623 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7895 +#: src/tachyon/tabs/dashboard/initController.ts:1624 msgid "Checking Connection..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16218 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16916 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:112 msgid "Checking for updates..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8979 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9043 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9224 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9285 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9368 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9449 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9533 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9621 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11571 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13576 -#: src/tachyon/tabs/diagnostic/initController.ts:2029 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9188 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9252 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9433 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9494 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9577 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9658 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9742 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9830 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12255 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14274 +#: src/tachyon/tabs/diagnostic/initController.ts:2051 #: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:14 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:15 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:15 @@ -957,32 +1061,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:2015 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2040 msgid "Checking…" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5135 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5251 #: src/tachyon/tabs/diagnostic/helpers/getCheckTitle.ts:2 msgid "checks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8949 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9427 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9158 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9636 #: 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:8938 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9384 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9438 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9147 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9593 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9647 #: 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:8961 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9170 #: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:27 msgid "Checks passed with manual DHCP" msgstr "" @@ -995,7 +1099,7 @@ msgstr "" msgid "Choose Hosts File..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:413 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:435 msgid "Choose whether to restrict the entire internet or only specific Tachyon routing sections." msgstr "" @@ -1003,7 +1107,7 @@ msgstr "" msgid "Choose whether to route traffic to all destinations except selected countries (Exclude) or only to selected countries (Include)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:425 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:447 msgid "Choose which routing sections to apply this schedule to." msgstr "" @@ -1024,12 +1128,12 @@ msgstr "" msgid "Clear" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12770 -#: src/tachyon/tabs/diagnostic/initController.ts:1085 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13454 +#: src/tachyon/tabs/diagnostic/initController.ts:1087 msgid "Clear DNS cache" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3296 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3336 msgid "Client Address" msgstr "" @@ -1037,7 +1141,7 @@ msgstr "" msgid "Client Certificate" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3308 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3348 msgid "Client DNS" msgstr "" @@ -1061,60 +1165,62 @@ msgstr "" msgid "Client link QR code" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3356 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3396 msgid "Client Private Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3366 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3406 msgid "Client Public Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3297 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3337 msgid "Client VPN IP address (e.g. 10.0.0.2/32)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7503 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10110 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10652 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11234 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11444 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13174 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14733 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14776 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16484 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16519 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7637 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10321 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10874 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11456 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11666 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11926 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13858 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15431 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15474 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17182 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17217 #: ../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 #: src/partials/modal/renderModal.ts:263 -#: src/tachyon/tabs/dashboard/initController.ts:1266 -#: src/tachyon/tabs/diagnostic/initController.ts:1551 +#: src/tachyon/tabs/dashboard/initController.ts:1267 +#: src/tachyon/tabs/diagnostic/initController.ts:1553 #: src/tachyon/tabs/monitoring/initController.ts:893 #: src/tachyon/tabs/monitoring/initController.ts:948 #: src/tachyon/tabs/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:337 #: 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:14055 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14056 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14753 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14754 #: 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:14702 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14703 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15400 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15401 #: 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:14018 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14600 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14716 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15298 #: src/tachyon/tabs/monitoring/initController.ts:729 #: src/tachyon/tabs/monitoring/render.ts:29 msgid "Closed" @@ -1136,7 +1242,7 @@ msgstr "" msgid "Cloudflare WARP API access token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2162 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2187 msgid "Comma-separated list of Telegram user IDs authorized to control the bot." msgstr "" @@ -1144,7 +1250,7 @@ msgstr "" msgid "Community Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6067 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6200 #: src/tachyon/services/core.service.ts:43 msgid "Component update available" msgstr "" @@ -1157,7 +1263,7 @@ msgstr "" msgid "Components" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5711 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5841 #: src/tachyon/helpers/singBoxVariant.ts:60 msgid "compressed" msgstr "" @@ -1170,11 +1276,11 @@ msgstr "" msgid "Conditions" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1514 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1539 msgid "Config File Path" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1668 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1693 msgid "Config Snapshots" msgstr "" @@ -1187,8 +1293,8 @@ 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:4963 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11649 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12333 #: src/tachyon/methods/custom/getDashboardSections.ts:1651 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:620 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:141 @@ -1210,8 +1316,8 @@ msgstr "" msgid "Connected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12930 -#: src/tachyon/tabs/diagnostic/initController.ts:1274 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13614 +#: src/tachyon/tabs/diagnostic/initController.ts:1276 msgid "Connected Devices" msgstr "" @@ -1219,56 +1325,56 @@ msgstr "" msgid "Connection URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15526 #: src/tachyon/tabs/monitoring/initController.ts:1012 msgid "Connections are unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11678 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12362 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:174 msgid "Connectivity probe failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:585 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:628 msgid "Content Mode" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3415 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3455 msgid "Cookie packet junk size (S3)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2975 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2985 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1623 #: src/helpers/copyToClipboard.ts:10 msgid "Copied" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10103 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10314 #: ../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:16260 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16958 #: 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:7435 -#: src/tachyon/tabs/dashboard/initController.ts:1191 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7569 +#: 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:13136 -#: src/tachyon/tabs/diagnostic/initController.ts:1509 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13820 +#: src/tachyon/tabs/diagnostic/initController.ts:1511 msgid "Copy Support Report" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9414 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9623 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:89 msgid "Could not compare FakeIP and control public IPs" msgstr "" @@ -1277,8 +1383,8 @@ msgstr "" msgid "Country code (e.g. ru, us, de)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13087 -#: src/tachyon/tabs/diagnostic/initController.ts:1450 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13771 +#: src/tachyon/tabs/diagnostic/initController.ts:1452 msgid "Current Diagnosis" msgstr "" @@ -1295,12 +1401,12 @@ msgstr "" msgid "Currently unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10554 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10776 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:61 msgid "Custom" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1772 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1797 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:964 msgid "Custom API Endpoint URL" msgstr "" @@ -1313,32 +1419,32 @@ msgstr "" msgid "Custom DNS Records (Hosts)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10553 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10775 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:60 msgid "Custom domains" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3440 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3480 msgid "Custom header for cookie packet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3446 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3486 msgid "Custom header for data packet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3428 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3468 msgid "Custom header for handshake initiation" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3434 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3474 msgid "Custom header for handshake response" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1728 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1753 msgid "Custom OpenAI-Compatible API" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1773 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1798 msgid "Custom OpenAI-compatible API endpoint URL (e.g. http://192.168.1.100:11434/v1/chat/completions)" msgstr "" @@ -1346,6 +1452,19 @@ msgstr "" msgid "Custom outbound configurations in JSON format" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11759 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:144 +msgid "Custom Target URL..." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:307 +msgid "Daily Quota" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:516 +msgid "Daily time quota (minutes)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:515 msgid "Dashboard" msgstr "" @@ -1355,16 +1474,16 @@ msgstr "" msgid "Dashboard currently unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:481 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:503 msgid "Days of Week" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2288 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2313 msgid "Default (auto)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1609 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1620 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1634 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1645 msgid "Default (Direct WAN / Default mixed proxy)" msgstr "" @@ -1404,7 +1523,7 @@ msgstr "" msgid "Detect server country" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1584 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1609 msgid "Detects and drops STUN/TURN packets in nftables to prevent real IP leaks via WebRTC." msgstr "" @@ -1433,8 +1552,8 @@ msgstr "" msgid "Device or IP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13005 -#: src/tachyon/tabs/diagnostic/initController.ts:1357 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13689 +#: src/tachyon/tabs/diagnostic/initController.ts:1359 msgid "Device updated" msgstr "" @@ -1442,12 +1561,12 @@ msgstr "" 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:8963 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9172 #: 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:8963 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9172 #: src/tachyon/tabs/diagnostic/checks/getDnsCheckPresentation.ts:36 msgid "DHCP is managed manually" msgstr "" @@ -1456,8 +1575,8 @@ msgstr "" msgid "Diagnostics" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10525 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10531 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10747 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10753 #: ../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 @@ -1468,8 +1587,8 @@ msgstr "" msgid "Direct (Default)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12993 -#: src/tachyon/tabs/diagnostic/initController.ts:1344 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13677 +#: src/tachyon/tabs/diagnostic/initController.ts:1346 msgid "Direct Bypass" msgstr "" @@ -1477,13 +1596,13 @@ msgstr "" msgid "Direct connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12987 -#: src/tachyon/tabs/diagnostic/initController.ts:1335 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13671 +#: src/tachyon/tabs/diagnostic/initController.ts:1337 msgid "Direct WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10243 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:92 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10455 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:94 msgid "Disable autostart" msgstr "" @@ -1495,8 +1614,8 @@ msgstr "" msgid "Disable the QUIC protocol to improve compatibility or fix issues with video streaming" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:347 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:374 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:369 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:396 msgid "Disabled" msgstr "" @@ -1504,6 +1623,10 @@ msgstr "" msgid "Disabling interception is incompatible with action=zapret2 because Tachyon sends matched traffic through NFQUEUE." msgstr "" +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:140 +msgid "Discord (Gateway / API / Voice)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2627 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3084 msgid "Display name" @@ -1518,7 +1641,7 @@ msgstr "" msgid "DNS Check Interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1842 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1867 msgid "DNS Check Interval (s)" msgstr "" @@ -1526,7 +1649,7 @@ msgstr "" msgid "DNS Failures Before Switching" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9021 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9230 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:75 msgid "DNS on router" msgstr "" @@ -1579,7 +1702,7 @@ msgstr "" msgid "DNS server address cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3309 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3349 msgid "DNS server pushed to the client configuration" msgstr "" @@ -1629,7 +1752,7 @@ msgstr "" msgid "DNS Unavailability Timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11528 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12212 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:26 msgid "Do not panic, everything can be fixed, just..." msgstr "" @@ -1658,25 +1781,25 @@ msgstr "" msgid "Do not test specified servers." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12558 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12578 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12586 -#: src/tachyon/tabs/diagnostic/initController.ts:729 -#: src/tachyon/tabs/diagnostic/initController.ts:771 -#: src/tachyon/tabs/diagnostic/initController.ts:779 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13242 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13262 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13270 +#: 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:12567 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12569 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12569 -#: src/tachyon/tabs/diagnostic/initController.ts:745 -#: src/tachyon/tabs/diagnostic/initController.ts:757 -#: src/tachyon/tabs/diagnostic/initController.ts:758 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13251 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13253 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13253 +#: 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:9142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9351 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:54 msgid "Does not resolve" msgstr "" @@ -1693,7 +1816,7 @@ msgstr "" msgid "Domain Resolver" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1936 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1961 msgid "Domain test sections" msgstr "" @@ -1706,7 +1829,7 @@ msgstr "" msgid "Domains automatically detected by Smart Detect or added via Telegram bot. You can manually edit or remove them here." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:497 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:540 msgid "Domains to block for the selected devices. Leave empty to block all internet. Enter one domain per line, e.g. youtube.com. Use the preset buttons to quickly add common categories." msgstr "" @@ -1718,14 +1841,14 @@ msgstr "" msgid "Dont Touch My DHCP!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7946 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7958 -#: src/tachyon/tabs/dashboard/initController.ts:1848 -#: src/tachyon/tabs/dashboard/initController.ts:1861 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8080 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8092 +#: 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:10098 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10309 #: src/partials/modal/renderModal.ts:253 msgid "Download" msgstr "" @@ -1770,9 +1893,9 @@ msgstr "" msgid "Download through" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14726 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14773 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14912 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15424 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15471 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15610 #: src/tachyon/tabs/monitoring/initController.ts:886 #: src/tachyon/tabs/monitoring/initController.ts:945 #: src/tachyon/tabs/monitoring/initController.ts:1134 @@ -1783,6 +1906,11 @@ msgstr "" msgid "Downloading and applying rule sets and lists..." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11740 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:84 +msgid "DPI Engine" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:432 msgid "Drag rows to change priority. The rule at the top is checked first." msgstr "" @@ -1809,7 +1937,7 @@ msgstr "" msgid "e.g. google.com, 1.1.1.1, 443" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:387 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:409 msgid "e.g. Kids Phone (Night YouTube)" msgstr "" @@ -1832,11 +1960,11 @@ msgstr "" msgid "Enable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1897 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1922 msgid "Enable Adaptive Intervals" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1706 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1731 msgid "Enable AI Doctor (ChatGPT / LLM Analysis)" msgstr "" @@ -1844,7 +1972,7 @@ msgstr "" msgid "Enable AI Doctor (LLM Integration)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1904 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1929 msgid "Enable Anomaly Detection" msgstr "" @@ -1856,8 +1984,8 @@ msgstr "" msgid "Enable automatic updates for remote lists and rule sets" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10253 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:102 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10465 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:104 msgid "Enable autostart" msgstr "" @@ -1865,16 +1993,16 @@ 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:1876 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1901 msgid "Enable Config Validation" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12778 -#: src/tachyon/tabs/diagnostic/initController.ts:1093 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13462 +#: src/tachyon/tabs/diagnostic/initController.ts:1095 msgid "Enable Direct WAN Bypass" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1836 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1861 msgid "Enable DNS Continuous Check" msgstr "" @@ -1882,15 +2010,15 @@ msgstr "" msgid "Enable DNS Turbo Cache" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1849 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1874 msgid "Enable Firewall Reload Dedup" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1883 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1908 msgid "Enable Graceful Degradation" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1856 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1881 msgid "Enable Health Metrics" msgstr "" @@ -1910,25 +2038,25 @@ msgstr "" msgid "Enable Output Network Interface" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1812 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1837 msgid "Enable Proxy Health Monitor" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1788 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1813 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:778 msgid "Enable RAG (Knowledge Base Retrieval)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1869 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1894 msgid "Enable Smart Cooldowns" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1923 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1948 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:1119 msgid "Enable Smart Detect" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2133 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2158 msgid "Enable Telegram Bot" msgstr "" @@ -1940,7 +2068,7 @@ msgstr "" msgid "Enable WAN DNS Fallback for Main DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1680 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1705 msgid "Enable Watchdog" msgstr "" @@ -1952,22 +2080,27 @@ msgstr "" msgid "Enable YACD WAN Access" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2134 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2159 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:1681 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1706 msgid "Enables the background watchdog process to monitor services and auto-recover on failures." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:470 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:492 msgid "End of the schedule interval (e.g. 08:00). Supports spans crossing midnight." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:469 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:491 msgid "End Time (HH:MM)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11877 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:283 +msgid "Engine" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2727 msgid "Enter a complete sing-box inbound object" msgstr "" @@ -1983,7 +2116,7 @@ msgstr "" msgid "Enter a display name" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11047 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11269 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:644 msgid "Enter a domain or IP to check (e.g. example.com)..." msgstr "" @@ -1993,11 +2126,15 @@ msgstr "" msgid "Enter a level name" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:529 +msgid "Enter a whole number of minutes between 0 and 1440" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2482 msgid "Enter HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2145 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2170 msgid "Enter the API token obtained from @BotFather." msgstr "" @@ -2112,31 +2249,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:12865 -#: src/tachyon/tabs/diagnostic/initController.ts:1200 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13549 +#: src/tachyon/tabs/diagnostic/initController.ts:1202 msgid "Failed to apply fix" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15101 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15115 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4016 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12120 +#: src/tachyon/methods/shell/index.ts:1140 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:569 +msgid "Failed to apply strategy" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15799 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15813 #: 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:15130 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15840 #: 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:12723 -#: src/tachyon/tabs/diagnostic/initController.ts:972 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13407 +#: src/tachyon/tabs/diagnostic/initController.ts:974 msgid "Failed to copy report to clipboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2977 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2987 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1625 #: src/helpers/copyToClipboard.ts:12 msgid "Failed to copy!" @@ -2146,23 +2290,23 @@ msgstr "" msgid "Failed to delete snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3260 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3263 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16984 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16984 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17044 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17216 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3276 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3279 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17686 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17686 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17746 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17918 #: src/tachyon/methods/shell/index.ts:171 #: src/tachyon/methods/shell/index.ts:178 -#: src/tachyon/tabs/updates/initController.ts:657 -#: src/tachyon/tabs/updates/initController.ts:658 -#: src/tachyon/tabs/updates/initController.ts:735 -#: src/tachyon/tabs/updates/initController.ts:949 +#: src/tachyon/tabs/updates/initController.ts:661 +#: src/tachyon/tabs/updates/initController.ts:662 +#: src/tachyon/tabs/updates/initController.ts:739 +#: src/tachyon/tabs/updates/initController.ts:953 msgid "Failed to execute" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13328 -#: src/tachyon/tabs/diagnostic/initController.ts:1732 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14020 +#: src/tachyon/tabs/diagnostic/initController.ts:1748 msgid "Failed to generate bug report" msgstr "" @@ -2171,6 +2315,15 @@ msgstr "" msgid "Failed to generate WARP config:" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3974 +#: src/tachyon/methods/shell/index.ts:1092 +msgid "Failed to get fuzzer status" +msgstr "" + +#: src/tachyon/methods/shell/index.ts:1175 +msgid "Failed to get fuzzer strategies" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:630 msgid "Failed to load snapshots" msgstr "" @@ -2179,7 +2332,7 @@ msgstr "" msgid "Failed to parse file:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10695 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10917 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:231 msgid "Failed to parse target list." msgstr "" @@ -2188,12 +2341,12 @@ msgstr "" msgid "Failed to parse WARP config:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3631 -#: src/tachyon/methods/shell/index.ts:657 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3653 +#: 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:11347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11569 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:115 msgid "Failed to receive response from AI service." msgstr "" @@ -2202,10 +2355,10 @@ msgstr "" msgid "Failed to reset settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13164 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13247 -#: src/tachyon/tabs/diagnostic/initController.ts:1541 -#: src/tachyon/tabs/diagnostic/initController.ts:1635 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13848 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13939 +#: src/tachyon/tabs/diagnostic/initController.ts:1543 +#: src/tachyon/tabs/diagnostic/initController.ts:1651 msgid "Failed to restore native internet" msgstr "" @@ -2213,8 +2366,8 @@ msgstr "" msgid "Failed to restore snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2360 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2382 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2385 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2407 msgid "Failed to run diagnostics — is the tachyon binary installed?" msgstr "" @@ -2238,12 +2391,22 @@ msgstr "" msgid "Failed to save snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12103 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:551 +msgid "Failed to start benchmark" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2104 msgid "Failed to start bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10678 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11250 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3951 +#: src/tachyon/methods/shell/index.ts:1066 +msgid "Failed to start fuzzer" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10900 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11472 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:213 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:890 msgid "Failed to start service check." @@ -2253,54 +2416,63 @@ msgstr "" msgid "Failed to start watchdog" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2093 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2118 msgid "Failed to stop bot" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3988 +#: src/tachyon/methods/shell/index.ts:1107 +msgid "Failed to stop fuzzer" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:355 msgid "Failed to stop watchdog" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7046 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7052 -#: src/tachyon/tabs/dashboard/initController.ts:699 -#: src/tachyon/tabs/dashboard/initController.ts:705 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7180 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7186 +#: 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:13010 -#: src/tachyon/tabs/diagnostic/initController.ts:1362 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13694 +#: src/tachyon/tabs/diagnostic/initController.ts:1364 msgid "Failed to update device" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6753 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6753 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6768 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6800 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6803 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7703 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7706 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6886 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6886 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6901 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6934 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6937 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7837 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7840 #: src/tachyon/tabs/dashboard/initController.ts:309 #: src/tachyon/tabs/dashboard/initController.ts:310 #: src/tachyon/tabs/dashboard/initController.ts:330 -#: src/tachyon/tabs/dashboard/initController.ts:376 -#: src/tachyon/tabs/dashboard/initController.ts:380 -#: src/tachyon/tabs/dashboard/initController.ts:1536 -#: src/tachyon/tabs/dashboard/initController.ts:1540 +#: src/tachyon/tabs/dashboard/initController.ts:377 +#: src/tachyon/tabs/dashboard/initController.ts:381 +#: src/tachyon/tabs/dashboard/initController.ts:1537 +#: src/tachyon/tabs/dashboard/initController.ts:1541 msgid "Failed to update subscriptions" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9414 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1526 +msgid "Failover failure threshold" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9623 #: 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:9414 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9623 #: 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:9386 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9595 #: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:46 msgid "FakeIP works; public IP comparison is inconclusive" msgstr "" @@ -2313,22 +2485,22 @@ msgstr "" msgid "Fallback on unknown DC" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1837 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1862 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:7650 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7784 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3168 -#: src/tachyon/tabs/dashboard/initController.ts:1463 +#: src/tachyon/tabs/dashboard/initController.ts:1464 msgid "Faster server search interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4285 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4401 #: src/tachyon/methods/custom/getDashboardSections.ts:661 msgid "Fastest" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10861 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11083 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:425 msgid "Filter by service:" msgstr "" @@ -2341,18 +2513,18 @@ msgstr "" msgid "Finland (fi)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9206 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9415 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:136 msgid "Firewall WAN port" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12859 -#: src/tachyon/tabs/diagnostic/initController.ts:1194 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13543 +#: src/tachyon/tabs/diagnostic/initController.ts:1196 msgid "Fix applied" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12764 -#: src/tachyon/tabs/diagnostic/initController.ts:1079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13448 +#: src/tachyon/tabs/diagnostic/initController.ts:1081 msgid "Fix resolv.conf" msgstr "" @@ -2361,15 +2533,15 @@ msgstr "" msgid "Fix the highlighted fields and save again." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12567 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12855 -#: src/tachyon/tabs/diagnostic/initController.ts:751 -#: src/tachyon/tabs/diagnostic/initController.ts:1190 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13251 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13539 +#: 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:12781 -#: src/tachyon/tabs/diagnostic/initController.ts:1096 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13465 +#: src/tachyon/tabs/diagnostic/initController.ts:1098 msgid "Flush Conntrack Table" msgstr "" @@ -2381,7 +2553,7 @@ msgstr "" msgid "Forced device routing" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1594 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1619 msgid "Forces sing-box to tunnel DNS requests via DoQ with Encrypted Client Hello (ECH) for SNI hiding." msgstr "" @@ -2409,7 +2581,7 @@ msgstr "" msgid "Fronting proxy protocol" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11397 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11619 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:173 msgid "Full System Diagnostic" msgstr "" @@ -2434,8 +2606,8 @@ msgstr "" msgid "Generate a random 16-character hexadecimal HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10338 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:187 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10560 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:199 msgid "Generate bug report" msgstr "" @@ -2454,7 +2626,7 @@ msgstr "" msgid "Generate WARP Config" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9170 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9379 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:89 msgid "Generated inbound" msgstr "" @@ -2487,8 +2659,8 @@ msgstr "" msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer ." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10262 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:111 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10474 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:113 msgid "Get global check" msgstr "" @@ -2496,18 +2668,23 @@ 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:12533 -#: src/tachyon/tabs/diagnostic/initController.ts:701 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13217 +#: src/tachyon/tabs/diagnostic/initController.ts:703 msgid "Global check" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12544 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12548 -#: src/tachyon/tabs/diagnostic/initController.ts:712 -#: src/tachyon/tabs/diagnostic/initController.ts:716 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13228 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13232 +#: 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:12116 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:565 +msgid "Global Default" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2961 msgid "gRPC service" msgstr "" @@ -2520,28 +2697,28 @@ msgstr "" msgid "Health Checks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11262 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11484 #: 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 "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3482 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3488 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3494 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3522 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3528 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3534 msgid "Hex or binary junk payload" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3464 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3470 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3476 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3504 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3510 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3516 msgid "Hex or binary payload" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3452 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3492 msgid "Hex or binary payload for init" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3458 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3498 msgid "Hex or binary payload for response" msgstr "" @@ -2589,14 +2766,14 @@ msgstr "" msgid "Hide URLTest group nodes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10150 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10361 #: src/partials/modal/renderModal.ts:310 msgid "Hide values" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7637 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7771 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3132 -#: src/tachyon/tabs/dashboard/initController.ts:1449 +#: src/tachyon/tabs/dashboard/initController.ts:1450 msgid "Higher-level check interval" msgstr "" @@ -2604,13 +2781,13 @@ msgstr "" msgid "Higher-priority DNS Check" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13111 -#: src/tachyon/tabs/diagnostic/initController.ts:1478 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13795 +#: src/tachyon/tabs/diagnostic/initController.ts:1480 msgid "History" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14716 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14769 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15414 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15467 #: src/tachyon/tabs/monitoring/initController.ts:876 #: src/tachyon/tabs/monitoring/initController.ts:941 msgid "Host" @@ -2624,7 +2801,7 @@ msgstr "" msgid "Hosts Lists Update Interval" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1863 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1888 msgid "How many hours of metrics to keep (default 24)." msgstr "" @@ -2636,15 +2813,15 @@ msgstr "" msgid "How often the currently selected server is checked" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1843 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1868 msgid "How often to check DNS health in seconds (default 60)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1819 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1844 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:2185 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2210 msgid "How often to check Telegram for new messages (default: 5)." msgstr "" @@ -2661,7 +2838,7 @@ msgstr "" msgid "HTTP" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5026 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5142 #: src/tachyon/api.ts:27 msgid "HTTP error" msgstr "" @@ -2678,14 +2855,14 @@ msgstr "" msgid "HWID" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7521 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7655 #: ../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:1294 +#: src/tachyon/tabs/dashboard/initController.ts:1295 msgid "Idle timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1884 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1909 msgid "If one health check fails with an error, continue running other checks instead of stopping." msgstr "" @@ -2764,15 +2941,15 @@ msgstr "" msgid "Information" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3500 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3540 msgid "Init handshake timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3427 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3467 msgid "Init packet header (H1)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3403 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3443 msgid "Init packet junk size (S1)" msgstr "" @@ -2804,35 +2981,45 @@ msgstr "" msgid "Init Packet Payload (I5)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3451 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3491 msgid "Init payload (I1)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3499 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3539 msgid "Init timeout (Itime)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16474 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17242 -#: src/tachyon/tabs/updates/initController.ts:985 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:141 +msgid "Instagram / Meta (TLS 1.3)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17172 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17944 +#: 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:17644 -#: src/tachyon/tabs/updates/initController.ts:1473 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18367 +#: src/tachyon/tabs/updates/initController.ts:1502 msgid "Install another build:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17524 -#: src/tachyon/tabs/updates/initController.ts:1334 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:100 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:110 +msgid "Installed" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18247 +#: src/tachyon/tabs/updates/initController.ts:1363 msgid "Installed build → Available build" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16763 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17532 -#: src/tachyon/tabs/updates/initController.ts:355 -#: src/tachyon/tabs/updates/initController.ts:1342 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17465 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18255 +#: src/tachyon/tabs/updates/initController.ts:359 +#: src/tachyon/tabs/updates/initController.ts:1371 msgid "Installed version is newer than release" msgstr "" @@ -2848,12 +3035,12 @@ msgstr "" msgid "Interface monitoring for Bad WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7523 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7655 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7657 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7789 #: ../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:1296 -#: src/tachyon/tabs/dashboard/initController.ts:1469 +#: src/tachyon/tabs/dashboard/initController.ts:1297 +#: src/tachyon/tabs/dashboard/initController.ts:1470 msgid "Interrupt connections" msgstr "" @@ -2865,8 +3052,8 @@ msgstr "" msgid "Interrupt connections when URLTest switches the selected server" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7519 -#: src/tachyon/tabs/dashboard/initController.ts:1292 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7653 +#: src/tachyon/tabs/dashboard/initController.ts:1293 msgid "Interval" msgstr "" @@ -2897,7 +3084,7 @@ msgstr "" msgid "Invalid domain address" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:511 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:554 msgid "Invalid domain: empty prefix value" msgstr "" @@ -3251,20 +3438,20 @@ 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:12567 -#: src/tachyon/tabs/diagnostic/initController.ts:747 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13251 +#: src/tachyon/tabs/diagnostic/initController.ts:749 msgid "Issues" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8944 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9433 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9153 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9642 #: 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:12881 -#: src/tachyon/tabs/diagnostic/initController.ts:1219 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13565 +#: src/tachyon/tabs/diagnostic/initController.ts:1221 msgid "Issues detected. Review the diagnosis above." msgstr "" @@ -3311,7 +3498,7 @@ msgstr "" msgid "Junk Min Size (Jmin)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3385 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3425 msgid "Junk packet count (Jc)" msgstr "" @@ -3319,39 +3506,39 @@ msgstr "" msgid "Junk Packet Count (Jc)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3397 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3437 msgid "Junk packet max size (Jmax)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3391 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3431 msgid "Junk packet min size (Jmin)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3481 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3521 msgid "Junk payload (J1)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3487 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3527 msgid "Junk payload (J2)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3493 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3533 msgid "Junk payload (J3)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3416 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3456 msgid "Junk size for cookie packet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3404 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3444 msgid "Junk size for initiation packet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3410 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3450 msgid "Junk size for response packet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3422 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3462 msgid "Junk size for transport packet" msgstr "" @@ -3384,19 +3571,19 @@ msgstr "" msgid "Keyword must not contain spaces or commas" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13097 -#: src/tachyon/tabs/diagnostic/initController.ts:1462 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13781 +#: src/tachyon/tabs/diagnostic/initController.ts:1464 msgid "LAN Devices" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1749 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1774 msgid "Language for AI Doctor diagnosis responses" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3517 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3536 -#: src/tachyon/methods/shell/index.ts:512 -#: src/tachyon/methods/shell/index.ts:533 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3539 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3558 +#: src/tachyon/methods/shell/index.ts:519 +#: src/tachyon/methods/shell/index.ts:540 msgid "Latency test failed" msgstr "" @@ -3404,15 +3591,15 @@ msgstr "" msgid "Latency test URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16765 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17530 -#: src/tachyon/tabs/updates/initController.ts:358 -#: src/tachyon/tabs/updates/initController.ts:1340 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17467 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18253 +#: 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:17532 -#: src/tachyon/tabs/updates/initController.ts:1342 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18255 +#: src/tachyon/tabs/updates/initController.ts:1371 msgid "Latest version:" msgstr "" @@ -3424,11 +3611,15 @@ msgstr "" msgid "Level name" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:517 +msgid "Limit device network usage per day. When the quota is exhausted, the device is blocked until midnight. 0 disables the limit." +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7166 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:1965 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1990 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 "" @@ -3444,7 +3635,7 @@ msgstr "" msgid "Listen port" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9200 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9409 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:125 msgid "Listening port" msgstr "" @@ -3453,7 +3644,7 @@ msgstr "" msgid "Lists and rule sets successfully updated!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1727 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1752 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:869 msgid "LM Studio (Local PC / Server)" msgstr "" @@ -3483,35 +3674,37 @@ msgstr "" msgid "Loading client link..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12900 -#: src/tachyon/tabs/diagnostic/initController.ts:1241 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13584 +#: src/tachyon/tabs/diagnostic/initController.ts:1243 msgid "Loading connected LAN devices..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14087 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14819 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14785 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15517 #: 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:10627 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10666 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10849 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10888 #: 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:17406 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17419 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17429 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17439 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17449 -#: src/tachyon/tabs/updates/initController.ts:1186 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18119 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18132 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18152 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18162 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18172 #: src/tachyon/tabs/updates/initController.ts:1201 -#: src/tachyon/tabs/updates/initController.ts:1219 -#: src/tachyon/tabs/updates/initController.ts:1233 -#: src/tachyon/tabs/updates/initController.ts:1247 +#: src/tachyon/tabs/updates/initController.ts:1216 +#: src/tachyon/tabs/updates/initController.ts:1234 +#: src/tachyon/tabs/updates/initController.ts:1248 +#: src/tachyon/tabs/updates/initController.ts:1262 +#: src/tachyon/tabs/updates/initController.ts:1276 msgid "Loading..." msgstr "" @@ -3523,16 +3716,16 @@ msgstr "" msgid "Local Address" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1565 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1590 msgid "Log Level" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5713 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5843 #: src/tachyon/helpers/singBoxVariant.ts:62 msgid "lx" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9016 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9225 #: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:67 msgid "Main DNS" msgstr "" @@ -3542,10 +3735,10 @@ 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:7218 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7558 -#: src/tachyon/tabs/dashboard/initController.ts:913 -#: src/tachyon/tabs/dashboard/initController.ts:1345 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7352 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7692 +#: src/tachyon/tabs/dashboard/initController.ts:914 +#: src/tachyon/tabs/dashboard/initController.ts:1346 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:450 msgid "Manual" msgstr "" @@ -3566,6 +3759,10 @@ msgstr "" msgid "MASQUE Private Key" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3297 +msgid "Masquerade LAN traffic into tailnet" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9321 msgid "Match destination IPs or subnets" msgstr "" @@ -3582,11 +3779,11 @@ 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:1911 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1936 msgid "Max reconnects per hour before alert (default 10)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3398 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3438 msgid "Maximum size of junk packets" msgstr "" @@ -3594,8 +3791,8 @@ 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:7970 -#: src/tachyon/tabs/dashboard/initController.ts:1874 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8104 +#: src/tachyon/tabs/dashboard/initController.ts:1877 msgid "Memory Usage" msgstr "" @@ -3607,15 +3804,20 @@ msgstr "" msgid "Method" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1862 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1887 msgid "Metrics Retention (hours)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:319 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:325 +msgid "min/day" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2658 msgid "Minimum latency difference in milliseconds that triggers switching to a faster server." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3392 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3432 msgid "Minimum size of junk packets" msgstr "" @@ -3635,7 +3837,7 @@ msgstr "" msgid "Mode" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1736 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1761 msgid "Model name to use. Leave empty to use default (gpt-4o-mini / claude-3-5-haiku / deepseek-chat / llama3:latest)." msgstr "" @@ -3659,7 +3861,7 @@ msgstr "" msgid "Monitoring & Analytics" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1905 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1930 msgid "Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour." msgstr "" @@ -3672,11 +3874,11 @@ msgid "Move up" msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8384 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3316 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3356 msgid "MTU" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2175 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2200 msgid "Must be a comma-separated list of numeric IDs" msgstr "" @@ -3694,13 +3896,17 @@ msgstr "" msgid "Name shown in the priority level list" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13154 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13239 -#: src/tachyon/tabs/diagnostic/initController.ts:1531 -#: src/tachyon/tabs/diagnostic/initController.ts:1627 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13931 +#: src/tachyon/tabs/diagnostic/initController.ts:1533 +#: src/tachyon/tabs/diagnostic/initController.ts:1643 msgid "Native internet restored. Tachyon stopped." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3287 +msgid "Native tailscaled (tailnet reachable from LAN without client)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9249 msgid "Netherlands (nl)" msgstr "" @@ -3722,20 +3928,20 @@ msgstr "" msgid "New domains:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6065 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6198 #: 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:9501 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9587 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9710 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9796 #: 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:9501 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9587 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9710 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9796 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:99 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:96 msgid "NFQUEUE range overlaps with another rule" @@ -3757,14 +3963,14 @@ msgstr "" msgid "NFQWS2 strategy cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7146 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7149 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7209 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7549 -#: src/tachyon/tabs/dashboard/initController.ts:821 -#: src/tachyon/tabs/dashboard/initController.ts:825 -#: src/tachyon/tabs/dashboard/initController.ts:901 -#: src/tachyon/tabs/dashboard/initController.ts:1333 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7280 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7283 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7343 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7683 +#: src/tachyon/tabs/dashboard/initController.ts:822 +#: src/tachyon/tabs/dashboard/initController.ts:826 +#: src/tachyon/tabs/dashboard/initController.ts:902 +#: src/tachyon/tabs/dashboard/initController.ts:1334 msgid "No" msgstr "" @@ -3773,13 +3979,13 @@ msgstr "" msgid "No active clients" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15536 #: src/tachyon/tabs/monitoring/initController.ts:1026 msgid "No active connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12911 -#: src/tachyon/tabs/diagnostic/initController.ts:1253 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13595 +#: src/tachyon/tabs/diagnostic/initController.ts:1255 msgid "No active DHCP clients found on local network." msgstr "" @@ -3788,17 +3994,22 @@ msgstr "" msgid "No active routing sections found." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10702 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11905 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:311 +msgid "No benchmark results yet. Select engine and click \"Start Benchmark\"." +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10924 #: 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:14838 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15536 #: src/tachyon/tabs/monitoring/initController.ts:1027 msgid "No closed connections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9126 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9335 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:32 msgid "No conflict detected" msgstr "" @@ -3807,21 +4018,21 @@ msgstr "" msgid "No Custom Rules Matched" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12694 -#: src/tachyon/tabs/diagnostic/initController.ts:941 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13378 +#: src/tachyon/tabs/diagnostic/initController.ts:943 msgid "No DHCP clients detected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13027 -#: src/tachyon/tabs/diagnostic/initController.ts:1380 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13711 +#: 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:1980 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2005 msgid "No domains detected yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9246 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9455 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:187 msgid "No enabled server inbounds configured" msgstr "" @@ -3830,37 +4041,37 @@ msgstr "" msgid "No file selected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12888 -#: src/tachyon/tabs/diagnostic/initController.ts:1228 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13572 +#: 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:12569 -#: src/tachyon/tabs/diagnostic/initController.ts:758 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13253 +#: src/tachyon/tabs/diagnostic/initController.ts:760 msgid "No issues found" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9351 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9560 #: 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:9179 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9388 #: 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:9666 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9875 #: 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:9491 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9700 #: 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:9577 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9786 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:82 msgid "No rules use Zapret2" msgstr "" @@ -3874,31 +4085,33 @@ msgstr "" msgid "No snapshots yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7451 -#: src/tachyon/tabs/dashboard/initController.ts:1210 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7585 +#: src/tachyon/tabs/dashboard/initController.ts:1211 msgid "Node list is empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7290 -#: src/tachyon/tabs/dashboard/initController.ts:1009 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7424 +#: src/tachyon/tabs/dashboard/initController.ts:1010 msgid "Nodes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12691 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:314 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:333 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13375 +#: ../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 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:355 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:449 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2741 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3033 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3042 -#: src/tachyon/tabs/diagnostic/initController.ts:932 +#: src/tachyon/tabs/diagnostic/initController.ts:934 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:4963 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9135 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11660 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9344 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12344 #: src/tachyon/methods/custom/getDashboardSections.ts:1654 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:623 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:46 @@ -3913,47 +4126,52 @@ msgstr "" msgid "Not connected" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9156 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9256 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9365 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9465 #: 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:10502 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10724 #: src/tachyon/tabs/diagnostic/partials/renderCheckSection.ts:193 msgid "Not implement yet" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5698 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5703 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17429 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17439 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17449 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5833 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18142 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18152 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18162 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18172 #: src/tachyon/helpers/singBoxVariant.ts:38 #: src/tachyon/helpers/singBoxVariant.ts:46 -#: src/tachyon/tabs/updates/initController.ts:1222 -#: src/tachyon/tabs/updates/initController.ts:1236 -#: src/tachyon/tabs/updates/initController.ts:1250 +#: 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:101 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:106 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:111 msgid "Not installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9149 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9358 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:62 msgid "Not public" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9207 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9416 #: 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:11611 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11630 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11635 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11683 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12295 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12314 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12319 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12367 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:332 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:826 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:91 @@ -3963,16 +4181,16 @@ msgstr "" msgid "Not responding" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5299 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12091 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12261 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12307 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12369 -#: src/tachyon/tabs/diagnostic/diagnostic.store.ts:140 -#: src/tachyon/tabs/diagnostic/initController.ts:125 -#: src/tachyon/tabs/diagnostic/initController.ts:356 -#: src/tachyon/tabs/diagnostic/initController.ts:414 -#: src/tachyon/tabs/diagnostic/initController.ts:500 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5417 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12775 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12945 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12991 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13053 +#: src/tachyon/tabs/diagnostic/diagnostic.store.ts:142 +#: src/tachyon/tabs/diagnostic/initController.ts:127 +#: src/tachyon/tabs/diagnostic/initController.ts:358 +#: src/tachyon/tabs/diagnostic/initController.ts:416 +#: src/tachyon/tabs/diagnostic/initController.ts:502 msgid "Not running" msgstr "" @@ -3980,31 +4198,31 @@ msgstr "" msgid "Not set" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:608 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:651 msgid "Notify in Telegram" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2257 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2282 msgid "Notify on Certificate Warnings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2205 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2230 msgid "Notify on Core Crashes" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2270 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2295 msgid "Notify on DNS Leaks" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2231 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2256 msgid "Notify on Server Switches" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2218 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2243 msgid "Notify on Service Restarts" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2244 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2269 msgid "Notify on Subscription Updates" msgstr "" @@ -4012,7 +4230,11 @@ msgstr "" msgid "Number of consecutive failed checks required before switching DNS servers." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1825 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1527 +msgid "Number of consecutive failed probes before switching sections" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1850 msgid "Number of consecutive failures before restarting (default 3)." msgstr "" @@ -4020,7 +4242,7 @@ msgstr "" msgid "Number of consecutive successful checks required before returning to a higher-priority DNS server." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3386 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3426 msgid "Number of junk packets before handshake (1-10)" msgstr "" @@ -4032,7 +4254,7 @@ msgstr "" msgid "Obfuscation password" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1726 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1751 #: src/tachyon/tabs/dashboard/partials/renderAdvancedSettings.ts:861 msgid "Ollama (Local PC / Server)" msgstr "" @@ -4075,10 +4297,10 @@ msgstr "" msgid "Only the specified servers." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17507 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17544 -#: src/tachyon/tabs/updates/initController.ts:1316 -#: src/tachyon/tabs/updates/initController.ts:1355 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18230 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18267 +#: src/tachyon/tabs/updates/initController.ts:1345 +#: src/tachyon/tabs/updates/initController.ts:1384 msgid "Open" msgstr "" @@ -4086,49 +4308,49 @@ msgstr "" msgid "Open priority settings and enter a display name" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11533 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12217 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:31 msgid "Open Project Page" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16389 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17087 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:324 msgid "Operation completed successfully!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16515 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17213 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:483 msgid "Operation failed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16216 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16271 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16914 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16969 #: 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:16257 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16955 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:157 msgid "Operation log" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3631 -#: src/tachyon/methods/shell/index.ts:656 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3653 +#: 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:16253 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16951 #: 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:3497 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3565 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3519 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3587 #: src/helpers/withTimeout.ts:7 -#: src/tachyon/methods/shell/index.ts:482 -#: src/tachyon/methods/shell/index.ts:570 +#: src/tachyon/methods/shell/index.ts:489 +#: src/tachyon/methods/shell/index.ts:577 msgid "Operation timed out" msgstr "" @@ -4136,13 +4358,13 @@ msgstr "" msgid "Optimization" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12783 -#: src/tachyon/tabs/diagnostic/initController.ts:1098 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13467 +#: src/tachyon/tabs/diagnostic/initController.ts:1100 msgid "Optimize AWG MTU" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12775 -#: src/tachyon/tabs/diagnostic/initController.ts:1090 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13459 +#: src/tachyon/tabs/diagnostic/initController.ts:1092 msgid "Optimize RAM memory" msgstr "" @@ -4175,6 +4397,11 @@ msgstr "" msgid "Or paste hosts file content:" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8193 +#: src/tachyon/tabs/dashboard/initController.ts:1985 +msgid "Other peers" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:318 #: src/validators/validateOutboundJson.ts:111 msgid "outbounds must be a non-empty array of strings" @@ -4232,36 +4459,36 @@ msgstr "" msgid "Path cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1546 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1571 msgid "Path must be absolute (start with /)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1555 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1580 msgid "Path must contain at least one directory (like /tmp/cache.db)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1550 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1575 msgid "Path must end with cache.db" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14067 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14068 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14611 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14765 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14766 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15309 #: src/tachyon/tabs/monitoring/initController.ts:746 #: src/tachyon/tabs/monitoring/render.ts:80 #: src/tachyon/tabs/monitoring/render.ts:81 msgid "Pause updates" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3463 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3503 msgid "Payload (I3)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3469 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3509 msgid "Payload (I4)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3475 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3515 msgid "Payload (I5)" msgstr "" @@ -4281,14 +4508,14 @@ msgstr "" msgid "PEM-encoded client private key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5231 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:368 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:378 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5347 +#: ../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:10582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10804 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:98 msgid "Pending..." msgstr "" @@ -4302,16 +4529,16 @@ 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:1813 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1838 msgid "Periodically checks if the proxy is responding. Restarts Tachyon after consecutive failures." msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8391 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3326 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3366 msgid "Persistent Keepalive" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1890 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1915 msgid "Persistent Smart Detect" msgstr "" @@ -4324,11 +4551,11 @@ 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:2184 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2209 msgid "Polling Interval (seconds)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2197 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2222 msgid "Polling interval must be at least 1 second" msgstr "" @@ -4336,7 +4563,7 @@ msgstr "" msgid "Port cannot be empty" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9115 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9324 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:19 msgid "Port conflict" msgstr "" @@ -4367,7 +4594,7 @@ msgstr "" msgid "Ports must be between 1 and 65535" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1789 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1814 msgid "Pre-built index of Tachyon documentation chunks. When enabled, AI Doctor searches relevant docs before generating a diagnosis." msgstr "" @@ -4379,7 +4606,7 @@ msgstr "" msgid "Pre-shared key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3376 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3416 msgid "Pre-shared Key (PSK)" msgstr "" @@ -4403,7 +4630,7 @@ msgstr "" msgid "Preshared Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1850 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1875 msgid "Prevents multiple reload_firewall calls within 120 seconds to avoid connection drops." msgstr "" @@ -4414,15 +4641,15 @@ 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:7673 -#: src/tachyon/tabs/dashboard/initController.ts:1493 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7807 +#: 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:7623 -#: src/tachyon/tabs/dashboard/initController.ts:1430 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7757 +#: src/tachyon/tabs/dashboard/initController.ts:1431 msgid "Priority details are unavailable" msgstr "" @@ -4456,34 +4683,39 @@ msgstr "" msgid "Protocol" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10528 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11793 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:185 +msgid "Provider Global Default" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10750 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:29 msgid "Proxy" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12987 -#: src/tachyon/tabs/diagnostic/initController.ts:1336 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13671 +#: src/tachyon/tabs/diagnostic/initController.ts:1338 msgid "Proxy / DPI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1824 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1849 msgid "Proxy Fail Threshold" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1818 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1843 msgid "Proxy Health Check Interval (s)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1830 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1855 msgid "Proxy Health Check URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7142 -#: src/tachyon/tabs/dashboard/initController.ts:816 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7276 +#: src/tachyon/tabs/dashboard/initController.ts:817 msgid "Proxy link is unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2281 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2306 msgid "Proxy Section for Bot" msgstr "" @@ -4495,7 +4727,7 @@ msgstr "" msgid "PSK" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9130 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9339 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2690 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:40 msgid "Public host" @@ -4547,31 +4779,31 @@ msgstr "" msgid "Reality short ID must contain 1-8 hex digits" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12762 -#: src/tachyon/tabs/diagnostic/initController.ts:1077 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13446 +#: src/tachyon/tabs/diagnostic/initController.ts:1079 msgid "Rebuild firewall rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17526 -#: src/tachyon/tabs/updates/initController.ts:1336 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18249 +#: src/tachyon/tabs/updates/initController.ts:1365 msgid "Rebuilt release" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12832 -#: src/tachyon/tabs/diagnostic/initController.ts:1161 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13516 +#: src/tachyon/tabs/diagnostic/initController.ts:1163 msgid "Recommended Quick Fixes:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1910 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1935 msgid "Reconnect Threshold" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12768 -#: src/tachyon/tabs/diagnostic/initController.ts:1083 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13452 +#: src/tachyon/tabs/diagnostic/initController.ts:1085 msgid "Reconnect WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1857 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1882 msgid "Records proxy/DNS latency and health status in hourly buckets for analysis." msgstr "" @@ -4584,13 +4816,13 @@ msgstr "" msgid "Refill" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12934 -#: src/tachyon/tabs/diagnostic/initController.ts:1278 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13618 +#: src/tachyon/tabs/diagnostic/initController.ts:1280 msgid "Refresh" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12915 -#: src/tachyon/tabs/diagnostic/initController.ts:1257 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13599 +#: src/tachyon/tabs/diagnostic/initController.ts:1259 msgid "Refresh Device List" msgstr "" @@ -4602,17 +4834,17 @@ msgstr "" msgid "Regular expression must not contain spaces or commas" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17323 -#: src/tachyon/tabs/updates/initController.ts:1099 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18029 +#: src/tachyon/tabs/updates/initController.ts:1107 msgid "Reinstall" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16409 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17107 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:349 msgid "Reload now" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16441 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17139 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:390 msgid "Reloading..." msgstr "" @@ -4621,14 +4853,14 @@ msgstr "" msgid "Remote Hosts Lists" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16389 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17087 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:323 msgid "Removal completed successfully!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17291 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17995 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7927 -#: src/tachyon/tabs/updates/initController.ts:1055 +#: src/tachyon/tabs/updates/initController.ts:1061 msgid "Remove" msgstr "" @@ -4644,7 +4876,7 @@ msgstr "" msgid "Remove the specified servers from this level." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16220 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16918 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:114 msgid "Removing" msgstr "" @@ -4657,14 +4889,14 @@ msgstr "" msgid "Reset" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12782 -#: src/tachyon/tabs/diagnostic/initController.ts:1097 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13466 +#: 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:1654 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1679 msgid "Reset Settings" msgstr "" @@ -4676,8 +4908,8 @@ 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:12769 -#: src/tachyon/tabs/diagnostic/initController.ts:1084 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13453 +#: src/tachyon/tabs/diagnostic/initController.ts:1086 msgid "Resolve gateway" msgstr "" @@ -4701,11 +4933,11 @@ msgstr "" msgid "Resource selection by IP or CIDR inside nfqws2 is not supported here; sing-box selects resources before NFQUEUE." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3433 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3473 msgid "Response packet header (H2)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3409 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3449 msgid "Response packet junk size (S2)" msgstr "" @@ -4717,37 +4949,37 @@ msgstr "" msgid "Response Packet Magic Header (S4)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3457 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3497 msgid "Response payload (I2)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12763 -#: src/tachyon/tabs/diagnostic/initController.ts:1078 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13447 +#: src/tachyon/tabs/diagnostic/initController.ts:1080 msgid "Restart dnsmasq" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12772 -#: src/tachyon/tabs/diagnostic/initController.ts:1087 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13456 +#: src/tachyon/tabs/diagnostic/initController.ts:1089 msgid "Restart firewall" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12773 -#: src/tachyon/tabs/diagnostic/initController.ts:1088 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13457 +#: src/tachyon/tabs/diagnostic/initController.ts:1090 msgid "Restart network" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12766 -#: src/tachyon/tabs/diagnostic/initController.ts:1081 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13450 +#: src/tachyon/tabs/diagnostic/initController.ts:1083 msgid "Restart sing-box DNS" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10213 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:62 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10425 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:64 msgid "Restart Tachyon" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12774 -#: src/tachyon/tabs/diagnostic/initController.ts:1089 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13458 +#: src/tachyon/tabs/diagnostic/initController.ts:1091 msgid "Restart Zapret/ByeDPI" msgstr "" @@ -4761,24 +4993,24 @@ msgstr "" msgid "Restore" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12767 -#: src/tachyon/tabs/diagnostic/initController.ts:1082 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13451 +#: src/tachyon/tabs/diagnostic/initController.ts:1084 msgid "Restore config backup" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10291 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13204 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13227 -#: src/tachyon/tabs/diagnostic/initController.ts:1587 -#: src/tachyon/tabs/diagnostic/initController.ts:1611 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:140 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10503 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13896 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13919 +#: 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:12779 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13141 -#: src/tachyon/tabs/diagnostic/initController.ts:1094 -#: src/tachyon/tabs/diagnostic/initController.ts:1514 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13463 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13825 +#: src/tachyon/tabs/diagnostic/initController.ts:1096 +#: src/tachyon/tabs/diagnostic/initController.ts:1516 msgid "Restore Native Internet (Stop Tachyon)" msgstr "" @@ -4786,36 +5018,40 @@ msgstr "" msgid "Restore Snapshot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1655 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1680 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:13144 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13231 -#: src/tachyon/tabs/diagnostic/initController.ts:1517 -#: src/tachyon/tabs/diagnostic/initController.ts:1615 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13923 +#: 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:14611 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15309 #: src/tachyon/tabs/monitoring/initController.ts:746 msgid "Resume updates" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:598 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:641 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:10878 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14720 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14771 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11100 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15418 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15469 #: src/tachyon/tabs/monitoring/initController.ts:880 #: src/tachyon/tabs/monitoring/initController.ts:943 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:444 msgid "Route" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2282 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3311 +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 msgid "Route bot API requests through this section. Leave empty to use the default mixed proxy." msgstr "" @@ -4827,8 +5063,8 @@ msgstr "" msgid "Route requests to this DNS server through another section." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12993 -#: src/tachyon/tabs/diagnostic/initController.ts:1343 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13677 +#: src/tachyon/tabs/diagnostic/initController.ts:1345 msgid "Route via Proxy" msgstr "" @@ -4840,9 +5076,9 @@ msgstr "" msgid "Routing Rule Tracer" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9183 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9192 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9211 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9392 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9401 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9420 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:103 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:114 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:144 @@ -4857,7 +5093,7 @@ msgstr "" msgid "Rule" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:384 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:406 msgid "Rule Name" msgstr "" @@ -4878,77 +5114,91 @@ msgstr "" msgid "Rule Sets (.srs / .json)" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11794 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:186 +msgid "Rule:" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:2703 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:104 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:111 msgid "Rules" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9326 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9535 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:79 msgid "Rules mangle counters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9321 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9530 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:74 msgid "Rules mangle exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9336 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9545 #: 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:9331 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9540 #: 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:9346 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9555 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:99 msgid "Rules proxy counters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9341 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9550 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:94 msgid "Rules proxy exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10281 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:130 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10493 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:132 msgid "Run AI Doctor" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10513 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10735 #: src/tachyon/tabs/diagnostic/partials/renderRunAction.ts:17 msgid "Run Diagnostic" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10271 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:120 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10483 +#: 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:4963 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11643 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12327 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:301 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2043 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2044 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2068 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2069 #: 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:2347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2372 msgid "Running diagnostics…" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11948 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:364 +msgid "Running initial strategy probe..." +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9246 msgid "Russia (ru)" msgstr "" +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:142 +msgid "RuTracker (HTTP/HTTPS)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:27 msgid "Sat" msgstr "" @@ -4963,7 +5213,7 @@ msgstr "" msgid "Save" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1669 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1694 msgid "Save a snapshot of the working config and restore it later if something breaks." msgstr "" @@ -4995,12 +5245,17 @@ msgstr "" msgid "Schedule Rule" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14044 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11886 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:292 +msgid "Score" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14742 #: src/tachyon/tabs/monitoring/render.ts:57 msgid "Search" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10837 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11059 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:397 msgid "Search domain or service..." msgstr "" @@ -5013,7 +5268,7 @@ 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:1694 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1719 msgid "Secret token for authorizing WRITE operations (POST/PUT) on /cgi-bin/tachyon-agent/. Leave empty if auth is not required." msgstr "" @@ -5045,7 +5300,7 @@ msgstr "" msgid "Section test order (checked = active, drag rows with △▽):" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1605 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1630 msgid "Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy." msgstr "" @@ -5058,8 +5313,8 @@ msgstr "" msgid "Security" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7431 -#: src/tachyon/tabs/dashboard/initController.ts:1184 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7565 +#: src/tachyon/tabs/dashboard/initController.ts:1185 msgid "Select" msgstr "" @@ -5092,11 +5347,11 @@ msgstr "" msgid "Select a transit section" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:482 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:504 msgid "Select active days. If none selected, the rule applies every day." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1719 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1744 msgid "Select AI LLM provider for diagnostics" msgstr "" @@ -5112,7 +5367,7 @@ msgstr "" msgid "Select an intermediate section" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1937 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1962 msgid "Select and order the sections through which blocked domains are tested. Checked sections are tried top-to-bottom." msgstr "" @@ -5120,7 +5375,7 @@ msgstr "" msgid "Select DNS protocol to use" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:394 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:416 msgid "Select LAN devices to apply this schedule to, or enter IP or MAC addresses manually. MAC addresses (e.g. AA:BB:CC:DD:EE:FF) work even if the device's IP changes. IP addresses (e.g. 192.168.1.150) are used for DNS-level blocking and require a stable lease." msgstr "" @@ -5136,7 +5391,7 @@ msgstr "" msgid "Select or enter a User-Agent" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1529 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1554 msgid "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing" msgstr "" @@ -5144,21 +5399,21 @@ msgstr "" msgid "Select or enter the IP addresses of your game consoles." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1515 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1540 msgid "Select path for sing-box config file. Change this ONLY if you know what you are doing" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:424 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:446 msgid "Select Sections" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7641 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7775 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3146 -#: src/tachyon/tabs/dashboard/initController.ts:1453 +#: src/tachyon/tabs/dashboard/initController.ts:1454 msgid "Select the fastest node" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1566 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1591 msgid "Select the log level for sing-box" msgstr "" @@ -5174,14 +5429,14 @@ msgstr "" msgid "Select the WAN interfaces to be monitored" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:446 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:468 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:7515 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7627 -#: src/tachyon/tabs/dashboard/initController.ts:1288 -#: src/tachyon/tabs/dashboard/initController.ts:1439 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7649 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7761 +#: src/tachyon/tabs/dashboard/initController.ts:1289 +#: src/tachyon/tabs/dashboard/initController.ts:1440 msgid "Selected" msgstr "" @@ -5194,36 +5449,36 @@ 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:11307 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11529 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:67 msgid "Send" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2271 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2296 msgid "Send a Telegram notification if a potential DNS leak is detected." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2206 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2231 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:2258 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2283 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:2219 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2244 msgid "Send a Telegram notification if the Tachyon service is restarted by the watchdog." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:609 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:652 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:2232 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2257 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:2245 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2270 msgid "Send a Telegram notification when proxy subscriptions are successfully updated." msgstr "" @@ -5237,7 +5492,7 @@ msgstr "" #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8554 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8589 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8659 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3284 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3324 msgid "Server Address" msgstr "" @@ -5290,20 +5545,20 @@ msgstr "" msgid "Server Port" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3337 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3377 msgid "Server Private Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3387 msgid "Server Public Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11375 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11597 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:148 msgid "Server unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3285 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3325 msgid "Server VPN IP address and subnet (e.g. 10.0.0.1/24)" msgstr "" @@ -5320,21 +5575,21 @@ msgstr "" msgid "Servers on dashboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10873 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11095 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:439 msgid "Service / Target" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3456 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3475 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12453 -#: src/tachyon/methods/shell/index.ts:433 -#: src/tachyon/methods/shell/index.ts:454 -#: src/tachyon/tabs/diagnostic/initController.ts:607 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3478 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3497 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13137 +#: 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:10659 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10881 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:186 msgid "Service availability check" msgstr "" @@ -5347,22 +5602,22 @@ msgstr "" msgid "Services & Access" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16438 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17136 #: 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:16430 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17128 #: 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:7979 -#: src/tachyon/tabs/dashboard/initController.ts:1884 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8113 +#: src/tachyon/tabs/dashboard/initController.ts:1887 msgid "Services info" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16463 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17161 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:418 msgid "Services restarted. Click to reload page." msgstr "" @@ -5413,17 +5668,17 @@ msgstr "" msgid "Show servers whose names match the expression." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10329 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13268 -#: src/tachyon/tabs/diagnostic/initController.ts:1661 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:178 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10551 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13960 +#: 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:13279 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13286 -#: src/tachyon/tabs/diagnostic/initController.ts:1672 -#: src/tachyon/tabs/diagnostic/initController.ts:1679 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13971 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13978 +#: src/tachyon/tabs/diagnostic/initController.ts:1688 +#: src/tachyon/tabs/diagnostic/initController.ts:1695 msgid "Show sing-box config failed" msgstr "" @@ -5431,42 +5686,46 @@ msgstr "" msgid "Show subscription metadata for this source on the dashboard" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9087 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9296 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:77 msgid "Sing-box autostart disabled" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9403 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3283 +msgid "sing-box endpoint (userspace, default)" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9612 #: 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:9403 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9612 #: 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:9072 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9281 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:62 msgid "Sing-box installed" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9097 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9306 #: 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:9092 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9301 #: 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:9082 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9291 #: 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:9077 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9286 #: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:67 msgid "Sing-box version is compatible (newer than 1.12.4)" msgstr "" @@ -5507,6 +5766,10 @@ msgstr "" msgid "Snapshot restored. The service restarts and the page will reload." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3298 +msgid "SNAT LAN sources when leaving through tailscale0 so peers can answer. Required unless every peer accepts routes." +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8542 msgid "Snell Version" msgstr "" @@ -5527,8 +5790,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:14732 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14775 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15430 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15473 #: ../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 @@ -5543,7 +5806,7 @@ msgstr "" msgid "Source Network Interface" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:418 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:440 msgid "Specific Sections (Select sections below)" msgstr "" @@ -5556,62 +5819,67 @@ msgstr "" msgid "Specify different files" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11885 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:291 +msgid "Speed" +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:9681 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890 #: 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:9681 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890 #: 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:9681 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890 #: 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:9681 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9890 #: 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:9511 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720 #: 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:9511 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720 #: 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:9511 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720 #: 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:9599 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9808 #: 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:9597 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9806 #: 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:9599 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9808 #: 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:9599 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9808 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:124 msgid "Standalone Zapret2 service is inactive" msgstr "" @@ -5620,26 +5888,26 @@ msgstr "" msgid "Start" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2025 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2050 msgid "Start bot" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12761 -#: src/tachyon/tabs/diagnostic/initController.ts:1076 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13445 +#: src/tachyon/tabs/diagnostic/initController.ts:1078 msgid "Start sing-box" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10233 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:82 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10445 +#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:84 msgid "Start Tachyon" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:457 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:479 msgid "Start Time (HH:MM)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12765 -#: src/tachyon/tabs/diagnostic/initController.ts:1080 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13449 +#: src/tachyon/tabs/diagnostic/initController.ts:1082 msgid "Start watchdog" msgstr "" @@ -5648,16 +5916,23 @@ 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:2072 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2097 msgid "Starting…" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8175 +#: 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:10915 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:338 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11137 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11883 +#: ../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/renderSections.ts:670 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:481 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:289 msgid "Status" msgstr "" @@ -5665,7 +5940,7 @@ msgstr "" msgid "Stop" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2032 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2057 msgid "Stop bot" msgstr "" @@ -5673,16 +5948,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:10223 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:72 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10435 +#: 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:4963 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11655 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12339 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:307 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2049 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2074 #: src/tachyon/methods/custom/getDashboardSections.ts:1653 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:622 #: src/tachyon/tabs/diagnostic/checks/runSectionsCheck.ts:147 @@ -5690,15 +5965,25 @@ 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:2086 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2111 msgid "Stopping…" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1891 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1916 msgid "Store auto-detected domains in /etc instead of /tmp to survive reboots." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1593 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11881 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:287 +msgid "Strategy & Parameters" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12097 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:545 +msgid "Strategy benchmark started" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1618 msgid "Strict ECH + DoQ DNS Enforcer" msgstr "" @@ -5720,10 +6005,10 @@ msgstr "" msgid "Subscription info:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3812 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3830 -#: src/tachyon/methods/shell/index.ts:922 -#: src/tachyon/methods/shell/index.ts:942 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3834 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3852 +#: src/tachyon/methods/shell/index.ts:929 +#: src/tachyon/methods/shell/index.ts:949 msgid "Subscription update failed" msgstr "" @@ -5739,7 +6024,7 @@ msgstr "" msgid "Subscription URL settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6773 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6906 #: src/tachyon/tabs/dashboard/initController.ts:336 msgid "Subscriptions updated" msgstr "" @@ -5764,37 +6049,37 @@ msgstr "" msgid "Sweden (se)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12776 -#: src/tachyon/tabs/diagnostic/initController.ts:1091 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13460 +#: src/tachyon/tabs/diagnostic/initController.ts:1093 msgid "Switch DNS to DoH" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7491 -#: src/tachyon/tabs/dashboard/initController.ts:1253 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7625 +#: src/tachyon/tabs/dashboard/initController.ts:1254 msgid "Switch to auto-selection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12780 -#: src/tachyon/tabs/diagnostic/initController.ts:1095 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13464 +#: src/tachyon/tabs/diagnostic/initController.ts:1097 msgid "Sync System Time (NTP)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7967 -#: src/tachyon/tabs/dashboard/initController.ts:1871 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8101 +#: src/tachyon/tabs/dashboard/initController.ts:1874 msgid "System info" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11463 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12147 #: src/tachyon/tabs/diagnostic/partials/renderSystemInfo.ts:24 msgid "System information" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9316 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9525 #: src/tachyon/tabs/diagnostic/checks/runNftCheck.ts:69 msgid "Table exist" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6075 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:6208 #: src/tachyon/services/core.service.ts:52 msgid "Tachyon Error" msgstr "" @@ -5815,7 +6100,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:14809 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15507 #: src/tachyon/tabs/monitoring/initController.ts:991 msgid "Tachyon service is stopped. Start the service to display connections." msgstr "" @@ -5829,8 +6114,8 @@ msgstr "" msgid "Tachyon Settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3729 -#: src/tachyon/methods/shell/index.ts:810 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3751 +#: src/tachyon/methods/shell/index.ts:817 msgid "Tachyon update did not complete within the timeout" msgstr "" @@ -5838,56 +6123,61 @@ msgstr "" msgid "Tachyon will not modify your DHCP configuration" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880 #: 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:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880 #: 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:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880 #: 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:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880 #: 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:9496 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: 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:9496 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: 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:9496 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: 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:9582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791 #: 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:9582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791 #: 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:9582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791 #: 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:8170 +#: src/tachyon/tabs/dashboard/initController.ts:1954 +msgid "Tailscale" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3222 msgid "Tailscale auth key" msgstr "" @@ -5896,7 +6186,7 @@ msgstr "" msgid "Tailscale control URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9178 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9387 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:98 msgid "Tailscale endpoint" msgstr "" @@ -5905,35 +6195,48 @@ msgstr "" msgid "Tailscale hostname" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3280 +msgid "Tailscale mode" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:229 msgid "Target" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:393 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:415 msgid "Target Devices (IP / MAC)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:412 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/parental.js:434 msgid "Target Scope" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11786 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:176 +msgid "Target Service" +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:2144 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2169 msgid "Telegram Bot Token" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11543 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12227 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:42 msgid "Telegram Channel" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2333 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2362 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2378 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2384 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:143 +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 msgid "Test Connection" msgstr "" @@ -5970,23 +6273,28 @@ msgstr "" msgid "Test servers whose names match the expression." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2320 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2345 msgid "Test Telegram Connection" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7518 -#: src/tachyon/tabs/dashboard/initController.ts:1291 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12032 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:465 +msgid "Testing strategy" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7652 +#: src/tachyon/tabs/dashboard/initController.ts:1292 msgid "Testing URL" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10592 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11183 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10814 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11405 #: 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:2344 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2369 msgid "Testing…" msgstr "" @@ -6004,28 +6312,28 @@ 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:9666 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9875 #: 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:9491 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9700 #: 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:9577 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9786 #: 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:11331 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11553 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:97 msgid "Thinking..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13209 -#: src/tachyon/tabs/diagnostic/initController.ts:1592 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13901 +#: 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 "" @@ -6069,6 +6377,11 @@ msgstr "" msgid "This option requires a value." msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8183 +#: src/tachyon/tabs/dashboard/initController.ts:1975 +msgid "This router" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:426 msgid "This will erase all Tachyon settings and restore the factory defaults. The service will restart. This action cannot be undone." msgstr "" @@ -6085,9 +6398,9 @@ msgstr "" msgid "Thursday" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14723 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14772 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14906 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15421 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15470 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15604 #: src/tachyon/tabs/monitoring/initController.ts:883 #: src/tachyon/tabs/monitoring/initController.ts:944 #: src/tachyon/tabs/monitoring/initController.ts:1127 @@ -6106,7 +6419,7 @@ msgstr "" msgid "Time skew tolerance" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5715 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5845 #: src/tachyon/helpers/singBoxVariant.ts:64 msgid "tiny" msgstr "" @@ -6124,13 +6437,13 @@ msgstr "" msgid "TLS SNI" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2153 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2178 msgid "Token is required when the bot is enabled" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7520 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7654 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2657 -#: src/tachyon/tabs/dashboard/initController.ts:1293 +#: src/tachyon/tabs/dashboard/initController.ts:1294 msgid "Tolerance" msgstr "" @@ -6142,7 +6455,7 @@ msgstr "" msgid "Total lines:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10793 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11015 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:345 msgid "Total targets" msgstr "" @@ -6156,8 +6469,8 @@ 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:7943 -#: src/tachyon/tabs/dashboard/initController.ts:1845 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8077 +#: src/tachyon/tabs/dashboard/initController.ts:1848 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:133 msgid "Traffic" msgstr "" @@ -6174,8 +6487,8 @@ 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:7955 -#: src/tachyon/tabs/dashboard/initController.ts:1858 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8089 +#: src/tachyon/tabs/dashboard/initController.ts:1861 msgid "Traffic Total" msgstr "" @@ -6187,8 +6500,8 @@ msgstr "" msgid "Traffic will go through the default route (Direct/Default)." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17190 -#: src/tachyon/tabs/updates/initController.ts:918 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17892 +#: src/tachyon/tabs/updates/initController.ts:922 msgid "Transient connection error" msgstr "" @@ -6206,11 +6519,11 @@ msgstr "" msgid "Transport host" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3445 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3485 msgid "Transport packet header (H4)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3421 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3461 msgid "Transport packet junk size (S4)" msgstr "" @@ -6222,7 +6535,7 @@ msgstr "" msgid "Transport path must start with /" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11527 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12211 #: src/tachyon/tabs/diagnostic/partials/renderWikiDisclaimer.ts:25 msgid "Troubleshooting" msgstr "" @@ -6231,6 +6544,11 @@ msgstr "" msgid "Try compatible User-Agent profiles automatically when downloading this subscription" msgstr "" +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11884 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:290 +msgid "TTFB" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:984 msgid "TTL must be a positive number" msgstr "" @@ -6251,8 +6569,8 @@ msgstr "" msgid "Turkey (tr)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14717 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14770 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15415 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15468 #: ../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 @@ -6263,7 +6581,7 @@ msgstr "" msgid "UDP (Unprotected DNS)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10558 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10780 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:65 msgid "UDP / QUIC protocols" msgstr "" @@ -6286,20 +6604,20 @@ msgstr "" msgid "Unable to validate the NFQWS2 strategy through the backend parser." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7635 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7769 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3120 -#: src/tachyon/tabs/dashboard/initController.ts:1447 +#: src/tachyon/tabs/dashboard/initController.ts:1448 msgid "Unavailability timeout" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10613 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10795 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10835 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11017 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:135 #: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:347 msgid "Unavailable" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3439 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3479 msgid "Underload packet header (H3)" msgstr "" @@ -6329,17 +6647,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:9671 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9880 #: 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:9496 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 #: 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:9582 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9791 #: src/tachyon/tabs/diagnostic/checks/runZapret2Check.ts:92 msgid "Unexpected Tachyon-managed nfqws2 runtime is running" msgstr "" @@ -6356,18 +6674,19 @@ msgstr "" msgid "United States (us)" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5698 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9120 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9701 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9703 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9704 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9705 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9712 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9714 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9716 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9719 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9720 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16810 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5828 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9329 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9910 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9912 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9913 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9914 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9921 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9923 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9925 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9927 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9930 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9931 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17512 #: src/tachyon/helpers/singBoxVariant.ts:37 #: src/tachyon/services/systemInfo.service.ts:10 #: src/tachyon/services/systemInfo.service.ts:12 @@ -6376,16 +6695,17 @@ msgstr "" #: src/tachyon/services/systemInfo.service.ts:21 #: src/tachyon/services/systemInfo.service.ts:23 #: src/tachyon/services/systemInfo.service.ts:25 -#: src/tachyon/services/systemInfo.service.ts:28 -#: src/tachyon/services/systemInfo.service.ts:29 -#: src/tachyon/tabs/updates/initController.ts:417 +#: src/tachyon/services/systemInfo.service.ts:27 +#: src/tachyon/services/systemInfo.service.ts:30 +#: src/tachyon/services/systemInfo.service.ts:31 +#: src/tachyon/tabs/updates/initController.ts:421 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:25 msgid "unknown" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:4963 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5079 #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:328 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2066 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2091 #: src/tachyon/methods/custom/getDashboardSections.ts:1655 msgid "Unknown" msgstr "" @@ -6400,16 +6720,18 @@ msgstr "" msgid "Unknown country" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5037 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12558 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12577 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12644 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13185 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5153 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12102 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13242 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13261 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13328 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13869 #: src/tachyon/api.ts:40 -#: src/tachyon/tabs/diagnostic/initController.ts:729 -#: src/tachyon/tabs/diagnostic/initController.ts:770 -#: src/tachyon/tabs/diagnostic/initController.ts:855 -#: src/tachyon/tabs/diagnostic/initController.ts:1566 +#: 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:550 msgid "Unknown error" msgstr "" @@ -6439,23 +6761,23 @@ 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:17242 -#: src/tachyon/tabs/updates/initController.ts:985 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17944 +#: src/tachyon/tabs/updates/initController.ts:989 msgid "Update" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16760 -#: src/tachyon/tabs/updates/initController.ts:351 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17462 +#: src/tachyon/tabs/updates/initController.ts:355 msgid "Update is available" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17514 -#: src/tachyon/tabs/updates/initController.ts:1323 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18237 +#: 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:17495 -#: src/tachyon/tabs/updates/initController.ts:1302 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:18218 +#: src/tachyon/tabs/updates/initController.ts:1331 msgid "Update is available:" msgstr "" @@ -6466,8 +6788,8 @@ 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:12771 -#: src/tachyon/tabs/diagnostic/initController.ts:1086 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13455 +#: src/tachyon/tabs/diagnostic/initController.ts:1088 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:224 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:237 #: src/tachyon/tabs/dashboard/partials/renderSections.ts:238 @@ -6486,13 +6808,13 @@ msgstr "" msgid "Updates & Downloads" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16222 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16920 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:116 msgid "Updating" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12996 -#: src/tachyon/tabs/diagnostic/initController.ts:1347 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13680 +#: src/tachyon/tabs/diagnostic/initController.ts:1349 msgid "Updating device routing mode..." msgstr "" @@ -6500,16 +6822,16 @@ msgstr "" msgid "Updating lists..." msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7945 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7957 -#: src/tachyon/tabs/dashboard/initController.ts:1847 -#: src/tachyon/tabs/dashboard/initController.ts:1860 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8079 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8091 +#: 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:14729 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14774 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14918 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15427 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15472 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:15616 #: src/tachyon/tabs/monitoring/initController.ts:889 #: src/tachyon/tabs/monitoring/initController.ts:946 #: src/tachyon/tabs/monitoring/initController.ts:1141 @@ -6526,7 +6848,7 @@ msgstr "" msgid "URL must use one of the following protocols:" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1831 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1856 msgid "URL to test through the proxy (default: Cloudflare 204)." msgstr "" @@ -6548,15 +6870,15 @@ 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:7541 -#: src/tachyon/tabs/dashboard/initController.ts:1320 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7675 +#: 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:7511 -#: src/tachyon/tabs/dashboard/initController.ts:1279 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7645 +#: src/tachyon/tabs/dashboard/initController.ts:1280 msgid "URLTest details are unavailable" msgstr "" @@ -6565,7 +6887,7 @@ msgstr "" msgid "URLTest settings" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1870 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1895 msgid "Use 3-tier check intervals: fast (15s), normal (120s), slow (300s) instead of a single interval." msgstr "" @@ -6644,7 +6966,11 @@ msgstr "" msgid "Use sing-box duration format like 1d, 12h or 6h" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9120 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3310 +msgid "Use tailnet exit node for LAN" +msgstr "" + +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9329 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:25 msgid "Used by" msgstr "" @@ -6699,7 +7025,7 @@ msgstr "" msgid "Valid" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1877 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1902 msgid "Validates sing-box config before restart to prevent boot loops on broken configs." msgstr "" @@ -6720,7 +7046,7 @@ msgstr "" msgid "Value must not contain control characters" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16426 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17124 #: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:370 msgid "Verifying router and service readiness..." msgstr "" @@ -6733,17 +7059,17 @@ msgstr "" msgid "Video streaming" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10320 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12621 -#: src/tachyon/tabs/diagnostic/initController.ts:829 -#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:169 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:10542 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13305 +#: 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:12631 -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12634 -#: src/tachyon/tabs/diagnostic/initController.ts:839 -#: src/tachyon/tabs/diagnostic/initController.ts:842 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13315 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13318 +#: src/tachyon/tabs/diagnostic/initController.ts:841 +#: src/tachyon/tabs/diagnostic/initController.ts:844 msgid "View logs failed" msgstr "" @@ -6759,17 +7085,17 @@ msgstr "" msgid "vless://, vmess://, ss://, trojan://, socks4/5://, hy2/hysteria2:// links" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16405 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17103 #: 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:9156 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9365 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:70 msgid "WAN" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9255 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9464 #: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:198 msgid "WAN public IP" msgstr "" @@ -6786,7 +7112,7 @@ msgstr "" msgid "WARP Configuration generated and loaded successfully!" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1604 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1629 msgid "WARP Generator Proxy Section" msgstr "" @@ -6802,11 +7128,15 @@ msgstr "" msgid "Watchdog" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1801 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1515 +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 msgid "Watchdog Status" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1583 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1608 msgid "WebRTC Leak Protection" msgstr "" @@ -6834,7 +7164,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:11395 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:11617 #: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:171 msgid "Why Discord fails?" msgstr "" @@ -6855,8 +7185,8 @@ msgstr "" msgid "YACD Secret Key" msgstr "" -#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7146 -#: src/tachyon/tabs/dashboard/initController.ts:821 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7280 +#: src/tachyon/tabs/dashboard/initController.ts:822 msgid "Yes" msgstr "" @@ -6864,70 +7194,90 @@ msgstr "" msgid "You can select Output Network Interface, by default autodetect" msgstr "" +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:137 +msgid "YouTube (GoogleVideo 4K stream)" +msgstr "" + +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:139 +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:9486 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695 #: 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:9486 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9695 #: 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:9481 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9690 #: 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:9481 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9690 #: 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:9506 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9715 #: 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:9506 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9715 #: src/tachyon/tabs/diagnostic/checks/runZapretCheck.ts:104 msgid "Zapret sing-box outbound is not configured" msgstr "" +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:67 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:105 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:106 +msgid "Zapret v1 (nfqws)" +msgstr "" + +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:66 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:100 +#: src/tachyon/tabs/diagnostic/partials/renderStrategyFuzzerModal.ts:101 +msgid "Zapret v2 (nfqws2)" +msgstr "" + #: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:6093 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:9572 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9781 #: 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:9572 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9781 #: 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:9567 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9776 #: 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:9567 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9776 #: 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:9592 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9801 #: 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:9592 +#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9801 #: 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 bf8b4701..31c6c3c3 100755 --- a/tachyon/files/usr/bin/tachyon +++ b/tachyon/files/usr/bin/tachyon @@ -259,6 +259,11 @@ function command_spec(command) { validate_nfqws_strategy_json: [ "diagnostics/runtime.uc", "validate-nfqws-strategy-json", 1 ], validate_nfqws2_strategy_json: [ "diagnostics/runtime.uc", "validate-nfqws2-strategy-json", 1 ], validate_byedpi_strategy_json: [ "providers/byedpi/validator.uc", "validate-json", 1 ], + fuzzer_start: [ "diagnostics/fuzzer.uc", "start", 4 ], + fuzzer_status: [ "diagnostics/fuzzer.uc", "status", 0 ], + fuzzer_stop: [ "diagnostics/fuzzer.uc", "stop", 0 ], + fuzzer_apply: [ "diagnostics/fuzzer.uc", "apply", 3 ], + fuzzer_strategies: [ "diagnostics/fuzzer.uc", "strategies", 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 new file mode 100644 index 00000000..1df0fee0 --- /dev/null +++ b/tachyon/files/usr/lib/diagnostics/fuzzer.uc @@ -0,0 +1,619 @@ +#!/usr/bin/env ucode + +let fs = require("fs"); +let common = require("core.common"); +let uci_core = require("core.uci"); + +let as_string = common.as_string; +let read_json_file = common.read_json_file; +let write_json_file = common.write_json_file; +let command_from_args = common.command_from_args; +let command_output = common.command_output; +let command_status = common.command_status; +let command_success = common.command_success; +let command_success_from_args = common.command_success_from_args; +let shell_quote = common.shell_quote; +let object_or_empty = common.object_or_empty; +let array_or_empty = common.array_or_empty; + +const CONFIG_NAME = getenv("TACHYON_CONFIG_NAME") || "tachyon"; +const STATE_DIR = getenv("TACHYON_FUZZER_STATE_DIR") || "/var/run/tachyon"; +const STATE_FILE = STATE_DIR + "/fuzzer-state.json"; +const PID_FILE = STATE_DIR + "/fuzzer-worker.pid"; +const BYEDPI_PORT = 11089; +const NFQUEUE_QNUM_ZAPRET = 298; +const NFQUEUE_QNUM_ZAPRET2 = 299; +const FUZZER_FWMARK = "0x08000000"; + +function resolve_binary(paths) { + for (let p in paths) { + if (p && fs.stat(p) != null) + return p; + } + return null; +} + +function get_zapret2_bin() { + return resolve_binary([ + getenv("ZAPRET2_NFQWS2_BIN"), + "/opt/zapret2/nfq2/nfqws2", + "/opt/zapret2/nfqws2", + "/usr/bin/nfqws2" + ]); +} + +function get_zapret_bin() { + return resolve_binary([ + getenv("ZAPRET_NFQWS_BIN"), + "/opt/zapret/nfq/nfqws", + "/opt/zapret/nfqws", + "/usr/bin/nfqws" + ]); +} + +function get_byedpi_bin() { + return resolve_binary([ + getenv("BYEDPI_BIN"), + "/opt/byedpi/ciadpi", + "/usr/bin/ciadpi" + ]); +} + +// Target definitions +const TARGET_URLS = { + youtube: "https://rr1---sn-4g5edn6r.googlevideo.com/generate_204", + youtube_web: "https://www.youtube.com", + discord: "https://discord.com/api/v9/gateway", + instagram: "https://www.instagram.com", + rutracker: "https://rutracker.org", + telegram: "https://web.telegram.org" +}; + +// Strategy Matrices +const STRATEGIES_ZAPRET2 = [ + { + id: "z2_yt_multisplit_midsld", + name: "YouTube 4K Multisplit + MidSLD", + engine: "zapret2", + args: "--lua-desync=multisplit:pos=1,midsld:seqovl=1:fooling=badseq", + description: "Optimized for GoogleVideo 4K chunk streams and TSPU TLS desync." + }, + { + id: "z2_yt_multisplit_sniext", + name: "SNI Extension Split + Badseq", + engine: "zapret2", + args: "--lua-desync=multisplit:pos=1,sniext+4:seqovl=1:fooling=badseq", + description: "Splits deep into SNI extensions to fool next-gen DPI signatures." + }, + { + id: "z2_fake_badseq_mid", + name: "Fake Packet + MidSLD Disorder", + engine: "zapret2", + args: "--lua-desync=fake:ttl=8 --lua-desync=multisplit:pos=midsld:fooling=badseq", + description: "Injects low-TTL fake ClientHello before segmented payload." + }, + { + id: "z2_wsize_multisplit", + name: "Window Size Clamp (wsize=1)", + engine: "zapret2", + args: "--lua-desync=multisplit:pos=1,midsld:wsize=1:fooling=badseq", + description: "Forces single-byte TCP window segments to evade reassembly." + }, + { + id: "z2_aggressive_combo", + name: "Aggressive Triple-Split + SeqOvl", + engine: "zapret2", + args: "--lua-desync=multisplit:pos=1,midsld,sniext+2:seqovl=2:fooling=badseq", + description: "High-entropy triple fragmentation for heavily filtered regions." + }, + { + id: "z2_split2_pos1", + name: "Classic Split2 (pos=1)", + engine: "zapret2", + args: "--lua-desync=split2:pos=1:fooling=badseq", + description: "Standard 2-fragment desync for compatibility." + }, + { + id: "z2_discord_udp", + name: "Discord Voice UDP Desync", + engine: "zapret2", + args: "--filter-udp=50000-65535 --lua-desync=fake:ttl=8", + description: "UDP fake packet desync for Discord RTC and Voice channels." + } +]; + +const STRATEGIES_ZAPRET = [ + { + id: "z1_split2_pos2", + name: "Standard Split2 (pos=2)", + engine: "zapret", + args: "--dpi-desync=split2 --dpi-desync-split-pos=2", + description: "Base HTTP/TLS split inside SNI header." + }, + { + id: "z1_disorder2_badseq", + name: "Disorder2 + BadSeq", + engine: "zapret", + args: "--dpi-desync=disorder2 --dpi-desync-split-pos=1 --dpi-desync-fooling=badseq", + description: "Sends out-of-order packets with invalid TCP sequence fooling." + }, + { + id: "z1_fake_split2_ttl", + name: "Fake SNI + Split2 (TTL=8)", + engine: "zapret", + args: "--dpi-desync=fake,split2 --dpi-desync-split-pos=1 --dpi-desync-ttl=8 --dpi-desync-fooling=badseq", + description: "Sends low-TTL fake packet followed by segmented ClientHello." + }, + { + id: "z1_seqovl_split2", + name: "Sequence Overlap (SeqOvl=1)", + engine: "zapret", + args: "--dpi-desync=split2 --dpi-desync-split-seqovl=1 --dpi-desync-fooling=badseq", + description: "Overlapping TCP payload to confuse stateful DPI." + }, + { + id: "z1_md5sig_disorder", + name: "MD5Sig Fooling + Disorder", + engine: "zapret", + args: "--dpi-desync=fake,disorder2 --dpi-desync-fooling=md5sig --dpi-desync-ttl=6", + description: "Injects TCP MD5 signature option to trigger DPI packet drop." + } +]; + +const STRATEGIES_BYEDPI = [ + { + id: "bd_auto_tr_d2", + name: "ByeDPI Auto (t,r,a,s)", + engine: "byedpi", + args: "-o 2 --auto=t,r,a,s -d 2", + description: "Standard adaptive ByeDPI auto-mode with disorder." + }, + { + id: "bd_disorder_fake_ttl8", + name: "Disorder + Fake (TTL=8)", + engine: "byedpi", + args: "--split 1 --disorder 1 --fake -1 --ttl 8", + description: "1-byte split with reverse disorder and fake handshake packet." + }, + { + id: "bd_midsld_fake_frag", + name: "SNI Extension + Fake (TTL=6)", + engine: "byedpi", + args: "-s 1+sniext -f -1 -t 6", + description: "SNI extension split with low-TTL fake payload." + }, + { + id: "bd_tls_sni_split2", + name: "TLS SNI Split (pos=2)", + engine: "byedpi", + args: "--split 2 --disorder 2", + description: "Direct TLS SNI offset split with out-of-order delivery." + }, + { + id: "bd_low_ttl_aggressive", + name: "Aggressive Fake (TTL=4)", + engine: "byedpi", + args: "--fake -1 --ttl 4 --disorder 1 --split 1", + description: "Low-TTL aggressive fake packet injection." + } +]; + +function get_strategies_for_engine(engine) { + engine = lc(as_string(engine)); + if (engine == "zapret2") + return STRATEGIES_ZAPRET2; + if (engine == "zapret") + return STRATEGIES_ZAPRET; + if (engine == "byedpi") + return STRATEGIES_BYEDPI; + + // Default or 'all': combine all + let all = []; + for (let s in STRATEGIES_ZAPRET2) push(all, s); + for (let s in STRATEGIES_ZAPRET) push(all, s); + for (let s in STRATEGIES_BYEDPI) push(all, s); + return all; +} + +function resolve_target_url(target, custom_url) { + if (custom_url && trim(as_string(custom_url)) != "") + return trim(as_string(custom_url)); + + target = lc(as_string(target)); + if (TARGET_URLS[target]) + return TARGET_URLS[target]; + + return TARGET_URLS.youtube; +} + +function ensure_state_dir() { + common.ensure_dir(STATE_DIR); +} + +function save_fuzzer_state(state) { + ensure_state_dir(); + common.write_json_file(STATE_FILE, state); +} + +function get_fuzzer_state() { + let state = common.read_json_file(STATE_FILE); + if (!state || type(state) != "object") { + return { + running: false, + job_id: null, + engine: "zapret2", + target: "youtube", + progress_pct: 0, + current_index: 0, + total_strategies: 0, + current_strategy: null, + results: [], + best_strategy: null, + error: null, + started_at: 0, + finished_at: 0 + }; + } + return state; +} + +function kill_pid_file(path) { + let pid_str = fs.readfile(path); + if (pid_str) { + let pid = trim(as_string(pid_str)); + if (pid != "") { + system(sprintf("kill %s >/dev/null 2>&1 || kill -9 %s >/dev/null 2>&1", pid, pid)); + } + try { fs.unlink(path); } catch (e) {} + } +} + +function cleanup_temp_daemons() { + kill_pid_file(STATE_DIR + "/fuzzer_byedpi.pid"); + kill_pid_file(STATE_DIR + "/fuzzer_zapret.pid"); + kill_pid_file(STATE_DIR + "/fuzzer_zapret2.pid"); + system("nft delete table inet tachyon_fuzzer 2>/dev/null"); +} + +function parse_curl_output(output, result) { + output = trim(as_string(output)); + if (output == "") { + result.error = "Probe timeout or connection refused"; + return result; + } + + let parts = split(output, "\t"); + if (length(parts) < 4) { + result.error = "Malformed probe metrics output"; + return result; + } + + let http_code = int(parts[0]); + let appconnect = double(parts[1]); + let starttransfer = double(parts[2]); + let speed_bytes = double(parts[3]); + + result.http_code = http_code; + result.handshake_ms = int(appconnect * 1000.0); + result.ttfb_ms = int(starttransfer * 1000.0); + result.speed_kbps = int(speed_bytes / 1024.0); + + if (http_code >= 200 && http_code < 400) { + result.success = true; + let speed_factor = (result.speed_kbps / 200.0) + 1.0; + let ttfb_factor = 1000.0 / (result.ttfb_ms + 1.0); + result.score = int(ttfb_factor * speed_factor); + } else { + result.success = false; + result.score = 0; + result.error = sprintf("HTTP Status %d", http_code); + } + + return result; +} + +function run_probe(engine, args_str, target_url) { + cleanup_temp_daemons(); + + let result = { + success: false, + http_code: 0, + handshake_ms: 0, + ttfb_ms: 0, + speed_kbps: 0, + score: 0, + error: "" + }; + + engine = lc(as_string(engine)); + + if (engine == "byedpi") { + let bin = get_byedpi_bin(); + if (!bin) { + result.error = "ByeDPI binary not found"; + return result; + } + + let pid_path = STATE_DIR + "/fuzzer_byedpi.pid"; + let spawn_cmd = sprintf("%s -i 127.0.0.1 -p %d %s", bin, BYEDPI_PORT, args_str); + 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}' --connect-timeout 4 --max-time 6 %s 2>/dev/null", + BYEDPI_PORT, + shell_quote(target_url) + ); + + let pipe = fs.popen(curl_cmd, "r"); + let output = pipe ? pipe.read("all") : ""; + if (pipe) pipe.close(); + + cleanup_temp_daemons(); + + return parse_curl_output(output, result); + } + + if (engine == "zapret" || engine == "zapret2") { + let is_z2 = engine == "zapret2"; + let bin = is_z2 ? get_zapret2_bin() : get_zapret_bin(); + let qnum = is_z2 ? NFQUEUE_QNUM_ZAPRET2 : NFQUEUE_QNUM_ZAPRET; + let pid_path = is_z2 ? (STATE_DIR + "/fuzzer_zapret2.pid") : (STATE_DIR + "/fuzzer_zapret.pid"); + + if (!bin) { + result.error = (is_z2 ? "Zapret v2" : "Zapret v1") + " binary not found"; + return result; + } + + let lua_init_flags = ""; + if (is_z2 && fs.stat("/opt/zapret2/lua/zapret-lib.lua") != null && index(args_str, "--lua-init") < 0) { + lua_init_flags = "--lua-init=@/opt/zapret2/lua/zapret-lib.lua --lua-init=@/opt/zapret2/lua/zapret-antidpi.lua --lua-init=@/opt/zapret2/lua/zapret-auto.lua "; + } + + let spawn_cmd = sprintf("%s --qnum=%d --fwmark=%s %s%s --pidfile=%s --daemon", bin, qnum, FUZZER_FWMARK, lua_init_flags, args_str, pid_path); + system(common.background_command(spawn_cmd)); + system("sleep 0.15"); + + // Setup temporary isolated nftables queue for probe + system("nft add table inet tachyon_fuzzer 2>/dev/null"); + system("nft 'add chain inet tachyon_fuzzer output { type filter hook output priority -150 ; }' 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)); + + // Execute probe with interface-mark if supported, or standard direct curl + let curl_cmd = sprintf( + "curl -so /dev/null -w '%%{http_code}\\t%%{time_appconnect}\\t%%{time_starttransfer}\\t%%{speed_download}' --connect-timeout 4 --max-time 6 %s 2>/dev/null", + shell_quote(target_url) + ); + + let pipe = fs.popen(curl_cmd, "r"); + let output = pipe ? pipe.read("all") : ""; + if (pipe) pipe.close(); + + cleanup_temp_daemons(); + + return parse_curl_output(output, result); + } + + result.error = "Unknown engine: " + engine; + return result; +} + +function run_fuzzer_worker(engine, target, custom_url, rule_section) { + let target_url = resolve_target_url(target, custom_url); + let strategies = get_strategies_for_engine(engine); + let total = length(strategies); + + let state = { + running: true, + job_id: sprintf("fuzz_%d", clock()[0]), + engine, + target, + target_url, + rule_section: as_string(rule_section), + progress_pct: 0, + current_index: 0, + total_strategies: total, + current_strategy: null, + results: [], + best_strategy: null, + error: null, + started_at: clock()[0], + finished_at: 0 + }; + + save_fuzzer_state(state); + + try { + let highest_score = -1; + let best = null; + + for (let i = 0; i < total; i++) { + let strat = strategies[i]; + state.current_index = i + 1; + state.current_strategy = strat; + state.progress_pct = int(((i) / double(total)) * 100.0); + save_fuzzer_state(state); + + let probe = run_probe(strat.engine, strat.args, target_url); + + let item_result = { + id: strat.id, + name: strat.name, + engine: strat.engine, + args: strat.args, + description: strat.description, + success: probe.success, + http_code: probe.http_code, + handshake_ms: probe.handshake_ms, + ttfb_ms: probe.ttfb_ms, + speed_kbps: probe.speed_kbps, + score: probe.score, + error: probe.error, + badge: "" + }; + + if (item_result.score > highest_score && item_result.success) { + highest_score = item_result.score; + best = item_result; + } + + push(state.results, item_result); + state.progress_pct = int(((i + 1) / double(total)) * 100.0); + save_fuzzer_state(state); + } + + // Assign badges + if (best) { + best.badge = "🏆 Best Match"; + state.best_strategy = best; + } + + // Mark fastest and most stable + let min_ttfb = 999999; + let fastest = null; + for (let r in state.results) { + if (r.success && r.ttfb_ms > 0 && r.ttfb_ms < min_ttfb) { + min_ttfb = r.ttfb_ms; + fastest = r; + } + } + if (fastest && fastest.id != (best ? best.id : "")) { + fastest.badge = "⚡ Ultra Fast"; + } + + state.running = false; + state.current_strategy = null; + state.finished_at = clock()[0]; + save_fuzzer_state(state); + } catch (err) { + state.running = false; + state.error = as_string(err); + state.finished_at = clock()[0]; + save_fuzzer_state(state); + } + + cleanup_temp_daemons(); +} + +function start_fuzzer(engine, target, custom_url, rule_section) { + let current = get_fuzzer_state(); + if (current.running) { + print(sprintf("%J\n", { success: false, error: "Fuzzer is already running", job_id: current.job_id })); + return; + } + + ensure_state_dir(); + + let job_id = sprintf("fuzz_%d", clock()[0]); + let cmd = sprintf( + "ucode -L /usr/lib/tachyon /usr/lib/tachyon/diagnostics/fuzzer.uc worker %s %s %s %s", + shell_quote(engine || "zapret2"), + shell_quote(target || "youtube"), + shell_quote(custom_url || ""), + shell_quote(rule_section || "") + ); + + 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" })); +} + +function stop_fuzzer() { + kill_pid_file(PID_FILE); + cleanup_temp_daemons(); + + let state = get_fuzzer_state(); + state.running = false; + state.error = "Stopped by user"; + state.finished_at = clock()[0]; + save_fuzzer_state(state); + + print(sprintf("%J\n", { success: true, message: "Fuzzer stopped" })); +} + +function get_available_engines() { + return { + zapret2: get_zapret2_bin() != null, + zapret: get_zapret_bin() != null, + byedpi: get_byedpi_bin() != null + }; +} + +function apply_strategy(engine, args_val, target_rule) { + engine = lc(as_string(engine)); + args_val = trim(as_string(args_val)); + target_rule = trim(as_string(target_rule)); + + if (args_val == "") { + print(sprintf("%J\n", { success: false, error: "Empty strategy arguments" })); + return; + } + + 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") + uci.set(CONFIG_NAME, target_rule, "nfqws2_opt", args_val); + else if (engine == "zapret") + uci.set(CONFIG_NAME, target_rule, "nfqws_opt", args_val); + else if (engine == "byedpi") + 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) { + uci.set(CONFIG_NAME, provider_sec, "provider"); + } + uci.set(CONFIG_NAME, provider_sec, "enabled", "1"); + if (engine == "zapret2") + uci.set(CONFIG_NAME, provider_sec, "nfqws2_opt", args_val); + else if (engine == "zapret") + uci.set(CONFIG_NAME, provider_sec, "nfqws_opt", args_val); + else if (engine == "byedpi") + uci.set(CONFIG_NAME, provider_sec, "byedpi_cmd_opts", args_val); + applied = true; + } + + uci.commit(CONFIG_NAME); + + // Mark reload pending + system(common.background_command("tachyon reload")); + + print(sprintf("%J\n", { + success: true, + engine, + applied_to: target_rule != "" ? target_rule : "global", + args: args_val + })); +} + +// CLI Dispatcher +let op = ARGV[0] || "status"; + +if (op == "start") { + start_fuzzer(ARGV[1], ARGV[2], ARGV[3], ARGV[4]); +} else if (op == "worker") { + run_fuzzer_worker(ARGV[1], ARGV[2], ARGV[3], ARGV[4]); +} else if (op == "status") { + print(sprintf("%J\n", get_fuzzer_state())); +} else if (op == "stop") { + stop_fuzzer(); +} else if (op == "apply") { + apply_strategy(ARGV[1], ARGV[2], ARGV[3]); +} else if (op == "strategies") { + print(sprintf("%J\n", { + available_engines: get_available_engines(), + zapret2: STRATEGIES_ZAPRET2, + zapret: STRATEGIES_ZAPRET, + byedpi: STRATEGIES_BYEDPI + })); +} else { + warn("Usage: fuzzer.uc [start|status|stop|apply|strategies|worker] ...\n"); + exit(1); +} diff --git a/tachyon/files/usr/lib/diagnostics/status.uc b/tachyon/files/usr/lib/diagnostics/status.uc index fda18f8d..c041f0c0 100644 --- a/tachyon/files/usr/lib/diagnostics/status.uc +++ b/tachyon/files/usr/lib/diagnostics/status.uc @@ -7,6 +7,7 @@ let as_string = common.as_string; let read_stdin = common.read_stdin; let read_stdin_json = common.read_stdin_json; let read_json_file = common.read_json_file; +let write_json_file = common.write_json_file; function url_encode(value) { value = as_string(value); diff --git a/tests/fuzzer_strategy_cli.sh b/tests/fuzzer_strategy_cli.sh new file mode 100644 index 00000000..19ebf518 --- /dev/null +++ b/tests/fuzzer_strategy_cli.sh @@ -0,0 +1,124 @@ +#!/usr/bin/env bash +set -eo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +TACHYON_LIB="$ROOT_DIR/tachyon/files/usr/lib" +FUZZER="$ROOT_DIR/tachyon/files/usr/lib/diagnostics/fuzzer.uc" +BYEDPI_VALIDATOR="$ROOT_DIR/tachyon/files/usr/lib/providers/byedpi/validator.uc" +ZAPRET_VALIDATOR="$ROOT_DIR/tachyon/files/usr/lib/providers/zapret/validator.uc" +ZAPRET2_VALIDATOR="$ROOT_DIR/tachyon/files/usr/lib/providers/zapret2/validator.uc" +TACHYON_BIN="$ROOT_DIR/tachyon/files/usr/bin/tachyon" + +fail() { + printf 'FAIL: %s\n' "$1" >&2 + exit 1 +} + +# 1. Check strategies JSON output +strategies_json="$(ucode -L "$TACHYON_LIB" -- "$FUZZER" strategies)" +[ -n "$strategies_json" ] || fail "fuzzer strategies returned empty output" + +# Validate JSON structure using node +JSON_VALUE="$strategies_json" node <<'NODE' +const val = JSON.parse(process.env.JSON_VALUE); +if (typeof val.available_engines !== 'object') { + console.error("Missing available_engines"); + process.exit(1); +} +if (!Array.isArray(val.zapret2) || val.zapret2.length === 0) { + console.error("Missing zapret2 strategies"); + process.exit(1); +} +if (!Array.isArray(val.zapret) || val.zapret.length === 0) { + console.error("Missing zapret strategies"); + process.exit(1); +} +if (!Array.isArray(val.byedpi) || val.byedpi.length === 0) { + console.error("Missing byedpi strategies"); + process.exit(1); +} +NODE + +# 2. Check each strategy passes its respective engine validator +byedpi_args="$(JSON_VALUE="$strategies_json" node - <<'NODE' +const val = JSON.parse(process.env.JSON_VALUE); +for (const s of val.byedpi) { + console.log(s.args); +} +NODE +)" + +while IFS= read -r args; do + [ -n "$args" ] || continue + check="$(ucode -L "$TACHYON_LIB" -- "$BYEDPI_VALIDATOR" validate-json "$args")" + JSON_VALUE="$check" node - <<'NODE' +const val = JSON.parse(process.env.JSON_VALUE); +if (!val.valid) { + console.error("ByeDPI strategy invalid:", val); + process.exit(1); +} +NODE +done <<< "$byedpi_args" + +zapret_args="$(JSON_VALUE="$strategies_json" node - <<'NODE' +const val = JSON.parse(process.env.JSON_VALUE); +for (const s of val.zapret) { + console.log(s.args); +} +NODE +)" + +while IFS= read -r args; do + [ -n "$args" ] || continue + check="$(ucode -L "$TACHYON_LIB" -- "$ZAPRET_VALIDATOR" validate-json nfqws "$args")" + JSON_VALUE="$check" node - <<'NODE' +const val = JSON.parse(process.env.JSON_VALUE); +if (!val.valid) { + console.error("Zapret strategy invalid:", val); + process.exit(1); +} +NODE +done <<< "$zapret_args" + +zapret2_args="$(JSON_VALUE="$strategies_json" node - <<'NODE' +const val = JSON.parse(process.env.JSON_VALUE); +for (const s of val.zapret2) { + console.log(s.args); +} +NODE +)" + +while IFS= read -r args; do + [ -n "$args" ] || continue + check="$(ucode -L "$TACHYON_LIB" -- "$ZAPRET2_VALIDATOR" validate-json nfqws2 "$args")" + JSON_VALUE="$check" node - <<'NODE' +const val = JSON.parse(process.env.JSON_VALUE); +if (!val.valid) { + console.error("Zapret2 strategy invalid:", val); + process.exit(1); +} +NODE +done <<< "$zapret2_args" + +# 3. Check status returns clean default state +status_json="$(ucode -L "$TACHYON_LIB" -- "$FUZZER" status)" +JSON_VALUE="$status_json" node <<'NODE' +const val = JSON.parse(process.env.JSON_VALUE); +if (val.running !== false) { + console.error("Default fuzzer status should have running: false"); + process.exit(1); +} +if (!Array.isArray(val.results)) { + console.error("Results should be an array"); + process.exit(1); +} +NODE + +# 4. Check tachyon CLI command map contains fuzzer commands +grep -q 'fuzzer_start:' "$TACHYON_BIN" || fail "tachyon CLI missing fuzzer_start" +grep -q 'fuzzer_status:' "$TACHYON_BIN" || fail "tachyon CLI missing fuzzer_status" +grep -q 'fuzzer_stop:' "$TACHYON_BIN" || fail "tachyon CLI missing fuzzer_stop" +grep -q 'fuzzer_apply:' "$TACHYON_BIN" || fail "tachyon CLI missing fuzzer_apply" +grep -q 'fuzzer_strategies:' "$TACHYON_BIN" || fail "tachyon CLI missing fuzzer_strategies" + +printf 'PASS: fuzzer_strategy_cli\n'