Commit Graph
121 Commits
Author SHA1 Message Date
Dushnilin 123f5e6ccf release: 1.3.7 - Telegram alert deduplication & rate limiting, DNS detour deadlock resolution, ucode fs.opendir fixes 2026-08-29 21:28:41 +03:00
Dushnilin 939d9418a2 release: 1.3.6 - Family Profiles, Mobile Responsiveness, Mixed Proxy fix & AI Doctor Fuzzer improvements 2026-08-29 13:57:17 +03:00
Dushnilin 6248452e79 chore(i18n): sync fe-app-tachyon locales with luci-app-tachyon catalogs 2026-08-29 08:34:58 +03:00
Dushnilin b620886b9e feat(fuzzer): DPI-детектор, авто-применение, история результатов
- DPI-детектор: перед бенчмарком определяет тип блокировки (RST/throttle/DNS)
  и переранжирует стратегии по приоритету (badseq для RST, multisplit для
  throttle, fake+TTL для DNS-блока)
- Авто-применение: галочка «Auto-apply best strategy» автоматически
  применяет выигравшую стратегию после завершения бенчмарка
- История: результаты бенчмарков сохраняются в /etc/tachyon/fuzzer_history.json
  (до 50 записей) — новая вкладка «History» в UI
- CLI: новые команды detect_dpi, auto_apply, history, clear_history
- Локализация: русские и английские строки для всех новых элементов UI
- Frontend: вкладка History, баннер DPI-детекции, чекбокс авто-применения
2026-08-27 15:29:07 +03:00
Dushnilin b000d3024a feat(fuzzer): мульти-таргетные сьюты, конструктор паттернов, кастомные стратегии и минималистичный UI 2026-08-27 13:54:51 +03:00
Dushnilin c58b7339f7 feat(fuzzer): алгоритмический комбинаторный генератор DPI-стратегий и выбор режима в LuCI 2026-08-27 07:50:21 +03:00
Dushnilin 3ead229264 feat(fuzzer): add RAG knowledge base and LLM-powered strategy synthesizer 2026-08-26 22:50:12 +03:00
Dushnilin dc6f0547b4 feat(fuzzer): автоматический подбор и тюнинг DPI-стратегий для Zapret v2, Zapret v1 и ByeDPI 2026-08-26 22:18:35 +03:00
Dushnilin 9bc6fe28fd feat(failover): автоматическое переключение прокси-секций
- генератор: при section_failover_enabled catch-all указывает на селектор tachyon-failover со всеми секциями-кандидатами
- выбор по умолчанию переживает рестарты через /etc/tachyon/failover_section, устаревшее имя откатывается на первую секцию
- service/failover.uc: пробер каждой секции через Clash API delay, порог N подряд — переключение на живую, TG-уведомление
- watchdog: вызов проверки в slow-тире (модуль сам отключён при выключенной опции)
- настройки: флаг + порог во вкладке Advanced, RU-локализация
- тесты: генерация вкл/выкл/персист/устаревшее состояние + логика переключения со стабом Clash API
2026-08-26 14:15:23 +03:00
Dushnilin b12f2fbdee feat(parental): дневные квоты времени на устройства
- опция daily_quota_minutes у расписаний: лимит минут использования сети в сутки
- поминутный cron-тик: учёт активности через ip neigh, блок до полуночи при исчерпании
- nft-сеты tachyon_quota_block (MAC) и _ip (IPv4) с drop-правилами; самовосстановление после ребилдов таблицы
- сброс счётчиков после смены суток, TG-уведомление о блокировке
- validator: проверка диапазона 0..1440
- UI: поле и колонка квоты в Родительском контроле + RU-локализация
2026-08-26 14:00:40 +03:00
Dushnilin 7f0b085a07 feat(tailscale): нативный режим tailscaled и компонент Tailscale
- новый компонент Tailscale: установка пакета из фида, карточка в Обновлениях
- режим native для секций Tailscale: системный tailscaled вместо sing-box endpoint
- доступ к тейлнету с LAN без клиента: маршруты 100.64.0.0/10 и MagicDNS через dnsmasq
- masquerade и exit-node (opt-in) с обходом tproxy по зарезервированной маске
- validator: требование tailscaled и auth-key для native; bypass-правила в mangle
- тесты: генерация конфига, смоук рантайма с моками, обновлена сигнатура состояния
2026-08-26 11:30:52 +03:00
Dushnilin 77e8cdaad0 feat: AI доктор — 5 багфиксов + Telegram кнопка
Багфиксы:
- rag.uc: исправлен порядок аргументов push() — RAG-эмбеддинги снова строятся
- fix_uci_config: правильный путь бэкапа (/etc/backup/tachyon_config + fallback)
- apply_quick_fix: честные exit codes для всех 23 фиксов
- doctor(): прокидывается busy flag в JSON-вывод
- diagnose_json: строится из checks[] вместо парсинга эмодзи из текста

UI:
- Кнопка Telegram канал (https://t.me/tachyon_proxy) на странице диагностики

Тесты:
- 5 новых проверок в ai_doctor_local.sh (uci_backup, exit codes, busy, structured checks, rag push)
2026-08-25 21:37:15 +03:00
Dushnilin 0b4edc4789 test(run_all): параллельный запуск с логами по тестам и сводкой pass/fail
run_all.sh гонял набор последовательно с fail-fast: первый упавший тест
отменял всё остальное, а CI (xargs -P4) расходился с локальным порядком.
Теперь поддерживается -P N параллельность как в CI, ведётся лог по каждому
тесту, печатается сводка pass/fail и вывод упавших, принимаются фильтры имён
для запуска подмножества, а ошибки синтакс-проверки по-прежнему прерывают
всё до старта тестов.
2026-08-21 20:50:21 +03:00
Dushnilin ae4f7c5128 fix(monitoring): оптимизация ширины колонок таблицы (уменьшена колонка Маршрут) и актуализация каталогов локализации 2026-08-21 15:01:00 +03:00
Dushnilin b2deb9a695 i18n(ru): добавить переводы WARP прокси, проверки Telegram и кнопки проверки подключения 2026-08-21 13:34:55 +03:00
Dushnilin e4e2d19c6d fix(runtime): устранение сбоев запуска sing-box, исправление правил nftables и защита от гонок вочдога
- Восстановление кэша правил: восстановление .srs, .lst, .json файлов из постоянного каталога /etc/tachyon/rulesets/ при старте; защита от удаления кэша при остановке; добавление фоллбэка пустых ruleset в runtime.uc перед валидацией
- nftables: удаление невалидного auto-merge для интервальных составных сетов (ipv4_addr/ipv6_addr . inet_service)
- core/ip: исправление нормализации IPv6-адреса и порта для TPROXY без дублирования скобок
- dns block: исправление возвращаемого статуса nft_add_dns_block_rules_from_schedules при отсутствии правил блокировки
- watchdog & lifecycle: добавление флага блокировки /var/run/tachyon/starting для исключения сброса правил вочдогом во время старта
- ui & i18n: форматирование бейджей устройств в родительском контроле и обновление переводов
2026-08-21 08:52:23 +03:00
Dushnilin adf5c7a22f i18n: добавить русские переводы для content blocking и telegram diagnose 2026-08-21 07:50:11 +03:00
Dushnilin bd083cc5d3 feat: content blocking в родительском контроле (блокировка доменов на устройство)
Новые опции config schedule:
- blocked_domains: домены для блокировки (full:/keyword:/regex: префиксы)
- mode: block (список) | allow (whitelist — всё кроме списка)
- dns_level: блокировка на DNS-уровне (NXDOMAIN через dns-block-in)
- notify: уведомление в Telegram при попытке доступа

Механизм:
- sing-box: новый dns-block-in inbound (127.0.0.43:1053) с reject-правилами
  для заблокированных доменов; source_ip_cidr для IP-устройств;
  invert для whitelist-режима
- nftables: nat chain dns_block — REDIRECT DNS-запросов устройств на
  dns-block-in; time-based через meta hour для расписаний; MAC-устройства
  матчатся по ether saddr (DHCP-динамические IP поддерживаются)
- route rules reject для always-on расписаний (fallback при обходе DNS)
- telegram worker: проверка nft counters каждые 60s, уведомление о
  заблокированной активности

UI (parental.js):
- колонка Blocked Sites в таблице
- textarea с пресетами: соцсети, видео, игры, взрослый контент,
  мессенджеры, магазины
- mode / dns_level / notify переключатели

Валидация: домены, mode, dns_level, notify в validator.uc
Тесты: tests/content_blocking.sh (98/98 backend, 522/522 frontend)
2026-08-21 05:11:39 +03:00
Dushnilin 7084b9ba3d chore: sync localization catalogs after telegram_diagnose strings 2026-08-20 22:28:27 +03:00
Dushnilin b53b93786a chore: sync locales after adding enable_rag and warp_proxy_section 2026-08-20 19:48:24 +03:00
Dushnilin bc10fff538 fix(i18n): синхронизировать fe-app и luci-app каталоги русской локализации 2026-08-18 14:25:45 +03:00
Dushnilin 1f116e571d feat: родительский контроль по расписанию, мультивыбор секций, перехват DNS и обновление локализации (1.2.86) 2026-08-17 20:34:42 +03:00
Dushnilin c35380200f fix(tailscale, ai): исправить скрытие полей Tailscale-сервера и добавить готовый пресет провайдера OpenRouter 2026-08-17 11:18:36 +03:00
Dushnilin bca948947e fix(updates): предотвратить повторные модальные окна и добавить активную проверку готовности сервисов роутера перед перезагрузкой страницы 2026-08-17 10:27:16 +03:00
Dushnilin beb132690e fix(server): добавить валидатор validatePositiveInteger для полей MTU и Keepalive сервера AWG 2026-08-16 20:35:23 +03:00
Dushnilin 9b5707982c feat(servers): полная поддержка генератора конфигураций AmneziaWG, QR-кода, скачивания .conf и расширенных настроек сервера 2026-08-16 19:37:14 +03:00
Dushnilin 1062982070 fix(ui): отображение всех условий маршрутизации (списки сообщества, IP, устройства, порты) для секций AWG, WARP и расширенных прокси 2026-08-16 17:50:58 +03:00
Dushnilin 5adda4bba7 fix(i18n,watchdog): полная актуализация русской локализации интерфейса и исправление детекции WAN в Watchdog 2026-08-16 16:01:37 +03:00
Dushnilin d2a4243aa2 feat(ui): постоянная кнопка аварийного возврата прямого интернета в окне AI Doctor и действиях диагностики 2026-08-15 19:24:44 +03:00
Dushnilin 528bc7b9db feat(doctor): расширенная офлайн-диагностика (NTP, conntrack, deadlock, MTU) и аварийный возврат интернета 2026-08-15 17:18:23 +03:00
Dushnilin 95a209adc9 feat(dashboard): show active server on URLTest cards and allow manual server selection with reset to auto 2026-08-15 13:00:39 +03:00
Dushnilin e0828eb53a fix(diagnostics): fix false-positive sing-box DNS check on busybox nslookup and auto-fetch LAN clients in support report 2026-08-15 12:12:59 +03:00
Dushnilin 3c5108b26b fix(i18n): translate all AI Doctor and LAN inspector strings to Russian and fix diagnostic banner status logic 2026-08-15 12:00:28 +03:00
Dushnilin af541bc4bd fix(updates): log as primary modal content + fix ru.po regression
The progress modal showed fake step indicators that auto-advanced on a timer, hiding the real operation log behind a small panel. Now the modal is just header + full-size log (350px) + action buttons. Steps, progress bar, and status message removed; updateStep/updateStatus become no-ops.\n\ngenerate-po.js silently dropped every ru.po entry not present in calls.json, wiping ~100 manual translations. It now preserves existing entries. All empty msgstr filled (operation log, port validation, restore).\n\nStyles: removed step/progress bar CSS, enlarged log panel, modal max-width 640px.
2026-08-14 14:46:51 +03:00
Dushnilin 8ecc3ee685 feat(updates): live operation log with page lock in progress modal
The progress modal faked its steps on a timer because the worker only wrote to syslog. Now every updates_log line is appended to <job>.log (UPDATES_JOB_LOG), the running state advertises log_path, the log survives job completion until the TTL sweep, and the new component_action_log CLI mode serves it from a byte offset. The UI polls it into a monospace panel with auto-scroll, exposes a Copy log button, and the modal cannot be closed while the job runs (only the disabled progress button is shown).
2026-08-14 13:20:33 +03:00
Dushnilin 85ce7f98c7 feat(snapshots): сохранение и восстановление рабочих конфигов из расширенных настроек 2026-08-14 11:36:48 +03:00
Dushnilin 65b216b6a2 feat(p2p): поле портов торрент-клиента для изоляции P2P (issue #31) 2026-08-14 09:46:15 +03:00
Dushnilin 305e14d44e feat(reset): кнопка сброса настроек в LuCI и дефолтное состояние при чистой установке
- новый модуль service/reset.uc (режим reset-settings, флаг no-start): остановка сервиса, чистка runtime/кэшей, сохранение tailscale, запись дефолтного конфига
2026-08-13 21:06:39 +03:00
Dushnilin 9b4767a5af fix(tests): убрать повторную декларацию seen_domains и добавить ключ локализации 2026-08-13 09:07:55 +03:00
Dushnilin 443a62ece7 feat(ui): явные русские названия категорий и элементов интерфейса в окне проверки доступности 2026-08-13 08:38:11 +03:00
Dushnilin 19a8e2219b Enhance update progress modal step granularity, timers and theme-agnostic styling 2026-08-12 14:17:08 +03:00
Dushnilin 02496fd9fb Add interactive progress modal dialog with animated progress bar and live steps for component updates 2026-08-12 13:51:08 +03:00
Dushnilin ca77b519ea Restore full Russian translation catalog (2400+ lines) and merge missing UI tab/section keys 2026-08-12 13:41:11 +03:00
Dushnilin 2396197d99 Update Russian translation catalogs for UI tabs, sections, and action buttons 2026-08-12 13:29:00 +03:00
Dushnilin e1a0f04e4a Update localization catalogs and fill script for Cannot save settings 2026-08-12 12:51:16 +03:00
Dushnilin fb1d9dfe5b Fix CI test failures: add missing Russian translation for 'Cannot save settings' and use common.background_command in service_check.uc 2026-08-12 12:39:30 +03:00
Dushnilin 5b372f5572 v1.2.75: Add Service Check mode switcher (Active Sections / All Profiles), restore AI Chat Assistant, harmonize action button styles, and fix dark theme compatibility 2026-08-12 12:22:52 +03:00
Dushnilin 2bd2fd7645 feat(diagnostics): нативная кнопка проверки сервисов
Реализована нативная проверка сервисов (watchdog, telegram, sing-box) через ucode, избавляя от внешней зависимости forkop-servicecheck.
2026-08-12 10:42:09 +03:00
Dushnilin 2b4d8cd4e0 fix(i18n): wrap Ollama and LM Studio labels in _() with English defaults and update po/pot 2026-08-11 22:29:34 +03:00
Dushnilin 1a1fd7f4c3 fix(settings): add Ollama & LM Studio to CBI settings tab options and make API key optional for local LLMs 2026-08-11 22:27:57 +03:00