Skip to content

Project Status

SpaceSquare640 edited this page Aug 8, 2026 · 3 revisions

English | 繁體中文

Project Status

Alpha — actively building. The desktop app runs end-to-end (Rust engine boots, frosted-glass shell renders, live telemetry streams to the Diagnostics view). An Expert "real adapter" mode (Windows/Wintun) creates a virtual interface and captures live packets. Two peers can exchange signaling blobs and establish a direct, authenticated encrypted link by hole-punching through their NATs (C4); real IP traffic tunnels between them over that link through the virtual adapter (C5), with live RTT and throughput. Forward Error Correction (Reed-Solomon) rebuilds lost packets without retransmission — any r losses per group (D.1 · D.2) — and a split-tunnel policy controls which LAN traffic — in-subnet unicast, broadcast, and multicast — the tunnel carries (E.1), with broadcast/multicast forwarding and FEC redundancy user-configurable from Settings (B.3). The app classifies the virtual adapter's network as Private and scopes a firewall allow-rule to it automatically (E.2), and Settings can steer extra address/prefix networks into the tunnel via New-NetRoute (E.2) — both symmetric (each side must opt its own inbound in for delivery, not just the sender's outbound). Full site-to-site LAN sharing (a peer's whole real LAN reachable without either side pre-declaring it) remains deliberately out of scope, for the same reason relay/TURN is. Verification note: the whole path — handshake, crypto, data plane, FEC and split-tunnel policy — is covered end to end by an automated harness (two live pipelines over loopback with mock adapters); real NAT traversal has not yet been verified on two physical machines and is the material open risk.

Real adapter (Expert, Windows): creating the Wintun virtual interface requires Administrator privileges. When toggled on without elevation, the engine reports a Needs Admin state and offers a one-click relaunch. The signed wintun.dll is bundled from wintun.net (see src-tauri/resources/wintun/NOTICE.txt).

Area State
Repository scaffold & docs ✅ Done
Tauri 2.x app initialization ✅ Done
Application Shell — 60px sidebar, breadcrumb, golden-ratio layout, 6 themes, frosted-glass settings overlay ✅ Done
Persistent UI state — theme, active route & settings restored across restarts (zustand/persist) ✅ Done
Engine telemetry spine — simulated data path + TelemetrySink IPC bridge (live stats & packet log) ✅ Done
Virtual adapter (TUN/TAP) — Wintun integration, real packet capture, elevation handling ✅ Done
Virtual adapter — Linux (/dev/net/tun) and macOS (utun) backends 🚧 Implemented, unverified on real hardware — see PLATFORM-SUPPORT.md
Transport + STUN — shared UDP socket, reflexive discovery, live RTT/jitter/loss (C1) ✅ Done
Crypto & identity — X25519 identity, Noise IK handshake, AEAD session + anti-replay (C2) ✅ Done
Manual signaling — paste-robust Offer/Answer blobs (pubkey + candidates, CRC32) (C3) ✅ Done
Peer link — NAT hole-punch-as-handshake (fan-out + single-winner nomination), encrypted keepalive RTT (C4) ✅ Done
Data-plane join — virtual adapter ↔ encrypted session, IP packets tunnelled peer-to-peer (C5) ✅ Done
Forward Error Correction — Reed-Solomon over the data plane, recovers any r losses per group without retransmit (D.1 · D.2) ✅ Done
Split tunneling — data-plane policy gating unicast/broadcast/multicast into the tunnel (E.1) ✅ Done
Full-path integration harness — two live pipelines over loopback with mock adapters (F.0) ✅ Done
Frontend test foundation — vitest + testing-library, pure logic and store coverage (B.1) ✅ Done
App-shell routing tests — Sidebar/Breadcrumb/AppShell on a real router, mutation-verified ✅ Done
Network page — peer-connection management moved off Diagnostics, first component tests (B.2) ✅ Done
Connection settings — split-tunnel broadcast/multicast + FEC redundancy wired to Settings UI (B.3) ✅ Done
Live split-tunnel toggles — broadcast/multicast changes apply to an already-connected link, no reconnect (B.4) ✅ Done
Multi-language (i18n) — English, Traditional Chinese, Simplified Chinese, react-i18next, live switching, persisted ✅ Done
Windows network integration — adapter set to Private, scoped firewall allow-rule, best-effort (E.2) ✅ Done
OS route management — extra address/prefix networks steered into the tunnel via New-NetRoute, symmetric split-tunnel policy widening (E.2) ✅ Done
Site-to-site LAN sharing (peer-advertised routes + remote IP forwarding) ⏳ Deferred — unverifiable without 3 physical hosts; see CHANGELOG
Diagnostics — live telemetry readout ✅ · FEC/policy counters ✅ · two-node topology view ✅ · spectrum chart ✅ ✅ Done
Settings — layered Basic/Expert access (Connection section gated, display-only) ✅ Done
Settings — JSON profile import/export (connection settings only) ✅ Done
Dedicated Minecraft page — settings summary + one-click preset (manual, not process detection) ✅ Done
Networked signaling server — WebSocket host, network name/password gate, live member roster (G.1) ✅ Done
Networked signaling client — join a network, track roster + live join/leave events (G.2) ✅ Done
Offer/answer relay over the signaling connection — transport only (G.3) ✅ Done
Multi-peer ConnectionManager — independent link state per peer, mesh-ready (G.3b) ✅ Done
Mesh auto-connect orchestration — roster + relay → automatic offer/answer, no manual paste (G.3c) ✅ Done
Virtual-network UI — create/join network, live member list, integrated into the Network page (G.4) ✅ Done
Game-tagged networks — Minecraft quick-create panel, generic gameTag metadata shown wherever a network is viewed ✅ Done
Network page's virtual network panel repositioned as pure management — hint + collapsed general-purpose forms ✅ Done
Elevation helper — IPC protocol + message framing (E.3 step 1) ✅ Done
Elevation helper — request/response dispatch cycle, generic transport, real tun::windows wiring for 4 of 5 operations (E.3 step 2) ✅ Done
Elevation helper — real named-pipe transport (owner-only ACL), helper.exe binary, elevated launch (E.3 step 3) ✅ Done
Elevation helper — create_adapter + attach_existing (helper owns the adapter, main process opens it by name) (E.3 step 4) ✅ Done
Elevation helper — actually replacing whole-app relaunch; blocked on verifying unelevated WintunOpenAdapter on a real machine (E.3 step 5) ⏳ Blocked
CI release pipeline — Windows, Linux, and macOS installers built and published to a draft GitHub Release on tag push, with auto-generated release notes (Linux/macOS are UI-only previews — see PLATFORM-SUPPORT.md) ✅ Done

For version-by-version detail, see CHANGELOG.md. For the intended (not-yet-built) feature set, see Features.

Clone this wiki locally