Commit Graph
379 Commits
Author SHA1 Message Date
Dushnilin e2c90ed6ea fix(singbox): fix p2p isolation rule matching for transport network and port directions 2026-09-17 18:17:44 +03:00
Dushnilin b556f2539b feat(subscription): add crypt4 decryption, dual HWID headers, and diagnosis symptom collapsing 2026-09-17 18:04:23 +03:00
Dushnilin e610ea9ca3 fix(installer): use core.common in runtime healthcheck and fix CLI guard in ucode modules 2026-09-17 15:45:50 +03:00
Dushnilin a27173a04a fix(singbox): prevent empty logical subrules when excluding IPs on evaluate and match-all rules (#60) 2026-09-17 14:53:12 +03:00
Dushnilin 2ab4e0db74 fix(subscription): auto fallback on unsupported app provider stubs 2026-09-17 14:39:47 +03:00
Dushnilin 5bfe7103dc fix(updates): trigger immediate telegram push on component updates and fix cron cleanup regex
Backend CI / Backend Runtime Checks (push) Failing after 2m0s
Frontend CI / Frontend Quality Checks (push) Failing after 0s
Backend CI / OpenWrt Docker E2E (push) Skipped
Differential ShellCheck / Differential ShellCheck (push) Failing after 15s
2026-09-17 13:43:51 +03:00
Dushnilin 8d60bd36ef fix(install): increase service start timeout from 30s to 120s to allow full provider startup 2026-09-17 13:16:58 +03:00
Dushnilin 37d8c6b19e fix(install): use exact package matching for apk to avoid false legacy migration warning 2026-09-17 12:58:08 +03:00
Dushnilin fcb40ee512 fix(install): define command_success in embedded ucode helper 2026-09-17 12:45:06 +03:00
Dushnilin df61efce80 fix(singbox): allow routed DNS on bypass sections and hide proxy group outbounds in urltest 2026-09-17 12:35:14 +03:00
Dushnilin 5df1124ee8 fix(apk): sanitize orphaned sing-box packages in apk world and add force-overwrite 2026-09-17 11:16:28 +03:00
Dushnilin 287a8f8e0c fix(singbox): resolve 1.14.1 DNS deprecation, store_rdrc, ruleset download_detour, and provider routing isolation 2026-09-17 10:46:04 +03:00
Dushnilin 0efa47abdc fix(dns): preserve 127.0.0.42 during restart and add local DNS cache support
- decouple restart() from stop_impl() in lifecycle.uc to avoid premature dnsmasq_restore
- keep dhcp.@dnsmasq[0].server locked to 127.0.0.42 throughout service restarts
- add atomic restart_service hooks in init.d/tachyon and initd.uc
- fix dns_turbo_cache path resolution to promote default cache to /etc/sing-box/cache.db
- add Local DNS Cache support in dnsmasq (dns_local_cache, dns_cache_size)
- add comprehensive behavioral regression test tests/service_restart_lifecycle.sh
2026-09-17 08:45:24 +03:00
Dushnilin 44a1777c0d fix(singbox): separate dns query and response rulesets for sing-box 1.14+ compatibility 2026-09-17 08:13:11 +03:00
Dushnilin 67761143f5 test(predicates): restore list update signature parity & update plain list validation assertions 2026-09-16 22:54:34 +03:00
Dushnilin 61c01109ad feat(rulesets): add native plain list (.lst/.txt) download and compilation in rule_set & fix OlcRTC/WDTT status 2026-09-16 22:41:52 +03:00
Dushnilin 5eeaa91864 fix: resolve zapret2 fuzzer daemon startup, premature self-update completion, and component visibility cache 2026-09-16 19:54:36 +03:00
Dushnilin e10509033c fix(fe): resolve eslint any errors and format frontend files 2026-09-16 16:33:03 +03:00
Dushnilin 0f5967e51c fix(routing): scope excluded_ips to section rules, humanize section names, and add component visibility 2026-09-16 16:16:32 +03:00
Dushnilin 94d629b8bb chore(i18n): update translation call index and synchronize po templates 2026-09-16 15:20:15 +03:00
Dushnilin d28af621c9 fix(ruleset): reject plain lists in ruleset references (#58) and route components to Dushnilin repos 2026-09-16 15:16:56 +03:00
Dushnilin 3834b783cc fix(diagnostics): prevent tunnel IP pollution in WAN addresses and exempt Tailscale inbounds from public WAN warning 2026-09-16 10:07:09 +03:00
Dushnilin 4d6892e733 fix: resolve dashboard tile unselection, fuzzer probe parsing and complete translations 2026-09-16 09:45:06 +03:00
Dushnilin 86d6e92ce7 chore: actualize locales and extract translation calls 2026-09-16 08:37:05 +03:00
Dushnilin 76c51b92a1 feat(fuzzer): implement Probe v2, stable scoring, two-stage verification, and adaptive smart fuzzer 2026-09-16 08:34:02 +03:00
Dushnilin cd584a100f fuzzer: harden runner, fail-closed validation, job isolation and fix AI handoff 2026-09-16 08:20:17 +03:00
Dushnilin 5e9ffa2a01 chore: sync source and packaged Russian PO catalogs (Boosty strings) 2026-09-16 06:44:48 +03:00
Dushnilin 7112c5158c chore: update locales calls.json after Boosty strings extraction 2026-09-16 06:43:56 +03:00
Dushnilin affd8f7ca4 feat: add Boosty donation link to README and LuCI support modal
- Add Boosty badge to README.md and README.en.md headers
- Add Boosty as first donation option in support sections of both READMEs
- Add Boosty card (with orange border accent) to LuCI diagnostic support modal
- Add Russian translations for Boosty strings in po/ru/tachyon.po
2026-09-16 06:42:09 +03:00
Dushnilin cb899a208e fix: fptn_component test env var and update calls.json
- Fix fptn_component.sh test #5: diagnostics/runtime.uc reads TACHYON_LIB (not TACHYON_LIB_DIR)
- Update locales/calls.json with FPTN UI strings from section.js
2026-09-15 21:38:25 +03:00
Dushnilin 8855179793 feat: add FPTN section action UI, config fields, dashboard status, and diagnostics
- Add FPTN to ROUTING_ACTIONS, actionProvidersAvailabilityState, isFptnInstalledForUi()
- Add FPTN action option label (FPTN) in getActionOptionLabel and getRuleActionDisplayValue
- Add FPTN to populateActionOptionValues (guarded by isFptnInstalledForUi())
- Add FPTN section config fields: access_token (required), sni, bypass_method, preferred_server
- Add fptn to ACTION_COLORS (#e74c3c)
- Add GetFptnStatus type, GET_FPTN_STATUS method, getFptnStatus() shell method
- Add fptn to dashboard: getDashboardSections, renderSections, getServiceStatus handler
- Add get_fptn_status CLI dispatch and get-fptn-status handler in diagnostics/runtime.uc
- Add FPTN unit test in getDashboardSections.test.ts
- Update translation calls index (locales/calls.json)
2026-09-15 21:25:54 +03:00
Dushnilin e6387aff25 chore(i18n): update translation call index 2026-09-15 19:21:04 +03:00
Dushnilin 6978601d4d fix: resolve Discord Cloudflare voice ports #55, smart detect proxy sections #56, and UI enhancements 2026-09-15 19:15:57 +03:00
Dushnilin 046902d4e9 chore(i18n): update translation call index and locale templates 2026-09-15 15:08:49 +03:00
Dushnilin 73cdde17bb feat(fptn): integrate FPTN client component and runtime provider 2026-09-15 14:57:05 +03:00
Dushnilin 03c51d7606 fix(service): prevent recursive flock deadlock and crontab wipe; increase component RPC timeout
- initd.uc: retry_start_on_wan_up now calls BIN_PATH directly instead of
  SERVICE_INIT to avoid the rc.common flock-1000 self-deadlock that was
  hanging Backend CI for the full 1-hour runner timeout
- initd.uc: schedule_start_retry uses background_command() so inherited
  fd 1000 (procd lock) is closed before the sleep starts
- updates.uc, parental_quota.uc: read /etc/crontabs/root via fs.readfile
  instead of crontab -l — BusyBox exits 1 on an empty file causing
  command_output_from_args to return '' and wipe all user cron entries
- shell/index.ts: COMPONENT_ACTION_RPC_TIMEOUT_MS 10s -> 45s to prevent
  false RPC timeout errors during opkg installs on slow routers
2026-09-15 11:16:50 +03:00
Dushnilin aba424426b fix(ci): update calls.json index and fix non-root permission in route_router_traffic test 2026-09-15 09:34:17 +03:00
Dushnilin 2d00141696 feat(routing): route router's own traffic through designated section 2026-09-15 09:30:04 +03:00
Dushnilin 45e6a6ae60 chore(i18n): update translation call index in calls.json 2026-09-15 08:40:48 +03:00
Dushnilin d6d39dac81 perf(ui,watchdog): adaptive UI polling and zero-UCI cached settings context
- Feat(ui): implement adaptive polling in runtimeUiState service (1s -> 2s during active tasks, 10s idle)
- Perf(controller): cache settings snapshot in current_tick_ctx across all probe setting() calls to eliminate repeated uci_core.get_all()
- Perf(controller): reuse ctx.proxy_port in probe_proxy to eliminate duplicate proxy_port() evaluation
- Perf(watchdog): guard adaptive_normal_interval behind 120s check and clear tick context at tick boundary
- Test: add static and behavioral assertions in tests/watchdog_adaptive_intervals.sh
2026-09-15 08:37:43 +03:00
Dushnilin 1c7feb4aac release: 1.3.27 — Runtime performance, watchdog adaptive probes & mixed proxy DNS fix
- Perf(watchdog): Adaptive external health checks for proxy (30s) and DNS (60s)
  * Honor UCI ai_proxy_health_interval and ai_dns_interval while healthy
  * Adapt to fast retry (10-15s) upon consecutive failures, instant post-heal reset
  * Single shared observation context (tick_context) per tick eliminating redundant pgrep/proc scans
  * Throttle watchdog keepalive file writes from 5s to 30s
- Perf(ui): Read-only fast path for get_ui_state
  * Decouple refresh_action_dirs() filesystem GC from 500ms polling requests
  * Throttle action directory cleanup to once per 30s via /var/run stamp
  * Trigger immediate GC sweep on action job completion
- Perf(telegram): Long-poll 50s and eliminate redundant sleep after success
  * Increase getUpdates long-poll timeout to 50s (curl timeout 65s)
  * Remove redundant sleep after successful poll for instant command responsiveness
- Perf(torrserver): Cache detected PID and replace shell sleep with native ucode sleep(60000)
- Fix(singbox): Remove harmful hijack-dns rules from mixed proxy inbounds
  * Eliminate hijack-dns (port 53 / protocol dns) from section, direct bypass and service mixed proxies
  * Resolve 4-5s curl timeouts on component updates (api.github.com) and slow LAN DNS resolution
  * Maintain ip_is_private: true direct LAN routing bypass
- Test: Add tests/watchdog_adaptive_intervals.sh and update tests/sing_box_runtime.sh
- Version: Bump fe-app-tachyon to 1.3.27
2026-09-15 08:20:35 +03:00
Dushnilin 603c0df91b feat(security,ci,ui): harden CI/CD, LuCI ACL, low-space updates and mobile layout
- ci: make frontend CI read-only with strict diff check and deterministic calls.json
- ci: pin external GitHub Actions in workflows to immutable commit SHAs
- ci: add openwrt-e2e blocking gate job running docker_e2e_test.sh
- fix(diagnostic): fix contstants.ts typo and update all 13 import sites
- fix(acl): remove unused /bin/busybox exec from rpcd ACL and add regression test
- feat(updates): add low-space update fallback when creating sing-box.old is impossible
- fix(routes): preserve dedicated Discord gateway subnets (162.159.128.0/21)
- feat(ui): implement responsive auto-fit grid and mobile modal viewport bounds
- test: add viewport regression test suite in vitest
2026-09-14 23:00:18 +03:00
Dushnilin 7375e26b44 fix(qos): harmonize SQM and CAKE cooperation, resolve bufferbloat degradation 2026-09-14 17:03:45 +03:00
Dushnilin 24c11bbca8 feat(rulesets): add Twitch preset and resilient CDN fallback 2026-09-14 14:46:28 +03:00
Dushnilin 4af55ebed3 fix(i18n): restore leak check modal, QoS DSCP, and domain validation translations 2026-09-14 14:20:42 +03:00
Dushnilin 850f1544fe fix(dashboard,lists): restore subscription prefix badges and fix list routing failure 2026-09-14 13:57:00 +03:00
Dushnilin ea0de78cca fix(tracer): resolve discord community cidr filter (#50) and improve leak check display 2026-09-14 06:27:31 +03:00
Dushnilin 22ec19b49b fix(watchdog): eliminate WAN false alarms on bridge/Tailscale and restore domain/subnet lists (.lst/.txt) 2026-09-13 20:47:22 +03:00
Dushnilin 4cbf32ee3f fix: resolve server inbound DNS & routing, strategy fuzzer UI sync, and sing-box-extended latency 2026-09-13 16:43:51 +03:00
Dushnilin 70bb7280c1 fix(fuzzer): eliminate fuzzer hangs, preserve DNS flags, and optimize probing performance 2026-09-13 10:03:56 +03:00