Skip to content

Add the Vole CLI, config-driven TUN, and unified releases - #6

Merged
yiguodev merged 11 commits into
mainfrom
feat/bin-wintun
Oct 8, 2026
Merged

yiguodev merged 11 commits into
mainfrom
feat/bin-wintun

Conversation

@yiguodev

@yiguodev yiguodev commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

Provide a foreground vole executable that uses the same Invoke lifecycle as native hosts, and publish CLI and FFI artifacts together for each version tag.

CLI flags ----+
C ABI / JNI --+--> shared Invoke --> runtime --> Unix TUN / Wintun / UWP

vX.Y.Z --> 6 CLI + 8 FFI archives --> one GitHub Release
  • Add -d/-f/-t/-v/-h with Mihomo-compatible argument semantics. Invoke owns configuration reads, path/environment defaults, validation, signals and cleanup; startup accepts only configYaml.
  • Replace separate HTTP/SOCKS5 inbound ports with mixed-port, including SOCKS5 UDP on the same port. LAN binding and authentication are independent.
  • Read TUN device/fd, MTU, DNS hijack and UDP timeout settings from YAML. Select Windows Wintun or UWP at compilation; Windows CLI always uses Wintun. Hosts supply the Wintun DLL and configure addresses, DNS and routes.
  • Rename the project, crates, public native interfaces, artifacts, examples and documentation to Vole.
  • Add CLI builds and Windows FFI backend selection to the build scripts. The unified release workflow validates all six CLI and eight FFI archives before publishing; Windows FFI ships both backends. Asset names omit versions, with no standalone license/checksum files or bundled Wintun DLL. Required third-party notices are embedded and checked in the binaries.

Evidence

  • Before: main exposes separate HTTP/SOCKS5 ports and versioned Invoke/configuration contracts, with no foreground CLI or combined CLI/FFI tag release.
    After: the branch adds the shared Invoke CLI, config-driven TUN and unified release matrix, with regression coverage for configuration rejection, backend selection and archive integrity.
  • During implementation on macOS ARM64: 79 script tests, Ruff checks, Rust formatting, all-feature/all-target test compilation and production Clippy passed, along with scoped CLI, Invoke, configuration, TUN and native-interface regressions.
  • Actual macOS ARM64 Release CLI and FFI builds passed. CLI help/version/configuration checks, dynamic VoleInvoke/VoleFree, and a C static-library consumer with dead stripping passed; embedded notices were verified in the resulting artifacts.
  • Windows x64/ARM64 CLI-Wintun and FFI-Wintun/UWP dependency graphs passed their audits. Before opening this PR, the locked TLS source/provider graph and registry checksum checks passed again with no external local-path dependencies.
  • Full cross-platform CI, a real tag publication and Windows Wintun device validation remain unexecuted. Detailed implementation evidence and platform limits are recorded in docs/acceptance.md.

Merge Danger

Door: two-way

The commits can be reverted, but consumers must migrate the renamed native symbols/artifacts and configuration contracts. Removed configVersion/apiVersion, prepare, startup tunFd/tunFraming, and top-level port/socks-port are rejected. TUN settings move into YAML; the default MTU is 9000, while UWP requires an explicit MTU no greater than 1400.

Blast Radius: Consumers

Affects native integrations, CLI startup, inbound/TUN behavior and release packaging. Native builds and memory tests do not establish Windows driver or physical-device readiness.

yiguo added 5 commits October 8, 2026 11:20
Share Invoke dispatch across CLI, C ABI and JNI, make startup configuration-owned, and select Windows TUN backends at build time. Add fixed-name CLI tag releases and document scoped validation.
Rename crates, CLI and native libraries, C ABI and JNI symbols, environment variables, Windows identities and release assets consistently. Update repository references while preserving third-party code, fixed protocol vectors and historical validation evidence.
Copilot AI balanced review requested due to automatic review settings October 8, 2026 12:20

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-08T15:02:50.426938Z 589d70e New commits
🔒 Security Review ✅ Completed 2026-10-08T15:02:01.483880Z 589d70e New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9e167164fb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread include/vole.h Resolved
Comment thread src/config/mod.rs Resolved
yiguo added 3 commits October 8, 2026 20:50
Windows CI fixtures assumed LF bytes and a POSIX host, while a global subprocess mock also intercepted Windows platform detection. Preserve actual notice bytes, set the Android fixture platform explicitly, and mock native build boundaries for packaging tests.

Remove internal build manifests, source snapshots, artifact hashes, delivery mode, and repeated archive inspection. Reuse platform builders, upload only the fixed archives, and assemble the complete CLI/FFI set once.

Validated 56 script tests, 58 simulated Windows-condition regressions, Ruff checks, and a native macOS ARM64 CLI release build with offline flag and configuration checks.
Consolidate CLI/FFI packaging and license collection, reuse native Cargo build setup, and shorten CI job names. Remove duplicate audits, binary parsers, redundant script tests, and development-history documentation.

Validation: 9 Python tests and Ruff passed; native macOS ARM64 CLI and FFI builds passed, including offline CLI checks and an Invoke version call. Resolved production feature graphs are unchanged.
Move VoleWindowsVpnInvoke into a UWP-only header and ship it only with the UWP backend. Include matching Windows build headers, keep Apple frameworks limited to shared headers, and update the UWP example.

Clarify that dns-hijack ignores arbitrary scheme prefixes to match Mihomo without adding validation.

Validation: 9 script tests, Ruff, and C/C++ header compilation for Windows x64 and ARM64 passed. Windows native builds were not run.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c18f21da24

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/windows/host.rs Resolved
Comment thread scripts/src/vole_scripts/release.py Resolved
Comment thread src/invoke/foreground.rs Resolved
Comment thread src/config/mod.rs Resolved
yiguo added 3 commits October 8, 2026 22:06
Decode Cargo and rustc output explicitly as UTF-8 instead of the Windows CP1252 default. Remove the fixed 60-second subprocess timeout that interrupted cold BoringSSL dependency downloads; release jobs already have a 90-minute limit.

Add a regression using a real subprocess under a simulated CP1252 locale. Validation: 10 script tests and Ruff passed, all six Windows feature/target metadata combinations parsed, and CLI/Wintun/UWP notice collection passed. A 61-second subprocess failed before the fix and completed afterward. Windows native builds have not been rerun.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 589d70e073

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/README.md Resolved
Comment thread src/invoke/foreground.rs Resolved
@yiguodev
yiguodev merged commit dcbd7dd into main Oct 8, 2026
25 checks passed
@yiguodev
yiguodev deleted the feat/bin-wintun branch October 8, 2026 15:24
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.

2 participants