Repository navigation
Support custom Windows VPN profiles and stable host COM lifetime - #7
Conversation
Add strict profileName selection to Windows VPN lifecycle requests while preserving package ownership and single-session guards. Use the canonical Android JNI and Apple logging namespace, with updated contracts and regression coverage.
Retain one process-lifetime MTA usage reference for cached WinRT factories while balancing each caller-thread initialization. Preserve STA rejection and prevent guards from moving between threads. Add isolated native DLL regressions for repeated calls, caller MTA release, worker handoff and STA rejection, and run them before UWP artifact upload.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
CI follow-up: native Windows builds and Python setupThe failed ARM64 UWP job completed compilation and packaging, then failed in the COM check. Its Python bootstrap selected an emulated x64 interpreter, which could not load the ARM64 DLL ( This update:
Local Windows ARM64 validation:
No VPN connection or device acceptance was exercised. x64 was not built or executed locally; its validation belongs to the native x64 CI jobs. The final |
Summary
profileNameto the Windows host bridge's start, status and stop payloads. Omission still selectsVole; explicit names use strict validation and exact package-scoped matching. Bridge version 3 and the single-active-session rule remain unchanged.RoInitialize/RoUninitialize. This fixes repeated calls from initially uninitialized threads and sequential worker handoffs without adding a worker queue or changing the public ABI.io.github.yuandevteam.vole, and move theTunFramingimport behind the relevant platform gates.Compatibility
Android native declarations must use the canonical namespace; no legacy export aliases are retained. Custom profile names do not migrate, rename or adopt other profiles. Host bridge calls remain non-overlapping, and STA callers are still rejected.
Validation
Previously completed locally for these commits on Windows ARM64:
--no-run.This is not a full Rust test-suite run or x64/device acceptance. Android JNI loading, Apple device behavior and physical-device interoperability were not tested. Configured release-workflow coverage is not reported as an executed release.