Repository navigation
Releases: inteliboy/WgSharp
Release list
WgSharp 1.26.1026
WgSharp 1.26.1008
New: command line control. WgSharp.exe --up NAME, --down, --status and --list drive the background service over its pipe (see README).
New: connection diagnostics. The Tunnels tab shows a hint when a tunnel is up but not working, and a Test button pings the tunnel's DNS server.
New: auto-connect rules. Optionally connect a chosen tunnel on any Wi-Fi network that is not trusted, and disconnect on a trusted one (Settings tab; pick the tunnel by right-clicking it).
New: the tray icon shows the connection state: grey when disconnected, flashing while connecting, the regular orange icon when connected.
New: the UI is DPI-aware, so text stays sharp at display scaling above 100%.
Fix: QR scanning from the webcam works at any rotation (module-size estimate no longer fails around 45 degrees), and the live preview is smooth.
Change: the window opens centered on the screen at startup.
Fix: switching the theme from the Settings tab no longer moves the Activate button above the Interface section.
Change: managed backend does less work per packet (reused send buffer, allocation-free AllowedIPs lookup) and the build now uses compiler optimizations.
Note: WgSharp.exe and WgSharp-Setup.exe are now signed (CN=SMCE). The certificate is not publicly trusted, so Windows may still show an unknown-publisher warning.
WgSharp 1.26.1006
Fix QR-code scanning from a webcam, which failed on real phone screens.
Reed-Solomon error correction in the decoder was broken (any single misread module made a code undecodable); fixed.
Perspective correction for tilted codes, adaptive thresholding, and noise-robust module sampling.
Camera: picks a ~720p format, enables auto focus/exposure/white balance, and corrects over-exposure from a bright phone screen.
Tunnel detail pane now wraps long keys and values instead of truncating them at normal window size.
WgSharp 1.26.0922
Fix GUI stutter and high idle CPU, especially on lower-end machines and while dragging the window.
Service polling (status and log) no longer blocks the UI thread.
Incremental service log fetch (LOG2), with automatic fallback for older services, and back-off while the service is unreachable.
Fewer redundant repaints and allocations in the tunnel list, Stats tab and detail pane.
WgSharp 1.26.0908
Changed installer to NSIS, that seems to work better for updating.
Added dark theme and some UI changes.
QR code for tunnel scanning via webcam is no longer experimental.
Fix service log handoff to GUI
Fix GUI position at lauch
WgSharp 1.26.0705
Managed/Wintun: nudge the adapter to show IP/DNS in the network UI. After addressing, re-assert the interface as enabled so Windows presents the assigned IP/DNS (WireGuardNT gets this from its driver's SetAdapterState(UP); Wintun has no equivalent). Best-effort and cosmetic — media-connect state is driver-owned and read-only to user space, so it's not guaranteed on all Windows versions.
WgSharp 1.26.0704
Fixes
- Routing: IPv4 destination was byte-reversed in
AllowedIpRouter
(usedIPAddress(long)with the octets in the wrong order). Broke
split-tunnel / multi-peer routing; masked in single-peer configs by the
one-peer fallback. Now uses the network-orderbyte[]constructor. - WireGuardNT split-tunnel with /32 AllowedIPs never handshook. The
wake-up ping targetednetwork+1, i.e. the neighbor of a /32 host
(192.168.1.2/32 -> pinged .3), which had no tunnel route. A /32 is now
its own target, and the wake-up sweeps all candidates instead of stopping
at the first non-throwing send. - DNS server not covered by AllowedIPs now works on WireGuardNT. It's
injected as a hidden /32 into the driver's cryptokey routing (not just an
OS route, which the driver was dropping). - Manifest / startup crashes fixed along the way (invalid
--inside an
XML comment broke SxS activation; a modal dialog in the constructor forced
early handle creation -> NRE in the tray-menu pre-warm).
Security / architecture
- GUI manifest is now
asInvoker— no UAC prompt at launch. - WgSharpSvc becomes an always-running manager (
start= auto);
activate/deactivate are pipe commands that validate synchronously and run
the bring-up on a worker thread (no held-open pipe, no SCM start/stop from
the GUI). - Pipe control commands are admin-gated against the client's UAC linked
token (PipeClientAuth); read-only queries stay open. - One-time
--elevated-setup(single UAC prompt) registers + starts the
service and pre-authorizes the firewall;ConfigWriterfalls back to the
service for admin-owned config files. - Portable hybrid: portable mode never uses/installs the service; runs
in-process and requires elevation. Launched unelevated it stays read-only
(Connect disabled) and prompts to run as administrator. Portable and
service modes are mutually exclusive. - WireGuardNT download hardening: whole-chain revocation check (tolerant
of offline machines) and a stricter publisher match (cert Organization must
be "WireGuard LLC", not a loose substring).Session.Encryptalso fails
closed at the message-counter ceiling.
Performance (managed data path)
- ChaCha20-Poly1305 rewritten allocation-free: per-thread scratch, streaming
Poly1305, offset-awareEncryptInto/DecryptInto(verified byte-identical
vs. the previous implementation across 192 size/AAD combos + RFC 8439
vector + tamper checks). CNG backend gains pinned-pointer in/out paths. - Session encrypts straight into the outgoing message and decrypts into a
reusable buffer; tunnel loops reuse receive/plaintext buffers; UDP moves to
a rawSocketwith a reusable buffer and larger SO_RCVBUF/SO_SNDBUF; AWG
transport translation is in-place.
Build
- Optional Authenticode signing of the exe and MSI (
SIGN_CERT, default
SMCE), self-disabling when no cert/signtool is present.
Update check:
- Background check against the GitHub releases API at startup; shows a
clickable tray balloon opening the release tag page when a newer version
exists. Informational only (never auto-downloads), failure-safe, TLS 1.2,
no JSON dependency. Opt out via Settings -> Check for updates.
Portable mode:
- Unelevated portable launch now offers relaunch-as-administrator or exits,
instead of staying open read-only. - Auto-start options (login GUI, background service) forced off and greyed
out in portable mode. - Remove the now-dead _portableReadOnly field / RefreshActivateEnabled /
ActivateTunnel guard (fixes CS0649). No behavior change.