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