Commit Graph
2295 Commits
Author SHA1 Message Date
hacker07 15c1b1eb81 Merge upstream main (3.0.0) into feature/adguard
Upstream rewrote install.sh to 3.0.0. Re-apply the fork installer changes on
top: point at the NeoTachyon Gitea repo (REPO_HOST/OWNER/NAME), use the Gitea
API base for release resolution and support optional GITEA_USER/TOKEN auth for
the API and downloads.
2026-09-17 20:48:47 +03:00
hacker07 da508f51e6 ci: drop upstream GitHub CI workflows (backend-ci/frontend-ci/shellcheck)
These target GitHub Actions runners and do not fit the bare Gitea Actions
host runner, producing failed runs on every branch push. The build.yml
release workflow (auto-build on tags) is kept.
2026-09-17 20:34:29 +03:00
Dushnilin 623ea59797 feat: гармонизация секции AWG в дашборде и изоляция маршрутизации FPTN 2026-09-17 19:42:54 +03:00
Dushnilin 44e93b1f16 fix(test): restore CACHE and RUNTIME module paths in subscription_happ_crypt4 test 2026-09-17 18:55:51 +03:00
Dushnilin 5f3b3eb77b fix(test): make crypt4 test resilient without openssl CLI and add openssl-util to docker e2e 2026-09-17 18:44:22 +03:00
Dushnilin bf4255438f release: 1.3.29 — Happ Crypt4 decryption, dual HWID headers, P2P isolation fix & diagnostic symptom collapsing 2026-09-17 18:26:35 +03:00
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
hacker07 f010dc2cf2 feat(install): support private Gitea credentials (TACHYON_GITEA_USER/TOKEN) for API and downloads
Differential ShellCheck / Differential ShellCheck (push) Failing after 16s
1.3.29
2026-09-17 17:10:12 +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 3bcce51ec3 Refactor Tachyon installer into resilient transactional flow (#61)
Replace the monolithic installer with a staged transactional flow, add atomic locking, APK lock waiting/diagnostics, tmpfs and overlay preflight, verified release downloads, recovery snapshots, package transaction healthchecks, and active installer regression tests.
2026-09-17 15:26:07 +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
hacker07 aa27ac8a13 feat(install): support local source archive path in TACHYON_SOURCE_URL
Build packages / Setup build version (push) Failing after 3s
Build packages / Build Tachyon release packages (push) Skipped
Build packages / Create Release (push) Skipped
Differential ShellCheck / Differential ShellCheck (push) Failing after 15s
1.3.28
2026-09-17 14:42:55 +03:00
hacker07 4dffe584b7 feat(install): allow overriding the source archive URL (TACHYON_SOURCE_URL)
Differential ShellCheck / Differential ShellCheck (push) Failing after 15s
2026-09-17 14:42:12 +03:00
Dushnilin 2ab4e0db74 fix(subscription): auto fallback on unsupported app provider stubs 2026-09-17 14:39:47 +03:00
hacker07 6c4d727634 Merge feature/adguard: installer now serves from the NeoTachyon Gitea repo (source fallback)
Differential ShellCheck / Differential ShellCheck (push) Failing after 16s
2026-09-17 14:37:50 +03:00
hacker07 4f2a7661fe feat(install): install from the NeoTachyon Gitea repo with source fallback
Point the installer at https://git.rukavishnikoff.ru/hacker07/NeoTachyon and
support Gitea's GitHub-compatible API for releases. When the repository has
no published release yet, fall back to installing the backend and LuCI UI
directly from the branch source archive (tachyon/files, luci-app htdocs/root)
so the same one-liner installs the fork as-is. Repo can be overridden via
TACHYON_REPO_HOST / TACHYON_REPO_OWNER / TACHYON_REPO_NAME /
TACHYON_SOURCE_BRANCH / TACHYON_REPO_INSTALL_URL. README install/uninstall
commands now point to the Gitea raw URLs.
2026-09-17 14:37:42 +03:00
hacker07 3999fce053 Merge feature/adguard: AdGuard Home component (DNS modes, failover, section upstream)
Backend CI / Backend Runtime Checks (push) Failing after 10s
Frontend CI / Frontend Quality Checks (push) Failing after 0s
Backend CI / OpenWrt Docker E2E (push) Skipped
Differential ShellCheck / Differential ShellCheck (push) Failing after 17s
2026-09-17 14:23:08 +03:00
hacker07 617107ef15 feat(adguard): add AdGuard Home component with DNS modes, failover and section upstream
Add AdGuard Home as an installable Tachyon component (component card with
check/update/remove/rollback/enable/disable) backed by providers/adguard
(validator + runtime) and an init.d service.

Backend:
- action.uc: install/remove/enable/backup/rollback/dispatch/releases for
  'adguard' (tar.gz from AdguardTeam/AdGuardHome, OpenWrt->AdGuard arch map)
- updater.uc: adguard asset selection; updates.uc: valid_component_name and
  automatic update checks
- runtime.uc: generates AdGuardHome.yaml from UCI (upstream=single-box DNS,
  fallback_dns for failover, web UI on LAN, filters), manages the daemon
- dns/apply.uc: dns_main_mode (dnsmasq->AdGuard->sing-box chain, or AdGuard on
  :53 with dnsmasq DHCP-only)
- settings: dns_main_mode (Main DNS) + dns_adguard_failover_enabled
- sections: routed_dns_type/dns_type 'adguard' resolve via the AdGuard provider
  upstreams; validator accepts the new type
- system-info: adguard_version/installed/enabled/backup fields

Frontend:
- component card 'AdGuard Home' with enable/disable + version actions
- LuCI DNS settings tab: Main DNS selector and failover flag
- section.js: AdGuard Home routed DNS protocol option

Tests: tests/adguard_validator.sh, tests/adguard_runtime.sh
2026-09-17 14:22:13 +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 304a95de0a fix(routing): broaden disable_quic to all inbounds and reject SVCB/HTTPS DNS queries 2026-09-16 17:20:14 +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 a23c2a2a55 fix(fptn): boot recovery, reload planner, persistent selector state and telegram token flow 2026-09-16 14:54:54 +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 971d958331 fix(fptn): add fptn action to sing-box route target and outbound generation
- Add fptn to route.target() to prevent exit(2) crash on config generation
- Add add_fptn_outbound() using direct outbound with routing_mark=0x00300000
  (routes traffic through tun-fptn via kernel ip rule → table 4249)
- Add fptn to reserve_section_outbound_tags
- Add fptn to generator_routes outbound dispatch

Fixes torrents and all traffic breaking when an FPTN section is configured.
2026-09-16 06:33:23 +03:00
Dushnilin c59e90f4e1 ci: trigger backend-ci for full E2E verification 2026-09-15 22:44:07 +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