• v0.1.11 fd207c0d3e

    serrebi released this 2026-05-06 12:12:21 -07:00 | 21 commits to main since this release

    Diagnostic + responsiveness update for the slow-Reconnect report.

    The upstream relay has no cooldown on rapid publisher reconnect (verified against the server source), and a local stop-and-respawn cycle finishes in ~230 ms. So the 30 s being observed is something specific to your network/setup that needs more data than I can see locally.

    What this build does

    • `Reconnect audio` no longer freezes NVDA's UI. The stop+start cycle now runs on a background thread, so NVDA speaks "Reconnecting" immediately and stays responsive while the helper is exiting and restarting.
    • Helper status lines are now mirrored into NVDA's log at INFO level. Every phase the helper reports — `Connected`, `Capture started`, `Listening for remote audio`, `Stopped`, error events, etc. — gets a timestamped entry in `%APPDATA%\nvda\nvda.log`.
    • Reconnect itself logs how long the stop+start took in wall-clock seconds.

    Action

    After installing on both machines and reproducing the slow Reconnect, grab the chunk of `%APPDATA%\nvda\nvda.log` covering the click. Lines containing `remoteAudio` show exactly which phase is eating the time, which is what I need to land a real fix.

    Downloads
  • v0.1.10 3b830d57bb

    serrebi released this 2026-05-06 12:03:48 -07:00 | 21 commits to main since this release

    Fixes "audio dies on the publisher when I click Reconnect" reported in v0.1.9.

    What was wrong

    `Reconnect audio` killed the helper with `TerminateProcess` on Windows. The publisher held WASAPI process-loopback handles which were never released, the TCP/UDP session never closed cleanly, and the next helper could not reacquire the device reliably.

    Fix

    • Helper now watches its own stdin in a background task. When NVDA closes the pipe (or writes any byte) the cancellation token fires and the session's IAsyncDisposable.DisposeAsync runs — IAudioCaptureClient/IAudioClient COM objects are released, TCP/UDP sockets close cleanly. Exits with status Stopped..
    • Add-on spawns the helper with stdin=PIPE, and stop() now closes stdin first and waits up to 2 s for graceful exit. TerminateProcess is only used as a last resort if the helper is hung.

    Verified locally that subscriber and publisher both shut down cleanly in well under a second, and that a stop-immediately-respawn cycle on the publisher reacquires WASAPI cleanly.

    Install

    Download `remoteAudioClient-0.1.10.nvda-addon` below and open it in NVDA on both machines. Settings carry over.

    Downloads
  • v0.1.9 8677e08b27

    serrebi released this 2026-05-06 11:56:07 -07:00 | 23 commits to main since this release

    Fixes a bug where the receiver showed as connected but never played audio after the sender came online, until the add-on was manually reloaded.

    What was happening

    The receiver registered fine, but UDP heartbeats to the relay can be silently dropped by NAT/path issues without raising any error in the helper. After 15 s of dropped heartbeats the server timed out the receiver's UDP session, so when the sender's packets arrived the server had nowhere to forward them. The receiver's helper kept listening on a session the server had already forgotten.

    Helper changes

    • TCP and UDP heartbeat loops now catch send errors. On failure, the session tears down cleanly and the add-on's existing auto-retry kicks in (about 5 s).
    • The UDP heartbeat now also re-sends a UDP register packet about every 15 s, so the relay refreshes the receiver's session even if individual heartbeats are lost.
    • UDP heartbeat interval capped at 3 s (was 5 s) so path flaps are detected sooner.

    Add-on change

    • New Reconnect audio entry in Tools > NVDA Remote Audio. Stops and restarts the helper using the current role. Recovers from a stuck session in one click without reloading plugins.

    Install

    Download `remoteAudioClient-0.1.9.nvda-addon` below and open it in NVDA on both machines. Settings carry over.

    Downloads
  • v0.1.8 4b7b5c4001

    serrebi released this 2026-05-06 11:40:55 -07:00 | 24 commits to main since this release

    The Receive remote audio and Send this computer's audio menu items are now check-items, so NVDA tells you which one is active when you open the menu.

    Behavior

    • Clicking the unchecked item starts that role.
    • Clicking the checked item disconnects.
    • Clicking the other item while one is active switches roles (the helper restarts in the new role).
    • Auto-start, auto-retry on disconnect, and unexpected helper exits all keep the check marks in sync.

    Install

    Download `remoteAudioClient-0.1.8.nvda-addon` below and open it in NVDA. Settings carry over.

    Downloads
  • v0.1.7 39a84107c8

    serrebi released this 2026-05-06 11:34:53 -07:00 | 25 commits to main since this release

    The add-on can now install NVDARemoteAudioServer and the Windows Firewall rules itself. No manual download or netsh.

    New Tools-menu items

    • Install audio server (this machine sends audio)... — downloads the latest NVDARemoteAudioServer Windows ZIP from GitHub, extracts to C:\NVDARemoteAudioServer\ (or %LOCALAPPDATA%\NVDARemoteAudioServer\ if the first is not writable), registers a per-user logon scheduled task, starts the server, and prompts for UAC to add Windows Firewall inbound TCP+UDP allow rules on port 6838.
    • Add firewall rules for audio server... — re-runs only the firewall step (separate UAC prompt). Use this if you declined UAC during install.

    Behaviour change

    Picking Send this computer's audio on a machine without the server installed now offers the install dialog instead of failing silently.

    Notes

    • No admin needed for the download/extract/scheduled-task part.
    • Firewall rules require admin (UAC). Decline UAC and the rest still installs; you can retry firewall rules from the menu.
    • The .NET runtime is not a dependency of this add-on — the helper EXE is published self-contained.

    Install

    Download remoteAudioClient-0.1.7.nvda-addon below and open it in NVDA on both machines. Settings carry over.

    Downloads
  • v0.1.6 622efaf0d7

    serrebi released this 2026-05-06 11:20:58 -07:00 | 25 commits to main since this release

    Security fixes against a hostile or buggy audio server. No protocol or behavioural changes for honest servers.

    Changes

    • Cap server-supplied udp_audio_payload_max_bytes to [64, 1500] bytes so a malicious server cannot inflate every per-packet allocation.
    • Floor server-supplied tcp_heartbeat_interval_ms at 500 ms so a zero/one value cannot spin the heartbeat loop tight.
    • Replace the unbounded StreamReader.ReadLineAsync on the TCP handshake with a bounded byte-level reader (cap 64 KB). A server that streams data without a newline can no longer exhaust client memory.

    Install / upgrade

    Download `remoteAudioClient-0.1.6.nvda-addon` below and open it in NVDA on both machines. Settings carry over.

    Downloads
  • v0.1.5 4433f5c561

    serrebi released this 2026-05-06 11:13:33 -07:00 | 26 commits to main since this release

    First public release of the NVDA Remote Audio Client.

    Install

    1. Install NVDARemoteAudioServer on whichever machine should send audio.
    2. Download `remoteAudioClient-0.1.5.nvda-addon` below and open it on both machines.
    3. In NVDA, open Preferences > Settings > NVDA Remote Audio on both machines and set the same Host, Port (6838), and Key. The key is required — there is no default.
    4. Restart NVDA.

    What it does

    • Streams system audio (music, games, browser, Discord, etc.) between two Windows machines.
    • Excludes NVDA's process tree from WASAPI loopback capture, so NVDA speech stays on NVDA Remote and is not double-sent.
    • Opus 48 kHz stereo at 15 ms packets with packet-loss concealment.
    • Latency profiles: LAN (60/60/300 ms), Tailscale (90/80/450 ms), Internet (150/120/800 ms). Auto-picked from the host you set.

    Requires

    • Windows 10 build 20348+ (process-loopback exclusion API).
    • NVDA 2025.1+.

    Security

    Audio is sent unencrypted over UDP. Run this over LAN, VPN, or Tailscale only.

    Downloads