Skip to content

DYN-10096: On package install engine_version checks are suppressed if compatibility_matrix check passes#17173

Merged
johnpierson merged 4 commits into
DynamoDS:masterfrom
ivaylo-matov:DYN-10096-On-package-install-engine_version-checks-are-suppressed-if-compatibility_matrix-check-pass
Jun 23, 2026
Merged

DYN-10096: On package install engine_version checks are suppressed if compatibility_matrix check passes#17173
johnpierson merged 4 commits into
DynamoDS:masterfrom
ivaylo-matov:DYN-10096-On-package-install-engine_version-checks-are-suppressed-if-compatibility_matrix-check-pass

Conversation

@ivaylo-matov

Copy link
Copy Markdown
Contributor

Purpose

This PR fixes DYN-10069, where Clockwork installation on Dynamo 3.6.1 incorrectly triggers engine version warnings despite valid compatibility.

Root cause is in PackageManagerClientViewModel.ExecutePackageDownload(), which evaluates both compatibility_matrix and published engine_version. The engine version check can override valid compatibility results.

Fix:

  • made compatibility_matrix the primary compatibility source
  • only fall back to engine_version when compatibility is unknown or incompatible
  • removed hardcoded Dynamo 4.x assumption in engine version logic
  • generalized warning to any dependency with a lower major engine version than the current Dynamo runtime
  • added unit test to ensure no warnings are raised when compatibility_matrix reports compatibility

Declarations

Check these if you believe they are true

Release Notes

Fixes incorrect package compatibility warnings during installation when packages are marked compatible via the compatibility matrix.

Reviewers

@DynamoDS/eidos
@jasonstratton

FYIs

@johnpierson
@dnenov

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See the ticket for this pull request: https://jira.autodesk.com/browse/DYN-10096

@ivaylo-matov ivaylo-matov changed the title DYN-10096: On-package-install-engine_version-checks-are-suppressed-if-compatibility_matrix-check-pass DYN-10096: On package install engine_version checks are suppressed if compatibility_matrix check passes Jun 18, 2026
…n-checks-are-suppressed-if-compatibility_matrix-check-pass

@jasonstratton jasonstratton left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Address the two comments and I think it's good. ... Just let me know when you're done in order to merge.

Comment thread src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs Outdated
Comment thread test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUITests.cs
@ivaylo-matov

Copy link
Copy Markdown
Contributor Author

Address the two comments and I think it's good. ... Just let me know when you're done in order to merge.

Thanks for the review, @jasonstratton ! I've addressed both comments, the PR should be ready to merge.

…n-checks-are-suppressed-if-compatibility_matrix-check-pass
@johnpierson

Copy link
Copy Markdown
Member

After rebase, 3 failing tests pass.
image

@johnpierson johnpierson left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested locally and working great. Tested with Rhythm which is marked compatible with 4.0, but has an engine version of 2.17

@johnpierson johnpierson merged commit 82a78d4 into DynamoDS:master Jun 23, 2026
25 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates Dynamo’s package-install warning logic so that compatibility_matrix is treated as the authoritative compatibility source during installation, preventing engine_version heuristics from overriding an explicitly compatible matrix result (addressing incorrect warnings seen when installing packages like Clockwork).

Changes:

  • Skip engine_version-based warning dialogs when compatibility_matrix explicitly reports compatibility (compatible == true).
  • Generalize the “older Dynamo” warning heuristic to flag any dependency whose engine_version major is lower than the current Dynamo major.
  • Add UI tests covering both “compatibility_matrix compatible => no engine warnings” and “compatibility_matrix null => engine warnings still apply”.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.

File Description
src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerClientViewModel.cs Adjusts engine-version warning gating based on compatibility_matrix result; updates major-version heuristic for “older Dynamo” warnings.
test/DynamoCoreWpf2Tests/PackageManager/PackageManagerUITests.cs Adds tests to ensure engine-version warnings are suppressed when compatibility matrix is explicitly compatible, and still shown when compatibility data is absent.

//this message has a url link so we use the rich text box version of the message box.
showRichTextBox: true,
MessageBoxButton.OKCancel,
MessageBoxImage.Warning);
Comment on lines +1002 to +1003
//if any of the required packages use a pre 3.x version of Dynamo, show a dialog to the user
//allowing them to cancel the package download
Comment on lines +980 to +982
// also identify packages that have a Dynamo engine version from a different major version as a special case,
// as different major Dynamo versions may use different runtime frameworks - these packages may not be compatible.
// This check will return empty if the current major version does not require this validation.
var olderDynamoMessage = $"{string.Format(Dynamo.Wpf.Properties.Resources.MessagePackageOlderDynamo, productName)} {Dynamo.Wpf.Properties.Resources.MessagePackOlderDynamoLink}";

// Actually perform the download & install operations.
pmVmMock.Object.ExecutePackageDownload(id, pkgVersionObject, "");
var olderDynamoMessage = $"{string.Format(Dynamo.Wpf.Properties.Resources.MessagePackageOlderDynamo, productName)} {Dynamo.Wpf.Properties.Resources.MessagePackOlderDynamoLink}";

// Actually perform the download & install operations.
pmVmMock.Object.ExecutePackageDownload(id, pkgVersionObject, "");
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants