Conversation
…ssful recognition (#19150) Resolves #19144 ### Summary of the issue: After performing an OCR, users must manually initiate a "say all" command to hear the full recognition result. For users who frequently perform OCR on large blocks of text, this requires an extra step each time, slowing down their workflow. ### Description of user facing changes: - Adds a new checkbox, "Automatically say all on result", to the Windows OCR settings panel (under Preferences -> Windows OCR). - When enabled, NVDA will automatically start reading the full text of a successful OCR result. - This feature is disabled by default. ### Description of developer facing changes: - Adds a new configuration key `autoSayAllOnResult` (boolean, default `False`) under the `[uwpOcr]` section in `configSpec.py`. ### Description of development approach: To ensure "say all" is triggered only after the recognition result document has focus, a flag (`_shouldSayAllOnFirstFocus`) is set when the result is first received in `_onFirstResult`. The actual `sayAll` command (`sayAll.SayAllHandler.readText(sayAll.CURSOR.CARET)`) is then called from the `event_gainFocus` handler of the `RefreshableRecogResultNVDAObject`. ### Testing strategy: Manually tested by: 1. Enabling the "Automatically say all on result" option in the Windows OCR settings. 2. Performing OCR on a navigator object (`NVDA+r`). Verified that "say all" begins automatically. 3. Disabling the option and performing OCR again. Verified that "say all" does not start, and only the document title is announced. 4. Confirmed the setting persists after restarting NVDA. ### Known issues with pull request: The options in Windows OCR do not appear to follow profile switching, which seems to be a general issue and not specific to this change.
Fixes #18709 Follow-up of #11311 Summary of the issue: In Excel (legacy), when entering a cell with a note, Excel reports "Has comment". This is confusing since there are new threaded comment types in newer Excel versions. It was listed as a known issue of #11311. It's worth noting that with Excel UIA, NVDA already reports "Has note" in this case. Description of user facing changes: When moving the focus on a cell with a note, Excel now reports "Has note". It is consistent with NVDA's interface and User Guide which mention note everywhere else. Description of developer facing changes: N/A Description of development approach: Use the new HASNOTE state introduced since then instead of the HASCOMMENT state, as done for UIA.
Link to issue number: Fixes #18876 Summary of the issue: NVDA reports as not supported dialects not available in synthesizer languages, even when a fallback language can be switched to. Description of user facing changes: When a dialect is not available for the current synthesizer, but NVDA can switch to a fallback language, that dialect won't be reported as not supported. Description of developer facing changes: None Description of development approach: In the languageIsSupportedfunction of the SynthDriver class, if a language is not supported, search for the availability of a fallback language, defined as mainLanguage-mainLanguage, for example, fr-fr.
Fixes #19157 Summary of the issue: Unable to toggle AI Image Captioner while Screen Curtain is enabled Description of user facing changes: Able to toggle imageDesc while screen curtain is enabled
### Summary of the issue: Updates miscDeps to the latest commit ### Description of user facing changes: None ### Description of developer facing changes: Readme has been updated. ### Description of development approach: `cd miscDeps && git checkout master && git pull && cd .. && git add miscDeps && git commit` ### Testing strategy: None neded ### Known issues with pull request: None
### Summary of the issue: The Quick Start Guide (QSG) contains the following issues: * It mentions unassigned commands; unassigned commands should not be mentioned in the Quick Start Guide since: * if they are unassigned, they are probably not so common to deserve to be in the QSG * the QSG does not indicate how to assign a gesture to a command, which makes mentioning unassigned commands useless in this guide. * There is a paragraph on the synth settings ring commands in the QSG, but the user would not even know what it is. * Other unassigned commands are mentioned in the synth settings ring paragraph of the QSG. ### Description of user facing changes: * Removed unassigned "Report language" from the QSG. * Added an initial description of the synth setting ring at the top of its dedicated paragraph in the QSG. * Removed the mention of unassigned commands to jumpt to the first/last value in the synth ring commands since they are not assigned, for same reason as above. ### Description of developer facing changes: N/A ### Description of development approach: N/A ### Testing strategy: Check the generated User Guide. ### Known issues with pull request: None
Fixup of #19003 ### Summary of the issue: The license wasn't updated to GPL 2 or later in the user guide
Summary of the issue:
The userGuide.md contained multiple typos, grammar errors, and inconsistencies that needed correction to improve documentation quality.
Description of user facing changes:
Improved clarity and correctness of the NVDA User Guide through fixing:
5 spelling errors (itallic→italic, meanning→meaning, bloks→blocks, sortered→sorted, THE→The)
3 grammar errors (by assign→by assigning, wil→will, tree→three)
5 inconsistencies in terminology and capitalization (NvDA→NVDA)
1 duplicate key mapping in Eurobraille keyboard commands
Total: 19 documentation improvements. No functional changes.
Merge beta to master
…ash three times in two minute. (#19175) Closes #19133 Summary of the issue: If NVDA crashes somehow on startup, the watchdog restarts NVDA. This issue limits how many times the watchdog will atttempt to recover from crashes by preventing the crash handler from booting if the application has been in a boot loop of 3 or more crashes in one minute. Description of user facing changes: When NVDA gets itself into a crash loop, which is very rare, it can crash many times very rapidly. So rapidly that a user's keyboard is effectively locked from use. This issue prevents NVDA from crashing on repeat. Since NVDA often boots at startup, failure to gracefully bail can lock the users computer up every time the user logs in. Description of developer facing changes: The watchdog prevents crash handling code from booting on the fourth crash, by simply recording the timestamp of the last 3 crashes in a text file along side the crash dmp file, and then using the timestamps in a rolling window to decide if NVDA should start the crash handler, or gracefully allow shutdown.
…19210) ### Summary of the issue: The User Guide section 13.1 (Remote Access, Getting started) notes the limitation for starting a new session in secure mode. This was not noted in the secure mode section and may be missed by people looking for information there. ### Description of user facing changes: Added a line to the list of bullet points in 18.1 "Secure mode disables" to note manually initiating a new remote access session.
Fix-up of #11311 ### Summary of the issue: In #11311, it was taken into account that older Excel comments were known as "notes" in newer interfaces, so NVDA's GUI and documentation has been updatedt to be consistent with newer versions. The "Comments" checkbox in the Document formatting settings panel has been updated to "Notes and comments" as part of this work. However, this checkbox does not control Excel's comments/notes reporting; it only controls whether comments in text, e.g. in Word, are reported. ### Description of user facing changes: This checkbox has been renamed back to "Comments" ### Description of developer facing changes: N/A ### Description of development approach: N/A ### Testing strategy: Manual check ### Known issues with pull request: One could argue that this checkbox should instead remain "Notes and comments" and should control Excel's Notes or comments. That's not my approach. And allowing to control "has notes" cell's property while "has formula" cannot be controlled would not be consistent.
<!-- 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: Part of #18762 Split from #18419 ### Summary of the issue: We should explain our system tests to test against more applications. Starting with open source applications that are easily available within GitHub actions runners, ### Description of user facing changes: None ### Description of developer facing changes: None ### Description of development approach: Perform manual tests and implement equivalent system tests where possible ### Testing strategy: See changes ### Known issues with pull request: ### 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. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Sascha Cowley <16543535+SaschaCowley@users.noreply.github.com>
Starts #18502 ### Summary of the issue: Our system test bottle neck is chrome tests. There are too many chrome tests. They take up 20 min off time which could be parallelized down to 3-5min chunks ### Description of user facing changes: None ### Description of developer facing changes: Reduced PR times, better grouping logic when adding to chromeTests.robot. Symbols tests are now the longest tests (6min). That means 14min from builds is shaved off from this PR. Builds have gone from 40-45min to 30min on average. ### Description of development approach: Added tags to group chrome tests into sub groups. This is to establish grounds for a potential refactor in the future. Added timeout constraints to the 3 bottlenecks of the build: building NVDA source, building the launcher and system tests. This is so we can monitor and constrain build time lengths. With these constraints, we guarantee a 40min or faster build. ### Testing strategy: GitHub actions runners ### Known issues with pull request: This doesn't refactor the test files fully, just begins the proposal for logical groupings. Further work is suggested to refactor chromeTests.py/chromeTests.robot
### Summary of the issue: There is no highlighter on the recognition result. ### Description of user facing changes: There is a highlighter on the recognition result. ### Description of developer facing changes: Added `api.fakeNVDAObjectClasses` set and `api.isFakeNVDAObject` function to identify fake NVDAObject instances. ### Description of development approach: Do not use the display model to obtain the caret rectangle of fake NVDAObjects. ### Testing strategy: Manual testing: After pressing `NVDA+r` to recognize content, move the cursor and observe whether the yellow rectangle follows. ### Known issues with pull request: By default, the highlight rectangle currently covers words rather than individual characters. --------- Co-authored-by: Cyrille Bougot <cyrille.bougot2@laposte.net>
Summary of the issue: Update astral-sh/setup-uv from v6 to v7 to conveniently use the latest security fixes. Below is the release page for v7.1.3. Description of user facing changes: Routine update of CI/CD with no impact on users. Description of developer facing changes: Batch replaced uses: astral-sh/setup-uv@v6 with v7 in .github/workflows/testAndPublish.yml. Description of development approach: Batch replaced uses: astral-sh/setup-uv@v6 with v7 in .github/workflows/testAndPublish.yml to use the latest stable version.
<!-- 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: Closes #17667. <!-- Use Closes/Fixes/Resolves #xxx to link this PR to the issue it is responding to. --> ### Summary of the issue: The MathCAT add-on is not currently included in the core of NVDA. Integrating MathCAT into NVDA will give users access to mathematical content out of the box. ### Description of user facing changes: The core functionality of the add-on will remain the same, but MathCAT will be included without needing to install it as an add-on (replacing mathPlayer). An additional panel will be added in the NVDA preferences dialog containing the configuration that is currently handled in MathCAT's add-on configuration dialog. Additionally, the user docs will be updated to reflect the replacement of mathPlayer with MathCAT. ### Description of developer facing changes: The code from the MathCAT add-on has been refactored and cleaned up to conform to NVDA's coding standards, and that code is included in the `mathPres/MathCAT` directory with this PR. Dependencies have been added as a Git submodule in `include/nvda-mathcat`. Before this PR is ready for review, changes will also be made to the way MathCAT is initialized (currently, it is only set up to be loaded as an add-on), and YAML configuration will be replaced with configobj. ### Description of development approach: Developments will proceed in the following steps: - Update the initialization of MathCAT so that it is loading and running correctly in its current form. - Include MathCAT configuration into the NVDA preferences dialog. - Replace YAML configuration with configobj. - Add unit and system tests. ### Testing strategy: The add-on code after refactoring has been tested only by loading it into NVDA and testing it functionally. Discussion of more unit and system tests is ongoing. ### Known issues with pull request: - Previously, `libmathcat_py.pyd` was included in that MathCAT directory. Now, it is located in `include/assets`, so it is not being imported correctly. This can be fixed by updating `pyproject.toml` with the new path. ### 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 - [ ] 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. <!-- Please keep the following --> @coderabbitai summary --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Sean Budd <seanbudd123@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Sean Budd <sean@nvaccess.org> Co-authored-by: WangFeng Huang <1398969445@qq.com> Co-authored-by: Quentin Christensen <quentin@nvaccess.org> Co-authored-by: Sascha Cowley <16543535+SaschaCowley@users.noreply.github.com>
Follow up to #19209 Summary of the issue: We added a 10min time limit to cap and measure builds. This was just too low, as a recent build narrowly timed out. A similar cap for the create launcher step also is timing out: https://github.com/nvaccess/nvda/actions/runs/19415041964 Description of user facing changes: none Description of developer facing changes: builds shouldnt timeout unexpectedly Description of development approach: increase build timeout to 15min and launcher timeout to 30min
It seems like GitHub changed the URL for CodeQL security analysis
Fixes #19152 Fixup for #18348, Supersedes #19203, #19171 Summary of the issue: In LibreOffice, it is not possible to use braille panning since #18348. Description of user facing changes: Panning works again in LibreOffice Description of developer facing changes: removed OffsetsTextInfo.allowMoveToOffsetPastEnd. Description of development approach: Rather than having one allowMoveToOffsetPastEnd class attribute, introduce a allowMoveToUnitOffsetPastEnd method that takes a unit.
…tup-python@v6 (#19229) Follow up #19219 #19224 Summary of the issue: Updated actions/setup-python@v5 to actions/setup-python@v6 Description of user facing changes: none ci-cd Update Description of developer facing changes: Updated the version of actions/setup-python in testAndPublish.yml to 6.x Description of development approach: Updated the version of actions/setup-python in testAndPublish.yml to 6.x
Summary of the issue: SCons was updated recently. This is a necessary step to build NVDA with Visual Studio 2026, which is fully supported. Description of user facing changes: None Description of developer facing changes: Support for building with VS2026 is now there, however note that VS2022 is still the standard. Description of development approach: Updated SCons
Summary of the issue: Updated actions/upload-artifact from v4 to v5. Updated actions/download-artifact from 4 to 6 Description of user facing changes: none Description of developer facing changes: Updated the stable versions of actions/download-artifact and actions/upload-artifact in the testAndPublish.yml file. Description of development approach: Description of development approach: Updated the stable versions of actions/download-artifact and actions/upload-artifact in the testAndPublish.yml file.
…19213) Link to issue number: Fixes #19214 Summary of the issue: When gestures include numpad operators (numpad plus, numpad minus, numpad multiply and numpad divide) and are defined with numlock on, they do not appear correctly in input gesture dialog, e.g. "num lock" instead of "num lock+numpad plus") Description of user facing changes: Gestures including numpad operators with num lock on are now correctly displayed in the input gesture dialog. Description of developer facing changes: N/A Description of development approach: In kayboard gestures identifiers, numlock can be considered a modifier or a main key name, depending on the situation: considered a modifier when combined with numpad operators, i.e. when numlock is on (but not currently physically pressed) and a numpad operator is presseed considered a main key name in all other other cases, i.e. when physically pressed (alone or with other modifiers such as control or shift) In KeyboardInputGesture.getDisplayTextForIdentifier sort key name with normal modifiers, then numlock and then main key name.
…ut defined speech styles (#19231) <!-- 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: Split from #19227. ### Summary of the issue: On languages without defined speech styles, such as `nl`, the mathematics settings panel does not load. ### Description of how this pull request fixes the issue: Relocate ZIP file path calculation logic. ### Testing strategy: Verified that the mathematics settings panel opens when the nVDA language and voice are set to Dutch. ### Known issues with pull request: None known ### 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 --> - [n/a] Documentation: (out-of-scope, see #19227) - 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.
<!-- 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: Split from #19227. ### Summary of the issue: MathCAT is loaded from `sys.prefix`, which does not reliably point to the MathCAT directory on source copies. ### Description of how this pull request fixes the issue: The MathCAT path is calculated relative to `globalVars.appDir`. ### Testing strategy: Verified that MathCAT is usable on source copies. ### Known issues with pull request: None known ### 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 --> - [n/a] Documentation: (out-of-scope, see #19227) - 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.
### Link to issue number: None ### Summary of the issue: Edited the MathCAT section of the user guide, both the overview and settings sections for clarity and organization. ### Description of user facing changes: User guide content edits. ### Description of developer facing changes: The following edits were made: * Typical use is now a level 4 heading * ETS acronym expanded (Educational Testing Service) ### Description of development approach: Edited and proofread to make sure content is clearer. ### Testing strategy: None (manual proofreading is recommended) ### 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. --------- Co-authored-by: Sean Budd <seanbudd123@gmail.com>
…hen running in secure mode (#19238) Fixes #19216 Follow-up #19175 ### Summary of the issue: NVDA was failing to start on secure screens, unless the serviceDebug global parameter was set. ### Description of user facing changes: NVDA works on secure desktops again. ### Description of developer facing changes: None ### Description of development approach: The issue was caused by `utils._crashHandler.CrashStats.crashStatsPath` assuming that `globalVars.appArgs.logFileName` would always represent a path. Notwithstanding this, it also wrote to disk, even when `NVDAState.shouldWriteToDisk` returned `False` (i.e. in scure mode or running from the launcher). 1. Added several defensive measures to the new `utils._crashHandler` module. 2. Changed `watchdog.initialize` to no longer add `utils._crashHandler.crashHandler` as an unhandled exception filter when running in secure mode. ### Testing strategy: Ran from source, and executed the following in the python console to ensure automatic restarts on crash still work as expected: ```py import ctypes;ctypes.windll.kernel32.DebugBreak() ``` Modified NVDA to allow the scratchpad in secure mode, built a self-signed launcher, and installed it. Hit `alt+control+delete`, and observed that NVDA worked as expected. Added the following global plugin to the scratchpad of the user and system config: ```py from globalPluginHandler import GlobalPlugin import ctypes from tones import beep from core import postNvdaStartup class GlobalPlugin(GlobalPlugin): def __init__(self): super().__init__() postNvdaStartup.register(self.crash) def crash(self): beep(500,100) ctypes.windll.kernel32.DebugBreak() ``` Restarted NVDA, and observed that it started, a tone was heard, and it crashed, and this only happened 4 times. Hit `alt+control+delete`, and observed that NVDA started, a tone was heard, NVDA crashed, and did not restart. ### Known issues with pull request: When NVDA crashes on the secure desktop, no feedback is given to the user. However, this is not new.
Fixes #10476 Partially addresses #16272 ### Summary of the issue: Currently, the Screen Curtain is configuration profile dependent. This can lead to situations in which it is unexpectedly deactivated by a config profile change. ### Description of user facing changes: 1. The Screen Curtain is no-longer config profile dependent. 2. Screen Curtain settings have been moved to anew "Privacy and Security" settings category. ### Description of developer facing changes: The `visionEnhancementProviders.screenCurtain` module has bee removed. ### Description of development approach: * Added a new `screenCurtain` subpackage, and migrated the existing `visionEnhancementProviders.screenCurtain` implementation. * The global object pattern was used, as it is a common pattern throughout the rest of NVDA's code. * The core Screen Curtain code is in `screenCurtain._screenCurtain`. The public API is accessible from `screenCurtan`, including the global `screenCurtain.screenCurtain` object. * Updated `core.main` and `core.resetConfiguration` to initializeand terminate screen curtain. * Updated the screen curtain toggle script to use the new implementation. * Updated the OCR script and screen curtain block action. * Re-implemented the screen curtain settings as regular settings in a new "Privacy and Security" panl in `gui.settingsDialogs`. * I decided to call this category "Privacy and Security" rather than "Security and Privacy" (as suggested in #16272), as we already have a "Speech" category, but no categories beginnin wit 'P'. * Also added an unassigned command to jump directly to the privacy and security settings. * Completely removed the `visionEnhancementProviders.screenCurtain` module, and updated the change log to reflect that previously deprecated symbols that had redirects in this module have been removed. * Bumped the config schema version, and added a profile upgrade step that moves the settings out of `vision` and into the root section. As the config keys are otherwise identical, this is all that is necessary. * Updated changed strings to use `pgettext` (category "screenCurtain") ### Testing strategy: Running from source: * Enabled tempory screen curtain with the gesture, with and without the warning enabled. Disabled. * Enabled screen curtain with the gesture, with and without the dialog enabled. Disabled. * Checked and uncheckd the screen curtain option in Privacy and Security settings, with and without the warning enabled. Also checked that unchecking the option to show a warning was reflected in the settings dialog when the warning dialog was shown from NVDA settings. * Enabled and disabled Screen Curtain with sounds turned on and off. * Created a configuration profile. Enabled screen curtain. Saved settings. Activated the profile. Deactivated screen curtain. Saved settings. Switched back to normal config. * Reset to saved configuration after enabling and disabling screen curtain, and reset configuration to factory defaults. * Ran from source on master, and changed screen curtain settings. Ran from source on this branch and ensured the old settings were reflected. Saved the config to disk and ensured that the settings were correctly persisted to `nvda.ini`. ### Known issues with pull request: None
Closes #19165 ### Summary of the issue: MathPlayer is no longer maintained and is not 64-bit compatible. ### Description of user facing changes: MathPlayer is no longer supported by NVDA. ### Description of developer facing changes: MathPlayer code has been removed. ### Description of development approach: * Deleted the `mathPres.mathPlayer` module * Removed `mathPlayer_sconscript` and its callers from the build system * Fixed a few comments and strings that mentioned MathPlayer * Removed MathPlayer from miscDeps nvaccess/nvda-misc-deps#48 ### Testing strategy: Rebuilt NVDA and ensured that it still works and MathCAT continues to function. ### Known issues with pull request: None
Fixes #19242 Summary of the issue: NVDA was reporting multieselectable for every table cell in Libre Office Calc. Description of user facing changes: No longer redundant multiselectable reporting Since the table in Libre Office has the multieselectable state, reword the option in settings to talk about object, not specifically lists.
<!--pre-commit.ci start--> updates: - [github.com/pre-commit/pre-commit-hooks: v5.0.0 → v6.0.0](pre-commit/pre-commit-hooks@v5.0.0...v6.0.0) - [github.com/asottile/add-trailing-comma: v3.2.0 → v4.0.0](asottile/add-trailing-comma@v3.2.0...v4.0.0) - [github.com/astral-sh/ruff-pre-commit: v0.12.7 → v0.14.5](astral-sh/ruff-pre-commit@v0.12.7...v0.14.5) - [github.com/RobertCraigie/pyright-python: v1.1.406 → v1.1.407](RobertCraigie/pyright-python@v1.1.406...v1.1.407) - [github.com/astral-sh/uv-pre-commit: 0.8.4 → 0.9.11](astral-sh/uv-pre-commit@0.8.4...0.9.11) <!--pre-commit.ci end--> --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Sean Budd <sean@nvaccess.org>
Description of user facing changes: Users will hear punctuation and symbols in the Luxembourgish language with the supported tts. Description of developer facing changes: Not applicable Description of development approach: Created the symbols file and character descriptions for lexembourgish
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR merges changes from master to beta, incorporating multiple significant features and improvements. The changes include replacing MathPlayer with MathCAT for math presentation, reorganizing Screen Curtain settings, and various bug fixes and enhancements.
Key changes:
- Integration of MathCAT as the default math presentation provider, removing MathPlayer support
- Screen Curtain settings moved from Vision category to new Privacy and Security category
- Addition of crash loop detection to prevent system lockups
- Various UI/UX improvements and bug fixes
Reviewed Changes
Copilot reviewed 67 out of 68 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| user_docs/en/userGuide.md | Updated documentation to reflect MathCAT integration and Screen Curtain reorganization |
| user_docs/en/changes.md | Added changelog entries for new features and deprecations |
| source/mathPres/MathCAT/* | New MathCAT implementation files for math presentation |
| source/screenCurtain/* | Refactored Screen Curtain into standalone module |
| source/gui/settingsDialogs.py | Added Math settings panel and Privacy & Security settings panel |
| source/config/configSpec.py | Updated config schema to version 20 with new math and screenCurtain sections |
| tests/system/robot/chromeTests.robot | Added test tags for better organization |
| tests/system/robot/vscodeTests.* | Expanded VS Code testing coverage |
Comments suppressed due to low confidence (6)
source/screenCurtain/init.py:1
- Corrected spelling of 'theScreen' to 'the Screen'.
source/gui/settingsDialogs.py:1 - Corrected inconsistent punctuation in contributor name - removed period after 'Proß'.
user_docs/en/userGuide.md:1 - Corrected spelling of 'Rescribe' to 'Describe'.
source/locale/lb/symbols.dic:1 - Corrected spelling of 'botton' to 'bottom'.
source/mathPres/MathCAT/preferences.py:1 - Corrected spelling of 'nether' to 'neither'.
source/mathPres/MathCAT/localization.py:1 - Corrected spelling of 'highliting' to 'highlighting'.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.