Handle incompatible add-ons when upgrading/downgrading NVDA API versions#15439
Conversation
|
What happens if a downgrade would enable an incompatible add-on, but the add-on was previously disabled explicitly?
|
|
This should not be affected - however I'd note that we generally don't support downgrades, and that the goal of this PR is to prevent add-ons from getting to a state where they are stuck as incompatible and blocked. |
See test results for failed build of commit e9f57c9983 |
|
So maybe it would be nice to clarify (elsewhere than in comments of issues/PRs) what is supported or not while downgrading NVDA. E.g.:
|
|
There are two cases of downgrade:
In my opinion, the fact that NVDA does not support downgrading refers to the first situation. There should be better support for the second situation, at least there should be no serious errors or missing functions. |
ba3bade to
ecc24e6
Compare
…or the pickling and unpickling process. (#15556) Fixes #15554 Summary of the issue: When pickling add-ons state it is necessary to use only builtin types, so that it can be loaded in older versions of NVDA. IN PR #15439 the backCompatToVersion was mistakenly pickled as a custom named tuple MajorMinorPatch. This means it is impossible to start older versions of NVDA with the config from the latest beta NVDA crashes on startup. Description of user facing changes It should be once again possible to start older versions of NVDA with the config used with the latest beta. Description of development approach The manualOverridesAPIVersion is pickled as a standard tuple. To make sure similar regressions are not introduced I have added unit test covering various scenarios of converting state to, and loading it from, pickled data. Note that I have intentionally not used pickle files, since when the given custom data type is added to NVDA it will always be unpickled successfully.
Link to issue number:
Fixes #15437
Fixes #15412
Fixes #15414
Summary of the issue:
There are several scenarios which need to be supported when updating/downgrading NVDA with incompatible add-ons
Description of user facing changes
Description of development approach
Store the BACK_COMPAT_TO version in the addon state pickle.
When updating the BACK_COMPAT_TO version, reset the incompatibility override state.
When downgrading, re-check add-on compatibility
Testing strategy:
Refer to manual test plan.
Builds:
https://drive.google.com/file/d/1iSsnwp3yg4LRl3p0v0mVINyU8YDmVe1f/view?usp=sharing
Known issues with pull request:
There may be minor issues when downgrading to versions that don't include this patch from a version with this patch.
Nothing major has been discovered.
Change log entries:
Bug fixes
Code Review Checklist: