Skip to content

Software catalog - #5496

Merged
Gabriel Dufresne (GabrielDuf) merged 10 commits into
mainfrom
software-catalog
Oct 9, 2026
Merged

Gabriel Dufresne (GabrielDuf) merged 10 commits into
mainfrom
software-catalog

Conversation

@sduquette-devolutions

Copy link
Copy Markdown
Contributor

Software catalog display a list of software available to install. This first version will populate the catalog from a file json file stored on disk. The catalog file include the information necessary to uniquely identify a package, including its unique identifier and package source.

The catalog file is read from the following global locations:
Windows: %PROGRAMDATA%\Devolutions\UniGetUI\SoftwareCatalog.json
Linux: /etc/UniGetUI/SoftwareCatalog.json
macOS: /Library/Application Support/Devolutions/UniGetUI/SoftwareCatalog.json

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.

🟡 Changes recommended

Filtering feedback, accessibility announcements, localization synchronization, and polling scalability have unresolved issues.

6 open findings
What changed in this PR

Adds an experimental machine-wide software catalog with browsing, filtering, installation, editing, navigation, and IPC support.

Changes:

  • Adds validated, source-generated JSON catalog persistence and editor workflows.
  • Adds catalog browsing, filtering, package state, and installation UI.
  • Integrates feature flags, navigation, IPC, localization, documentation, and tests.
File Description
src/​UniGetUI.Tests/​SoftwareCatalogTests.cs Tests catalog parsing, filtering, state, and navigation.
src/​UniGetUI.Tests/​CatalogEditorTests.cs Tests editor loading, saving, searching, and discard behavior.
src/​UniGetUI.PackageEngine.PackageManagerClasses/​Packages/​InvalidImportedPackage.cs Supports explicit catalog package identities.
src/​UniGetUI.Interface.IpcApi/​IpcAppApi.cs Adds catalog IPC page names.
src/​UniGetUI.Core.Settings/​SettingsEngine_Names.cs Adds the catalog feature setting.
src/​UniGetUI.Core.Data/​CoreData.cs Defines the machine-wide data directory.
src/​UniGetUI.Core.Data.Tests/​CoreTests.cs Tests global path resolution.
src/​UniGetUI.Avalonia/​Views/​SoftwarePages/​SoftwareCatalogPage.axaml.cs Manages catalog page refresh and inventory state.
src/​UniGetUI.Avalonia/​Views/​SoftwarePages/​SoftwareCatalogPage.axaml Defines catalog views and filters.
src/​UniGetUI.Avalonia/​Views/​SoftwarePages/​DiscoverSoftwarePage.cs Adds packages from Discover to catalogs.
src/​UniGetUI.Avalonia/​Views/​SoftwarePages/​CatalogEditorPage.cs Implements the catalog editor page.
src/​UniGetUI.Avalonia/​Views/​SoftwarePages/​AbstractPackagesPage.axaml.cs Extends package-page toolbar and options support.
src/​UniGetUI.Avalonia/​Views/​SoftwarePages/​AbstractPackagesPage.axaml Adds the page-options region.
src/​UniGetUI.Avalonia/​Views/​SidebarView.axaml.cs Handles catalog sidebar selection and visibility.
src/​UniGetUI.Avalonia/​Views/​SidebarView.axaml Adds catalog navigation entries.
src/​UniGetUI.Avalonia/​Views/​Pages/​SettingsPages/​Interface_P.axaml.cs Adds catalog startup-page choices.
src/​UniGetUI.Avalonia/​Views/​Pages/​SettingsPages/​Experimental.axaml Adds the experimental feature toggle.
src/​UniGetUI.Avalonia/​Views/​MainWindow.axaml.cs Adds catalog page types and keyboard cycling.
src/​UniGetUI.Avalonia/​Views/​Controls/​CatalogSelector.cs Adds a reusable catalog selector.
src/​UniGetUI.Avalonia/​ViewModels/​SoftwarePages/​SoftwareCatalogViewModel.cs Implements catalog filtering, state, and installation.
src/​UniGetUI.Avalonia/​ViewModels/​SidebarViewModel.cs Exposes feature enablement.
src/​UniGetUI.Avalonia/​ViewModels/​MainWindowViewModel.cs Integrates catalog navigation and shutdown handling.
src/​UniGetUI.Avalonia/​ViewModels/​DialogPages/​CatalogEditorViewModel.cs Implements catalog document editing.
src/​UniGetUI.Avalonia/​Models/​SoftwareCatalog.cs Defines and persists the catalog schema.
src/​UniGetUI.Avalonia/​Infrastructure/​SettingsSearchIndex.cs Makes the feature setting searchable.
src/​UniGetUI.Avalonia/​Infrastructure/​AvaloniaBootstrapper.cs Adds feature-aware IPC navigation.
src/​Languages/​lang_en.json Adds catalog-related English strings.
docs/​CLI.md Documents catalog IPC pages.

🧠 Review effort: Balanced


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/UniGetUI.Avalonia/ViewModels/SoftwarePages/SoftwareCatalogViewModel.cs Outdated
Comment thread src/UniGetUI.Avalonia/ViewModels/SoftwarePages/SoftwareCatalogViewModel.cs Outdated
Comment thread src/UniGetUI.Avalonia/Views/SoftwarePages/CatalogEditorPage.cs
Comment thread src/UniGetUI.Avalonia/Views/SoftwarePages/CatalogEditorPage.cs
Comment thread src/UniGetUI.Avalonia/Views/SoftwarePages/SoftwareCatalogPage.axaml Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Announce changed nonempty status messages politely and file/load/save/search failures assertively through the existing announcement service. Cover priority, empty/duplicate messages, and unrelated property changes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve manager aliases, ordinal case-insensitive identity and Chocolatey's installed-only source exception. Cover predicate parity, operation lifecycle and linear enumeration scaling.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@GabrielDuf
Gabriel Dufresne (GabrielDuf) merged commit 799a18e into main Oct 9, 2026
6 checks passed
@GabrielDuf
Gabriel Dufresne (GabrielDuf) deleted the software-catalog branch October 9, 2026 18:47
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