You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add beta channel support with undotted prerelease version ordering - #5551
Have you checked that there aren't other open pull requests for the same changes?
Have you tested that the committed code can be executed without errors?
Have you confirmed that this issue is caused by UniGetUI itself, and not by the package manager or the package involved?
If the same issue can be reproduced outside UniGetUI with the relevant package manager or with the package itself, please report it there first. UniGetUI should only be used to track issues that are specific to UniGetUI's behavior or integration.
Summary
Adds end-to-end beta channel support for UniGetUI using undotted prerelease versions (2026.3.2-beta1, 2026.3.2-beta2, 2026.3.2-beta3 upgrading to 2026.3.2):
SemanticVersion (src/UniGetUI.Core.Tools/SemanticVersion.cs): Compare alphanumeric prerelease identifiers with a shared prefix and trailing integer (beta1, beta2, beta10, rc1, rc2) numerically by suffix while preserving standard SemVer ordering (2026.3.2-beta1 < 2026.3.2-beta2 < 2026.3.2-beta10 < 2026.3.2).
Parse and compare updater versions via SemanticVersion with 4-part .0 core normalization (2026.3.2.0-beta1 == 2026.3.2-beta1 < 2026.3.2 == 2026.3.2.0).
Update SelectChannel so Beta is selected when EnableUniGetUIBeta is enabled and Beta is strictly newer than Current, falling back to Current if Beta is absent or once final Current catches up/passes Beta.
Settings UI (src/UniGetUI.Avalonia/Views/Pages/SettingsPages/General.axaml.cs): Wire GeneralUpdaterCard.Click ("Check for updates"), GeneralUpdaterCard.StateChanged, and EnableUniGetUIBetaCard.StateChanged to trigger update checks.
Release & Version Stamping (scripts/set-version.ps1, .github/workflows/build-release.yml):
Fix $ManifestPath in scripts/set-version.ps1 to src/UniGetUI.Avalonia/app.manifest and strip leading v/V and + metadata when computing the 4-part file/assembly version.
Preserve prerelease suffixes when computing onedrive-version (2026.3.2-beta1 → 2026.3.2.0-beta1) and pass --prerelease to gh release create when publishing a prerelease version.
Validation
dotnet test src/UniGetUI.PackageEngine.Tests/UniGetUI.PackageEngine.Tests.csproj --filter "FullyQualifiedName~SemanticVersionTests" --verbosity q --nologo /p:Platform=x64 /p:UseSharedCompilation=false /m:1 — Passed (32/32 across net10.0 and net10.0-windows10.0.26100.0)
Preserve nonzero fourth version components here. NormalizeVersionForComparison drops every revision, not just .0, so 2026.3.2.1-beta1 becomes 2026.3.2-beta.1. The workflow now accepts four-part base versions, but with Current=2026.3.2.0 and Beta=2026.3.2.1-beta1, channel selection incorrectly chooses Current. Only remove a zero revision, and cover nonzero revisions in the updater comparison and channel-selection tests.
- Only strip zero fourth version segments (.0) in TryExtractNormalizedCoreVersion so nonzero four-part versions (e.g. 2026.3.2.1-beta1) are preserved during updater version comparison and channel selection
- Track channel per updater attempt in UpdaterAttemptCoordinator so changing channels safely ends an obsolete pending-consent attempt and checks the newly selected channel without overlapping downloads
- Add unit tests covering nonzero four-part revisions and channel switching while awaiting consent
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Call DismissUpdateBanner() before returning from both channel-change abort branches (after loading ProductInfo and before prompting the user) so any non-closable check/download progress banner is closed when an attempt is superseded.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This branch has not been deployed
No deployments
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
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.
If the same issue can be reproduced outside UniGetUI with the relevant package manager or with the package itself, please report it there first. UniGetUI should only be used to track issues that are specific to UniGetUI's behavior or integration.
Summary
Adds end-to-end beta channel support for UniGetUI using undotted prerelease versions (
2026.3.2-beta1,2026.3.2-beta2,2026.3.2-beta3upgrading to2026.3.2):SemanticVersion(src/UniGetUI.Core.Tools/SemanticVersion.cs): Compare alphanumeric prerelease identifiers with a shared prefix and trailing integer (beta1,beta2,beta10,rc1,rc2) numerically by suffix while preserving standard SemVer ordering (2026.3.2-beta1 < 2026.3.2-beta2 < 2026.3.2-beta10 < 2026.3.2).AutoUpdaterHelpers(src/Shared/AutoUpdater.Helpers.cs) &AvaloniaAutoUpdater(src/UniGetUI.Avalonia/Infrastructure/AvaloniaAutoUpdater.cs):SemanticVersionwith 4-part.0core normalization (2026.3.2.0-beta1 == 2026.3.2-beta1 < 2026.3.2 == 2026.3.2.0).SelectChannelsoBetais selected whenEnableUniGetUIBetais enabled andBetais strictly newer thanCurrent, falling back toCurrentifBetais absent or once finalCurrentcatches up/passesBeta.src/UniGetUI.Avalonia/Views/Pages/SettingsPages/General.axaml.cs): WireGeneralUpdaterCard.Click("Check for updates"),GeneralUpdaterCard.StateChanged, andEnableUniGetUIBetaCard.StateChangedto trigger update checks.scripts/set-version.ps1,.github/workflows/build-release.yml):$ManifestPathinscripts/set-version.ps1tosrc/UniGetUI.Avalonia/app.manifestand strip leadingv/Vand+metadata when computing the 4-part file/assembly version.onedrive-version(2026.3.2-beta1→2026.3.2.0-beta1) and pass--prereleasetogh release createwhen publishing a prerelease version.Validation
dotnet test src/UniGetUI.PackageEngine.Tests/UniGetUI.PackageEngine.Tests.csproj --filter "FullyQualifiedName~SemanticVersionTests" --verbosity q --nologo /p:Platform=x64 /p:UseSharedCompilation=false /m:1— Passed (32/32 acrossnet10.0andnet10.0-windows10.0.26100.0)dotnet test src/UniGetUI.Tests/UniGetUI.Tests.csproj --filter "FullyQualifiedName~AutoUpdaterTests" --verbosity q --nologo /p:Platform=x64 /p:UseSharedCompilation=false /m:1— Passed (37/37)dotnet format whitespace src --folder --verify-no-changes --verbosity minimal— Passeddotnet format style src/UniGetUI.Windows.slnx --no-restore --verify-no-changes --verbosity minimal— Passed