Skip to content

Beta to master#20232

Merged
seanbudd merged 6 commits into
masterfrom
beta
May 28, 2026
Merged

Beta to master#20232
seanbudd merged 6 commits into
masterfrom
beta

Conversation

@seanbudd

Copy link
Copy Markdown
Member

No description provided.

github-actions Bot and others added 6 commits May 25, 2026 17:44
This pull request updates translations to languages being tracked from
Crowdin.

Co-authored-by: GitHub Actions <github-actions@github.com>
…ssed (#20220)

Summary of the issue:

When nvdaController_speakSsml is called with asynchronous=False, a race condition can cause the call to block indefinitely. onSpeechCanceled was registered inside prefixCallback, a CallbackCommand that runs on the synth thread only after the sequence starts. If speechCanceled fires in the window between queueHandler.queueFunction returning and the synth reaching that CallbackCommand, the signal is missed and markQueue.get() never unblocks.
Description of user facing changes:

No change under normal operation. Fixes a hang that could occur when speech is cancelled immediately after being queued via the controller client.
Description of developer facing changes:

speech.speechCanceled.register(onSpeechCanceled) is now called directly before queueHandler.queueFunction, ensuring the handler exists before any cancel signal can fire. onDoneSpeaking stays in prefixCallback because synthDoneSpeaking fires per sequence — registering it earlier would catch a previous sequence still finishing when priority is Next.
Description of development approach:

Minimal repositioning of one register call. No logic changes.
Testing strategy:

Call nvdaController_speakSsml with asynchronous=False and cancel speech immediately after queuing, repeatedly. Before this fix the call would occasionally hang; after it should always return promptly with ERROR_CANCELLED.
#20225)

<!-- Please read and fill in the following template, for an explanation
of the sections see:

https://github.com/nvaccess/nvda/blob/master/projectDocs/dev/githubPullRequestTemplateExplanationAndExamples.md
Please also note that the NVDA project has a Citizen and Contributor
Code of Conduct which can be found at
https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md. NV
Access expects that all contributors and other community members read
and abide by the rules set out in this document while participating or
contributing to this project. This includes creating or commenting on
issues and pull requests.

Please initially open PRs as a draft.
When you would like a review, mark the PR as "ready for review".
See
https://github.com/nvaccess/nvda/blob/master/.github/CONTRIBUTING.md.
-->

### Link to issue number:
<!-- Use Closes/Fixes/Resolves #xxx to link this PR to the issue it is
responding to. -->
None
### Summary of the issue:
The heading level of some magnifier options in the user guide is
incorrect.
### Description of user facing changes:
Fix the heading level error for the magnifier option in the user guide
### Description of developer facing changes:
Fix the heading level error for the magnifier option in the user guide
### Description of development approach:
Document changes
### Testing strategy:
Check the built documentation
### Known issues with pull request:
None
### Code Review Checklist:

<!--
This checklist is a reminder of things commonly forgotten in a new PR.
Authors, please do a self-review of this pull-request.
Check items to confirm you have thought about the relevance of the item.
Where items are missing (eg unit / system tests), please explain in the
PR.
To check an item `- [ ]` becomes `- [x]`, note spacing.
You can also check the checkboxes after the PR is created.
A detailed explanation of this checklist is available here:

https://github.com/nvaccess/nvda/blob/master/projectDocs/dev/githubPullRequestTemplateExplanationAndExamples.md#code-review-checklist
-->

- [x] Documentation:
  - Change log entry
  - User Documentation
  - Developer / Technical Documentation
  - Context sensitive help for GUI changes
- [x] Testing:
  - Unit tests
  - System (end to end) tests
  - Manual testing
- [x] UX of all users considered:
  - Speech
  - Braille
  - Low Vision
  - Different web browsers
  - Localization in other languages / culture than English
- [x] API is compatible with existing add-ons.
- [x] Security precautions taken.
Fixes #19493
Fixes #20110
Fixes #20149
Summary of the issue:

Magnifier zoom, filter and full screen mode were not persisted when set via keyboard gestures
Description of user facing changes:

Persist Magnifier zoom, filter and full screen mode in settings
Description of developer facing changes:

none
Description of development approach:

Settings Synchronization and Immediate Application:

    Added _applyCurrentSettingsToConfigAndRuntime method to MagnifierPanel, which applies the current UI control values to both the configuration and the active magnifier instance, ensuring settings changes are reflected immediately. Immediate updates are now handled for zoom, pan step, filter, fullscreen mode, "true centered", follow focus, and "keep mouse centered" settings.
    The onSave and onDiscard methods now use the new synchronization logic, improving reliability when saving or discarding changes. Initial values are stored and restored as needed.

Magnifier Runtime Updates:

    When toggling filter, fullscreen mode, or zoom, the corresponding runtime setter (setFilter, setFullscreenMode, setZoomLevel) is now called to ensure the running magnifier instance is updated immediately.

Codebase Cleanup and Modernization:

    Removed unused getDefaultFullscreenMode and setDefaultFullscreenMode functions from the config module, a

Testing Improvements:

    The magnifier test setup now explicitly sets default values for zoomLevel and _filterType, improving test reliability and clarity.
Copilot AI review requested due to automatic review settings May 28, 2026 02:58
@seanbudd seanbudd requested review from a team as code owners May 28, 2026 02:58
@seanbudd seanbudd merged commit abc3e07 into master May 28, 2026
13 of 16 checks passed
@github-actions github-actions Bot added this to the 2026.3 milestone May 28, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This is a periodic "Beta to master" merge that brings beta branch changes into master. The PR aggregates a wide range of changes spanning Python toolchain updates, Magnifier settings UX improvements, an SSML speech race-condition fix, translation updates, and documentation tweaks.

Changes:

  • Magnifier settings panel now applies changes immediately and restores them on Cancel; runtime commands (zoom/filter/full-screen mode) now persist to config; new roundZoomLevel helper added.
  • Fixed a race in nvdaController_speakSsml (synchronous) by registering speechCanceled before queueing speech instead of inside the prefix CallbackCommand.
  • Bumped Python to 3.13.13 across version files and CI workflows; aligned English User Guide Magnifier follow-option heading levels; updated Russian, Finnish, Somali, and Urdu locale files.

Reviewed changes

Copilot reviewed 15 out of 105 changed files in this pull request and generated no comments.

Show a summary per file
File Description
source/_magnifier/config.py Add roundZoomLevel; remove unused getDefaultFullscreenMode/setDefaultFullscreenMode.
source/_magnifier/magnifier.py Persist zoom to config in _zoom; reorganize imports.
source/_magnifier/commands.py Persist filter and full-screen mode changes via setFilter/setFullscreenMode.
source/gui/settingsDialogs.py MagnifierPanel applies settings immediately and restores them on discard.
source/NVDAHelper/init.py Register speechCanceled before queueing speech for synchronous SSML calls.
tests/unit/test_magnifier/test_magnifier.py Explicit default zoom/filter setup in tests.
user_docs/en/userGuide.md Promote follow-option Magnifier headings from #### to #####.
user_docs/en/changes.md Add Python 3.13.13 and SSML race-condition fix entries.
user_docs/ru/userGuide.xliff Replace “Сервис” with “Инструменты” and refresh related wording.
user_docs/fi/userGuide.xliff Replace “virheenkorjaus” with “vianetsintä” and other wording polish.
source/locale/so/LC_MESSAGES/nvda.po Update POT timestamps, source line references, and secretsdebug (unredacted) msgid.
.python-versions, runtime-builders/synthDriverHost32/.python-version Bump Python to 3.13.13.
.github/workflows/testAndPublish.yml, fetch-crowdin-translations.yml Bump Python to 3.13.13 in CI.
projectDocs/dev/createDevEnvironment.md Document Python 3.13.13.

OzancanKaratas pushed a commit to OzancanKaratas/nvda that referenced this pull request May 28, 2026
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Actions <github-actions@github.com>
Co-authored-by: Leonard de Ruijter <3049216+LeonarddeR@users.noreply.github.com>
Co-authored-by: GitHub Actions <actions@github.com>
Co-authored-by: WMHN <1872265132@qq.com>
Co-authored-by: xingkong <26911141+dpy013@users.noreply.github.com>
OzancanKaratas pushed a commit to OzancanKaratas/nvda that referenced this pull request May 28, 2026
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Actions <github-actions@github.com>
Co-authored-by: Leonard de Ruijter <3049216+LeonarddeR@users.noreply.github.com>
Co-authored-by: GitHub Actions <actions@github.com>
Co-authored-by: WMHN <1872265132@qq.com>
Co-authored-by: xingkong <26911141+dpy013@users.noreply.github.com>
OzancanKaratas pushed a commit to OzancanKaratas/nvda that referenced this pull request May 28, 2026
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Actions <github-actions@github.com>
Co-authored-by: Leonard de Ruijter <3049216+LeonarddeR@users.noreply.github.com>
Co-authored-by: GitHub Actions <actions@github.com>
Co-authored-by: WMHN <1872265132@qq.com>
Co-authored-by: xingkong <26911141+dpy013@users.noreply.github.com>
OzancanKaratas pushed a commit to OzancanKaratas/nvda that referenced this pull request May 28, 2026
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Actions <github-actions@github.com>
Co-authored-by: Leonard de Ruijter <3049216+LeonarddeR@users.noreply.github.com>
Co-authored-by: GitHub Actions <actions@github.com>
Co-authored-by: WMHN <1872265132@qq.com>
Co-authored-by: xingkong <26911141+dpy013@users.noreply.github.com>
# Conflicts:
#	user_docs/en/changes.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants