- Add download_candidates helper in core/url.uc to auto-generate ghproxy mirror URLs (ghproxy.net, mirror.ghproxy.com, gh-proxy.com) for GitHub and external downloads
- Enhance download_to_file and download_subscription to try mirror candidates if direct download fails due to DPI or blocking
- Fallback to disk cache if all download attempts fail, preventing sing-box and service crashes on network outages
- Add 'Load Current Records' button in UI hosts import modal to pre-fill editor from saved configuration
- Synchronize localization catalogs
1. Добавлен встроенный установщик Tor через LuCI-попап с поддержкой opkg и apk.
2. Маршрутизация скрытых сетей (.onion / .i2p) интегрирована на уровень backend (route.uc, generator.uc).
3. Добавлена прозрачная поддержка форка sing-box lx: UI и генераторы теперь корректно включают 'extended' фичи для lx.
4. Проведен полный аудит и восстановление отсутствующих переводов в fe-app-tachyon и luci-app-tachyon.
- Дашборд: Добавлена таблица 'Активные клиенты' с отображением имен устройств, IP, соединений и трафика.
- Дашборд: Исправлена ширина интерфейса при свернутом блоке подписки.
- Дашборд: В заголовке свернутой подписки теперь отображается пинг выбранного сервера.
- Дашборд: Для AWG и VPN соединений в таблице отображается пинг вместо статуса 'Connected'.
- Диагностика: Исправлена кнопка генерации отчета об ошибках (bugreport) и добавлена маскировка приватных данных.
- Локализация: Обновлены файлы переводов .po, исправлен парсинг кавычек в генераторе.
- 'Domain and IP lists' → 'Списки доменов и IP'
- '.lst lists containing domains and subnets' → 'с доменами и подсетями'
- '.lst lists containing domains. IP entries are ignored' → 'IP игнорируются'
- '.srs/.json lists. Subnets are ignored by default' → 'Подсети по умолчанию игнорируются'
- dependsOnRuleConditions(): show Device filter also for DNS when conditions are set
- makeDeviceOptionsExclusive(): prevent same device in Device filter + Forced routing simultaneously
- fullyRoutedOption: also shows for DNS action
- ruleSetOption: 'Subnets are ignored by default' (was: Only domain rules)
- domainIpListsOption: renamed 'Domain and IP lists', retain=true, dependsOnRoutingAction, write/remove handlers
- dnsDomainListsOption: new field for DNS action showing 'Domain lists' with IP-ignored note
- _dns_domain_ip_lists: added to dependsOnRuleConditions DNS conditions
- isErrorLogLine: detect sing-box rule-set download errors
- maskDiagnostics: mask option private_key and option url
- Дефолтный путь cache.db изменён: /tmp → /etc/sing-box/cache.db
- При перезагрузке роутера fakeip маппинги сохраняются (overlay fs)
- При SIGHUP hot-reload sing-box читает полный кэш без потерь
- При tachyon stop кэш удаляется (clean state)
- UI настроек обновлён: Persistent выбран по умолчанию, RAM помечен как 'lost on reboot'
- Удалён устаревший Flash (/usr/share) вариант
- Новая кнопка 'Загрузить .conf' в настройках AWG-секции
- Парсинг INI-формата AmneziaWG .conf файлов на стороне браузера
- Нормализация поля Address: добавляет /32 (IPv4) и /128 (IPv6) если нет
- Автоконвертация I1-I5 из формата UCI binary <b 0xHEX> в чистый hex
- Заполняет все поля: PrivateKey, Address, PublicKey, Endpoint, Jc/Jmin/Jmax, S1-S4, H1-H4, I1-I5, PresharedKey
- Визуальная обратная связь: состояния success/error с автосбросом
- Переводы добавлены в ru.po
- Добавлен генератор WARP конфигурации (warp_generator.uc)
- Исправлена запись binary UCI значений (<b 0x...>) в поля awg_i1-i5:
warp_generator.uc использует to_hex(), section.js очищает значения перед записью
- generator.uc: добавлена защита uci_bin_to_hex() при чтении awg параметров
- generator.uc: поля awg_i3/i4/i5 со значением '0' пропускаются
- section.js: кнопка Generate WARP Config переработана в стиле Tachyon UI
(cbi-button-neutral, состояния loading/success/error с анимациями)