feat: Re-resolve extension dependencies on Beutl version change#1611
Open
feat: Re-resolve extension dependencies on Beutl version change#1611
Conversation
Track the Beutl version at which each extension's dependencies were resolved. On startup, if the current version differs, re-run dependency resolution so that extensions pick up the updated CoreLibraries packages. - Add BeutlVersion field to installedPackages.json (backward-compatible) - Add ResolvePackageDependenciesTask startup task - Add PackageInstaller.ReResolveDependencies() method - Add LoggerAdapter to bridge NuGet ILogger to M.E.Logging - LoadInstalledExtensionTask now awaits dependency re-resolution
Contributor
|
No TODO comments were found. |
Contributor
Minimum allowed line rate is |
Contributor
There was a problem hiding this comment.
Pull request overview
Adds startup-time package dependency re-resolution when the Beutl app version changes, so installed extensions can refresh their dependency graphs across upgrades and gracefully handle resolution failures.
Changes:
- Track the Beutl version used for dependency resolution per installed package and persist it in
installedPackages.json. - Add a new startup task to re-resolve dependencies when the stored Beutl version differs from the current one.
- Skip loading installed extensions whose dependency re-resolution failed, surfacing them via existing startup failure reporting.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Beutl/Services/StartupTasks/Startup.cs | Registers the new dependency re-resolution startup task and wires Startup into LoadInstalledExtensionTask. |
| src/Beutl/Services/StartupTasks/ResolvePackageDependenciesTask.cs | New task that detects packages needing re-resolution and runs PackageInstaller to re-resolve dependencies, recording failures. |
| src/Beutl/Services/StartupTasks/LoadInstalledExtensionTask.cs | Waits for dependency re-resolution and skips loading packages that failed re-resolution, recording failures for UI reporting. |
| src/Beutl.Api/Services/PluginDependencyResolver.cs | Switches NuGet dependency extraction logging from NullLogger to the new adapter-backed logger. |
| src/Beutl.Api/Services/PackageInstaller.cs | Adds ReResolveDependencies helper and defaults NuGet logging to the adapter-backed logger instead of NullLogger/ConsoleLogger. |
| src/Beutl.Api/Services/LoggerAdapter.cs | New bridge from Microsoft.Extensions.Logging.ILogger to NuGet.Common.ILogger. |
| src/Beutl.Api/Services/InstalledPackageRepository.cs | Persists and restores per-package “resolved under Beutl version”, and exposes APIs to query/update it. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
| _logger.LogTrace(message.ToString()); | ||
| break; | ||
| case LogLevel.Minimal: | ||
| _logger.LogTrace(message.ToString()); |
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.
Description
Track the Beutl version for each extension's dependencies and re-run dependency resolution on startup if the version differs. Introduce a new task for resolving package dependencies and handle failures during the loading of packages.
Breaking changes
The
LoadInstalledExtensionTaskconstructor now requires aStartupparameter.Fixed issues