diff --git a/installer/PSLauncher.iss b/installer/PSLauncher.iss
index c7b934c..f1a43c6 100644
--- a/installer/PSLauncher.iss
+++ b/installer/PSLauncher.iss
@@ -11,7 +11,7 @@
#define MyAppName "PROSERVE Launcher"
#define MyAppShortName "PS_Launcher"
-#define MyAppVersion "0.27.1"
+#define MyAppVersion "0.27.2"
#define MyAppPublisher "ASTERION VR"
#define MyAppURL "https://asterionvr.com"
#define MyAppExeName "PS_Launcher.exe"
diff --git a/src/PSLauncher.App/PSLauncher.App.csproj b/src/PSLauncher.App/PSLauncher.App.csproj
index 59017db..de7da73 100644
--- a/src/PSLauncher.App/PSLauncher.App.csproj
+++ b/src/PSLauncher.App/PSLauncher.App.csproj
@@ -18,9 +18,9 @@
PROSERVE Launcher
© 2026 ASTERION VR — All rights reserved
PSLauncher.App
- 0.27.1
- 0.27.1.0
- 0.27.1.0
+ 0.27.2
+ 0.27.2.0
+ 0.27.2.0
true
diff --git a/src/PSLauncher.Core/Licensing/LicenseService.cs b/src/PSLauncher.Core/Licensing/LicenseService.cs
index 2640294..eb9067b 100644
--- a/src/PSLauncher.Core/Licensing/LicenseService.cs
+++ b/src/PSLauncher.Core/Licensing/LicenseService.cs
@@ -212,6 +212,13 @@ public sealed class LicenseService : ILicenseService
OwnerName = _config.License.CachedOwnerName,
DownloadEntitlementUntil = _config.License.CachedEntitlementUntil,
ServerTime = lastValidation,
+ // Restauration des champs channel + canSeeBetas (ajoutés persistants
+ // depuis v0.27.2). Sans ça, le channelProvider du ManifestService
+ // retombait sur null à chaque relance, le client fetch sans
+ // ?channel=, et l'utilisateur ne voyait que les versions default —
+ // jamais les builds spécifiques à son channel (firefighter, police…).
+ Channel = _config.License.CachedChannel,
+ CanSeeBetas = _config.License.CachedCanSeeBetas,
};
}
@@ -227,6 +234,8 @@ public sealed class LicenseService : ILicenseService
_config.License.CachedOwnerName = response.OwnerName;
_config.License.CachedEntitlementUntil = response.DownloadEntitlementUntil;
_config.License.CachedStatus = response.Status;
+ _config.License.CachedChannel = response.Channel;
+ _config.License.CachedCanSeeBetas = response.CanSeeBetas;
_configStore.Save(_config);
}
diff --git a/src/PSLauncher.Models/LocalConfig.cs b/src/PSLauncher.Models/LocalConfig.cs
index 838c3b5..f65f11a 100644
--- a/src/PSLauncher.Models/LocalConfig.cs
+++ b/src/PSLauncher.Models/LocalConfig.cs
@@ -322,6 +322,22 @@ public sealed class LicenseConfig
public DateTime? CachedEntitlementUntil { get; set; }
public string? CachedOwnerName { get; set; }
+ ///
+ /// Channel de distribution attribué à cette license côté serveur (NULL =
+ /// aucun ⇒ accès uniquement aux versions taggées 'default'). Persisté ici
+ /// pour que restaure ce champ entre
+ /// deux lancements du launcher — sans ça, le channelProvider du
+ /// ManifestService retombait sur null à chaque relance et le client
+ /// fetchait toujours le manifest default.
+ ///
+ public string? CachedChannel { get; set; }
+
+ ///
+ /// Flag canSeeBetas de la license. Persisté pour la même raison
+ /// que : restauration entre deux lancements.
+ ///
+ public bool CachedCanSeeBetas { get; set; }
+
///
/// Statut tel que renvoyé par le serveur lors de la dernière validation : "valid",
/// "expired", "revoked", "invalid", "machine_limit_exceeded". Persisté pour qu'une