From 33b7a067f6c843bc1d88f6184e725b7b8b3c2281 Mon Sep 17 00:00:00 2001 From: Matthias Schanzenbach Date: Fri, 25 Sep 2026 11:46:57 +0200 Subject: [PATCH] fix: package visibility logic and enhance target version resolution --- .../PackageManager/PackageStateExtensions.cs | 4 +--- src/OneWare.PackageManager/Services/PackageService.cs | 2 +- .../ViewModels/FeaturedPackageViewModel.cs | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/OneWare.Essentials/PackageManager/PackageStateExtensions.cs b/src/OneWare.Essentials/PackageManager/PackageStateExtensions.cs index 82bbd251..e4ee29c1 100644 --- a/src/OneWare.Essentials/PackageManager/PackageStateExtensions.cs +++ b/src/OneWare.Essentials/PackageManager/PackageStateExtensions.cs @@ -14,10 +14,8 @@ public static class PackageStateExtensions /// This is the single source of truth for "which version does the update button install", used /// by the package status, the package manager and the Studio updater alike. /// - public static PackageVersion? ResolveTargetVersion(this IPackageState state) + public static PackageVersion? ResolveTargetVersion(this IPackageState state, bool includePrerelease = false) { - var includePrerelease = state.InstalledVersion?.IsPrerelease ?? false; - return state.Package.Versions? .Where(x => (includePrerelease || !x.IsPrerelease) && x.IsSupportedByStudio()) .OrderByDescending(x => SemanticVersion.TryParse(x.Version, out var parsed) ? parsed : SemanticVersion.Empty) diff --git a/src/OneWare.PackageManager/Services/PackageService.cs b/src/OneWare.PackageManager/Services/PackageService.cs index 02efc472..961d372f 100644 --- a/src/OneWare.PackageManager/Services/PackageService.cs +++ b/src/OneWare.PackageManager/Services/PackageService.cs @@ -668,7 +668,7 @@ private void UpdateStatus(PackageState state) { if (state.Status == PackageStatus.NeedRestart) return; - var target = state.ResolveTargetVersion(); + var target = state.ResolveTargetVersion(true); var hasTarget = SemanticVersion.TryParse(target?.Version, out var targetVersion); var hasInstalled = SemanticVersion.TryParse(state.InstalledVersion?.Version, out var installedVersion); diff --git a/src/OneWare.PackageManager/ViewModels/FeaturedPackageViewModel.cs b/src/OneWare.PackageManager/ViewModels/FeaturedPackageViewModel.cs index 5e48c34f..304eb6da 100644 --- a/src/OneWare.PackageManager/ViewModels/FeaturedPackageViewModel.cs +++ b/src/OneWare.PackageManager/ViewModels/FeaturedPackageViewModel.cs @@ -67,8 +67,7 @@ public PackageViewModel? Target /// public bool IsVisible => _target?.PackageState.Status is PackageStatus.Available or PackageStatus.Installing - or PackageStatus.UpdateAvailable - or PackageStatus.UpdateAvailablePrerelease; + or PackageStatus.UpdateAvailable; public void Dispose() {