Conversation
Start the dev cycle for the 20XY.Z release. This will be a compatibility breaking release. Complete: - [x] New section in the change log. - [x] Update NVDA version in `master` - [x] Bump the add-on API compatibility in `master` - [x] Update [`nvdaAPIVersions.json` to include the next version](https://github.com/nvaccess/addon-datastore-transform) - Re-run the last "Transform NVDA addons to views" on [addon-datastore](https://github.com/nvaccess/addon-datastore/actions/workflows/transformDataToViews.yml) to regenerate projections (views) for the add-on datastore API. On merge: - [ ] [Update auto milestone ID](https://github.com/nvaccess/nvda/settings/variables/actions)
Raised in #15320 (comment) Summary of the issue: There's no easy way for an NVDA user to copy the version information from the about dialog Description of user facing changes: A button has been added to the about dialog to copy the version information. example `source-master-ed86524 (2025.3.0.0)` Description of developer facing changes: none Description of development approach: Added a button the message dialog Testing strategy: Tested by opening the about dialog and ensuring the version number is copied Known issues with pull request: none
Part of #18591 Summary of the issue: We want to update to Python 3.13 from 3.11 Description of user facing changes: brltty will break Description of developer facing changes: Update python to 3.13.6 remove typing_extensions Description of development approach: Updated all references of python 3.11 to 3.13 Updated usages of TypeAlias to type: https://docs.python.org/3.13/library/typing.html#type-aliases Updated usages of ParamSpec to parameter lists: https://docs.python.org/3.13/library/typing.html#typing.ParamSpec Remove deprecated SupportsLessThan: Add SupportsLessThan to typing and typing_extensions python/typing_extensions#9 (comment)
…Excel in the userGuide.md (#18715) Update "Comments" to "Notes" in the elements list mention in the Excel section of the user guide Link to issue number: Summary of the issue: The user guide covers accessing notes in Excel with the elements list, however calls them "comments" which is the old name (there is a different feature now called comments in Excel. What you can access in the elements list are notes, and this is reflected in the radio button for this section). Description of user facing changes: Change description of the elements list in Excel to talk about "notes" instead of "comments".
Follow up to #18680 Summary of the issue: We use a glob import in versionInfo which is not recommended Description of user facing changes: Description of developer facing changes: versionInfo no longer imports all variables from buildVersion Description of development approach: Update imports
Link to issue number: Closes #18365 Summary of the issue: NVDA does not report whether multiple selection is supported on a list control. Description of user facing changes: NVDA now reports multi select for a list that supports multiple selection. Description of developer facing changes: None Description of development approach: Add a new MULTISELECTABLE state, analogous to oleacc Map that state to the oleacc state for MSAA Map the UIA Selection Can Select Multiple property to the new state.
Co-authored-by: Sascha Cowley <16543535+SaschaCowley@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…18708) Requested in #18689 Related to #18650 Summary of the issue: System tests should be executed on every supported os Github Actions offers. Description of user facing changes: None Description of developer facing changes: None Description of development approach: Add extra variables to the matrix to specify additional runners to run system tests on
Part of #17878 Summary of the issue: PRs have been failing recently as we are well over our cache limit. GitHub actions doesn't allow us to easily delete the caches of PR builds from within PRs, due to it being a cache poisoning risk. Instead, we should clear caches manually on a regular basis. Description of user facing changes: None Description of developer facing changes: PRs more reliable Description of development approach: Use gh cli to fetch cache items filter with jq for cache items last accessed older than 6 hours ago delete filtered cache items
Fixup of #18751 Uses IDs rather than keys to more consistently delete caches
Fixes #18320. This is my second attempt to fix it without breaking #17430. For the reference, the first attempt was #18338, which is abandoned, and which didn't fix the root cause, but just decoupled @nvdaes's commit from TextInfo API. This PR however fixes the root cause of #17430. Summary of the issue: Commit 70cd311 by @nvdaes introduced a bug in TextInfo API: `TextInfo.collapse()` now unnecessarily jumps to the next paragraph in Notepad++. This bug also made its way into 2025.1 release. I investigated the braille issue #17430 further and it boiled down to an issue with `OffsetTextInfo.move()` implementation: it turns out that unless it moves by character, it is unable to move to the very last position in the document. Fixing `OffsetTextInfo.move()` implementation. Description of user facing changes: None Description of developer facing changes: `OffsetTextInfo.collapse()` now works correctly in Notepad++. `OffsetTextInfo.move()` can now move to the very last position even when unit is set to line or paragraph. Description of development approach: 1. In `OffsetTextInfo.move()` modified the condition when `self.allowMoveToOffsetPastEnd` to increase `highLimit` regardless of current unit - previously this would only allow when unit is character. 2. Removed `ScintillaTextInfo.expand()` override. Testing strategy: 1. Tested with use case provided in #18320. 2. Tested that `OffsetTextInfo.move('line', 1)` can now successfully go to the very last line in Notepad++ even if the last line is empty. This should be the proper fix for #17430. Known issues with pull request: None
UTF-8 encoded files are no longer an issue with gettext/python. It's unknown when this was fixed, likely around Python 3.11 update
Summary of the issue: > 3.13.7 is an expedited release to fix a significant issue with the 3.13.6 release: > > - [gh-137583](python/cpython#137583): Regression in ssl module between 3.13.5 and 3.13.6: reading from a TLS-encrypted connection blocks > > A few other bug fixes (which would otherwise have waited until the next release) are also included. Description of user facing changes: None Description of developer facing changes: See above Description of development approach: Change `3.13.6` to `3.13.7`. Testing strategy: Ran from source. CI. Known issues with pull request: None
…st add-on release (#18672) Partially closes #14041 Summary of the issue: NV Access add-on store does not show changelog for latest add-on releases. Description of user facing changes: Lays the foundation to display add-on changelog if defined. Description of developer facing changes: Adds 'changelog' to add-on manifest key definitions and makes the vlaue translatable. Description of development approach: Adds a new add-on manifest key named 'changelog' to document changes between previous and latest add-on releases. This key is translatable and is documented to instruct add-on authos on its usage and necessity. Testing strategy: Manual: requires building add-ons with "changelog" manifest key/value defined. Known issues with pull request: None
Summary of the issue: Updated Licensecheck to 2025.1 which recognizes more packages. Removed urllib3 as a license exclusion, since it is recognized correctly. Description of user facing changes: None Description of developer facing changes: More packages will be recognized by Licensecheck. Description of development approach: Updated Licensecheck, commented out exclusions and checked which ones where no longer needed.
### Link to issue number: Requested in #18708 (comment) Related to #18684 ### Summary of the issue: it was requested to run system tests on Windows Server 2022. ### Description of user facing changes: None ### Description of developer facing changes: NVDA is now systemd tested on Server 2022. ### Description of development approach: - Added additional runner to the GitHub Actions matrix. - Excluded symbols on windows-2022 with an explanatory comment. - Visual Studio code intellisence whined about actions/checkout@v4, updated to v5 ### Testing strategy: System tests
Closes #18722 Reverts 021bcd8 Summary of the issue: The code that split a string at character boundaries discarded characters like \u0301 when such a character was the only character in a string. Description of user facing changes: When unicode normalization is on, navigating by character will again correctly announce characters like acute (\u0301) Description of developer facing changes: NVDAHelper local calculateCharacterBoundaries now needs an offsets array that is textLength + 1 in size, rather than only the text length. This is to store the end offset of the last character. This reverts 021bcd8, therefore we don't pass additional extraneous alphanumeric characters to uniscribe to make it happy. Description of development approach: While debugging this issue, I found several issues in NVDAHelper local textUtils _getLogAttrArray function that is the base of the several calculation functions: The buffer passed to ScriptItemize was too small when a string only contained one character. The buffer should have space for at least two SCRIPT_ITEM structures in size. This is my hypothesis about the necessity of 021bcd8, namely the addition of two alphanumeric characters passed to the uniscribe methods. While there are no exactly known str to reproduce the issue behind 021bcd8, I tried several combinations of shorter and longer strings without alpha numeric characters, and I couldn't reproduce any of the behavior described in it after my changes to the c++ code. Therefore I reverted 021bcd8, as there is enough time to test this in Alpha thoroughly. Calculation of character offsets would never set the end offset when requesting the offsets of the last character in the string, since the end offset calculation starts at offset + 1 and offset + 1 is equal to textLength. Failed calls of ScriptItemize and ScriptBreak were never logged. ScriptItemize definitely failed when passing a string with only one character in it because the expected buffer was to small.
Closes #11064. Summary of the issue: When invoking the standard "report status bar" gesture in Visual Studio Code, NVDA says "no status line found". Description of how this pull request fixes the issue: Adds logic to detect (by role or IAccessible2 ID) the status bar, caching it when found. Also added a custom text override to move the line and column to the start for speech-friendliness. Testing strategy: Tested in various document types (plain text, Python) in Visual Studio Code. Known issues with pull request: The status bar is not cached on app launch since the tree interceptor is disabled. If this override is removed, status bar accesses are always fast. With the override, the first access of the status bar takes about a second on my machine.
Summary of the issue:
In practice, there have been exceptions to the NVDA API not documented in the developer guide.
Notably:
Preserving transitive imports: imports may be removed/updated in modules. Developers should always import from the original source module, rather than rely on an import from another module.
pip packages. Add-ons should rely on their own versions of pip packages. One exception to consider is updating wxPython, which in the past we have considered an API breaking change in itself.
Summary of the issue: It would be handy to automate searching for duplicates as part of triage. Description of user facing changes: When opening an issue, a user may be greeted with a list of potential duplicates. Description of developer facing changes: None Description of development approach: - [use Github models in GitHub actions](https://github.blog/ai-and-ml/generative-ai/automate-your-project-with-github-models-in-actions/) - [use ai-inference](https://github.com/actions/ai-inference) Testing strategy: Test on production, consider swapping out AI models as necessary A POC that GitHub agentic workflows connected to our MCP server support this: #18764 Known issues with pull request: None
Fixup #18775 Context: https://github.com/nvaccess/nvda/issues/18774#issuecomment-3212799829 It seems that for free tier gpt-5 is not available
Follow-up to #18883 Fixes #18913 ### Summary of the issue: Some gestures that control the mouse are broken. These include left/right mouse button lock/unlock, and navigator object default action. ### Description of user facing changes: They work again. ### Description of developer facing changes: None. ### Description of development approach: Updated `mouseHandler.executeMouseEvent` to send `0` instead of `None` as the value of `dwExtraInfo`. This is necessary as `dwExtraInfo` is correctly declared as `ULONG_PTR` since #18883, so ctypes will not accept `None`. ### Testing strategy: Ran from source and tested clicking and locking/unlocking the left and right mouse buttons, as well as activating the navigator object. ### Known issues with pull request: None
Fixes #18869 ### Summary of the issue: Status checks are not properly enforced, meaning PRs with failing checks are allowed to be merged. ### Description of user facing changes: None ### Description of developer facing changes: CI checks must pass ### Description of development approach: Use [alls-green](https://github.com/marketplace/actions/alls-green). ### Testing strategy: Create test failures and ensure they disable merging. * Intentionally introduced a unit test failure in [commit `aaa4146d`](aaa4146) ([CI run](https://github.com/nvaccess/nvda/actions/runs/17628492155)) * Intentionally introduced a system test failure in [commit `6cb4d8ad`](6cb4d8a) ([CI run](https://github.com/nvaccess/nvda/actions/runs/17629261960)) I did not check po, pot, lint, types etc, however I believe that the above tests are sufficient to prove that this approach works. ### Known issues with pull request: None
…C even when None. (#18925) <!-- 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. --> Fixes #18914 ### Summary of the issue: Tightening up ctypes definitions for 64 bit means that ctypes may be more picky with what can be passed as an argument. In particular passing None to an argument that should be a callback now will fail. The correct way is now to pass Functype(0) where Functype is the callback's ctypes definition. So far just one call has been identified in #18914: SetTimer takes a TIMERPROC. ### Description of user facing changes: None. ### Description of developer facing changes: ### Description of development approach: `winUser.WinTimer` now ensures that `timerFunc` is already, or is converted to, a `TIMERPROC`. Specifically ensuring `None` is converted to `TIMERPROC(0)`. ### Testing strategy: * [ ] The author of #18914 should confirm this fix. ### 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 --> - [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: Copilot <175728472+Copilot@users.noreply.github.com>
…finitions. (#18902) ### Summary of the issue: A pa part of moving to 64 bit, all raw ctypes calls must have explicit definitions. Remaining calls to functions in hid.dll must be moved to winBindings. ### Description of user facing changes: None. ### Description of developer facing changes: Symbols have moved and ctypes definitions are now correct. ### Description of development approach: * Add winBindings definitions for all remaining required calls to hid.dll. * Replace all raw ctypes calls with these definitions. * Add a HIDP_BUTTON_CAPS structure and use this with GetButtonCaps etc, rather than HIDP_VALUE_CAPS which is incorrect. ### Testing strategy: General smoke testing with a standard HID braille display. auto detection, moving by line, routing etc. ### Known issues with pull request: None known.
<!-- 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: There are still many raw ctypes calls to kernel32 functions in the code base. These must be moved to winBindings, with correct definitions per Microsoft documentation to ensure accurate execution on 64 bit. ### Description of user facing changes: None. ### Description of developer facing changes: ### Description of development approach: Add all required kernel32 definitions to winBindings, verifying each against Microsoft Documentation. Replace the raw ctypes calls through out the code base with the winBindings definitions. Any ctypes structures required by these definitions have also been moved to winBindings, and appropriate deprecation code added. ### Testing strategy: General smoke testing of an installed binary copy. ### 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 --> - [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: Sascha Cowley <16543535+SaschaCowley@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
### Summary of the issue: NVDA can be configured to report line/paragraph indentation with beeps. However, the beeps are distractingly long, especialy at high speech rates. ### Description of user facing changes: The duration of line indentation beeps has been reduced. They are now the same length as progress bar beeps. ### Description of developer facing changes: The `IDT_TONE_DURATION` constant has been removed. ### Description of development approach: Moved line indentation beep duration to config, so this customisation may be surfaced if desired in future. Replaced the constant with a getter method. ### Testing strategy: Navigated code with line indentation set to beeps. ### Known issues with pull request: None
Fixes #18929 ### Summary of the issue: when moving the mouse with play audio coordinates with brightness enabled, NVDA fails to read what is under the mouse, fails to play the audio beeps, and logs an error: This is due to the fact that screenBitmap.captureImage was recently changed to return a 1d array of RGBQUAD values, rather than a 2d array. The change was to fix an incompatibility with argument types of uwpOCR_recognize. However, mouseHandler.playAudioCoordinates still expects a 2d array. ### Description of user facing changes: Mouse movement with play audio coordinates and brightness works and does not throw an error. ### Description of developer facing changes: None ### Description of development approach: screenBitmap.captureImage again returns a 2d array, keeping it backward compatible and fixes the mouse movement bug. uwpOCR recognize: the pixels array provided from screenBitmap.captureImage is a 2d array. However uwpOCR_recognise expects pixels to be a 1d array. these are exactly the same memory layout, so we now just cast to a POINTER(RGBQUAD). ### Testing strategy: * Turned on play audio coordinates with mouse moves. Turned on detect brightness. Moved the mouse around the screen, ensuring audio coordinates beeps played and there were no errors in the log. Did an OCR recogise of the screen with NvDA+r, and ensured that the results were readable and no error was logged. ### Known issues with pull request: None known.
…leObjects should be a proper HANDLE not c_int. This stops the ctypes argument error, and more importantly ensures the full thread handle is represented on 64 bit. (#18927) <!-- 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. --> Mentioned in #18914 Fixes #18911 ### Summary of the issue: Creating a portable copy fails with the error ``` ctypes.ArgumentError: argument 2: TypeError: expected LP_c_void_p instance instead of pointer to c_long ``` In systemUtils.ExecAndPump: the thread is opened and the handle is stored in a c_int, but MsgWaitForMultipleObjects expects it to be aHANDLE (pointer). ### Description of user facing changes: None. ### Description of developer facing changes: ### Description of development approach: threadHandle is now a HANDLE, not c_int. ### Testing strategy: * Ran the launcher and successfully created a portable copy, with no error. ### 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 --> - [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.
<!-- 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: NvDA internally still uses some deprecated/moved symbols. They should be called from their correct locations. ### Description of user facing changes: None. ### Description of developer facing changes: ### Description of development approach: * access symbols directly from winBindings.gdi32 and winBindings.user32 * winBindings.bthProps: import SYSTEMTIME from winBindings.kernel32 * touchHandler: Use symbols from user32 not winUser. Fix imports. * systemUtils: SHELLEXECUTEINFO moved from shellapi to winBindings.shell32 ### Testing strategy: * [x] Run try build. Test touch gestures. Ensure no deprecation warnings in log. ### 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>
Link to issue number: None Summary of the issue: We occasionally want to run feature branches, that get PR builds when a PR is open against them Description of user facing changes: none Description of developer facing changes: none Description of development approach: Add try- branches to the list of branches that get PR builds
Fixes #18908 Summary of the issue: After we moved to a tightened ctypes definition for user32.MapVirtualKeyEx, typing dead keys such as an acute on a German keyboard layout would throw an error such as: File "keyboardHandler.pyc", line 535, in _get_mainKeyName ValueError: chr() arg not in range(0x110000) Description of user facing changes: No longer throws an error when typing dead keys. Description of developer facing changes: Description of development approach: KeyboardInputGesture.mainKeyName: As MapVirtualKeyEx now correctly returns an unsigned int we must be more explisit about filtering out dead keys. A dead key is denoted when the highest bit is set.
Link to issue number: Fixes #18511 Summary of the issue: If the structure tree is used for MathML in PDF, calls to getValue return the interpreted > so that it becomes < and we have an HTML syntax error. Description of user facing changes: The bug is fixed. Description of developer facing changes: None. Description of development approach: Called html.escape() for the result of the getValue (when it was not "none")
Fixes #18918 Summary of the issue: NVDA doesn't recognize certain SysListView32 controls as multi select. Description of user facing changes: MP3 tag list view and other list views are now correctly recognized as multi select. Description of developer facing changes: None Description of development approach: SysListView32 turn out to be multiselect by default unless LVS_SINGLESEL is set. Accounted for that in code.
### Summary of the issue: [GitHub issue forms](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates#issue-templates) provide an easier and more clear way for users to report issues on the NVDA project. Currently, when filling out an issue form, inline comments and an external guide is required to understand how to fill out an issue. ### Description of user facing changes When reporting an issue to NVDA, users can use the simpler GitHub forms interface. Information from inline comments and the [issue guide](https://github.com/nvaccess/nvda/blob/master/devDocs/githubIssueTemplateExplanationAndExamples.md) have been merged into this form, so that it is easier to understand the requirements. The old forms have been retained and simplified for regular issue reporters who prefer these. ### Description of development approach N/A ### Testing strategy: These changes have been pushed to a test repository The new issue interface can be tested here: https://github.com/nvaccess/nvda-issue-form-test/issues/new/choose Example issues filled out using the form are as follows: - https://github.com/nvaccess/nvda-issue-form-test/issues/1 - https://github.com/nvaccess/nvda-issue-form-test/issues/2 ### Known issues with pull request: The readability of markdown blocks might not be ideal, refer to https://github.com/orgs/community/discussions/61696. Tabbing through markdown editors is overly verbose and a frustrating experience.
Fixes #18871 Summary of the issue: During the winBindings conversion of oleacc, there was an oversight in passing the right argument type to WindowFromAccessibleObject. Description of user facing changes: #18871 no longer reproducible Description of developer facing changes: None Description of development approach: Pass a HWND instead of a c_int to WindowFromAccessibleObject WindowFromAccessibleObject is only expected to throw a Windows Error. Change the bare except accordingly and also log a debug warning.
Part of #16304 Summary of the issue: We need to refactor large parts of the installer code as part of the 64bit migration. This is to ensure the old copy of NVDA is cleaned up correctly. Description of user facing changes: None Description of developer facing changes: Some API breaking changes and deprecations which shouldn't affect most/any add-ons Description of development approach: Move relevant keys to config.registry Move relevant paths to WritePaths Add type hints Create a winBinding for RegDeleteTreeW to update _deleteKeyAndSubkeys. The current design of _deleteKeyAndSubkeys was to support Windows XP and older
Fix up #15320 Summary of the issue: #15320 introduced issues with pre-commit https://results.pre-commit.ci/run/github/45885732/1758242518.RpdtNbQiT1CqPdTB7w-UTw Additionally, some formatting was broken causing .github/ISSUE_TEMPLATE/03-special_case_issue.yaml to not appear in the issues choose list Description of user facing changes: The issue form for special case issues should reappear Description of developer facing changes: None Description of development approach: Fix lint
…cess such as 1Password (#18948) Summary of the issue: During the conversion to 64 bit, the ctypes definition of WaitForSingleObject was tightened up. This caused related errors in NVDA previously hidden to be surfaced, such as continuing to keep an appModule alive with an invalid process handle. this was addressed. However, a similar issue was also surfaced where although we successfully open a process, asking for the SYNCHRONIZE access right, once we go to check if the process is dead by calling WaitforSingleObject(handle, 0) this fails with access denied. We never actually got the SYNCHRONIZE access right. This is most serious when trying to interact with 1Password, where it becomes totally unusable and NVDA continuously torws the error: File "appModuleHandler.pyc", line 622, in _get_isAlive File "winKernel.pyc", line 344, in waitForSingleObject PermissionError: [WinError 5] Access is denied. This error is also randomly seen from time to time when alt tabbing between windows. There may be another protected Windows process which happens to be noticed by NVDA. Description of user facing changes: NVDA no longer becomes unusable when interacting with a protected process.
Fixes #18938 Summary of the issue: Attempting to control NVDA via the Remote Access feature fails on recent alphas. Description of user facing changes: It works again. Description of developer facing changes: Some constants from winUser have been made enum members in winBindings.user32. Description of development approach: Removed the definitions of INPUT, KEYBDINPUT, HARDWAREINPUT, MOUSEINPUT, INPUT_TYPE and KEYEVENTF from _remoteClient.input. Changed Remote Access's keyboard code to use structures from winBindings.user32. Also moved duplicate constants from winUser and added deprecation code and notes to the user docs.
Fixes #18949 ### Summary of the issue: Braille display drivers that use a waitable timer to reset the waiting for acknowledgement packets timer currently raise errors. ### Description of user facing changes: NO longer errors. ### Description of developer facing changes: None ### Description of development approach: When calling `setWaitableTimer`, cast the APC to type `PTIMERAPCROUTINE`. While `PTIMERAPCROUTINE` requires more parameters than `PAPCFUNC`, we always used a `PAPCFUNC` instance in the past without problems. ### Testing strategy: - Test str from #18949 ### Known issues with pull request: None
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.
An early master to beta merge to allow translation work to begin.
This is not the final master to beta merge.