As for profiles comment, consider the following scenario:
Imagine a user creates two configuration profiles: a manual
profile, and an app-specific profile. With this set up, three
profiles will be used: normal configuration, manual profile, and
app-specific profile. Now suppose a feature to notify users
about unsaved settings is implemented.
Now suppose this user activates the manual profile, called
"profile 1". Then the user switches to the app-specific profile
for an app, say Windows Terminal because the user needs to read
terminal output, which takes place as soon as system focus moves
to Windows Terminal window. now suppose the user opens object
presentation settings panel from Windows Terminal window and
tells NVDA to not announce object descriptions (by default, this
setting is on).
Scenario 1: after changing settings, user exits NVDA while
focused on Windows Terminal. NVDA says the current profile is
not saved and offers to save changes.
Scenario 2: after changing settings, user moves to a different
app and exits NVDA. NVDA will prompt to save settings.
Scenario 3: after changing settings, not only the user moves to
a different app, but deactivates profile 1, the manual
configuration profile, and then exits NVDA.
Scenario 4: after changing settings, not only the user moves to
a different app and deactivates manual profile, the user creates
a new profile and activates it. Then the user changes Windows
OCR language and does not save settings, then exits NVDA.
- Scenario 1 is straightforward - at least the user thinks
NVDA is presenting config save dialog while "focused" on
Windows Terminal when in fact Windows Terminal profile is
deactivated. Why? Because exit dialog is part of NVDA itself,
not Windows Terminal, therefore the app is different and the
Windows Terminal profile is deactivated.
- Scenario 2 is a bit easier to understand on the surface but
may confuse users without specifying exactly which profile is
- Scenario 3 is similar to scenario 2 but with an important
caveat: what if the user changes something from manual profile
without saving it? If the setting is not changed, NVDA would
have an easier time because only one profile needs to be
saved. But if you do not save settings in more than one
profile, then NVDA must present settings for multiple
- Scenario 4 is perhaps the most complicated set up and
demonstrates the question raised from scenario 3.
These complications arise due to how configuration profiles are
organized and handled from NVDA, something I hope to write about
when given a chance to do so. But suffice to say that
configuration profiles handling uses at least three components:
configuration maps, settings scope, and profile switch