Repository navigation
Conversation
akj
force-pushed
the
fix-18905-launcher-keeps-config
branch
from
October 26, 2026 15:09
f623cdf to
5a178d8
Compare
akj
marked this pull request as ready for review
October 27, 2026 11:30
When the launcher can't load the installed copy's configuration, for example because it is older than the installed copy, it now uses factory defaults without renaming nvda.ini to nvda.ini.corrupted.bak. Previously running an older launcher left the installed copy without its settings. The startup message no longer claims the configuration was reset when the file was left alone. The warning shown before installing an earlier version now says the configuration will be reset, when the launcher could not load it. Fixes nvaccess#18905 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Secure mode, such as on the sign-in screen, uses its own system configuration. It keeps backing up a configuration it can't load, so the error isn't reported on every start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reverting to the saved configuration in the launcher reloads a configuration it can't load. Logging that error read the configuration while it was being reset, which raised an exception and left NVDA without a configuration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Handling a logged error reads the configuration, through the error sound check and the error sound itself, and the configuration is empty while it is being reset. Recovering first covers every reader, so the narrower logHandler change is no longer needed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
akj
force-pushed
the
fix-18905-launcher-keeps-config
branch
from
October 30, 2026 13:02
fe57cb0 to
fe64c5e
Compare
This branch has not been deployed
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.
Link to issue number:
Fixes #18905
Summary of the issue:
The NVDA installer (launcher) uses the installed copy's configuration.
If that configuration was saved by a newer version of NVDA, an earlier installer may not be able to load it.
The installer then treats the file as corrupted: it renames
nvda.initonvda.ini.corrupted.bakand continues with factory defaults.So just running an earlier installer, even only to create a portable copy, resets the installed copy's configuration.
Description of user facing changes:
The startup message says the configuration could not be loaded, possibly because a newer version of NVDA saved it, instead of saying it has been reset.
Description of developer facing changes:
None.
Description of development approach:
ConfigManager._initBaseConf, the launcher loads factory defaults without renaming the file when the configuration can't be loaded.It loads the defaults before logging the error, because handling a logged error reads the configuration, which is empty while reverting to the saved configuration.
InstallingOverNewerVersionDialogadds the reset warning when running as the launcher withconfig.conf.baseConfigErrorset.PortableCopyOverNewerVersionDialogdoesn't, as a portable copy has its own configuration.Testing strategy:
nvda.inithat fails validation:nvda.iniis unchanged and no backup is created.--secure, and the installed copy's configuration without--config-path: the file is unchanged.Known issues with pull request:
If its configuration couldn't be backed up at startup, reverting to the saved configuration can leave it without a configuration.
This predates this PR.
Code Review Checklist:
Created with Claude Opus 5.5 in Claude Code. Reviewed with gpt-6.1-sol.
🤖 Generated with Claude Code