212 Commits
Author SHA1 Message Date
Leadaxe b545cc2717 Merge upstream/testing: udpnat2 buffer fix + apple version script
Trivial upstream sync (2 commits): "Fix udpnat2 buffer size" (go.mod/go.sum bump)
and "release: Fix update apple version script". No lx zones touched (no submodule /
pb.go / box.go / route / adapter changes).
2026-07-01 17:52:50 +03:00
Leadaxe 1cbd3deb4f feat(spec-020): gate idle-suspend behind with_lx_idle_suspend (mobile-only)
Idle-suspend frees the recv-worker bufsArrs, which are ~8MB each only where
BatchSize=128 (Android/Linux) — on desktop BatchSize is small and the feature
saves almost nothing. Make that platform scope explicit in the build instead of
running the tick everywhere.

The idle-suspend tick now compiles only with the new `with_lx_idle_suspend` tag,
baked into the mobile AAR (build_libbox sharedTags) but NOT the desktop LX_TAGS.
Without the tag, a config that sets route.lx_idle_suspend fails fast at start
("rebuild with -tags with_lx_idle_suspend (mobile-only feature)") rather than a
silent no-op. The gate is a single function: reachability_lx.go carries the tick
under the tag, idle_suspend_stub_lx.go is the no-tag stub that errors, and
reachability_common_lx.go keeps InvalidateReachability (needed by the group
interface in every build). The dial hot path (resumeOnDial/stampActivity) and the
upstream group files are untouched — without the tick, idleAsleep is never set, so
resumeOnDial always takes its fast path.

Adds stub unit tests (option set → error, unset → no-op). Both build variants and
the full route/wireguard/group suites are green; gofmt/vet clean; desktop lx-check
passes without the tag. Docs (lx-config.md + ru, SPEC.md §3/§10) describe the tag.
2026-07-01 11:38:36 +03:00
世界 ecaa397834 release: Fix update apple version script 2026-06-29 15:39:14 +08:00
世界 9ac1399094 Add USB/IP support for macOS 2026-06-25 17:39:07 +08:00
世界 7d13cabb6a Preserve comments between formatting 2026-06-25 17:38:07 +08:00
世界 cfe83a5dcc Refactor: HTTP clients, unified HTTP2/QUIC options, Apple engines 2026-06-25 17:37:59 +08:00
世界 dec919e0ca Add package_name_regex route, DNS and headless rule item 2026-06-25 17:35:30 +08:00
世界 7bac8dc815 tools: Network Quality & STUN 2026-06-25 17:35:27 +08:00
Leadaxe 8a56852d7e lx(1.14): SPEC 014 libbox command-protocol extensions (URLTestOutbound + GetRules)
Restore over the native libbox CommandClient what upstream only exposed through
the dropped Clash API: per-node delay testing and a route+DNS rule-table snapshot.
Both RPCs are a pure bridge (CONSTITUTION §3.6) gated by the with_lx_command tag.

- daemon/started_service.proto: URLTestOutbound + GetRules RPCs and messages under
  the // lx:begin/end lx_command marker; regenerated .pb.go/_grpc.pb.go.
- daemon/started_service_command_lx.go (+ _stub.go): handlers behind with_lx_command,
  stub twin returns codes.Unimplemented. URLTestOutbound resolves an outbound OR an
  endpoint (no OutboundGroup assert), honours link+timeout, error-in-payload Variant B
  (delay==0 && error=="" is success 0ms), history Store/Delete via group.RealTag.
  GetRules returns route + DNS rules split by isDNS.
- adapter/dns.go + dns/router.go: new adapter.DNSRouter.Rules() getter (route Router
  already had one), read under rulesAccess; both under // lx: markers.
- experimental/libbox/command_client_command_lx.go: CommandClient.URLTestOutbound
  (*URLTestOutboundResult, error) and GetRules (RuleIterator, error) — gomobile-bindable
  shapes (the SPEC's bare (uint16,string,error) does not bind); Variant B preserved.
- cmd/internal/build_libbox/main.go: with_lx_command into sharedTags (AAR).
- Makefile.lx: with_lx_command in LX_TAGS; pinned lx-proto/lx-proto-install targets
  (protoc-gen-go v1.36.11, protoc-gen-go-grpc v1.5.1) for reproducible regeneration.
- lx-ci.yml: vet+gofmt cover the lx files; build-check proves both builds toggle the
  stub marker.
- Collateral one-time pin normalisation of managed_service/v2rayapi/v2raygrpc .pb.go
  (audited in SPEC §3.5).

docs(lx-changelog): v1.14.0-lx.1-rc.2. SPEC 014 → accepted.
2026-06-24 03:52:44 +03:00
Leadaxe 57b5b5e5fc lx(1.14): drop with_clash_api, prerelease tags, v1.14.0-lx.1-rc.1
LxBox is moving to manage the core over the native libbox CommandClient
(group/url-test/select/connections streams), so the Clash REST API is dead
weight on the client. Drop with_clash_api from both the Android AAR
(build_libbox sharedTags) and the desktop LX_TAGS. A config referencing
experimental.clash_api now fails fast (no silent fallback); lx configs won't.

lx-release.yml: tags with an -rc.N / -alpha.N / -beta.N suffix now publish as
GitHub pre-releases (--prerelease), so an unverified build never displaces the
stable lx release as Latest.

First build on the upstream 1.14 base. The WG-endpoint GRO fix (010) lands at
the AmneziaWG v0.0.3 submodule source (no downstream guard), but the Android
download-stall path is NOT yet re-verified on hardware -- hence the -rc.1 tag.
2026-06-24 00:11:20 +03:00
Leadaxe 514a9e74ff lx(1.14): merge upstream v1.14.0-alpha.33 into lx (sing-box layer)
Full 1.14 migration, step 1 of 2 (sing-box repo layer). Three conflicts
resolved, all as predicted by the feasibility analysis:

- route/rule/rule_item_package_name_regex.go (add/add): took upstream's
  canonical version (slices.ContainsFunc) — our lx.15 backport collapses
  back into upstream, so the file no longer diverges going forward.
- route/rule_conds.go: kept our package_name_regex in isProcess{,DNS}Rule
  and took upstream's new isNeighbor{,DNS}Rule additions.
- cmd/internal/build_libbox/main.go: kept lx with_xhttp/with_awg append and
  the no-tailscale block; deliberately dropped upstream's new with_usbip
  (server-side USB/IP, contradicts client-trim).

go.mod auto-merged: wireguard-go require bumped to v0.0.3, lx replace block
(=> ./submodules/wireguard-go) preserved. Submodule pointer unchanged here —
the AmneziaWG graft rebase onto v0.0.3 is step 2 (next commit). This commit
does NOT build yet (submodule still on the old wireguard-go base).
2026-06-23 02:09:53 +03:00
世界 38786cf640 Add USB/IP support for macOS 2026-06-20 22:25:00 +08:00
世界 dbe4b5de60 Preserve comments between formatting 2026-06-20 22:22:28 +08:00
世界 716541b61c Refactor: HTTP clients, unified HTTP2/QUIC options, Apple engines 2026-06-20 22:22:22 +08:00
世界 941ce58b8e Add package_name_regex route, DNS and headless rule item 2026-06-20 22:20:58 +08:00
世界 5aba37bd35 tools: Network Quality & STUN 2026-06-20 22:20:32 +08:00
Leadaxe c8c5737d3d lx(004): drop tailscale from libbox AAR
Upstream-file edit (// lx:no-tailscale marker): remove with_tailscale (+ts_omit_*)
from build_libbox sharedTags. Client fork has no tailscale endpoints and it is the
largest dependency in the APK; keeps the AAR aligned with the desktop LX_TAGS set.
2026-06-09 21:29:23 +03:00
Leadaxe 19e3abcb36 lx(004): LX_TAGS = full upstream set minus server-only ccm/ocm; libbox + release AAR
- desktop LX_TAGS / CI BASE_TAGS: drop with_ccm/with_ocm (server-only services:
  user mgmt + usage + websocket — useless for a client); keep everything else
  (acme/tailscale/naive via with_purego, badtls, our with_xhttp/with_awg)
- libbox sharedTags already exclude ccm/ocm; with_xhttp+with_awg baked into both AARs
- lx-release.yml builds desktop ×6 + android AAR; lx-ci.yml adds android job
2026-06-09 21:12:03 +03:00
世界 5e7fd7ad78 Fix lint errors 2026-05-13 23:39:27 +08:00
世界 ddb757a25c Reduce built-in certificate store memory 2026-04-28 07:44:20 +08:00
世界 cf4791f1ad platform: Improve iOS OOM killer 2026-02-26 14:13:32 +08:00
世界 53f2db3f97 platform: Add windows build 2026-02-15 21:10:44 +08:00
世界 1f2fdec89d release: Fix update_apple_version command 2026-02-15 21:09:14 +08:00
世界 98af3c0ad6 experimental: New FFI 2026-02-09 15:50:51 +08:00
世界 944a9986d9 release: Always build tailscale for iOS and tvOS 2026-01-29 13:40:34 +08:00
世界 4a14d39cad release: Log build ID during TestFlight publishing 2026-01-17 19:16:56 +08:00
世界 ccf90aee8a release: Improve publish_testflight 2026-01-17 05:50:08 +08:00
世界 bd9935eebb platform: Fix gomobile build 2026-01-17 05:49:13 +08:00
世界 85f5f6cebb Disable multipath TCP by default via GODEBUG 2026-01-17 05:48:58 +08:00
世界 8ae16aa452 Add format_docs command for documentation trailing space formatting 2026-01-17 05:48:39 +08:00
世界 f5ccf746ea platform: Split library for Android SDK 21 and 23 2026-01-17 05:48:16 +08:00
世界 cba18635c8 Add Chrome Root Store certificate option
Adds `chrome` as a new certificate store option alongside `mozilla`.
Both stores filter out China-based CA certificates.
2026-01-17 05:47:54 +08:00
世界 ad7b982242 Add naiveproxy outbound 2026-01-17 05:47:41 +08:00
世界 a930356b04 Revert "Stop using DHCP on iOS and tvOS" 2026-01-17 05:47:32 +08:00
世界 ab0869c972 Update tfo-go to latest 2026-01-17 05:46:21 +08:00
世界 cb4deb0c20 Do not use linkname by default to simplify debugging 2026-01-17 05:46:14 +08:00
世界 ed1ee4c3a4 Update quic-go to v0.55.0 2026-01-17 05:46:13 +08:00
世界 107f92381b Add support for kTLS
Reference: https://gitlab.com/go-extension/tls
2026-01-17 05:44:42 +08:00
世界 387b42c9c2 Remove use of ldflags -checklinkname=0 on darwin 2026-01-17 05:44:29 +08:00
世界 bba92146b1 Stop using DHCP on iOS and tvOS
We do not have the `com.apple.developer.networking.multicast` entitlement and are unable to obtain it for non-technical reasons.
2026-01-17 05:44:28 +08:00
世界 48f84b31d6 Improve local DNS server on darwin
We mistakenly believed that `libresolv`'s `search` function worked correctly in NetworkExtension, but it seems only `getaddrinfo` does.

This commit changes the behavior of the `local` DNS server in NetworkExtension to prefer DHCP, falling back to `getaddrinfo` if DHCP servers are unavailable.

It's worth noting that `prefer_go` does not disable DHCP since it respects Dial Fields, but `getaddrinfo` does the opposite. The new behavior only applies to NetworkExtension, not to all scenarios (primarily command-line binaries) as it did previously.

In addition, this commit also improves the DHCP DNS server to use the same robust query logic as `local`.
2026-01-17 05:44:28 +08:00
世界 65264afdf9 Add interface address rule items 2026-01-17 05:44:26 +08:00
世界 cb7dba3eff release: Improve publish testflight 2025-10-01 10:22:44 +08:00
世界 378e39f70c Update golangci-lint to v2 2025-08-13 23:37:40 +08:00
世界 2358efe44a release: Fix android build 2025-08-11 22:11:14 +08:00
世界 0a63049845 android: Add workaround for tailscale pidfd crash 2025-08-07 12:54:19 +08:00
世界 2dcb86941f Bump version 2025-08-04 08:54:00 +08:00
世界 72dbcd3ad4 Improve darwin tun performance 2025-07-18 21:23:04 +08:00
世界 96df69bcdc release: Fix publish testflight 2025-07-08 13:14:46 +08:00
世界 6cfa2b8b86 Improve darwin tun performance 2025-07-08 13:14:46 +08:00