From 8f63b9deba9cd2f193b2ce4b57feffe63bc14b0d Mon Sep 17 00:00:00 2001 From: Obsidian <123307773+LightZirconite@users.noreply.github.com> Date: Wed, 26 Aug 2026 13:36:30 +0200 Subject: [PATCH] fix(app-policy): clear the regional "unchecked" badge in the desktop layout (#75) ApplyDesktopAppPolicy pins a whole app policy through FStringAppConfigurationOverrideAppPolicy so a later GUAC response cannot replace the desktop layout. On a first launch that snapshot is the APK's bundled GuacDefaultPolicy-GlobalDist.json, which ships "ShowUncheckedBadge": true. Because the override is permanent, the account's own GUAC policy never gets a chance to correct it: on a signed-in profile the cached GUAC:-1:app-policy stays byte-identical to the bundled default plus the keys NormalizeDesktopLayout writes. That field gates the badge rendered next to the display name in the top-bar user-info widget and in the flyout profile card, labelled CommonUI.Features.Label.Unchecked ("not verified"), so verified accounts are permanently marked unverified. The desktop chrome has no such badge. --- src/runtime/roblox_desktop_app_policy.cc | 1 + tests/roblox_desktop_app_policy_test.cc | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/runtime/roblox_desktop_app_policy.cc b/src/runtime/roblox_desktop_app_policy.cc index 97b4ad9..052093b 100644 --- a/src/runtime/roblox_desktop_app_policy.cc +++ b/src/runtime/roblox_desktop_app_policy.cc @@ -189,6 +189,7 @@ void NormalizeDesktopLayout(nlohmann::json* policy) { (*policy)["SystemBarPlacement"] = "Left"; (*policy)["ShouldSystemBarUsuallyBePresent"] = true; (*policy)["DevicePreferencesPersistentPresenceVariant"] = "windows"; + (*policy)["ShowUncheckedBadge"] = false; } bool DecodePolicy(const nlohmann::json& encoded, nlohmann::json* policy) { diff --git a/tests/roblox_desktop_app_policy_test.cc b/tests/roblox_desktop_app_policy_test.cc index 99b10af..3d94a9c 100644 --- a/tests/roblox_desktop_app_policy_test.cc +++ b/tests/roblox_desktop_app_policy_test.cc @@ -73,6 +73,7 @@ void ExpectDesktopLayout(const nlohmann::json& policy) { EXPECT_EQ(policy["SystemBarPlacement"], "Left"); EXPECT_EQ(policy["ShouldSystemBarUsuallyBePresent"], true); EXPECT_EQ(policy["DevicePreferencesPersistentPresenceVariant"], "windows"); + EXPECT_EQ(policy["ShowUncheckedBadge"], false); } TEST(RobloxDesktopAppPolicyTest, @@ -86,7 +87,7 @@ TEST(RobloxDesktopAppPolicyTest, const nlohmann::json original_policy = { {"PlatformGroup", "Unknown"}, {"UseGridHomePage", nullptr}, {"SystemBarPlacement", "Bottom"}, {"EligibleForVideoCapture", false}, - {"AccountOwnedMarker", "preserve"}, + {"ShowUncheckedBadge", true}, {"AccountOwnedMarker", "preserve"}, }; const nlohmann::json configurations = { {"GUAC:42:app-policy", original_policy.dump()},