• v0.1.16 1dce37f064

    v0.1.16 Stable

    serrebi released this 2026-05-26 15:43:07 -07:00 | 0 commits to main since this release

    What's new

    Bug fixes

    • Fixed NVDA hanging on restart/shutdown when the remote audio helper was running. The addon's erminate() path was touching wx menus, callLater timers, and NVDA Remote local-script lists while those subsystems were already tearing down, which could block NVDA's main thread indefinitely. Now only the helper subprocess is stopped (non-blocking) during shutdown.
    • Fixed a secondary shutdown-blocking issue where the helper process wait could hold NVDA's main thread.
    • Fixed JSON config loading failing silently when the config file had a UTF-8 BOM.

    New features

    • Announce connection status messages setting (default on): when disabled, routine connect/listen/capture/stopped messages are kept quiet. Errors and explicit status commands still speak.
    • Use Opus packet-loss recovery setting (default on): controls Opus in-band FEC. Can be disabled for advanced LAN testing.
    • Verbose diagnostic logging setting (default off): when enabled, helper diagnostic/statistics lines are written to nvda.log.
    • NVDA Input Gestures for receive, send, disconnect, reconnect, and report status — assignable under the NVDA Remote Audio category in NVDA's Input Gestures dialog.
    • Gestures stay local when controlling another machine with NVDA Remote (registered with NVDA Remote's local-script list).
    • Updated NAudio dependency from 2.2.1 to 2.3.0.
    Downloads
  • v0.1.15 c93253a001

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

    Changes:

    • Add configurable 5/10/20 ms Opus packet duration, with Opus in-band FEC enabled by default.
    • Replace receiver playback with WASAPI event-sync output, a low-latency ring buffer, underrun smoothing, backlog trimming, and drift correction.
    • Tighten LAN/Tailscale/Internet latency profiles and pass the Opus frame size to both sender and receiver.
    • Add audio diagnostics for FEC, PLC, buffer level, underruns, drops, and drift corrections.

    Build verified with dotnet build, Python syntax check, helper --help, and build.ps1.

    Downloads
  • v0.1.14 8f20f7d782

    serrebi released this 2026-05-11 12:16:16 -07:00 | 5 commits to main since this release

    • Registers NVDARemoteAudioServer through a per-user Startup shortcut so it starts again after Windows sign-in. If shortcut creation fails, the add-on falls back to the scheduled task path.
    • Repairs existing server installs on add-on startup and when the install menu item is selected, then starts the server if it is not already running.
    • Keeps UAC limited to optional Windows Firewall rule setup for inbound TCP/UDP 6838; installing and startup persistence remain per-user.
    Downloads
  • v0.1.13 164f990f9d

    serrebi released this 2026-05-10 13:49:43 -07:00 | 6 commits to main since this release

    Validates the server key client-side using the same rules NVDARemoteAudioServer enforces, so a bad key produces a clear message in the settings dialog (or when starting a connection) instead of a generic server handshake failure.

    Rule Behavior
    Empty "Remote audio key is not set"
    Contains control characters (tab, newline, escape, etc.) Rejected in settings; settings can't be saved
    More than 128 UTF-8 bytes Rejected in settings; settings can't be saved
    Any printable string ≤128 UTF-8 bytes (incl. spaces, symbols, Unicode) Allowed

    Matches validate_key() in haitun001/NVDARemoteAudioServer src/protocol.rs. No protocol change.

    Downloads
  • v0.1.12 1b817b6545

    serrebi released this 2026-05-06 16:04:37 -07:00 | 7 commits to main since this release

    LAN profile retuned for lower latency without choppy audio.

    Setting Was Now
    prebufferMs 60 30
    outputLatencyMs 60 40
    bufferMs 300 200

    Saves about 50 ms end-to-end on LAN. The 30 ms prebuffer is two 15 ms wire packets — enough to absorb a single late packet without underrun, since LAN jitter is normally well under a millisecond.

    Tailscale and Internet profiles are unchanged.

    If audio gets choppy after upgrading on a particular LAN, switch to the Tailscale profile in Preferences > Settings > NVDA Remote Audio > Latency profile and tell me — that's a sign your LAN has more jitter than expected and we'd want a middle profile.

    Install

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

    Downloads
  • v0.1.11 fd207c0d3e

    serrebi released this 2026-05-06 12:12:21 -07:00 | 9 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 | 9 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 | 11 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 | 12 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 | 13 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