Mark virtual dependencies as auto-installed#4499
Merged
HebaruSan merged 1 commit intoKSP-CKAN:masterfrom Jan 17, 2026
Merged
Conversation
This comment was marked as off-topic.
This comment was marked as off-topic.
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.
Problem / Motivation
Cause
Virtual dependency choice is driven by a
TooManyModsProvideKrakenexception that halts the install. Then the UI prompts the user to choose, adds their choice to the changeset, and re-starts the install. So virtual dependencies are always in the changeset, making them appear as manual user choices. (xref #2753)Changes
Now when the user chooses a mod to satisfy a virtual dependency, each UI adds the module to a list of mods that should be marked as auto-installed, which is passed to
InstallListandUpgradeand used to set theautoInstalledparameter ofRegistry.RegisterModule.Fixes #4428.
Caveats / Objections
I don't love adding a new parameter to
InstallListandUpgradefor this, or making this common requirement live in UI-specific code. I anticipate a future project to:InstallList,Upgrade, andUninstallListfromModuleInstallerTooManyModsProvideKrakenModChangeobject to CoreApplyChangestoModuleInstallerthat:ModChangesThis would dramatically simplify the per-UI code for installing by better encapsulating the common/redundant logic in one place in Core.
... but that's a pretty big change, and for now this way of doing it is pretty minimal and safe and will serve as an anchor to ensure this feature is incorporated into that future rewrite, should it occur.