Commit Graph
100 Commits
Author SHA1 Message Date
Dushnilin 2bbc041686 docs: обновление README.md и добавление англоязычной версии README.en.md 2026-07-30 10:01:42 +03:00
Dushnilin bd4c686479 refactor(zapret2): исправление правил nftables, отказ от автоподбора и переход на zapret2-mcp 2026-07-30 09:37:46 +03:00
Dushnilin 93eac2002e Zapret2 Auto-Tune: Remove baseline_none and add generic UDP bypass for Discord voice 2026-07-29 22:45:01 +03:00
Dushnilin 6c1d3dc7be LuCI: Remove express/deep scan dropdown, use single deep scan 2026-07-29 22:39:45 +03:00
Dushnilin f48258ef2e Zapret2: Implement dynamic combinatorial strategy generator (tune) 2026-07-29 22:39:04 +03:00
Dushnilin 28b3a98ec2 Fix AI Watchdog QoS parsing issue with nftables DSCP names 2026-07-29 22:10:55 +03:00
Dushnilin d52c1bf6a2 Fix zapret2 tuner: use nftables for bypass, DoH for real IPs and fs.popen to avoid stdout corruption 2026-07-29 21:28:48 +03:00
Dushnilin 0100935f3d Fix zapret2 tuner: use nftables for bypass and DoH for real IPs 2026-07-29 21:18:29 +03:00
Dushnilin cc41864d2d fix(test): sync po file 2026-07-29 19:58:35 +03:00
Dushnilin 4422416227 fix(ui): native rules button layout and tracer community match logic 2026-07-29 18:32:17 +03:00
Dushnilin 3821e92148 style(luci): complete visual redesign of zapret2 strategy tuner with 1-click automated section domain optimization 2026-07-29 13:41:41 +03:00
Dushnilin bf28dce4a8 fix(ui): prevent false worker exit timeout during deep scan strategy tuning 2026-07-29 13:28:51 +03:00
Dushnilin 03f6699099 feat(zapret2): fully automated 1-click strategy tuner for section domains and fix state directory creation 2026-07-29 13:19:15 +03:00
Dushnilin a8187270ca fix(luci): use async background polling for strategy tuner to prevent XHR timeouts 2026-07-29 13:02:26 +03:00
Dushnilin b82f98288a ux(luci): render strategy auto-tuner inline inside section modal with visual textarea feedback 2026-07-29 12:59:44 +03:00
Dushnilin 14270430d2 fix(zapret2): improve strategy probe connectivity and winner evaluation logic 2026-07-29 12:02:51 +03:00
Dushnilin dc695ff2d5 fix(luci): use renderWidget for native LuCI dependency handling 2026-07-29 11:52:43 +03:00
Dushnilin f28035393b i18n(fe-app): add Russian translations for zapret2 strategy tuner 2026-07-29 11:44:32 +03:00
Dushnilin 3c4efea11b fix(luci): add zapret2 strategy tuner UI widget and fix AWG obfuscation visibility 2026-07-29 11:43:01 +03:00
Dushnilin 8b8c4b7df1 feat(zapret2): add high-performance strategy generator and tuner 2026-07-29 11:30:23 +03:00
Dushnilin c7ff142a48 Release 1.2.43 - Pre-download and cache all preset rulesets & databases 2026-07-29 08:58:00 +03:00
Dushnilin 28f2a04f02 chore(locales): synchronize extracted translation templates and Russian PO catalog 2026-07-28 21:48:24 +03:00
Dushnilin 53e3f1f041 feat(routing): add traffic type / protocol filtering and exclusion per section 2026-07-28 21:46:18 +03:00
Dushnilin a3e9981d13 fix(backend): optimize plain-list domain import to O(N) deduplication and fast-path ASCII parsing for 100k+ domain lists 2026-07-28 21:19:44 +03:00
Dushnilin 698ef4dd33 fix(ui): fix AWG group render argument signature to (option_index, section_id, in_table) 2026-07-28 11:35:09 +03:00
Dushnilin a54607a6e7 fix(ui): remove duplicate realSid declaration 2026-07-28 11:29:30 +03:00
Dushnilin 297ffd0975 fix(ui): resolve real UCI section name from CBI section_id in AWG group render 2026-07-28 11:22:10 +03:00
Dushnilin a06248cd6e fix(ui): read AWG params via cfgvalue() not uci.get() — fixes missing values in spoiler 2026-07-28 11:05:40 +03:00
Dushnilin 9dcb474228 feat(ui): AWG obfuscation params compact spoiler in OpenWRT style + ru translations; fix(types): add dns_turbo_cache to ConfigSection 2026-07-28 11:02:29 +03:00
Dushnilin 3e1c68f836 feat(ui): collapse AWG amnezia params (Jc/Jmin/Jmax/S1-4/H1-4/I1-5) into compact spoiler 2026-07-28 10:52:42 +03:00
Dushnilin e8fa171644 fix(protocols): WARP mtu=1280, AnyTLS SNI fallback to server, OpenVPN server validation 2026-07-28 10:47:01 +03:00
Dushnilin d2cb9d9e43 fix(awg): harden AmneziaWG validation, auto-convert plaintext headers to hex, and enforce optimal MTU/keepalive defaults 2026-07-28 09:22:54 +03:00
Dushnilin e936f39b53 fix(singbox): strip <b prefix from binary UCI buffer strings in uci_bin_to_hex 2026-07-28 01:02:28 +03:00
Dushnilin e9a9ead675 fix(updater): add fallback resolution for sing-box-extended when GitHub API rate-limits 2026-07-28 00:01:04 +03:00
Dushnilin b069e8f6a4 style(ui): remove emojis and clean up GeoIP mode labels 2026-07-27 18:47:04 +03:00
Dushnilin cc8cec4275 fix(ui): strip legacy all value and map non-ru in geoip_country load handler 2026-07-27 18:44:45 +03:00
Dushnilin eef4d587bd feat: custom multi-country GeoIP grouping and filter modes (include/exclude) 2026-07-27 18:30:02 +03:00
Dushnilin 1e82413022 style(ui): move GeoIP country routing option into section match conditions tab 2026-07-27 18:12:22 +03:00
Dushnilin 14507abaf0 fix(tests): add missing text_rule dscp field to nft_apply signature fixture 2026-07-27 17:30:35 +03:00
Dushnilin e11316f7d7 fix(tests): update nft signature fixtures in state.uc and tests for DSCP parity 2026-07-27 17:16:05 +03:00
Dushnilin 3c3a4b7035 feat(section): add DSCP mark matching for QoS application routing 2026-07-27 17:09:48 +03:00
Dushnilin f05a55c37e fix(core): remove hardcoded fallback version from constants.uc and use dynamic package lookup for APK and OPKG 2026-07-27 16:49:52 +03:00
Dushnilin 0eec769a90 fix(updates): fallback filenames without _all suffix to match actual release assets 2026-07-27 12:34:31 +03:00
Dushnilin 0adbbbdf03 fix(watchdog): prevent concurrent reload_firewall race with is_reload_in_progress() guard 2026-07-27 10:27:14 +03:00
Dushnilin 5e169a430b feat(watchdog): AI self-healing for community subnet sets, TPROXY port, /tmp cache restore + fix undefined check_firewall_rules 2026-07-27 10:23:53 +03:00
Dushnilin 5ff4c448bd fix: nft populate community subnets on reload + generator_routes return fix for Telegram 2026-07-27 09:02:44 +03:00
Dushnilin 197013f043 fix: persistent community subnet storage & reboot fallback for Telegram in section Main 2026-07-27 08:38:55 +03:00
Dushnilin b3e6fcd0c1 fix: load community subnets from /tmp/sing-box/rulesets path & bump v1.2.34 2026-07-26 22:56:16 +03:00
Dushnilin da55799a04 release: v1.2.33 - dynamic community subnets, AmneziaWG action support & flowtable bypass 2026-07-26 22:29:01 +03:00
Dushnilin c012a5710b refactor: remove hardcoded Telegram IP arrays in favor of fully dynamic community subnet loading
- updates.uc: cache downloaded built-in subnet lists (telegram, meta, twitter, etc.) to community-subnets-<service>.lst.
- generator_routes.uc: dynamically load community list IP CIDRs from cached subnet files for all community lists into sing-box route rules. Zero hardcoded IP arrays.
2026-07-26 21:45:15 +03:00
Dushnilin e9ad56df56 fix: complete Telegram routing, AmneziaWG action support & flowtable bypass
- nft/apply.uc: add 'awg' and 'warp' to action_captures_traffic so nftables
  creates priority sets for AmneziaWG / Cloudflare WARP sections.
- nft/apply.uc: insert flowtable bypass in fw4 forward for marked TPROXY packets
  so OpenWrt flow offloading doesn't hijack proxied connections.
- singbox/generator_routes.uc: include official Telegram IP CIDRs in route rules
  for telegram community list so direct IP connections match sing-box rules.
2026-07-26 21:31:31 +03:00
Dushnilin e98a2c325e fix: community subnets nftables population & Telegram IP ranges
- nft/apply.uc: nft_add_community_subnet_file_for_section now populates
  common_set (tachyon_subnets / tachyon_rule_<Section>_subnets) when section
  is not a priority rule section. Previously, community subnets for normal
  proxy/VPN sections were skipped completely.
- updates.uc: fix typo SUBNETS_TELERAM -> SUBNETS_TELEGRAM in BUILTIN_SUBNET_URLS
- bump version 1.2.31 -> 1.2.32
2026-07-26 21:18:26 +03:00
Dushnilin fa93ad4cd0 fix: sync Russian po catalogs and fix Unicode corruption in DNS Turbo Cache translations
- Both ru po files now byte-for-byte identical (cmp -s passes)
- Fixed Unicode corruption: u0411... literals replaced with actual UTF-8
- Unified description msgid between settings.js (LuCI) and fe-app
- Added Enable DNS Turbo Cache + Saving ellipsis entries to both files
- Updated pot files to match new description string
2026-07-26 20:52:50 +03:00
Dushnilin 399826f1f6 fix: dns_prefetch.uc - fix ucode syntax incompatibilities
- starts_with() not in ucode -> substr(line,0,1) != '#'
- push(arr, ...spread) not valid in ucode -> explicit for loop
2026-07-26 20:33:34 +03:00
Dushnilin ecb130cdb3 refactor: DNS Turbo Cache - dynamic domain extraction from UCI sections
Instead of relying only on a hardcoded list, now reads domains directly
from user's configured Tachyon sections:
  - user_domains (UCI list, type=dynamic)
  - user_domains_text (textarea, type=text)
  - domain / domain_suffix rule conditions

User's own proxy-routed domains are prefetched first, then the baseline
popular list fills in the rest. This means FakeIP cache is always warmed
for exactly the domains the user actually needs to bypass.
2026-07-26 20:32:30 +03:00
Dushnilin 50c178a9ff feat: expand DNS Turbo Cache prefetch list to 220+ domains
Added CDN subdomains, API endpoints, and more services:
- Telegram: api/core/cdn/updates/media subdomains
- YouTube: music/studio/nocookie, ytimg subdomains
- Meta: i.instagram, graph, fbcdn video, WhatsApp media/mmg
- Twitter: pbs/video/api.x.com/cards
- Discord: media/gateway/discord.media
- Reddit: old/v/preview/i.redd.it
- GitHub: gist/avatars/user-images/githubassets/copilot
- Google: sheets/slides/calendar/photos/play/accounts/translate/news/maps/classroom/chat/lh3-lh4
- Netflix: api-global/nflxext/nflxso
- Spotify: api/accounts/dealer/akamaized
- TikTok: m/vm/musical.ly/api16/p16-sign
- Twitch: m/clips/vod/gql/api/usher/irc
- Wikipedia: de/fr/upload.wikimedia/wikidata/mediawiki
- Pinterest: ru/i/v/s.pinimg
- Signal: api/cdn/storage
- Steam: steamcdn-a/cdn.cloudflare/api/help
- Epic: launcher/account/cdn1
- Roblox, gaming.youtube
- Substack CDN, ProtonVPN/account
- News: theguardian, nytimes
- Cloudflare CDN
- Misc: patreon, onlyfans, canva, notion, figma, trello, slack, zoom, dropbox, 1password, bitwarden
2026-07-26 20:28:25 +03:00
Dushnilin d8a0d64501 feat: DNS Turbo Cache - persistent FakeIP + startup domain prefetch
- singbox/dns_prefetch.uc: new module, resolves ~70 popular blocked domains
  after startup to warm sing-box FakeIP cache (sleep 10s, then nslookup each)
- lifecycle.uc: DNS_PREFETCH_UC constant + module_background call in start_main
- generator.uc: when dns_turbo_cache=1 use /etc/sing-box/cache.db (persistent)
- settings.js (LuCI): Flag toggle for dns_turbo_cache in DNS settings block
- renderAdvancedSettings.ts: DNS Turbo Cache section with toggle + save
- tachyon.pot / tachyon.po / tachyon.ru.po: translations RU
- constants.uc: bump 1.2.30 -> 1.2.31
- package.json: bump 1.2.30 -> 1.2.31
2026-07-26 20:22:35 +03:00
Dushnilin c6123bdb07 ci: убран префикс v из release name/tag_name - теги без v по конвенции проекта 2026-07-26 20:01:55 +03:00
Dushnilin 26434e3e81 revert(updater): restore tachyon_normalized_release_version - tags use no v prefix 2026-07-26 19:52:36 +03:00
Dushnilin 0a73fa5b63 fix(updater): strip v prefix from GitHub tag_name in tachyon_normalized_release_version 2026-07-26 19:51:00 +03:00
Dushnilin 51e36997b7 i18n(pot): добавлены строки GeoIP Country Routing в шаблон .pot 2026-07-26 19:21:23 +03:00
Dushnilin 9c04276aac fix(geoip): запрет geoip_country для block/bypass/dns секций - предотвращение блокировки всего зарубежного трафика 2026-07-26 19:15:04 +03:00
Dushnilin b100d44fe5 fix(singbox): исправлено приведение типе порта DNS сервера в dns.uc 2026-07-26 19:06:10 +03:00
Dushnilin 96f87d4150 release: bump version to 1.2.30 2026-07-26 18:56:35 +03:00
Dushnilin 89be9109b7 i18n(po): добавлены русские переводы для GeoIP Country Routing 2026-07-26 18:44:25 +03:00
Dushnilin dc071a5064 feat(routing): Selective GeoIP Routing (Региональный умный маршрутизатор по странам non-ru/ru/us/cn) 2026-07-26 18:33:53 +03:00
Dushnilin acb124dd0f fix(smart-detect): поддержка секций AmneziaWG, WireGuard, VLESS, Hysteria2 и всех типов прокси в Smart Detect 2026-07-26 18:23:42 +03:00
Dushnilin 4debddbae4 ci(github): правильный префикс v в наименовании релизов build.yml и назначение CODEOWNERS 2026-07-26 18:03:47 +03:00
Dushnilin 8eb1425b43 docs(github): обновление шаблонов Issue (bug report & feature request) под Dushnilin/tachyon 2026-07-26 18:00:47 +03:00
Dushnilin 58e2cd94be feat(qos): Игровой & Голосовой QoS Ускоритель (Low-Latency QoS Priority Engine) (v1.2.29) 2026-07-26 17:50:49 +03:00
Dushnilin c65b3b1fb4 feat(core): динамическое определение версии пакета из OPKG/APK манифеста в constants.uc 2026-07-26 14:12:29 +03:00
Dushnilin 7cd48ad5fe fix(updates): порядок объявления функций ucode и автоматический fallback скачивания пакетов (v1.2.29) 2026-07-26 12:54:07 +03:00
Dushnilin 93516e13cd fix(updates): исправление репозитория релизов на Dushnilin/tachyon и добавление HTTP Location fallback (v1.2.29) 2026-07-26 12:47:32 +03:00
Dushnilin 3dffe32502 release: v1.2.29 — экспорт статуса ИИ-Автомеханика в Web UI API и повышение стабильности 2026-07-26 12:36:11 +03:00
Dushnilin 491d9dae04 feat(telegram): независимый жизненный цикл Telegram Bot и Watchdog + команда /heal (v1.2.28) 2026-07-26 10:54:30 +03:00
Dushnilin 5dc395c5b9 feat(watchdog): внедрение системы ИИ-Автомеханика (AI Watchdog & Self-Healing Matrix) (v1.2.28) 2026-07-26 10:45:40 +03:00
Dushnilin 1a8ad3b2de fix(nft): гарантированное создание сетов приоритета перед добавлением подсетей (v1.2.28) 2026-07-26 09:44:00 +03:00
Dushnilin e4e645a914 fix(generator): импорт core.ip, обработка многострочных hosts и добавление переводов (v1.2.28) 2026-07-26 09:39:01 +03:00
Dushnilin 3187c44441 fix(generator_routes): безопасный фолбэк при пустом dns_server в секции (v1.2.28) 2026-07-26 09:35:51 +03:00
Dushnilin 902ee4560e fix(ucode): исправление синтаксиса ucode и вызова startsWith в генераторе sing-box (v1.2.28) 2026-07-26 09:32:47 +03:00
Dushnilin 02008f3394 feat: поддержка нескольких DNS-серверов в секциях DNS и улучшение текстареа Hosts (v1.2.28) 2026-07-26 08:31:14 +03:00
Dushnilin 2be70f397c fix(build): ensure feeds/luci and po2lmo source presence during package compilation
- Automatically update and install luci feed, or fallback to shallow git clone of luci repository if feeds/luci directory is missing in OpenWrt SDK
- Compile po2lmo directly using gcc as fallback if make -C feeds/luci fails
2026-07-25 14:50:08 +03:00
Dushnilin 09342e38b3 fix(updates): add fallback to location header for GitHub release tag checks when API rate-limited
- Parse location header from https://github.com/OWNER/REPO/releases/latest directly and via ghproxy mirrors when api.github.com returns rate-limit (403/429)
- Use command_output_from_args in action.uc for shell command captures
2026-07-25 12:43:58 +03:00
Dushnilin 595c4cef3b feat(download): add ghproxy mirror fallback chain and disk cache fallback
- 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
2026-07-25 12:35:37 +03:00
Dushnilin dbe700b428 fix(i18n): sync fe-app-tachyon/locales/tachyon.ru.po with luci-app-tachyon catalog 2026-07-25 11:29:20 +03:00
Dushnilin 92983cae83 fix(generator): use predefined DNS rule action for dns_hosts instead of fakeip
- Remove broken per-entry fakeip DNS server approach (sing-box allows only one fakeip server)
- Remove dns.hosts map approach (not supported in sing-box 1.13)
- Use action:predefined in DNS rules with zone-file format RR strings
  e.g. 'domain. 60 IN A 1.2.3.4' — tested on sing-box 1.13.14-extended
2026-07-25 10:45:25 +03:00
Dushnilin f6b668ca5e fix(generator): don't include dns.hosts field when empty, avoid null in JSON output 2026-07-25 10:42:35 +03:00
Dushnilin 1ea9cc354e feat(dns-hosts): replace DynamicList with textarea for 300+ record comfort 2026-07-25 10:13:33 +03:00
Dushnilin 15d722162d fix(security): resolve CodeQL XSS vulnerability (js/xss-through-exception) in tracer error handling 2026-07-25 06:17:23 +03:00
Dushnilin 922783226e release: 1.2.23 - add hosts file import feature for custom DNS records 2026-07-25 06:15:33 +03:00
Dushnilin cdf24c4632 release: 1.2.22 - section rules modal UI, fix telegram worker command_output_from_args, fix watchdog ubus listener 2026-07-24 20:18:51 +03:00
Dushnilin c431c2739c fix(luci-app-tachyon): render rules summary badges using real DOM elements in renderWidget 2026-07-24 10:26:28 +03:00
Dushnilin 83fe16eda2 fix(luci-app-tachyon): resolve [object HTMLDivElement] stringification bug by rendering rules summary in dedicated DummyValue column with rawhtml 2026-07-24 10:24:21 +03:00
Dushnilin 2991d76ec0 feat(luci-app-tachyon): display compact rule counter badges next to section title 2026-07-24 08:49:23 +03:00
Dushnilin dff26f1232 style(luc-app-tachyon): redesign routing rule tracer to be ultra-compact and horizontal under the rule list 2026-07-23 12:24:37 +03:00
Dushnilin 7b9dca3ede fix(subscription): resolve ucode function order and null-byte regex parsing bugs 2026-07-23 12:18:28 +03:00
Dushnilin 1409b6ed3d Рефакторинг и оптимизация Tachyon: модульный генератор sing-box, атомарная запись файлов, graceful shutdown в watchdog, ускорение nftables, доработка трассировщика правил и локализация 2026-07-23 10:07:15 +03:00
Dushnilin 16b4c39693 chore: bump version to 1.2.20 & optimize ucode scripts 2026-07-21 23:35:25 +03:00
Dushnilin 662df112fd refactor: Полное удаление функционала Tor и очистка локализаций 2026-07-21 21:34:23 +03:00
Dushnilin 142f4d1f4f fix(i18n): ensure exact binary match for russian catalogs 2026-07-21 17:54:22 +03:00