Skip to content

Releases: inteliboy/WgSharp

WgSharp 1.26.1026

Choose a tag to compare

@inteliboy inteliboy released this 26 Oct 12:40

Fix: the Edit button could be invisible until the window was resized; it now repositions whenever the detail panel changes size (splitter, tab switch, first layout).

WgSharp 1.26.1008

Choose a tag to compare

@inteliboy inteliboy released this 08 Oct 12:30

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

Choose a tag to compare

@inteliboy inteliboy released this 06 Oct 21:35

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

Choose a tag to compare

@inteliboy inteliboy released this 21 Sep 22:18

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

Choose a tag to compare

@inteliboy inteliboy released this 08 Sep 11:54
8b4b77b

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

Choose a tag to compare

@inteliboy inteliboy released this 05 Jul 08:00
050c6d7

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

Choose a tag to compare

@inteliboy inteliboy released this 03 Jul 22:17
d13d850

Fixes

  • Routing: IPv4 destination was byte-reversed in AllowedIpRouter
    (used IPAddress(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-order byte[] constructor.
  • WireGuardNT split-tunnel with /32 AllowedIPs never handshook. The
    wake-up ping targeted network+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; ConfigWriter falls 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.Encrypt also fails
    closed at the message-counter ceiling.

Performance (managed data path)

  • ChaCha20-Poly1305 rewritten allocation-free: per-thread scratch, streaming
    Poly1305, offset-aware EncryptInto/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 raw Socket with 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.