diff --git a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/Interface_PViewModel.cs b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/Interface_PViewModel.cs
index c0a4e02df..a4843e2b4 100644
--- a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/Interface_PViewModel.cs
+++ b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/Interface_PViewModel.cs
@@ -5,6 +5,7 @@
using UniGetUI.Avalonia.ViewModels;
using UniGetUI.Core.Data;
using UniGetUI.Core.Logging;
+using UniGetUI.Core.SettingsEngine;
using UniGetUI.Core.Tools;
namespace UniGetUI.Avalonia.ViewModels.Pages.SettingsPages;
@@ -13,6 +14,12 @@ public partial class Interface_PViewModel : ViewModelBase
{
public bool IsWindows { get; } = OperatingSystem.IsWindows();
+ ///
+ /// True when the user is enrolled in the beta program. In that case the modern UI is forced
+ /// and the classic-mode toggle should be disabled.
+ ///
+ public bool IsBetaTester { get; } = Settings.Get(Settings.K.EnableUniGetUIBeta);
+
[ObservableProperty] private string _iconCacheSizeText = "";
public event EventHandler? RestartRequired;
diff --git a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/Interface_P.axaml b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/Interface_P.axaml
index deb2d35fa..dec3e20c6 100644
--- a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/Interface_P.axaml
+++ b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/Interface_P.axaml
@@ -31,6 +31,8 @@
Text="{t:Translate Use classic mode}"
WarningText="{t:Translate Restart UniGetUI to apply this change}"
StateChangedCommand="{Binding ShowRestartRequiredCommand}"
+ IsEnabled="{Binding !IsBetaTester}"
+ ToolTip.Tip="{t:Translate The classic UI is disabled for beta testers}"
CornerRadius="8"/>
diff --git a/src/UniGetUI.Tests/ModernAppLauncherTests.cs b/src/UniGetUI.Tests/ModernAppLauncherTests.cs
index 2ac76d353..895d8cf1a 100644
--- a/src/UniGetUI.Tests/ModernAppLauncherTests.cs
+++ b/src/UniGetUI.Tests/ModernAppLauncherTests.cs
@@ -37,6 +37,16 @@ public void ClassicModeDefaultsToEnabled()
Assert.False(ModernAppLauncher.IsClassicModeEnabled());
}
+ [Fact]
+ public void BetaTestersDefaultToModernUI()
+ {
+ Assert.True(ModernAppLauncher.IsClassicModeEnabled());
+
+ Settings.Set(Settings.K.EnableUniGetUIBeta, true);
+
+ Assert.False(ModernAppLauncher.IsClassicModeEnabled());
+ }
+
[Fact]
public void ResolveModernExecutablePath_PrefersRootExecutable()
{
diff --git a/src/UniGetUI/ModernAppLauncher.cs b/src/UniGetUI/ModernAppLauncher.cs
index 68cd98274..6f96c8881 100644
--- a/src/UniGetUI/ModernAppLauncher.cs
+++ b/src/UniGetUI/ModernAppLauncher.cs
@@ -9,7 +9,8 @@ internal static class ModernAppLauncher
internal const string ModernAppDirectoryName = "Avalonia";
internal const string ModernAppExecutableName = "UniGetUI.Avalonia.exe";
- public static bool IsClassicModeEnabled() => !Settings.Get(Settings.K.DisableClassicMode);
+ public static bool IsClassicModeEnabled() =>
+ !Settings.Get(Settings.K.DisableClassicMode) && !Settings.Get(Settings.K.EnableUniGetUIBeta);
public static void Launch(string[] args)
{