Skip to content

Releases: Ednunp/remoteSpeechControl

v1.1.1

Choose a tag to compare

@Ednunp Ednunp released this 26 Jun 16:24

One new feature, one bug fix.

New: announce your own machine's battery status when querying battery from a remote. If you're on a laptop controlling a desktop and you press NVDA+Shift+B (NVDA's "report battery status" hotkey), the desktop normally answers "No system battery" — which isn't what you want to hear. This add-on now has an option to make your own machine answer instead, or both machines one after the other.

Turn it on in the Remote Speech Control settings panel. Two new options:

  • "Announce local machine battery status when querying battery from a remote session" (off by default).
  • "Battery announcement order" — three choices: local then remote, remote then local, local only.

The wording is exactly what NVDA would normally say, just prefixed with "Local" or "Remote" so you can tell them apart. If the remote doesn't reply within two seconds (e.g. it's running an older version of the add-on or the network is being slow), the local answer is given anyway so you're never left without an announcement.

Fix: multiple "mute speech on the remote?" confirmation dialogs can no longer stack on top of each other. If you reconnected to a remote a few times in quick succession before answering the first dialog, you used to get one dialog per reconnect piling up. Now only one is ever shown at a time; subsequent reconnects are quietly ignored until you've answered the open one. (Thanks Jonathan for reporting this on GitHub.) Fixed.

v1.1.0

Choose a tag to compare

@Ednunp Ednunp released this 21 Jun 21:55

New: announce your own machine's battery status when querying battery from a remote. If you're on a laptop controlling a desktop and you press NVDA+Shift+B (NVDA's "report battery status" hotkey), the desktop normally answers "No system battery" — which isn't what you want to hear. This add-on now has an option to make your own machine answer instead, or both machines one after the other.

Turn it on in the Remote Speech Control settings panel. Two new options:

  • "Announce local machine battery status when querying battery from a remote session" (off by default).
  • "Battery announcement order" — three choices: local then remote, remote then local, local only.

The wording is exactly what NVDA would normally say, just prefixed with "Local" or "Remote" so you can tell them apart. If the remote doesn't reply within two seconds (e.g. it's running an older version of the add-on or the network is being slow), the local answer is given anyway so you're never left without an announcement.

v1.0.0

Choose a tag to compare

@Ednunp Ednunp released this 31 May 21:52

One fix, building on the reload work from 0.8.0.

Reloading the add-on no longer un-mutes the controlled machine, and the mute hotkey still works afterwards. In 0.8.0, reloading plugins while a remote session was active released the audio mute as part of the teardown, and the controller's mute hotkey then had no effect (the controlled side silently rejected the request). Now the mute is preserved across the reload and the hotkey continues to work normally. (Thanks Andre for reporting this on GitHub.) Fixed.

v0.8.0

Choose a tag to compare

@Ednunp Ednunp released this 26 May 10:55

Two fixes.

The synth settings ring is quicker to skip through when remote-controlling. When you're typing into a remote machine and you press the synth settings ring keys to change voice, rate, pitch or volume, the announcement of the new setting now plays straight away. Before, it could be held up briefly while your local NVDA finished saying something the remote machine had passed across, which made the ring feel about twice as slow as usual.

Reloading the add-on no longer breaks an in-progress remote-control session. If you reloaded NVDA plugins on a machine that was being remote-controlled (or installed an update to this add-on mid-session), the person controlling it would stop being able to type into it until both ends disconnected and reconnected. (Thanks Andre for reporting this on GitHub.) Fixed.

v0.7.9 - edit-field speech fix, peer-leave hook, plain-English manual

Choose a tag to compare

@Ednunp Ednunp released this 24 May 15:29

What's new

This release fixes a real bug that suppressed edit-field caret reading and say-all on the controlled side after a remote session, plus a couple of paper cuts.

Edit-field speech no longer goes silent after a remote session

Earlier versions wrongly trusted the Windows "this keystroke was injected" flag — but Windows, NVDA, and various text-input layers turn out to echo every physical keystroke with that flag set ~30–200 ms later. With mute armed, those phantom echoes caused the controlled machine's audio session to toggle on and off per keystroke, chopping edit-field reads and say-all to silence. The fix in this release stops trusting that flag and instead reads the "remote is driving" signal from NVDA Remote's own key-injection function, which only fires for real remote keystrokes.

Mute clears properly when the controller leaves the session

If the controller closed their NVDA Remote session window without dropping the network connection, the controlled side would stay stuck muted with no way to clear it from the keyboard. This release watches for the peer-leave event directly and clears the mute state when it fires.

Toggle-mute hotkey is now silent on press

NVDA+control+shift+m no longer announces "Sending mute request to remote machine" when you press it. The round-trip is fast enough that the intermediate message was just stepping on the actual result. You still hear "Remote machine speech muted" / "Remote machine speech unmuted" / "Remote machine declined the mute request" a moment later.

Manual rewritten in plain English

The Help text has been rewritten to drop developer jargon. The Security section in particular is now structured around what a regular user actually wants to know — who can mute their machine, and what stops other people doing it — rather than as a list of cryptographic primitives.

Install

  1. Download remoteSpeechControl-0.7.9.nvda-addon from the assets below.
  2. NVDA menu → Tools → Add-on Store → Install from external file.
  3. Restart NVDA when prompted.

Install on both the controlling and controlled machines.

v0.7.6 - drop the in-addon self-updater

Choose a tag to compare

@Ednunp Ednunp released this 14 May 21:53

What's new

The in-addon self-updater has been removed. It existed for a window where the addon wasn't yet in NVDA's Add-on Store, so users had to grab it from GitHub directly and the self-updater was the only way to deliver subsequent versions automatically. Now that the addon is going through the Store, that path is redundant — the Store has its own update mechanism, and we don't need to duplicate it.

What this means in practice:

  • The "Check for updates daily" and "Check for updates now" controls are gone from the settings panel.
  • The addon no longer contacts api.github.com from inside NVDA.
  • Updates will be delivered via NVDA → Tools → Add-on Store once new versions are reviewed and merged.

Nothing else has changed: the mute, the hotkey, the ping-pong attribution and the consent flow all behave as in 0.7.5.

Install

  1. Download remoteSpeechControl-0.7.6.nvda-addon from the assets below.
  2. NVDA menu → Tools → Add-on Store → Install from external file.
  3. Restart NVDA when prompted.

Install on both the controlling and controlled machines.

v0.7.5 - default hotkey changed to NVDA+control+shift+m

Choose a tag to compare

@Ednunp Ednunp released this 14 May 13:45

What's new

Default toggle-mute hotkey moved from NVDA+shift+m to NVDA+control+shift+m. The old default shadowed a built-in NVDA gesture (report mouse position); the new one doesn't clash with any standard NVDA binding.

If you'd rebound the hotkey manually under Input Gestures, your custom binding is preserved.

Everything else from 0.7.4 is unchanged.

Install

  1. Download remoteSpeechControl-0.7.5.nvda-addon from the assets below.
  2. NVDA menu → Tools → Add-on Store → Install from external file.
  3. Restart NVDA when prompted.

Install on both the controlling and controlled machines.

v0.7.4 - toggle-mute hotkey, OS-level audio mute, cleanup

Choose a tag to compare

@Ednunp Ednunp released this 14 May 10:45

What's new

  • Mute is now applied at the Windows audio-session level via ISimpleAudioVolume.SetMute rather than by substituting silence into NVDA's WavePlayer buffer. The synth runs end-to-end unchanged, every synth-index event fires on its real timing, and sayAll / pause-on-Shift / stop-on-Ctrl behave identically to addon-not-installed. Fixes the long-standing race in speech.sayAll.collapseLineImpl on NVDA 2026.1 / Python 3.13 / WASAPI.
  • Hotkey is now NVDA+shift+m, on the controlling side only. Press it while you are F11'd into the remote to mute or unmute the controlled machine's speech. No confirmation dialog on your side — the keystroke is the confirmation. The controlled side's consent flow still applies to mute requests when the "Allow auto-mute" setting is unticked.
  • Per-key ping-pong is back via WH_KEYBOARD_LL reading LLKHF_INJECTED. Any physical key on the controlled keyboard restores audible speech immediately; the next remote keystroke silences it again.
  • Verbose-logging setting now actually controls output (info-level on/off; warnings and errors always emit).

Install

  1. Download remoteSpeechControl-0.7.4.nvda-addon from the assets below.
  2. NVDA menu → Tools → Add-on Store → Install from external file.
  3. Restart NVDA when prompted.

Install on both the controlling and controlled machines.