A lot of bugfixes in the past two weeks, nothing too big. Today I've been working on the PackageManager dialog a little more, tweaked it to improve load times and also improving how it handles Package Compatibility.
If a package or any of its dependencies differ in a minor version from their corresponding local packages, they will be deemed "likely compatible", if the differ in a major version number, they will be considered "likely incompatible". When viewing packages in the online repository and deciding which ones to install, the ones that are likely incompatible will be marked as such using a new icon - similar to updates that might introduce incompatibilities for other installed packages.
Also, a MessageBox will ask the user to confirm the operation if any of it involves introducing a likely incompatibility. He can still click "Yes" and hope to be lucky (which may work in certain cases!), but at least everyone is warned
This is going to become very important in preparation for the next "bigger" update, which may change API in critical places. So in order to avoid breaking everything for an unsuspecting user, a warning and info system is now in place to make sure it is obvious that an update may not
always be a simple drop in. Taking the leap from, say, Duality 1.6 to 1.7 will usually work without issues, but to 2.0? That's not quite as easy. It doesn't really affect Duality's core packages themselves, as they're always compatible to each other, but it's more about what custom packages users add and for which Duality version they have been built.
Most importantly, the recent Package Manager Dialog update covers the following situations:
- Updating a Package, passing a major version gap: Warning icon, user confirmation required.
- Installing a Package that is either too old or too new: Warning icon, user confirmation required.
And hopefully, that's enough to help users not to run into problems here.
As a side note, some UI elements have also been updated: There's a License link now, and Release Notes will be displayed in a scrollable text box, rather than a label.