From 0f553b540363b9cc62ee1e2de1cd7a8a542408ea Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 22:31:02 -0600 Subject: [PATCH 01/37] SConscript: set Windows subsystem version to Windows 10 (for NVDA helper and friends). --- nvdaHelper/archBuild_sconscript | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nvdaHelper/archBuild_sconscript b/nvdaHelper/archBuild_sconscript index 8ce0bd3e9b3..a4291cf0a6d 100644 --- a/nvdaHelper/archBuild_sconscript +++ b/nvdaHelper/archBuild_sconscript @@ -81,7 +81,7 @@ env.Append( "UNICODE", "_CRT_SECURE_NO_DEPRECATE", ("LOGLEVEL", "${nvdaHelperLogLevel}"), - ("_WIN32_WINNT", "_WIN32_WINNT_WINBLUE"), + ("_WIN32_WINNT", "_WIN32_WINNT_WIN10"), # NOMINMAX: prevent minwindef.h min/max macro definition, which unexpectedly override developer # expectations "NOMINMAX", @@ -92,8 +92,8 @@ env.Append(CXXFLAGS=["/EHsc"]) env.Append(CPPPATH=["#/include", "#/include/wil/include", "#/miscDeps/include", Dir(".").abspath]) -# Windows 8.1 (blue) -subsystem = "/subsystem:windows,6.03" +# Windows 10 +subsystem = "/subsystem:windows,10.00" env.Append( LINKFLAGS=[ From 11d8524108cbbc3ca95d7002bf648c7664b43071 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 22:33:18 -0600 Subject: [PATCH 02/37] NVDA helper readme: WINBLUE -> WIN10 (consistency with arch build sconscript) --- nvdaHelper/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nvdaHelper/readme.md b/nvdaHelper/readme.md index 9e3b6fea60d..42168674ed1 100644 --- a/nvdaHelper/readme.md +++ b/nvdaHelper/readme.md @@ -65,7 +65,7 @@ You should still build on the command line to verify errors. - Press next - Specify Debug Configuration Settings - Build command line: `scons source` - - Preprocessor definitions (/D): `WIN32;_WINDOWS;_USRDLL;NVDAHELPER_EXPORTS;UNICODE;_CRT_SECURE_NO_DEPRECATE;LOGLEVEL=15;_WIN32_WINNT=_WIN32_WINNT_WINBLUE;NOMINMAX` + - Preprocessor definitions (/D): `WIN32;_WINDOWS;_USRDLL;NVDAHELPER_EXPORTS;UNICODE;_CRT_SECURE_NO_DEPRECATE;LOGLEVEL=15;_WIN32_WINNT=_WIN32_WINNT_WIN10;NOMINMAX` - Include search paths (/I): `../include;../miscDeps/include;./;../build\x86_64;../include/minhook/include` - Forced Included files (/FI): `winuser.h` - Press next @@ -85,7 +85,7 @@ You should still build on the command line to verify errors. ``` cl /Fobuild\x86\vbufBackends\gecko_ia2\gecko_ia2.obj /c build\x86\vbufBackends\gecko_ia2\gecko_ia2.cpp /TP /EHsc /nologo /std:c++20 /permissive- /Od /MT /W3 /WX - /DUNICODE /D_CRT_SECURE_NO_DEPRECATE /DLOGLEVEL=15 /D_WIN32_WINNT=_WIN32_WINNT_WINBLUE /DNOMINMAX /DNDEBUG + /DUNICODE /D_CRT_SECURE_NO_DEPRECATE /DLOGLEVEL=15 /D_WIN32_WINNT=_WIN32_WINNT_WIN10 /DNOMINMAX /DNDEBUG /Iinclude /Imiscdeps\include /Ibuild\x86 /Z7 ``` From 5e4b53fca3e2f2fd634f9c05e4c9f8e0c64b1a2a Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 22:36:02 -0600 Subject: [PATCH 03/37] winVersion: minimum Windows version -> Windows 10 (RTM/1507) --- source/winVersion.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/winVersion.py b/source/winVersion.py index 527a0cbca1f..f15e2d230ab 100644 --- a/source/winVersion.py +++ b/source/winVersion.py @@ -214,8 +214,8 @@ def getWinVer(): def isSupportedOS(): - # NVDA can only run on Windows 8.1 (Blue) and above - return getWinVer() >= WIN81 + # NVDA can only run on Windows 10 and above + return getWinVer() >= WIN10 UWP_OCR_DATA_PATH = os.path.expandvars(r"$windir\OCR") From cb3a5ba131a847d107edb59604b34f7ad3c1e945 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 22:38:57 -0600 Subject: [PATCH 04/37] winVersion: deprecate Windows 8.1 attribute (the attribute will be removed in a future NVDA release) --- source/winVersion.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/winVersion.py b/source/winVersion.py index f15e2d230ab..580052b413c 100644 --- a/source/winVersion.py +++ b/source/winVersion.py @@ -146,7 +146,6 @@ def __ge__(self, other): # Windows releases to WinVersion instances for easing comparisons. -WIN81 = WinVersion(major=6, minor=3, build=9600) WIN10 = WIN10_1507 = WinVersion(major=10, minor=0, build=10240) WIN10_1511 = WinVersion(major=10, minor=0, build=10586) WIN10_1607 = WinVersion(major=10, minor=0, build=14393) @@ -252,4 +251,7 @@ def __getattr__(attrName: str) -> Any: if attrName == "WIN8" and NVDAState._allowDeprecatedAPI(): log.warning("WIN8 is deprecated.") return WinVersion(major=6, minor=2, build=9200, releaseName="Windows 8") + if attrName == "WIN81" and NVDAState._allowDeprecatedAPI(): + log.warning("WIN81 is deprecated.") + return WinVersion(major=6, minor=3, build=9600, releaseName="Windows 8.1") raise AttributeError(f"module {repr(__name__)} has no attribute {repr(attrName)}") From 3b52eac14b61433394320de3c5f264359cd1c4cc Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 22:41:21 -0600 Subject: [PATCH 05/37] winVersion: remove Windows 8.1 (6.3) detection and attribute and edit comments --- source/winVersion.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/source/winVersion.py b/source/winVersion.py index 580052b413c..c429934fb83 100644 --- a/source/winVersion.py +++ b/source/winVersion.py @@ -104,15 +104,12 @@ def __init__( def _getWindowsReleaseName(self) -> str: """Returns the public release name for a given Windows release based on major, minor, and build. + This also includes feature update release name. This is useful if release names are not defined when constructing this class. - For example, 6.3 will return 'Windows 8.1'. - For Windows 10 and later, feature update release name will be included. On server systems, unless noted otherwise, client release names will be returned. - For example, 'Windows 10 1809' will be returned on Server 2019 systems. + For example, 'Windows 11 24H2' will be returned on Server 2025 systems. """ match (self.major, self.minor): - case (6, 3): - return "Windows 8.1" # From Windows 10 1511 (build 10586), release Id/display version comes from Windows Registry. # However there are builds with no release name (Version 1507/10240) # or releases with different builds. From 2245e2d15a2bd7d08f2be3884ed25fbee2f9d679 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 22:51:02 -0600 Subject: [PATCH 06/37] Synth drivers: set Windows OneCore as default synthesizer and say 'true' when chekcing for synth availability --- source/synthDriverHandler.py | 6 ++---- source/synthDrivers/oneCore.py | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/source/synthDriverHandler.py b/source/synthDriverHandler.py index 69b91e2266a..9d93229aaa5 100644 --- a/source/synthDriverHandler.py +++ b/source/synthDriverHandler.py @@ -484,10 +484,8 @@ def getSynthInstance(name, asDefault=False): # The synthDrivers that should be used by default. # The first that successfully initializes will be used when config is set to auto (I.e. new installs of NVDA). -defaultSynthPriorityList = ["espeak", "silence"] -if winVersion.getWinVer() >= winVersion.WIN10: - # Default to OneCore on Windows 10 and above - defaultSynthPriorityList.insert(0, "oneCore") +# Default to OneCore on Windows 10 and above +defaultSynthPriorityList = ["oneCore", "espeak", "silence"] def setSynth(name: Optional[str], isFallback: bool = False): diff --git a/source/synthDrivers/oneCore.py b/source/synthDrivers/oneCore.py index 0e5a59b2a3b..07fc081461f 100644 --- a/source/synthDrivers/oneCore.py +++ b/source/synthDrivers/oneCore.py @@ -194,7 +194,7 @@ class OneCoreSynthDriver(SynthDriver): @classmethod def check(cls): # Only present this as an available synth if this is Windows 10. - return winVersion.getWinVer() >= winVersion.WIN10 + return True def _get_supportsProsodyOptions(self): self.supportsProsodyOptions = self._dll.ocSpeech_supportsProsodyOptions() From 6b98980045410842b75a582926aa756752fe0068 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 22:53:54 -0600 Subject: [PATCH 07/37] UIA handler: unconditionally add text change and auto-selection detection to evnet handler group map --- source/UIAHandler/__init__.py | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/source/UIAHandler/__init__.py b/source/UIAHandler/__init__.py index 3cd25678817..7e8fd9f8398 100644 --- a/source/UIAHandler/__init__.py +++ b/source/UIAHandler/__init__.py @@ -250,19 +250,17 @@ localEventHandlerGroupUIAEventIds = set() -autoSelectDetectionAvailable = False -if winVersion.getWinVer() >= winVersion.WIN10: - UIAEventIdsToNVDAEventNames.update( - { - UIA.UIA_Text_TextSelectionChangedEventId: "caret", - }, - ) - localEventHandlerGroupUIAEventIds.update( - { - UIA.UIA_Text_TextSelectionChangedEventId, - }, - ) - autoSelectDetectionAvailable = True +UIAEventIdsToNVDAEventNames.update( + { + UIA.UIA_Text_TextSelectionChangedEventId: "caret", + }, +) +localEventHandlerGroupUIAEventIds.update( + { + UIA.UIA_Text_TextSelectionChangedEventId, + }, +) +autoSelectDetectionAvailable = True globalEventHandlerGroupUIAEventIds = set(UIAEventIdsToNVDAEventNames) - localEventHandlerGroupUIAEventIds From 74c053cd30fe0f83f1bee4f07bbb91d0fe2fba44 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 22:55:26 -0600 Subject: [PATCH 08/37] UIA handler: remove text change event check. Remove Windows 10 check from text change event check. --- source/UIAHandler/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/UIAHandler/__init__.py b/source/UIAHandler/__init__.py index 7e8fd9f8398..00fbff96e50 100644 --- a/source/UIAHandler/__init__.py +++ b/source/UIAHandler/__init__.py @@ -592,7 +592,7 @@ def _registerGlobalEventHandlers(self, handler: "UIAHandler"): self.baseCacheRequest, handler, ) - if not utils._shouldSelectivelyRegister() and winVersion.getWinVer() >= winVersion.WIN10: + if not utils._shouldSelectivelyRegister(): # #14067: Due to poor performance, textChange requires special handling self.globalEventHandlerGroup.AddAutomationEventHandler( UIA.UIA_Text_TextChangedEventId, From d15ce306fc8be449aae4ea65c6ab3aef81e90021 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 22:59:26 -0600 Subject: [PATCH 09/37] appModules/excel: remove richedit60/Windows version check. Remove RichEdit60 and Windows version check as Windows 10 or later is required to run NVDA. --- source/appModules/excel.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/appModules/excel.py b/source/appModules/excel.py index fa8430afc63..c747d8c1bc2 100644 --- a/source/appModules/excel.py +++ b/source/appModules/excel.py @@ -13,7 +13,6 @@ from NVDAObjects import NVDAObject from NVDAObjects.UIA import UIA import winUser -import winVersion import controlTypes import appModuleHandler from scriptHandler import script @@ -111,7 +110,7 @@ def isGoodUIAWindow(self, hwnd: int) -> bool: return True windowClass = winUser.getClassName(hwnd) versionMajor = int(self.productVersion.split(".")[0]) - if versionMajor >= 16 and windowClass == "RICHEDIT60W" and winVersion.getWinVer() >= winVersion.WIN10: + if versionMajor >= 16 and windowClass == "RICHEDIT60W": # RICHEDIT60W In Excel 2016+ on Windows 10+ # has a very good UI Automation implementation, # Though oddly IsServerSideProvider returns false for these windows. From 073a885054911dfe7228ad5f229a33e236d48ef6 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 23:13:35 -0600 Subject: [PATCH 10/37] appModules/outlook: remove richedit60/Windows version check. Remove RichEdit60 and Windows version check as Windows 10 or later is required to run NVDA. --- source/appModules/outlook.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/appModules/outlook.py b/source/appModules/outlook.py index e8e1ac6406f..936621a211a 100644 --- a/source/appModules/outlook.py +++ b/source/appModules/outlook.py @@ -9,7 +9,6 @@ import comtypes.client import comtypes.automation import ctypes -import winVersion from scriptHandler import script import winKernel import comHelper @@ -114,7 +113,7 @@ class AppModule(appModuleHandler.AppModule): def isGoodUIAWindow(self, hwnd: int) -> bool: windowClass = winUser.getClassName(hwnd) versionMajor = int(self.productVersion.split(".")[0]) - if versionMajor >= 16 and windowClass == "RICHEDIT60W" and winVersion.getWinVer() >= winVersion.WIN10: + if versionMajor >= 16 and windowClass == "RICHEDIT60W": # #12726: RICHEDIT60W In Outlook 2016+ on Windows 10+ # has a very good UI Automation implementation, # Though oddly IsServerSideProvider returns false for these windows. From b0f98a995cca97780921f4e0fab555e5a59d436a Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 23:16:15 -0600 Subject: [PATCH 11/37] winAPI/session tracking: remove Windows 10 check when determining secure desktop activation. NVDA runs on Windows 10 and later, therefore remove Widows version check when determining secure desktop activation. --- source/winAPI/sessionTracking.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/source/winAPI/sessionTracking.py b/source/winAPI/sessionTracking.py index f7b767a97e8..afa42a6b5bd 100644 --- a/source/winAPI/sessionTracking.py +++ b/source/winAPI/sessionTracking.py @@ -164,14 +164,6 @@ def isLockScreenModeActive() -> bool: # Use secure mode instead if on the secure desktop return False - import winVersion - - if winVersion.getWinVer() < winVersion.WIN10: - # On Windows 8 and Earlier, the lock screen runs on - # the secure desktop. - # Lock screen mode is not supported on these Windows versions. - return False - return _isWindowsLocked() From 3bbc60ea5a83d064dbf28cddc71e631e01b8d29d Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 23:17:48 -0600 Subject: [PATCH 12/37] User guide: drop Windows 8.1 content (system requirements, eSpeak NG, braille displays, OneCore voices) --- user_docs/en/userGuide.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/user_docs/en/userGuide.md b/user_docs/en/userGuide.md index ee51c213c7a..4ffda448d62 100644 --- a/user_docs/en/userGuide.md +++ b/user_docs/en/userGuide.md @@ -42,15 +42,15 @@ Major highlights include: #### Minimum System Requirements {#MinimumSystemRequirements} -* Operating Systems: all 32-bit and 64-bit editions of Windows 8.1, Windows 10, Windows 11, and all Server Operating Systems starting from Windows Server 2012 R2. +* Operating Systems: all 32-bit and 64-bit editions of Windows 10, Windows 11, and all Server Operating Systems starting from Windows Server 2016. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. * Note that 32-bit operating systems are no longer under active support. - * Note that Windows 8.1 and Windows Server versions older than 2022 are no longer under active support. + * Note that Windows 10 versions earlier than 21H2 and Windows Server versions older than 2022 are no longer under active support. * at least 500 MB of storage space. #### Recommended System Requirements {#RecommendedSystemRequirements} -* Operating Systems: 64-bit editions of Windows 10, Windows 11, and Windows Server 2022. +* Operating Systems: 64-bit editions of Windows 10, Windows 11, and Windows Server 2022 or later. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. * at least 500 MB of storage space. * at least 4 GB of RAM. @@ -4145,7 +4145,6 @@ For an even more extensive list of free and commercial synthesizers that you can ### eSpeak NG {#eSpeakNG} The [eSpeak NG](https://github.com/espeak-ng/espeak-ng) synthesizer is built directly into NVDA and does not require any other special drivers or components to be installed. -On Windows 8.1 NVDA uses eSpeak NG by default ([Windows OneCore](#OneCore) is used in Windows 10 and later by default). As this synthesizer is built into NVDA, this is a great choice for when running NVDA off a USB thumb drive on other systems. Each voice that comes with eSpeak NG speaks a different language. @@ -4184,7 +4183,7 @@ To use these voices, you will need to install two components: Windows 10 and later includes voices known as "OneCore" or "mobile" voices. Voices are provided for many languages, and they are more responsive than the Microsoft voices available using Microsoft Speech API version 5. -On Windows 10 and later, NVDA uses Windows OneCore voices by default ([eSpeak NG](#eSpeakNG) is used in other releases). +NVDA uses Windows OneCore voices by default. To add new Windows OneCore voices, go to "Speech Settings", within Windows system settings. Use the "Add voices" option and search for the desired language. @@ -5278,8 +5277,6 @@ The braille keyboard functions described directly below is when "HID Keyboard si ### Nattiq nBraille Displays {#NattiqTechnologies} NVDA supports displays from [Nattiq Technologies](https://www.nattiq.com/) when connected via USB. -Windows 10 and later detects the Braille Displays once connected, you may need to install USB drivers if using older versions of Windows (below Win10). -You can get them from the manufacturer's website. Following are the key assignments for Nattiq Technologies displays with NVDA. Please see the display's documentation for descriptions of where these keys can be found. From 837cefb38cb24e84fd53ae041855b4c1e34cf3c5 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 23:23:04 -0600 Subject: [PATCH 13/37] Update copyright headers --- nvdaHelper/archBuild_sconscript | 2 +- source/appModules/excel.py | 2 +- source/appModules/outlook.py | 2 +- source/synthDriverHandler.py | 2 +- source/synthDrivers/oneCore.py | 2 +- source/winAPI/sessionTracking.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/nvdaHelper/archBuild_sconscript b/nvdaHelper/archBuild_sconscript index a4291cf0a6d..c79ce7034e7 100644 --- a/nvdaHelper/archBuild_sconscript +++ b/nvdaHelper/archBuild_sconscript @@ -1,5 +1,5 @@ # A part of NonVisual Desktop Access (NVDA) -# Copyright (C) 2006-2023 NV Access Limited +# Copyright (C) 2006-2025 NV Access Limited # This file may be used under the terms of the GNU General Public License, version 2 or later. # For more details see: https://www.gnu.org/licenses/gpl-2.0.html diff --git a/source/appModules/excel.py b/source/appModules/excel.py index c747d8c1bc2..150a4f1c247 100644 --- a/source/appModules/excel.py +++ b/source/appModules/excel.py @@ -1,6 +1,6 @@ # -*- coding: UTF-8 -*- # A part of NonVisual Desktop Access (NVDA) -# Copyright (C) 2018 NV Access Limited, Łukasz Golonka +# Copyright (C) 2018-2025 NV Access Limited, Łukasz Golonka # This file may be used under the terms of the GNU General Public License, version 2 or later. # For more details see: https://www.gnu.org/licenses/gpl-2.0.html diff --git a/source/appModules/outlook.py b/source/appModules/outlook.py index 936621a211a..71a66827459 100644 --- a/source/appModules/outlook.py +++ b/source/appModules/outlook.py @@ -1,5 +1,5 @@ # A part of NonVisual Desktop Access (NVDA) -# Copyright (C) 2006-2021 NV Access Limited, Yogesh Kumar, Manish Agrawal, Joseph Lee, Davy Kager, +# Copyright (C) 2006-2025 NV Access Limited, Yogesh Kumar, Manish Agrawal, Joseph Lee, Davy Kager, # Babbage B.V., Leonard de Ruijter # This file is covered by the GNU General Public License. # See the file COPYING for more details. diff --git a/source/synthDriverHandler.py b/source/synthDriverHandler.py index 9d93229aaa5..4438dceddf0 100644 --- a/source/synthDriverHandler.py +++ b/source/synthDriverHandler.py @@ -1,7 +1,7 @@ # A part of NonVisual Desktop Access (NVDA) # This file is covered by the GNU General Public License. # See the file COPYING for more details. -# Copyright (C) 2006-2024 NV Access Limited, Peter Vágner, Aleksey Sadovoy, +# Copyright (C) 2006-2025 NV Access Limited, Peter Vágner, Aleksey Sadovoy, # Joseph Lee, Arnold Loubriat, Leonard de Ruijter import pkgutil diff --git a/source/synthDrivers/oneCore.py b/source/synthDrivers/oneCore.py index 07fc081461f..bea11376104 100644 --- a/source/synthDrivers/oneCore.py +++ b/source/synthDrivers/oneCore.py @@ -1,5 +1,5 @@ # A part of NonVisual Desktop Access (NVDA) -# Copyright (C) 2016-2024 Tyler Spivey, NV Access Limited, James Teh, Leonard de Ruijter +# Copyright (C) 2016-2025 Tyler Spivey, NV Access Limited, James Teh, Leonard de Ruijter # This file is covered by the GNU General Public License. # See the file COPYING for more details. diff --git a/source/winAPI/sessionTracking.py b/source/winAPI/sessionTracking.py index afa42a6b5bd..aaa691a9fb4 100644 --- a/source/winAPI/sessionTracking.py +++ b/source/winAPI/sessionTracking.py @@ -1,5 +1,5 @@ # A part of NonVisual Desktop Access (NVDA) -# Copyright (C) 2022 NV Access Limited +# Copyright (C) 2022-2025 NV Access Limited # This file may be used under the terms of the GNU General Public License, version 2 or later. # For more details see: https://www.gnu.org/licenses/gpl-2.0.html From ecaf2ef512442c21c8a79e5f19c864fff58e9b79 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 12 Aug 2025 23:46:18 -0600 Subject: [PATCH 14/37] Changes: document Windows 10 requirement and winVErsion.WIN81 constant deprecation --- user_docs/en/changes.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/user_docs/en/changes.md b/user_docs/en/changes.md index 471ff8b6450..67b8b0b32d7 100644 --- a/user_docs/en/changes.md +++ b/user_docs/en/changes.md @@ -13,6 +13,9 @@ Windows 10 is the minimum Windows version supported. ### Changes +* NVDA no longer supports Windows 8.1. +Windows 10 (Version 1507) is the minimum Windows version supported. (#18684, @josephsl) + ### Bug Fixes ### Changes for Developers @@ -29,6 +32,8 @@ Please open a GitHub issue if your add-on has an issue with updating to the new #### Deprecations +* `winVersion.WIN81` constant has been deprecated from winVersion module. (#18684, @josephsl): + ## 2025.3 ### Important notes From 2088ca8c6b710c7ba45b4872a40d5848b193fcc9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 13 Aug 2025 06:02:47 +0000 Subject: [PATCH 15/37] Pre-commit auto-fix --- source/synthDriverHandler.py | 1 - source/synthDrivers/oneCore.py | 1 - 2 files changed, 2 deletions(-) diff --git a/source/synthDriverHandler.py b/source/synthDriverHandler.py index 4438dceddf0..478d0e65133 100644 --- a/source/synthDriverHandler.py +++ b/source/synthDriverHandler.py @@ -18,7 +18,6 @@ from locale import strxfrm import config -import winVersion import globalVars from logHandler import log from synthSettingsRing import SynthSettingsRing diff --git a/source/synthDrivers/oneCore.py b/source/synthDrivers/oneCore.py index bea11376104..dc45ee01c38 100644 --- a/source/synthDrivers/oneCore.py +++ b/source/synthDrivers/oneCore.py @@ -36,7 +36,6 @@ from speech.types import SpeechSequence import speechXml import languageHandler -import winVersion import NVDAHelper from speech.commands import ( From c535ee7647027c18385249ba2d6237885ce8216b Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 07:45:39 -0600 Subject: [PATCH 16/37] winVersoin: add type hints. Review comment from Sena Budd (NV Access): add type hint (returns bool) for isSupportOS. Take this time to add type hints for other functions as well. --- source/winVersion.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/winVersion.py b/source/winVersion.py index c429934fb83..1d4d6d70eaf 100644 --- a/source/winVersion.py +++ b/source/winVersion.py @@ -165,7 +165,7 @@ def __ge__(self, other): @functools.lru_cache(maxsize=1) -def getWinVer(): +def getWinVer() -> WinVersion: """Returns a record of current Windows version NVDA is running on.""" winVer = sys.getwindowsversion() # #12509: on Windows 10, fetch whatever Windows Registry says for the current build. @@ -209,7 +209,7 @@ def getWinVer(): ) -def isSupportedOS(): +def isSupportedOS() -> bool: # NVDA can only run on Windows 10 and above return getWinVer() >= WIN10 @@ -217,7 +217,7 @@ def isSupportedOS(): UWP_OCR_DATA_PATH = os.path.expandvars(r"$windir\OCR") -def isUwpOcrAvailable(): +def isUwpOcrAvailable() -> bool: return os.path.isdir(UWP_OCR_DATA_PATH) From 19c0e2083eaab44a2b5770075fe8cf74756cabc3 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 07:54:28 -0600 Subject: [PATCH 17/37] User guide: update system requirements. Review comment from Sean Budd (NV Access): starting with NVDA 2026.1, Windows 10 will not be under active support from NVDA, therefore update system requirements as follows: * Minimum: Windows 10 (no active support). Note the fact that Windows 10 is the last release to support 32-bit systems. * Recommended: Windows 11 and SErver 2025. --- user_docs/en/userGuide.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/user_docs/en/userGuide.md b/user_docs/en/userGuide.md index 4ffda448d62..d57d1e8090d 100644 --- a/user_docs/en/userGuide.md +++ b/user_docs/en/userGuide.md @@ -44,13 +44,13 @@ Major highlights include: * Operating Systems: all 32-bit and 64-bit editions of Windows 10, Windows 11, and all Server Operating Systems starting from Windows Server 2016. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. - * Note that 32-bit operating systems are no longer under active support. - * Note that Windows 10 versions earlier than 21H2 and Windows Server versions older than 2022 are no longer under active support. + * Note that 32-bit operating systems are no longer under active support (Windows 10 is the last 32-bit operating system). + * Note that Windows 10 (all versions) and Windows Server versions older than 2025 are no longer under active support. * at least 500 MB of storage space. #### Recommended System Requirements {#RecommendedSystemRequirements} -* Operating Systems: 64-bit editions of Windows 10, Windows 11, and Windows Server 2022 or later. +* Operating Systems: Windows 11 and Windows Server 2025. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. * at least 500 MB of storage space. * at least 4 GB of RAM. From 05d76a9cdb7141f590e9c8a8eda751aab2fd364f Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 07:56:04 -0600 Subject: [PATCH 18/37] What's new: declare Windows 10 (Version 1507) as minimum version under 'important notes' section --- user_docs/en/changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_docs/en/changes.md b/user_docs/en/changes.md index 67b8b0b32d7..dc5359219b3 100644 --- a/user_docs/en/changes.md +++ b/user_docs/en/changes.md @@ -6,7 +6,7 @@ * This release breaks compatibility with existing add-ons. * Windows 8.1 is no longer supported. -Windows 10 is the minimum Windows version supported. +Windows 10 (Version 1507) is the minimum Windows version supported. * 32-bit Windows is no longer supported. ### New Features From 2c0bb69e1e6f4b20b79b9a29b77ee5d029226f0a Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 10:02:23 -0600 Subject: [PATCH 19/37] Synth drivers/OneCore: remove Windows 10 comment as it is unnecessary. Co-authored-by: Leonard de Ruijter <3049216+LeonarddeR@users.noreply.github.com> --- source/synthDriverHandler.py | 1 - 1 file changed, 1 deletion(-) diff --git a/source/synthDriverHandler.py b/source/synthDriverHandler.py index 478d0e65133..5f38b3ccfba 100644 --- a/source/synthDriverHandler.py +++ b/source/synthDriverHandler.py @@ -483,7 +483,6 @@ def getSynthInstance(name, asDefault=False): # The synthDrivers that should be used by default. # The first that successfully initializes will be used when config is set to auto (I.e. new installs of NVDA). -# Default to OneCore on Windows 10 and above defaultSynthPriorityList = ["oneCore", "espeak", "silence"] From 9cdbe72b637546d2c41580a6e1cb8cc2c49a2690 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 22:12:46 -0600 Subject: [PATCH 20/37] What's new: add word on Windows 10 22H2 as recommended Windows 10 versoin (with notes form NV Access) --- user_docs/en/changes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/user_docs/en/changes.md b/user_docs/en/changes.md index dc5359219b3..fd7d9dc822e 100644 --- a/user_docs/en/changes.md +++ b/user_docs/en/changes.md @@ -7,6 +7,7 @@ * This release breaks compatibility with existing add-ons. * Windows 8.1 is no longer supported. Windows 10 (Version 1507) is the minimum Windows version supported. +We recommend updating to Windows 11, or when that's not possible, to the latest Windows 10 version (22H2). * 32-bit Windows is no longer supported. ### New Features From 71baf1fe16f5aa0ea91969b51abf72e75dc2b2ec Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 22:13:15 -0600 Subject: [PATCH 21/37] User guide: refinements to system requirements section (with review from NV Access) --- user_docs/en/userGuide.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/user_docs/en/userGuide.md b/user_docs/en/userGuide.md index d57d1e8090d..042ca29d919 100644 --- a/user_docs/en/userGuide.md +++ b/user_docs/en/userGuide.md @@ -42,10 +42,11 @@ Major highlights include: #### Minimum System Requirements {#MinimumSystemRequirements} -* Operating Systems: all 32-bit and 64-bit editions of Windows 10, Windows 11, and all Server Operating Systems starting from Windows Server 2016. +* Operating Systems: 64-bit editions of Windows 10 and Windows 11. +Windows Server 2016, 2019, 2022 and 2025. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. - * Note that 32-bit operating systems are no longer under active support (Windows 10 is the last 32-bit operating system). - * Note that Windows 10 (all versions) and Windows Server versions older than 2025 are no longer under active support. + * Note that 32-bit operating systems are no longer under active support. + * Note that Windows 10 and Windows Server versions older than 2025 are no longer under active support. * at least 500 MB of storage space. #### Recommended System Requirements {#RecommendedSystemRequirements} From 4105576be55530e9a5db5b0de1cfc020aa26a015 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 22:19:00 -0600 Subject: [PATCH 22/37] NVDAObjects.UIA: remove UIAHandler.autoSelectDetectionAvailable attribute check. Reviewed by Sean Budd (NV Access): remove UIAHandler.autoSelectDetectionAvailable attribute as Windows 10 is the minimum Windows version supported. The only place that checks for this attribute is NVDAObjects.UIA.findOverlayClasses, so remove this attribute check before removing it from UIA handler. --- source/NVDAObjects/UIA/__init__.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/source/NVDAObjects/UIA/__init__.py b/source/NVDAObjects/UIA/__init__.py index 03725d6fa93..759c1b22521 100644 --- a/source/NVDAObjects/UIA/__init__.py +++ b/source/NVDAObjects/UIA/__init__.py @@ -1448,10 +1448,7 @@ def findOverlayClasses(self, clsList): # NOQA: C901 clsList.append(XamlEditableText) elif UIAClassName == "WpfTextView": clsList.append(WpfTextView) - if UIAHandler.autoSelectDetectionAvailable: - clsList.append(EditableTextWithAutoSelectDetection) - else: - clsList.append(EditableTextWithoutAutoSelectDetection) + clsList.append(EditableTextWithAutoSelectDetection) clsList.append(UIA) From e0749e68639ef7ddf3599b90c769fd83fd6df1fb Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 22:19:37 -0600 Subject: [PATCH 23/37] UIA handler: remove 'autoSelectDetectionAvailable' attribute as it is no longer used anywhere. --- source/UIAHandler/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/source/UIAHandler/__init__.py b/source/UIAHandler/__init__.py index 00fbff96e50..9780ca46dee 100644 --- a/source/UIAHandler/__init__.py +++ b/source/UIAHandler/__init__.py @@ -260,7 +260,6 @@ UIA.UIA_Text_TextSelectionChangedEventId, }, ) -autoSelectDetectionAvailable = True globalEventHandlerGroupUIAEventIds = set(UIAEventIdsToNVDAEventNames) - localEventHandlerGroupUIAEventIds From 22bd1d3370ad1b221c429c9555fa0e15cf33c346 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 22:21:57 -0600 Subject: [PATCH 24/37] What's new: add removal of 'UIAHanlder.autoSelectDetectionAvailable' attribute with no replacement. --- user_docs/en/changes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/user_docs/en/changes.md b/user_docs/en/changes.md index fd7d9dc822e..c0561db6b99 100644 --- a/user_docs/en/changes.md +++ b/user_docs/en/changes.md @@ -31,6 +31,8 @@ Add-ons will need to be re-tested and have their manifest updated. These are breaking API changes. Please open a GitHub issue if your add-on has an issue with updating to the new API. +* `UIAHandler.autoSelectDetectionAvailable` is removed with no replacement. (#18684, @josephsl) + #### Deprecations * `winVersion.WIN81` constant has been deprecated from winVersion module. (#18684, @josephsl): From 3500a335bf24b31287eebba273d77eb222969626 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 22:23:20 -0600 Subject: [PATCH 25/37] UIA handler (bonus): remove typing.Optoinal (handler: UIAHandler | None) --- source/UIAHandler/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/UIAHandler/__init__.py b/source/UIAHandler/__init__.py index 9780ca46dee..a3ba5986525 100644 --- a/source/UIAHandler/__init__.py +++ b/source/UIAHandler/__init__.py @@ -3,7 +3,6 @@ # This file is covered by the GNU General Public License. # See the file COPYING for more details. -from typing import Optional import ctypes import ctypes.wintypes from ctypes import ( @@ -1509,7 +1508,7 @@ def isNativeUIAElement(self, UIAElement): return False -handler: Optional[UIAHandler] = None +handler: UIAHandler | None = None def initialize(): From bdd8f6aec7346a34c1b68e77bf39bc2c04f2fa1c Mon Sep 17 00:00:00 2001 From: Sean Budd Date: Thu, 14 Aug 2025 14:42:31 +1000 Subject: [PATCH 26/37] Update user_docs/en/userGuide.md --- user_docs/en/userGuide.md | 1 - 1 file changed, 1 deletion(-) diff --git a/user_docs/en/userGuide.md b/user_docs/en/userGuide.md index 042ca29d919..5410c09d6c2 100644 --- a/user_docs/en/userGuide.md +++ b/user_docs/en/userGuide.md @@ -45,7 +45,6 @@ Major highlights include: * Operating Systems: 64-bit editions of Windows 10 and Windows 11. Windows Server 2016, 2019, 2022 and 2025. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. - * Note that 32-bit operating systems are no longer under active support. * Note that Windows 10 and Windows Server versions older than 2025 are no longer under active support. * at least 500 MB of storage space. From 96bc2599d87e1ecc9ec3ca674ae70bb1cc902e58 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Wed, 13 Aug 2025 23:04:31 -0600 Subject: [PATCH 27/37] NVDAObjects.UIA: remove unused import --- source/NVDAObjects/UIA/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/source/NVDAObjects/UIA/__init__.py b/source/NVDAObjects/UIA/__init__.py index 759c1b22521..e1f46831653 100644 --- a/source/NVDAObjects/UIA/__init__.py +++ b/source/NVDAObjects/UIA/__init__.py @@ -56,7 +56,6 @@ from NVDAObjects.behaviors import ( ProgressBar, EditableTextBase, - EditableTextWithoutAutoSelectDetection, EditableTextWithAutoSelectDetection, Dialog, Notification, From 42bace41306a77ef6273afa7a4d11ae7e06c84fa Mon Sep 17 00:00:00 2001 From: Sean Budd Date: Thu, 14 Aug 2025 15:53:36 +1000 Subject: [PATCH 28/37] Update user_docs/en/userGuide.md Co-authored-by: Leonard de Ruijter <3049216+LeonarddeR@users.noreply.github.com> --- user_docs/en/userGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_docs/en/userGuide.md b/user_docs/en/userGuide.md index 5410c09d6c2..d3156fbad5b 100644 --- a/user_docs/en/userGuide.md +++ b/user_docs/en/userGuide.md @@ -45,7 +45,7 @@ Major highlights include: * Operating Systems: 64-bit editions of Windows 10 and Windows 11. Windows Server 2016, 2019, 2022 and 2025. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. - * Note that Windows 10 and Windows Server versions older than 2025 are no longer under active support. + * Note that Windows 10 and Windows Server versions older than 2025 are no longer under active support by NV Access. * at least 500 MB of storage space. #### Recommended System Requirements {#RecommendedSystemRequirements} From 6af6ab77df6cca531b26b9a1dc9a1d6fcaedab47 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 19 Aug 2025 09:24:00 -0600 Subject: [PATCH 29/37] NVDA manifest/compatibility: remove Windows 8.1 manifest content --- source/manifest.template.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/manifest.template.xml b/source/manifest.template.xml index 85070978989..549833a9928 100644 --- a/source/manifest.template.xml +++ b/source/manifest.template.xml @@ -15,10 +15,6 @@ - - Date: Tue, 19 Aug 2025 22:05:03 -0600 Subject: [PATCH 30/37] What's new: tweak Windows version requirement entry to state Windows 10 and 11 (and 10 22H2) are minimum and recommended versions, respectively. --- user_docs/en/changes.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/user_docs/en/changes.md b/user_docs/en/changes.md index 59bf2e324c1..06b8ba4a4c0 100644 --- a/user_docs/en/changes.md +++ b/user_docs/en/changes.md @@ -18,7 +18,8 @@ This can be enabled using the "Report when lists support multiple selection" set ### Changes * NVDA no longer supports Windows 8.1. -Windows 10 (Version 1507) is the minimum Windows version supported. (#18684, @josephsl) +Windows 10 (Version 1507) is the minimum Windows version supported. +We recommend using Windows 11, or if that is not possible, latest Windows 10 release (Version 22H2). (#18684, @josephsl) * Added a button to the About dialog to copy the NVDA version number to the clipboard. (#18667) ### Bug Fixes From f8b83d36629ad12eafdad1b848a7e4d1d72a7ce8 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 19 Aug 2025 22:23:21 -0600 Subject: [PATCH 31/37] User guide: edit Windows release requirements. * Minimum: Windows 10 (Version 1507), Server 2016 and later * Recommended: Windows 10 22H2, Windows 11, Server 2022 and 2025 --- user_docs/en/userGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_docs/en/userGuide.md b/user_docs/en/userGuide.md index c3c55e7782f..22d71f9d2a0 100644 --- a/user_docs/en/userGuide.md +++ b/user_docs/en/userGuide.md @@ -50,7 +50,7 @@ Windows Server 2016, 2019, 2022 and 2025. #### Recommended System Requirements {#RecommendedSystemRequirements} -* Operating Systems: Windows 11 and Windows Server 2025. +* Operating Systems: Windows 10 (Version 22H2), Windows 11, and Windows Server 2022 and 2025. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. * at least 500 MB of storage space. * at least 4 GB of RAM. From 98f965ede0907ab7ea17ba412ee4a049c9355483 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 19 Aug 2025 22:24:48 -0600 Subject: [PATCH 32/37] Project docs/dev guide: remove 'Windows 8' qualifier on wwahost.exe --- projectDocs/dev/developerGuide/developerGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projectDocs/dev/developerGuide/developerGuide.md b/projectDocs/dev/developerGuide/developerGuide.md index 2307038b574..519ccce19b7 100644 --- a/projectDocs/dev/developerGuide/developerGuide.md +++ b/projectDocs/dev/developerGuide/developerGuide.md @@ -472,7 +472,7 @@ As with other examples in this guide, remember to delete the created app module ### App modules for hosted apps {#appModulesForHostedApps} Some executables host various apps inside or are employed by an app to display their interfaces. -These include `javaw.exe` for running various Java programs, `wwahost.exe` for some apps in Windows 8 and later, and `msedgewebview2.exe` for displaying web-like interfaces on apps employing Edge WebView2 runtime. +These include `javaw.exe` for running various Java programs, `wwahost.exe` for some web-based apps, and `msedgewebview2.exe` for displaying web-like interfaces on apps employing Edge WebView2 runtime. If an app runs inside a host executable or employs a different app to display the interface, the name of the app module must be the name as defined by the host or the interface executable, which can be found through the `AppModule.appName` property. For example, an app module for a Java app named "`test`" hosted inside `javaw.exe` must be named `test.py`. From 12780c27a34919a6cb62c0f0169fbec32227f8cb Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Tue, 19 Aug 2025 22:25:27 -0600 Subject: [PATCH 33/37] Project docs/creating dev environment: enforce Windows 10 requireemtn for running and building NVDA from source --- projectDocs/dev/createDevEnvironment.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projectDocs/dev/createDevEnvironment.md b/projectDocs/dev/createDevEnvironment.md index cdca0508929..3e9ce23222d 100644 --- a/projectDocs/dev/createDevEnvironment.md +++ b/projectDocs/dev/createDevEnvironment.md @@ -36,7 +36,8 @@ git pull ## Supported Operating Systems -Although NVDA can run on any Windows version starting from Windows 8.1, building NVDA from source is currently limited to only Windows 10 and above. +At a minimum, running and building NVDA from source requires Windows 10 (Version 1507). +We recommend Windows 11 to work with features under active support, and if you need to use Windows 10, use Version 22H2. ## Dependencies From ed9c0cbff1da6353be71dc07aadeb40933ccc593 Mon Sep 17 00:00:00 2001 From: Sean Budd Date: Wed, 20 Aug 2025 15:34:48 +1000 Subject: [PATCH 34/37] Apply suggestions from code review --- user_docs/en/changes.md | 4 ++-- user_docs/en/userGuide.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/user_docs/en/changes.md b/user_docs/en/changes.md index 06b8ba4a4c0..ae2111f3056 100644 --- a/user_docs/en/changes.md +++ b/user_docs/en/changes.md @@ -6,7 +6,7 @@ * This release breaks compatibility with existing add-ons. * Windows 8.1 is no longer supported. -Windows 10 (Version 1507) is the minimum Windows version supported. +Windows 10 is the minimum Windows version supported. We recommend updating to Windows 11, or when that's not possible, to the latest Windows 10 version (22H2). * 32-bit Windows is no longer supported. @@ -19,7 +19,7 @@ This can be enabled using the "Report when lists support multiple selection" set * NVDA no longer supports Windows 8.1. Windows 10 (Version 1507) is the minimum Windows version supported. -We recommend using Windows 11, or if that is not possible, latest Windows 10 release (Version 22H2). (#18684, @josephsl) +We recommend using Windows 11, or if that is not possible, the latest Windows 10 release (Version 22H2). (#18684, @josephsl) * Added a button to the About dialog to copy the NVDA version number to the clipboard. (#18667) ### Bug Fixes diff --git a/user_docs/en/userGuide.md b/user_docs/en/userGuide.md index 22d71f9d2a0..9f5fccf1f23 100644 --- a/user_docs/en/userGuide.md +++ b/user_docs/en/userGuide.md @@ -45,7 +45,7 @@ Major highlights include: * Operating Systems: 64-bit editions of Windows 10 and Windows 11. Windows Server 2016, 2019, 2022 and 2025. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. - * Note that Windows 10 and Windows Server versions older than 2025 are no longer under active support by NV Access. + * Note that Windows 10 versions older than 22H2 and Windows Server versions older than 2022 are no longer under active support by NV Access. * at least 500 MB of storage space. #### Recommended System Requirements {#RecommendedSystemRequirements} From 7b1de158a09d1916dc20e5a7cb326a509315a389 Mon Sep 17 00:00:00 2001 From: Joseph Lee Date: Thu, 21 Aug 2025 20:01:54 -0600 Subject: [PATCH 35/37] User guide: reorder Windows 11/11 requireement Co-authored-by: Sascha Cowley <16543535+SaschaCowley@users.noreply.github.com> --- user_docs/en/userGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_docs/en/userGuide.md b/user_docs/en/userGuide.md index 9f5fccf1f23..1fce2f0b4d1 100644 --- a/user_docs/en/userGuide.md +++ b/user_docs/en/userGuide.md @@ -50,7 +50,7 @@ Windows Server 2016, 2019, 2022 and 2025. #### Recommended System Requirements {#RecommendedSystemRequirements} -* Operating Systems: Windows 10 (Version 22H2), Windows 11, and Windows Server 2022 and 2025. +* Operating Systems: Windows 11 or Windows 10 (Version 22H2), and Windows Server 2025 or 2022. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. * at least 500 MB of storage space. * at least 4 GB of RAM. From 4473ee9cf220871b972df3273ae8a35c430a6d32 Mon Sep 17 00:00:00 2001 From: Sean Budd Date: Fri, 22 Aug 2025 15:55:08 +1000 Subject: [PATCH 36/37] Update user_docs/en/userGuide.md --- user_docs/en/userGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_docs/en/userGuide.md b/user_docs/en/userGuide.md index 1fce2f0b4d1..aecd58e4511 100644 --- a/user_docs/en/userGuide.md +++ b/user_docs/en/userGuide.md @@ -50,7 +50,7 @@ Windows Server 2016, 2019, 2022 and 2025. #### Recommended System Requirements {#RecommendedSystemRequirements} -* Operating Systems: Windows 11 or Windows 10 (Version 22H2), and Windows Server 2025 or 2022. +* Operating Systems: Windows 11 or Windows 10 (Version 22H2), and Windows Server 2025 or 2022. * both AMD64 and ARM64 variants of Windows are supported, including Copilot+ PCs. * at least 500 MB of storage space. * at least 4 GB of RAM. From f084656dbb387ca8aa85286b0d45b616189db1e4 Mon Sep 17 00:00:00 2001 From: Sean Budd Date: Tue, 26 Aug 2025 10:51:11 +1000 Subject: [PATCH 37/37] Update user_docs/en/changes.md --- user_docs/en/changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_docs/en/changes.md b/user_docs/en/changes.md index 48cb1d95123..01ff3fecea7 100644 --- a/user_docs/en/changes.md +++ b/user_docs/en/changes.md @@ -56,7 +56,7 @@ Use `NVDAHelper.localLib.dll` for access to the `ctypes.CDLL` if necessary. (#18 #### Deprecations -* `winVersion.WIN81` constant has been deprecated from winVersion module. (#18684, @josephsl): +* `winVersion.WIN81` constant has been deprecated from the `winVersion` module. (#18684, @josephsl): * `NVDAHelper.versionedLibPath` is deprecated. Use `NVDAState.ReadPaths.versionedLibX86Path` instead. (#18207) * `NVDAHelper.coreArchLibPath` is deprecated.