fix(virtual-hid): remove license expiration (#5517)

This commit is contained in:
Dave Lane
2026-08-17 14:50:19 -04:00
committed by GitHub
parent 68a569921e
commit 6aece1b8d2
7 changed files with 27 additions and 40 deletions

View File

@ -304,7 +304,6 @@ namespace confighttp {
output_tree["activation_usage"] = license.activation_usage;
output_tree["plan_name"] = license.plan_name;
output_tree["customer_email"] = license.customer_email;
output_tree["expires_at"] = license.expires_at;
output_tree["message"] = license.message;
output_tree["purchase_url"] = license.purchase_url;
output_tree["manage_account_url"] = license.manage_account_url;

View File

@ -410,6 +410,7 @@ namespace system_tray {
virtualhid_license_menu_text_storage() = {};
set_virtualhid_license_menu_item(0, std::format("Status: {}", virtualhid_license_state_label(license.state)), true);
auto separator_index = 5U;
if (license.licensed()) {
set_virtualhid_license_menu_item(
1,
@ -423,18 +424,14 @@ namespace system_tray {
);
set_virtualhid_license_menu_item(
3,
license.expires_at.empty() ? "Expiration: Not reported" : std::format("Expires: {}", license.expires_at),
true
);
set_virtualhid_license_menu_item(
4,
license.activation_limit == 0 ?
"Machine activations: Not reported" :
std::format("Machine activations: {} / {}", license.activation_usage, license.activation_limit),
true
);
set_virtualhid_license_menu_item(6, "View License Details", false, tray_virtualhid_license_cb);
set_virtualhid_license_menu_item(7, "Manage License", false, tray_virtualhid_license_cb);
separator_index = 4U;
set_virtualhid_license_menu_item(5, "View License Details", false, tray_virtualhid_license_cb);
set_virtualhid_license_menu_item(6, "Manage License", false, tray_virtualhid_license_cb);
} else {
set_virtualhid_license_menu_item(1, std::string {virtualhid_license_state_detail(license.state)}, true);
set_virtualhid_license_menu_item(2, "Full virtual gamepad support is locked", true);
@ -447,10 +444,11 @@ namespace system_tray {
set_virtualhid_license_menu_item(6, "Activate License", false, tray_virtualhid_license_cb);
set_virtualhid_license_menu_item(7, "Buy License", false, tray_virtualhid_license_cb);
}
virtualhid_license_menu[5] = {.text = "-"};
set_virtualhid_license_menu_item(8, "Benefits over ViGEmBus", false);
virtualhid_license_menu[8].submenu = virtualhid_benefits_menu.data();
set_virtualhid_license_menu_item(9, "Download Virtual HID Driver", false, tray_virtualhid_download_cb);
virtualhid_license_menu[separator_index] = {.text = "-"};
const auto benefits_index = separator_index + 3U;
set_virtualhid_license_menu_item(benefits_index, "Benefits over ViGEmBus", false);
virtualhid_license_menu[benefits_index].submenu = virtualhid_benefits_menu.data();
set_virtualhid_license_menu_item(benefits_index + 1U, "Download Virtual HID Driver", false, tray_virtualhid_download_cb);
}
/**

View File

@ -594,7 +594,6 @@
"virtualhid_license_customer": "Customer",
"virtualhid_license_deactivate": "Deactivate This Machine",
"virtualhid_license_desc": "An active license is required before Sunshine can create libvirtualhid gamepads. Activation is handled by the local libvirtualhid service; Sunshine does not save your license key.",
"virtualhid_license_expires": "Expires",
"virtualhid_license_key": "License Key",
"virtualhid_license_key_desc": "The key is sent only to the local libvirtualhid service and is cleared from this page after successful activation.",
"virtualhid_license_key_placeholder": "Enter your product key",

View File

@ -193,10 +193,6 @@
<dt>{{ $t('troubleshooting.virtualhid_license_customer') }}</dt>
<dd>{{ virtualhidLicense.customer_email }}</dd>
</dl>
<dl class="virtualhid-license-stat" v-if="virtualhidLicense.expires_at">
<dt>{{ $t('troubleshooting.virtualhid_license_expires') }}</dt>
<dd>{{ virtualhidLicense.expires_at }}</dd>
</dl>
</div>
<p class="virtualhid-license-message"
@ -511,7 +507,6 @@
activation_usage: 0,
plan_name: '',
customer_email: '',
expires_at: '',
message: '',
purchase_url: '',
manage_account_url: '',

View File

@ -1439,7 +1439,6 @@ TEST(ConfigHttpLicenseStatusTest, BuildVirtualHidLicenseStatus_IncludesExpectedF
license.activation_usage = 3;
license.plan_name = "Yearly";
license.customer_email = "customer@example.com";
license.expires_at = "2027-08-10T00:00:00Z";
license.message = "License is active";
license.purchase_url = "https://example.com/buy";
license.manage_account_url = "https://example.com/manage";
@ -1452,7 +1451,7 @@ TEST(ConfigHttpLicenseStatusTest, BuildVirtualHidLicenseStatus_IncludesExpectedF
EXPECT_EQ(output["activation_usage"].get<unsigned int>(), 3U);
EXPECT_EQ(output["plan_name"].get<std::string>(), "Yearly");
EXPECT_EQ(output["customer_email"].get<std::string>(), "customer@example.com");
EXPECT_EQ(output["expires_at"].get<std::string>(), "2027-08-10T00:00:00Z");
EXPECT_FALSE(output.contains("expires_at"));
EXPECT_EQ(output["message"].get<std::string>(), "License is active");
EXPECT_EQ(output["purchase_url"].get<std::string>(), "https://example.com/buy");
EXPECT_EQ(output["manage_account_url"].get<std::string>(), "https://example.com/manage");

View File

@ -98,15 +98,16 @@ namespace {
* @brief Verify the shared action entries in a populated Virtual HID Driver menu.
*
* @param license_menu License submenu to verify.
* @param benefits_index Index of the shared benefits action.
*/
void verify_virtualhid_actions_menu(const struct tray_menu *license_menu) {
void verify_virtualhid_actions_menu(const struct tray_menu *license_menu, std::size_t benefits_index) {
ASSERT_NE(license_menu, nullptr);
EXPECT_STREQ(license_menu[8].text, "Benefits over ViGEmBus");
EXPECT_EQ(license_menu[8].cb, nullptr);
verify_virtualhid_benefits_menu(license_menu[8].submenu);
EXPECT_STREQ(license_menu[9].text, "Download Virtual HID Driver");
EXPECT_NE(license_menu[9].cb, nullptr);
EXPECT_EQ(license_menu[10].text, nullptr);
EXPECT_STREQ(license_menu[benefits_index].text, "Benefits over ViGEmBus");
EXPECT_EQ(license_menu[benefits_index].cb, nullptr);
verify_virtualhid_benefits_menu(license_menu[benefits_index].submenu);
EXPECT_STREQ(license_menu[benefits_index + 1U].text, "Download Virtual HID Driver");
EXPECT_NE(license_menu[benefits_index + 1U].cb, nullptr);
EXPECT_EQ(license_menu[benefits_index + 2U].text, nullptr);
}
#endif
@ -328,7 +329,6 @@ TEST_F(SystemTrayTest, PreparesLicensedVirtualHidMenuBeforeInitialization) {
license.state = lvh::LicenseState::licensed;
license.plan_name = "Yearly";
license.customer_email = "customer@example.com";
license.expires_at = "2027-08-10T00:00:00Z";
license.activation_usage = 2;
license.activation_limit = 5;
@ -340,29 +340,26 @@ TEST_F(SystemTrayTest, PreparesLicensedVirtualHidMenuBeforeInitialization) {
EXPECT_STREQ(license_menu[0].text, "Status: Licensed");
EXPECT_STREQ(license_menu[1].text, "Plan: Yearly");
EXPECT_STREQ(license_menu[2].text, "Customer: customer@example.com");
EXPECT_STREQ(license_menu[3].text, "Expires: 2027-08-10T00:00:00Z");
EXPECT_STREQ(license_menu[4].text, "Machine activations: 2 / 5");
EXPECT_STREQ(license_menu[5].text, "-");
EXPECT_STREQ(license_menu[6].text, "View License Details");
EXPECT_STREQ(license_menu[3].text, "Machine activations: 2 / 5");
EXPECT_STREQ(license_menu[4].text, "-");
EXPECT_STREQ(license_menu[5].text, "View License Details");
EXPECT_NE(license_menu[5].cb, nullptr);
EXPECT_STREQ(license_menu[6].text, "Manage License");
EXPECT_NE(license_menu[6].cb, nullptr);
EXPECT_STREQ(license_menu[7].text, "Manage License");
EXPECT_NE(license_menu[7].cb, nullptr);
verify_virtualhid_actions_menu(license_menu);
verify_virtualhid_actions_menu(license_menu, 7U);
EXPECT_EQ(tray_data.notification_title, nullptr);
EXPECT_EQ(tray_data.notification_text, nullptr);
EXPECT_EQ(tray_data.notification_cb, nullptr);
license.plan_name.clear();
license.customer_email.clear();
license.expires_at.clear();
license.activation_usage = 0;
license.activation_limit = 0;
system_tray::update_tray_virtualhid_license(license, false);
EXPECT_STREQ(license_menu[1].text, "This machine is activated");
EXPECT_STREQ(license_menu[2].text, "Customer: Not reported");
EXPECT_STREQ(license_menu[3].text, "Expiration: Not reported");
EXPECT_STREQ(license_menu[4].text, "Machine activations: Not reported");
EXPECT_STREQ(license_menu[3].text, "Machine activations: Not reported");
}
/**
@ -393,7 +390,7 @@ TEST_P(UnlicensedVirtualHidTrayTest, PreparesMenuAndStartupNotification) {
EXPECT_NE(license_menu[6].cb, nullptr);
EXPECT_STREQ(license_menu[7].text, "Buy License");
EXPECT_NE(license_menu[7].cb, nullptr);
verify_virtualhid_actions_menu(license_menu);
verify_virtualhid_actions_menu(license_menu, 8U);
EXPECT_STREQ(tray_data.notification_title, "Activate Virtual HID Driver");
EXPECT_STREQ(
tray_data.notification_text,