-
v0.2.2 - safe add-on reloads Stable
released this
2026-07-25 21:44:43 -07:00 | 1 commits to main since this releaseNVDA Remote Audio Client release notes
0.2.2
Safe add-on reloads
- Fixes NVDA terminating when Reload Add-ons is invoked from the Tools menu or its assigned keyboard gesture.
- Removes the stale Tools-menu item after the active event returns while retaining its unsafe wx wrapper until NVDA exits.
- Preserves normal Remote Audio timer, helper-process, settings-panel, and NVDA Remote script cleanup during reload.
0.2.1
Relay restart recovery
- Automatically tears down and recreates capture or playback after the relay server restarts or a heartbeat transport fails.
- Prevents a disconnected publisher from remaining alive without a working control session.
- Adds the negotiated TCP heartbeat and UDP timeout to connection diagnostics.
- Extends the real-relay integration test past the control idle timeout and verifies recovery after forcibly restarting the relay.
- Tested with NVDA 2026.2 beta 7 in addition to the automated helper and add-on checks.
0.2.0
Secure payload-v2 transport
- Optional end-to-end AES-256-GCM encryption with PBKDF2-SHA256 key derivation.
- The password is passed to the helper through an environment variable and never sent to the relay.
- Clear rejection of wrong passwords, unencrypted publishers when encryption is required, and damaged packets.
- Backward-compatible reception of legacy Opus streams when no password is configured.
Audio routing and quality
- Send all system audio except NVDA, or isolate one running application.
- Choose adaptive Opus, 5 ms live Opus, broadcast-quality Opus, or uncompressed PCM16.
- Select the receive playback endpoint and set gain from 0 to 200 percent.
- Pan the received stream and apply bass, midrange, and treble EQ from -12 to +12 dB.
Recording, profiles, and diagnostics
- Record received audio to timestamped 48 kHz stereo WAV files.
- Toggle recording and open its folder from the Tools menu.
- Save, load, and delete named connection profiles.
- Run protocol and encryption self-tests from the Tools menu.
- Expanded copied diagnostics for security, codec, shaping, recording, and profile state.
Compatibility
- Requires NVDA 2025.1 or newer and Windows 10 build 20348 or newer.
- Uses the existing NVDARemoteAudioServer 0.5 relay; no relay protocol upgrade is required because payload v2 is opaque to the server.
- Both endpoints must run 0.2.0 to use encryption or PCM. Leave the password empty for legacy Opus compatibility during a staged upgrade.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-07-17 14:44:15 -07:00 | 1 commits to main since this releaseRelay restart recovery
- Automatically tears down and recreates capture or playback after the relay restarts or a heartbeat transport fails.
- Continues retrying through temporary relay downtime and bounds each reconnect attempt.
- Cleans up sockets and partially registered sessions between retries.
- Adds negotiated heartbeat and UDP timeout values to connection diagnostics.
Validation
- Full helper protocol, encryption, audio-shaping, discovery, Python, manifest, and documentation checks passed.
- Encrypted Opus ran beyond the relay idle timeout through the real Rust relay.
- Encrypted PCM, WAV recording, and wrong-password rejection passed.
- A forced eight-second relay outage recovered successfully after failed reconnect attempts.
- Tested with NVDA 2026.2 beta 7.
This release remains compatible with the unmodified NVDARemoteAudioServer 0.5 relay; no server-side protocol update is required.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-07-17 14:23:31 -07:00 | 4 commits to main since this releaseNVDA Remote Audio Client 0.2.0
Secure payload-v2 transport
- Optional end-to-end AES-256-GCM encryption with PBKDF2-SHA256 key derivation.
- The password is passed to the helper through an environment variable and never sent to the relay.
- Clear rejection of wrong passwords, unencrypted publishers when encryption is required, and damaged packets.
- Backward-compatible reception of legacy Opus streams when no password is configured.
Audio routing and quality
- Send all system audio except NVDA, or isolate one running application.
- Choose adaptive Opus, 5 ms live Opus, broadcast-quality Opus, or uncompressed PCM16.
- Select the receive playback endpoint and set gain from 0 to 200 percent.
- Pan the received stream and apply bass, midrange, and treble EQ from -12 to +12 dB.
Recording, profiles, and diagnostics
- Record received audio to timestamped 48 kHz stereo WAV files.
- Toggle recording and open its folder from the Tools menu.
- Save, load, and delete named connection profiles.
- Run protocol and encryption self-tests from the Tools menu.
- Expanded copied diagnostics for security, codec, shaping, recording, and profile state.
Compatibility
- Requires NVDA 2025.1 or newer and Windows 10 build 20348 or newer.
- Uses the existing NVDARemoteAudioServer 0.5 relay; no relay protocol upgrade is required because payload v2 is opaque to the server.
- Both endpoints must run 0.2.0 to use encryption or PCM. Leave the password empty for legacy Opus compatibility during a staged upgrade.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-07-04 20:27:12 -07:00 | 8 commits to main since this releaseFixes a second, more subtle cause of the NVDA restart hang from v0.1.17.
v0.1.17 deferred the tray menu teardown in
terminate()viawx.CallAfter
to avoid callingtoolsMenu.Remove()while NVDA's wx event loop was
tearing down. That wasn't quite enough: NVDA's core destroys the system
tray icon (and every menu it owns, including this add-on's submenu)
synchronously right afterterminate()returns, in the same call stack,
before the deferred callback gets a separate turn to run. Touching the
menu ourselves at that point could still reproduce the hang.terminate()now checkscore._hasShutdownBeenTriggered(the same
private flag NVDA's own bundled NVDA Remote client uses to detect a real
exit) and skips menu teardown entirely during a genuine NVDA exit, since
NVDA tears the tray icon down for us moments later. Teardown still runs
normally for a plugin reload, where NVDA does not destroy the tray icon.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
released this
2026-07-04 15:43:31 -07:00 | 10 commits to main since this releaseFixes a bug where NVDA would hang on restart while this add-on was enabled.
terminate()was callingtoolsMenu.Remove()synchronously during NVDA
shutdown. If the wx event loop was already tearing down at that point,
the call could block forever, wedging the restart. Tray menu teardown is
now deferred viawx.CallAfter, so shutdown drops it harmlessly instead
of blocking.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.1.16 Stable
released this
2026-05-26 15:43:07 -07:00 | 12 commits to main since this releaseWhat'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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-05-13 12:46:21 -07:00 | 17 commits to main since this releaseChanges:
- 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-05-11 12:16:16 -07:00 | 17 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-05-10 13:49:43 -07:00 | 18 commits to main since this releaseValidates the server key client-side using the same rules
NVDARemoteAudioServerenforces, 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/NVDARemoteAudioServersrc/protocol.rs. No protocol change.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
released this
2026-05-06 16:04:37 -07:00 | 19 commits to main since this releaseLAN 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 profileand 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
mirror of
https://github.com/serrebidev/NVDARemoteAudioClient.git
synced 2026-08-13 06:50:16 -07:00