Commit Graph
100 Commits
Author SHA1 Message Date
Dushnilin 459c1a0f8b ci: add missing permissions block to workflows 2026-07-19 22:10:54 +03:00
Dushnilin 89632c1db4 chore: fix dependencies vulnerabilities and tests 2026-07-19 22:08:08 +03:00
Dushnilin a6eeb780dc fix: убрана сетка-контейнер для плоских узлов 2026-07-19 22:02:22 +03:00
Dushnilin 4a09a21e4d fix: исправить вёрстку для узлов типа AWG 2026-07-19 22:00:58 +03:00
Dushnilin 9950b1ead4 fix: улучшено сворачивание клиентов и плоский дизайн AWG 2026-07-19 21:52:18 +03:00
Dushnilin 09ab785315 fix: скрыть спам от дебаг логов в консоли 2026-07-19 21:49:27 +03:00
Dushnilin cb3cce70ea fix: исправлено отображение пинга AWG и сворачивание активных клиентов 2026-07-19 21:40:04 +03:00
Dushnilin 608b73423d fix: исправление проверки пинга для AWG и перевод Check Connection 2026-07-19 21:25:24 +03:00
Dushnilin f1a724fbc9 fix: correct validation assignment for dns_rewrite_ttl 2026-07-19 21:13:14 +03:00
Dushnilin 2e8fdf87b6 feat: улучшения дашборда, активные клиенты и исправления UI
- Дашборд: Добавлена таблица 'Активные клиенты' с отображением имен устройств, IP, соединений и трафика.
- Дашборд: Исправлена ширина интерфейса при свернутом блоке подписки.
- Дашборд: В заголовке свернутой подписки теперь отображается пинг выбранного сервера.
- Дашборд: Для AWG и VPN соединений в таблице отображается пинг вместо статуса 'Connected'.
- Диагностика: Исправлена кнопка генерации отчета об ошибках (bugreport) и добавлена маскировка приватных данных.
- Локализация: Обновлены файлы переводов .po, исправлен парсинг кавычек в генераторе.
2026-07-19 20:57:38 +03:00
Dushnilin ba4709775f chore: add translations for bugreport strings 2026-07-19 20:01:48 +03:00
Dushnilin 0911ffcf75 Release 1.2.11
- Custom DNS hosts support

- AmneziaWG MTU support

- VPN status UI fixes

- Twemoji flags in Monitoring

- Bugreport sensitive data masking

- DNS device filter

- Routing conflicts protection

- Rule-set download errors display

- Universal community lists

- OpenWrt LuCI themes CSS compatibility

- Fix MSS Clamping syntax error

- Remove HTTP proxy mention in copy link

- Sync translations
2026-07-19 19:37:43 +03:00
Dushnilin e5f5a96f75 fix: sync translations and fix ui tests for list hints 2026-07-19 14:29:22 +03:00
Dushnilin 16066d09ac fix: correct nftables rt mtu syntax and add MTU to AmneziaWG 2026-07-19 14:24:36 +03:00
Dushnilin 7b44dc410d fix(ui): simplify VPN connection status
Remove latency testing logic and the test button for VPN nodes (AmneziaWG, WireGuard, WARP). Since they are not proxies, standard latency tests via sing-box fail or timeout. Now we only display whether the node is running or not.
2026-07-19 14:07:33 +03:00
Dushnilin c5a387b6a3 UI: Fix connection status for section title button 2026-07-19 13:55:58 +03:00
Dushnilin a8384c7c17 UI: Improve connection status for VPN/AWG sections 2026-07-19 13:54:54 +03:00
Dushnilin d18af208d7 Translations: add RU for new list description strings
- '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' → 'Подсети по умолчанию игнорируются'
2026-07-19 12:49:16 +03:00
Dushnilin 7eafb48c6b DNS device filter, bypass exclusivity, list descriptions, rule-set error detection, mask private_key+url
- 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
2026-07-19 12:49:16 +03:00
Dushnilin aedc7cba19 Flag emoji (Twemoji), monitoring CSS vars for third-party themes, HTTP proxy removed from proxy URL 2026-07-19 12:49:16 +03:00
Dushnilin 73c0cda51a Remove russia_inside/regional restrictions on built-in lists 2026-07-19 12:49:16 +03:00
Dushnilin af41f6ddba Revert "FakeIP кэш перенесён в персистентное хранилище /etc/sing-box/"
This reverts commit 4e6b1d776c.
2026-07-19 12:04:33 +03:00
Dushnilin 4e6b1d776c FakeIP кэш перенесён в персистентное хранилище /etc/sing-box/
- Дефолтный путь 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) вариант
2026-07-19 12:02:49 +03:00
Dushnilin 0152f4df38 Добавлена загрузка конфига .conf для AmneziaWG
- Новая кнопка 'Загрузить .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
2026-07-19 11:20:17 +03:00
Dushnilin 387a78aebb Кнопка Generate WARP Config: исправление binary UCI и стилизация
- Добавлен генератор 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 с анимациями)
2026-07-17 22:22:08 +03:00
Dushnilin ad03951a1d fix(firewall): добавить постоянные правила mss clamping в конфигурацию nftables 2026-07-17 19:45:36 +03:00
Dushnilin 4604053e20 watchdog: fix syntax error invalid character range in smart_detect_run regex
[COMMIT_END]
2026-07-17 19:19:12 +03:00
Dushnilin f71a4d054e telegram bot: исправить порядок объявления функций и перенаправить stdout/stderr в лог; вернуть CI-сценарии 2026-07-17 18:57:04 +03:00
Dushnilin 4af1a6de19 fix(telegram): перенести вспомогательные функции clash выше get_system_status для исправления ошибки hoisting в ucode 2026-07-17 18:42:55 +03:00
Dushnilin 8292e96f57 fix(luci): добавить retain = true в настройки Telegram-бота для предотвращения удаления конфигурации при выключении бота 2026-07-17 18:30:16 +03:00
Dushnilin d1510da248 fix(singbox): рефакторинг исходящего соединения amneziawg в эндпоинт для поддержки sing-box 1.13+ 2026-07-17 18:01:29 +03:00
Dushnilin a6c9907def fix(warp): починить пустой список в Registration Detour, используя стандартный генератор выбора (subscriptionDownloadTargetChoices) 2026-07-17 17:07:35 +03:00
Dushnilin 0ac49385a0 feat(warp): добавить поддержку detour (Registration Detour) для WARP и обрезку пробелов в токене 2026-07-17 17:01:59 +03:00
Dushnilin 38e228950d fix(warp): исправить структуру WARP-эндпоинта (заменить массив profiles на объект profile) 2026-07-17 16:57:52 +03:00
Dushnilin a86f77aaaa fix(route): добавить поддержку новых протоколов и WARP в целевые действия маршрутизации, исправить ошибку unsupported action 2026-07-17 16:54:48 +03:00
Dushnilin 69d851867b fix(warp): убрать валидацию обязательности поля warp_access_token в UI 2026-07-17 16:52:43 +03:00
Dushnilin ab3671d98d fix(warp): сделать warp_access_token необязательным — достаточно private_key и account_id 2026-07-17 16:50:10 +03:00
Dushnilin 510f4d2baf fix(generator): убрать trailing comma в add_anytls_outbound, ломавшую парсинг generator.uc 2026-07-17 16:46:45 +03:00
Dushnilin 216485b345 ci: обновить версии GitHub Actions для устранения предупреждений Node.js 20 2026-07-17 16:31:24 +03:00
Dushnilin 422a206b4b feat(extended): добавить все протоколы sing-box-extended с правильным гейтированием 2026-07-17 16:21:48 +03:00
Dushnilin 3dc96c7a11 i18n(ru): добавить русские переводы для всех 283 непереведённых строк 2026-07-17 16:21:48 +03:00
Dushnilin 04f5c7144f feat: добавить поддержку действия WARP через эндпоинты sing-box-extended 2026-07-17 16:21:48 +03:00
Dushnilin 57ea9f1775 chore: триггер CI для бэкенда после исправления локализации 2026-07-17 16:21:48 +03:00
Dushnilin e2c72a14a9 fix: синхронизировать RU PO файлы fe-app-tachyon и luci-app-tachyon 2026-07-17 16:21:48 +03:00
Dushnilin 6e5aad9009 chore: триггер CI для бэкенда 2026-07-17 16:21:47 +03:00
Dushnilin 6de48622d9 chore: триггер CI для бэкенда 2026-07-17 16:21:47 +03:00
Dushnilin 53f513f703 fix: перевод строки "Cannot save settings" в RU каталоге 2026-07-17 16:21:47 +03:00
Dushnilin f4197b7ae3 feat: добавить поддержку параметров обфускации awg-openwrt v2 (S3, S4, I1-I5) 2026-07-17 16:21:47 +03:00
Dushnilin b533c4db41 feat: показывать автоопределённые домены в виджете Smart Detect и разрешить их редактирование в секциях маршрутизации 2026-07-17 16:21:47 +03:00
Dushnilin bc2bcde14c fix: интегрировать виджет Smart Detect в конвейер сохранения LuCI, исправить разбор Babel AST 2026-07-17 16:21:47 +03:00
Dushnilin 88b9091ebe fix: заполнить переводы статических JS-строк в RU каталоге, сохранять их в generate-po.js 2026-07-17 12:59:25 +03:00
Dushnilin d360ed1150 fix: синхронизировать RU каталог переводов (excluded_ips, описание) 2026-07-17 12:36:44 +03:00
Dushnilin 48360df6eb fix: обновить фикстуры тестов под новое поле excluded_ips в сигнатуре 2026-07-17 12:33:32 +03:00
Dushnilin 3459f253cb feat: исключение устройств из маршрутизации секции (excluded_ips)
- LuCI: новое поле 'Исключить устройства' в форме секции (addLocalDeviceSubnetDynamicField)
- Перевод RU: 'Исключить устройства' + описание
- sing-box: add_excluded_ips_rule() — direct-bypass правило с наивысшим приоритетом
- nftables: nft_excluded_source_match_args() — негативный матч saddr в правилах маркировки
- Сигнатуры: nft/apply.uc + service/state.uc — отслеживание изменений excluded_ips
- TypeScript: поле excluded_ips в типе секции
- Диагностика: IP исключённых устройств маскируются в логах поддержки
2026-07-17 12:29:43 +03:00
Dushnilin 66d326e064 feat: excluded_ips - exclude devices from section routing
- LuCI section.js: new 'Excluded devices' field (after fully_routed_ips)
- po/ru: translations for new field and description
- singbox/generator.uc: add_excluded_ips_rule() - direct bypass rule, highest priority
- nft/apply.uc: nft_excluded_source_match_args() - negative saddr match in nft rules
- nft/apply.uc + service/state.uc: signature tracking for config change detection
- fe-app-tachyon/src/tachyon/types.ts: excluded_ips type field
- maskDiagnostics.ts: redact excluded_ips in support logs
2026-07-17 12:24:35 +03:00
Dushnilin 7c04189955 fix: handle_rule_view - восстановить s=get_all, экранировать HTML-лейбл, показывать user_domains, добавить обработку ошибок 2026-07-17 12:12:09 +03:00
Dushnilin 0aeb853376 fix: режим отправки telegram считывает неверное смещение ARGV при вызове через бинарник tachyon 2026-07-17 12:03:33 +03:00
Dushnilin 01c7b85dea i18n: добавить русские переводы для статуса Watchdog и виджетов Smart Detect 2026-07-17 11:43:57 +03:00
Dushnilin 22c7455e57 fix: фильтровать секции Smart Detect по тестируемым действиям (connection/proxy/vpn/zapret/zapret2/byedpi) 2026-07-17 11:36:16 +03:00
Dushnilin 5aaf8c7ec2 fix: использовать правильный тип UCI 'section' для секций маршрутизации в виджете Smart Detect 2026-07-17 11:26:28 +03:00
Dushnilin 3e58783977 feat: переместить расширенные настройки на вкладку «Настройки», добавить выбор секции для теста доменов 2026-07-17 10:09:52 +03:00
Dushnilin 5391d860e7 feat: панель расширенных настроек LuCI - Watchdog, Smart Detect, маршрутизация по устройствам 2026-07-17 09:33:14 +03:00
Dushnilin 4cf3ab99df feat: per-device routing, smart detect, telegram full control, multilang bot
- watchdog.uc: Smart Detect self-healing routing - auto-detects blocked
  domains from sing-box logs, verifies via proxy, auto-adds to section
- watchdog.uc: Pause auto-resume - watchdog monitors PAUSE_FILE and
  auto-resumes Tachyon when pause duration expires
- telegram.uc: Full command suite: /pause, /resume, /watchdog,
  /add, /bypass, /rules, /devices, /backup, /speed, /doctor
- telegram.uc: RU/EN auto-detect from LuCI language setting
- telegram.uc: /watchdog shows daemon status with start/stop buttons
- telegram.uc: /add, /bypass with interactive section picker buttons
- telegram.uc: callback handlers for /wd_start, /wd_stop, /do_pick
- tachyon CLI: watchdog_start and watchdog_stop commands
- types.ts: fully_routed_ips, user_domains, smart_detect fields
- config: smart_detect and language options in default UCI config
- worker(): language-aware command list registration in Telegram
2026-07-17 09:11:10 +03:00
Dushnilin ab92110bad fix: предотвратить состояние гонки (race conditions) nft в list_update при reload-firewall 2026-07-16 19:11:39 +03:00
Dushnilin becc129a49 fix: исправлен race condition nft + управление Telegram ботом в LuCI
- backend: исправлена гонка данных (race condition) при старте роутера,
  когда list_update пытался добавить элементы в nft-сеты, пока reload-firewall
  ещё пересоздавал таблицу TachyonTable. Фаза применения nft теперь защищена
  RELOAD_LOCK_DIR, что устраняет ошибку 'nft add element ... No such file or directory'

- backend: добавлены CLI-команды telegram_status, telegram_start, telegram_stop
  в /usr/bin/tachyon для управления ботом из LuCI

- luci: добавлен виджет статуса Telegram-бота на вкладке настроек —
  показывает состояние (запущен/остановлен с PID), кнопки Запустить/Остановить,
  автообновление каждые 10 секунд без перезагрузки страницы

- frontend: пересобран main.js (yarn ci — 507 тестов прошли успешно)
- версия npm-пакета: 1.2.0
2026-07-16 16:55:13 +03:00
Dushnilin b7ccf19993 docs: удалить разделы 6 и 7 из README 2026-07-16 12:34:25 +03:00
Dushnilin 63e24b089f docs: обновить README.md подробным списком функций и удалить раздел пожертвований 2026-07-16 12:33:36 +03:00
Dushnilin 689aaf2dd5 fix(telegram,diagnostics): кастомный IP-адрес external_controller для API Clash и надежный откат MSS clamping 2026-07-16 11:48:32 +03:00
Dushnilin 881ad5e647 fix: экспортировать cursor в core.uci 2026-07-16 11:27:14 +03:00
Dushnilin 1981cec706 feat: интерактивное управление правилами маршрутизации в Telegram-боте 2026-07-16 11:18:55 +03:00
Dushnilin 573aa49ef3 fix: добавить недостающий метод validateRequiredText в section.js 2026-07-16 06:42:55 +03:00
Dushnilin 536bfb59c7 fix: синхронизировать локали и логику генератора awg 2026-07-15 23:45:28 +03:00
Dushnilin 9ef5384c6a feat: нативная поддержка AmneziaWG и защита от утечек P2P 2026-07-15 23:41:13 +03:00
Dushnilin 36ccc7a9cd Fix: исправить параллельный запуск тестов CI и переменную BUILD_OUT в скрипте E2E Docker 2026-07-15 22:53:39 +03:00
Dushnilin 4ad624ce61 Clean: очистить код запуска E2E и восстановить стандартный вывод сборки 2026-07-15 22:49:27 +03:00
Dushnilin 05a7afbe80 Fix: исправить права на выполнение build.sh внутри E2E-контейнера 2026-07-15 22:33:17 +03:00
Dushnilin 97b29f230c feat(telegram): добавить динамические инлайн-кнопки и инструменты диагностики в боте, установить права исполнения для скриптов 2026-07-15 22:23:58 +03:00
Dushnilin 7471b8c965 feat(telegram): добавить переключатель watchdog в настройках и применить исправления для бота 2026-07-15 21:45:26 +03:00
Dushnilin faa6e70202 i18n(ru): обновить русские переводы для вкладки Telegram Bot 2026-07-15 18:05:02 +03:00
Dushnilin 509cf128b8 Merge: объединить изменения из upstream forkop в tachyon, разрешить конфликты и исправить тесты E2E 2026-07-15 17:56:18 +03:00
Dushnilin f0d6af0d6f Исправление: Внедрен hot-reload (SIGHUP) для sing-box при обновлениях 2026-07-14 20:45:46 +03:00
Dushnilin 50cd1f59c9 Поднятие версии до 1.1.4 2026-07-14 19:28:01 +03:00
Dushnilin 3a02e91a6e Исправление цикла перезапусков и утечки процессов в Watchdog
- Добавлена очистка зомби-процессов tail, слушающих honeypot fifo
- Внедрена блокировка concurrent-запусков через проверку lock-файлов и состояния CLI (tachyon_cli_running)
- Добавлен 30-секундный интервал (debounce) для автоматических перезапусков
- Устранены ошибки старта sing-box и ложные удаления таблиц nftables из-за накладывающихся вызовов
2026-07-14 19:27:07 +03:00
Dushnilin 8223d0de68 Release 1.1.3: исправить захардкоженный IP-адрес Clash API в боте и сопоставить команду doctor CLI с функцией global_check 2026-07-14 10:26:52 +03:00
Dushnilin 7a8e891a34 Release 1.1.2: предотвратить сбой установки пакета, когда запуск службы postinst возвращает ненулевой код 2026-07-14 10:04:43 +03:00
Dushnilin 162915a94c Release 1.1.1: исправить отсутствующий вызов process_command и недостающий хелпер double float в старых средах ucode 2026-07-14 09:54:50 +03:00
Dushnilin 2f825f80a3 Release 1.1.0: экспортировать command_success_from_args в core/common.uc 2026-07-14 09:47:00 +03:00
Dushnilin 59c375fc02 Release 1.0.9: реализовать расширенные функции Telegram-бота 2026-07-14 09:37:44 +03:00
Dushnilin b60fd322c9 Release 1.0.8: обновить TACHYON_RELEASE_REPO на Dushnilin/tachyon 2026-07-14 09:27:51 +03:00
Dushnilin 445603ddca Release 1.0.7: исправить захардкоженный IP-адрес роутера в Telegram-боте 2026-07-14 09:16:32 +03:00
Dushnilin 46ef97fe89 Release 1.0.6: синхронизировать изменения из upstream и исправить баг фильтра URLTest/Priority 2026-07-14 08:56:31 +03:00
Dushnilin bb1de1fd83 Merge branch 'temp-upstream-rebrand' into main
Resolves merge conflicts:
- install.sh, build.sh, .github/workflows/build.yml: Reverted to Dushnilin's versions to avoid installing SourceForge mirrors.
- fe-app-tachyon: Resolved type, formatting and copyOutbound conflicts, keeping both Dushnilin's custom features and ushan0v's frontend performance optimizations.
- backend: Kept Dushnilin's ucode refactorings, Telegram bot integration, and release repository URL (Dushnilin/tachyon) while merging updates.uc cache format v8 & persistent cache format v7.
- tests: Merged tests from both branches, preserving ucode -L wrappers for local test execution.
2026-07-14 08:01:45 +03:00
Dushnilin 6e867ca2c4 Cleanup: удалить старые файлы forkop 2026-07-14 07:49:37 +03:00
Dushnilin 14df12a18d Rebrand upstream: переименовать forkop в tachyon 2026-07-14 07:48:33 +03:00
Dushnilin 8e95b79841 Исправление ошибок рефакторинга (packages.uc, state.uc, cache.uc) 2026-07-13 23:58:48 +03:00
Dushnilin baea672ee3 Исправление оставшихся синтаксических ошибок от скрипта дедупликации (updates.uc, rulesets.uc, constants.uc) 2026-07-13 22:55:32 +03:00
Dushnilin f71b24fc84 Исправление синтаксической ошибки в migration.uc 2026-07-13 22:47:06 +03:00
Dushnilin f017d01a52 Рефакторинг кода: дедупликация ucode, исправления shellcheck и глобальное улучшение install.sh 2026-07-13 22:38:24 +03:00
Dushnilin 970ca5c3fe fix(core): ошибка запуска sing-box (сбой WAN) 2026-07-13 21:58:51 +03:00
Dushnilin 85c8e52488 Интеграция кнопки Tachyon Doctor в исходный код фронтенда 2026-07-13 21:13:21 +03:00