Skip to content

Pin meow-rs to 0.21.0 and default to the app extension - #103

Closed
madeye wants to merge 2 commits into
mainfrom
chore/pin-meow-rs-0.21.0
Closed

Pin meow-rs to 0.21.0 and default to the app extension#103
madeye wants to merge 2 commits into
mainfrom
chore/pin-meow-rs-0.21.0

Conversation

@madeye

@madeye madeye commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Summary

  • Pin every meow-* git dependency to ac3fcd8 (meow-rs 0.21.0) and keep bridge_version / the FFI version test in lockstep with that workspace version.
  • Treat PlugIns/TransparentProxy.appex as the default provider in docs and local deploy scripts. Debug/Release installs now require the appex, prune the Developer ID system-extension product so the two providers cannot share a bundle ID at runtime, start via the autoconnect sentinel (scutil --nc races before the NE config exists), and wait for meow engine started.
  • Developer ID PKG/DMG still ship the system-extension variant (TN3134). Mac App Store already shipped the appex.
  • Integration tests talk SOCKS5 as socks5h so leftover fake-ip DNS from a previous tunnel cannot poison --socks5 local resolution.

Test plan

  • cargo fmt --all -- --check && cargo clippy --all-targets -- -D warnings && cargo test --lib in Rust/meow-ffi (23 passed)
  • xcodebuild test … -only-testing:BaoLianDengTests (211 passed, including SOCKS5/HTTP mixed/controller)
  • Local Release install: /Applications/BaoLianDeng.app with TransparentProxy.appex, engine v0.21.0, two HTTP 200 fetches over the live tunnel
  • CI: make framework + Debug/Release app build

madeye added 2 commits August 23, 2026 14:30
…ider

Bump every meow-* git pin from 7d7f830 (0.20.2) to ac3fcd8 (workspace
0.21.0) and keep bridge_version in lockstep so the FFI version test is a
real check against the pinned release.

Local Debug/Release and MAS already ship TransparentProxy.appex. Docs and
deploy scripts now match that: require the appex, prune the Developer ID
system-extension product so the two providers cannot share a bundle ID at
runtime, start via the autoconnect sentinel (scutil --nc races before the
NE config exists), and wait for "meow engine started" instead of the old
tun2socks packet_thread marker. Developer ID PKG/DMG still ship the
system-extension variant (TN3134).
…ison it

`--socks5` resolves the target locally before the CONNECT. After a
transparent-proxy run the system resolver can still hold a 28.0.0.0/8
fake-ip (or hang on AAAA), so the engine test timed out while the mixed
HTTP path — which hands the hostname to the engine — still returned 204.

`--socks5-hostname` matches the HTTP-proxy test and the production mixed
listener: the engine does the lookup through its own dns: section.

@madeye madeye left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review

Do not merge this PR onto current main.

The kernel pin and several of the code changes have already landed in later PRs, and a three-way merge would regress that work:

This PR Already on main If merged
Pin meow-rs 0.21.0 at madeye/meow-rs ac3fcd8 #106 — 0.21.1 at meow-rs/meow-rs bc38424, plus mux Downgrade kernel, switch back to the fork, drop sing-mux
Restore global selectedNode + applySelectedNode() #105 — per-subscription ProxyGroupSelections, selectedNode retired Reintroduce the stale-node rewrite that #105 removed
SOCKS5 tests curl gstatic via --socks5-hostname #107 — hermetic LocalHTTPServer + --socks5 + --noproxy Lose the offline/IP-literal coverage #107 added
Drop controller-secret test helpers #109 — authenticated /connections polling Un-test the TrafficStore auth fix

Conflicts with main in Cargo.toml / Cargo.lock, VPNManager.swift, ProxyEngineHelper.swift, ProxyEngineIntegrationTests.swift, README.md, and tests/e2e/vm-stress-test.sh.

Unique leftovers (still valuable, not mergeable from this branch)

These bits of the PR are still missing on main and are worth a follow-up — they cannot be taken from this branch without the regressions above:

  • bridge_version still reports "meow-rs 0.20.2" while Cargo.toml is 0.21.1
  • Local deploy scripts still wait for the Go-era packet_thread: entering main loop marker, which meow-rs never logs
  • Local Debug/Release installs do not prune Contents/Library/SystemExtensions or require TransparentProxy.appex
  • E2E still assumes a system extension + SIP-off VM (systemextensionsctl, recovery-mode SIP disable)

Closing as superseded by #105#109. Follow-up will pick up only those leftovers.

@madeye

madeye commented Aug 27, 2026

Copy link
Copy Markdown
Owner Author

Closing as superseded. Merging would regress #105 (per-group selections), #106 (meow-rs 0.21.1 + meow-rs/meow-rs + mux), #107 (hermetic SOCKS5 target), and #109 (controller auth). Unique leftovers (appex-as-default docs/deploy/e2e, stale bridge_version string) will go in a follow-up.

@madeye madeye closed this Aug 27, 2026
@madeye
madeye deleted the chore/pin-meow-rs-0.21.0 branch August 27, 2026 05:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant