Dushnilin
866c04cdd5
chore: replace hardcoded version with timeless STABLE RELEASE badge in hero SVG
2026-07-30 22:45:14 +03:00
Dushnilin
7757ceae6a
feat: implement WebRTC Leak Protection and Strict DNS DoQ Enforcer
2026-07-30 21:43:56 +03:00
Dushnilin
7e64eb10b1
Fix updates: split arch.candidates string into array for zapret2 release resolution
2026-07-30 20:24:17 +03:00
Dushnilin
79ed7b03cf
fix: add cortex-a53 fallback for zapret2 generic aarch64 resolution
2026-07-30 18:39:07 +03:00
Dushnilin
7bcf7590ea
fix(tests): актуализация сигнатур nftables и паритета хэшей в state.uc
2026-07-30 18:04:27 +03:00
Dushnilin
af620a2f45
fix: исправление резолвинга пакета zapret2 для роутеров и поиск релизов
2026-07-30 17:52:16 +03:00
Dushnilin
b057e0a48d
refactor: удаление неиспользуемого автоподбора Zapret2 и чистка файлов локализации
2026-07-30 16:42:30 +03:00
Dushnilin
f3d8c5a264
fix: решение зацикливания TPROXY FakeIP для ip.podkop.fyi и синхронизация тестов с локалями
2026-07-30 10:39:55 +03:00
Dushnilin
16d06fc9cc
docs: обновление README.md (Forkop, Zapret v1/v2, OpenWrt 25+, донат)
2026-07-30 10:10:05 +03:00
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