Immutable
release. Only release title and notes can be modified.
Downloads
Most People Will Want
- Nostr VPN for macOS (Apple Silicon): nostr-vpn-v4.0.96-macos-arm64.dmg
- Nostr VPN for Debian/Ubuntu (.deb): nostr-vpn-v4.0.96-linux-x64.deb
- Nostr VPN for Windows: nostr-vpn-v4.0.96-windows-x64-setup.exe
- Nostr VPN for Android: nostr-vpn-v4.0.96-android-arm64.apk
Command Line
- macOS Apple Silicon CLI: nvpn-aarch64-apple-darwin.tar.gz
- Linux x64 CLI: nvpn-x86_64-unknown-linux-musl.tar.gz
- Linux ARM64 CLI: nvpn-aarch64-unknown-linux-musl.tar.gz
- Windows x64 CLI: nvpn-v4.0.96-x86_64-pc-windows-msvc.zip
Other Files
- Android arm64 AAB: nostr-vpn-v4.0.96-android-arm64.aab
- macOS Apple Silicon updater archive: nostr-vpn-v4.0.96-macos-arm64.app.tar.gz
- nvpn-arm-unknown-linux-musleabihf.tar.gz: nvpn-arm-unknown-linux-musleabihf.tar.gz
- nvpn-v4.0.96-arm-unknown-linux-musleabihf.tar.gz: nvpn-v4.0.96-arm-unknown-linux-musleabihf.tar.gz
Changes
Changed
- Moved join requests, signed roster updates, capabilities, and paid-route
control records onto the existing wire-compatible FIPS-TCP 0.2.0 stream.
Only ping/pong probes remain on the FIPS datagram path. - Reduced first-join approval to one ordinary signed roster plus the existing
one-time QR request secret in the encrypted nVPN control record. Removed the
identity receipt/context batch, forwarding and apply-ACK envelopes, custom
replay/retry machinery, and relay fallback; an unsuccessful join uses the
normal join-request flow again. - Updated the WebVM guest and native/mobile receivers for the same FIPS-only
first-join record while keeping later roster updates on the generic roster
event format. - Updated embedded FIPS Core and Endpoint to 0.4.6 for bounded production
control polling and corrected no-wire routing/session behavior.
Fixed
- Apply a complete FIPS-TCP control record as soon as its bytes arrive instead
of depending on a later stream-close frame. - Reduce idle control-runtime wakeups while keeping inbound records and local
publish commands event-driven. - Let the WebVM guest identify its local FIPS-TCP control endpoint with one
transient readiness hint before it waits for the signed roster. - Bootstrap the headless WebVM approval route through the authenticated FIPS
carrier before sending its single FIPS-TCP roster record. - Retain completed FIPS-TCP control records under bounded local receive-queue
backpressure instead of dropping them after transport acknowledgement. - Avoid oversized async test futures on worker stacks in the mobile FIPS
integration fixture. - Invalidate a different Linux underlay default route before installing a
WireGuard-exit default, preventing activation-time route clones from
bypassing the encrypted upstream, while keeping the FIPS underlay snapshot
stable when the managed WireGuard interface becomes the system default.
Release Build
- Built from commit
81c1dee7664a85af4d153f856bc0f4f277ba2e29for releasev4.0.96. - Built signed and notarized Apple Silicon macOS DMG and updater archive.
- Built Linux x64 desktop Debian package.
- Built Windows x64 installer.
- Built signed Android arm64 APK/AAB.