Skip to content

support of minimum age directly in managers #4809

Open
Gabriel Dufresne (GabrielDuf) wants to merge 1 commit into
mainfrom
minimum-Update-Improvement
Open

support of minimum age directly in managers #4809
Gabriel Dufresne (GabrielDuf) wants to merge 1 commit into
mainfrom
minimum-Update-Improvement

Conversation

@GabrielDuf
Copy link
Copy Markdown
Contributor

This pull request enhances how package managers' support for package release dates is represented and displayed in the application. Instead of a simple yes/no, the new implementation introduces a three-level enum (No, Partial, Yes) to reflect whether release date information is fully, partially, or not at all available for each package manager. This change improves both the user interface and the accuracy of information shown to users.

Key changes include:

Core capabilities and data model updates:

  • Introduced a new enum, PackageReleaseDateSupport, with values No, Partial, and Yes to represent the level of release date support for package managers. The ManagerCapabilities struct now uses this enum in the new KnowsPackageReleaseDate property.

  • Updated all package manager implementations (e.g., Apt, Bun, Cargo, Chocolatey, Dnf, DotNet, Flatpak, Homebrew, Npm, Pacman, Pip, PowerShell, PowerShell7, Scoop, Snap, Vcpkg) to set the appropriate value for KnowsPackageReleaseDate based on their actual capabilities.
    User interface improvements:

  • Updated the settings UI (UpdatesViewModel.cs, PackageManagerPage.axaml.cs) to use the new enum, removing hardcoded lists and instead dynamically displaying whether release date support is full, partial, or absent for each manager. The UI now shows a yellow "Partial" badge and description where appropriate.

Localization and messaging:

  • Added new localization strings for "Partial" and for the explanatory message when only some packages have release dates.
    These changes result in a more accurate, maintainable, and user-friendly way to display package release date support across different package managers.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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 refines how UniGetUI models and displays package managers’ ability to provide package release dates, replacing the previous binary “supported / not supported” logic with a 3-level capability (No, Partial, Yes) exposed via ManagerCapabilities.KnowsPackageReleaseDate. This improves UI accuracy for features that depend on release dates (notably the “minimum update age” settings).

Changes:

  • Added PackageReleaseDateSupport enum and a KnowsPackageReleaseDate capability on ManagerCapabilities.
  • Updated multiple manager implementations to declare their release-date support level (including WinGet as Partial).
  • Updated WinUI and Avalonia settings UIs to consume the capability instead of hardcoded manager name lists; added new English localization strings and improved WinGet manifest parsing to read root-level ReleaseDate.

Reviewed changes

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

Show a summary per file
File Description
src/UniGetUI/Pages/SettingsPages/ManagersPages/PackageManager.xaml.cs Uses KnowsPackageReleaseDate to enable/disable and describe per-manager minimum update age setting (No/Partial/Yes messaging).
src/UniGetUI/Pages/SettingsPages/GeneralPages/Updates.xaml.cs Builds release-date compatibility table using PackageReleaseDateSupport and adds a “Partial” badge state.
src/UniGetUI.PackageEngine.Managers.WinGet/WinGet.cs Declares WinGet release-date support as Partial.
src/UniGetUI.PackageEngine.Managers.WinGet/ClientHelpers/PingetPackageDetailsProvider.cs Populates UpdateDate from manifest root ReleaseDate with optional installer override.
src/UniGetUI.PackageEngine.Managers.Vcpkg/Vcpkg.cs Declares vcpkg release-date support as No.
src/UniGetUI.PackageEngine.Managers.Snap/Snap.cs Declares Snap release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.Scoop/Scoop.cs Declares Scoop release-date support as No.
src/UniGetUI.PackageEngine.Managers.PowerShell7/PowerShell7.cs Declares PowerShell 7 release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.PowerShell/PowerShell.cs Declares PowerShell release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.Pip/Pip.cs Declares Pip release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.Pacman/Pacman.cs Declares Pacman release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.Npm/Npm.cs Declares Npm release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.Homebrew/Homebrew.cs Declares Homebrew release-date support as No.
src/UniGetUI.PackageEngine.Managers.Flatpak/Flatpak.cs Declares Flatpak release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.Dotnet/DotNet.cs Declares DotNet release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.Dnf/Dnf.cs Declares Dnf release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.Chocolatey/Chocolatey.cs Declares Chocolatey release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.Cargo/Cargo.cs Declares Cargo release-date support as Yes.
src/UniGetUI.PackageEngine.Managers.Bun/Bun.cs Declares Bun release-date support as Yes (and fixes initializer trailing comma).
src/UniGetUI.PackageEngine.Managers.Apt/Apt.cs Declares Apt release-date support as Yes.
src/UniGetUI.PackageEngine.Enums/ManagerCapabilities.cs Introduces PackageReleaseDateSupport and ManagerCapabilities.KnowsPackageReleaseDate.
src/UniGetUI.Avalonia/Views/Pages/SettingsPages/PackageManagerPage.axaml.cs Avalonia per-manager minimum update age UI now uses KnowsPackageReleaseDate with No/Partial/Yes messaging.
src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/UpdatesViewModel.cs Avalonia release-date compatibility table now supports “Partial” state.
src/Languages/lang_en.json Adds English strings for “Partial” and the partial-support explanatory message.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/Languages/lang_en.json
Comment thread src/Languages/lang_en.json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants