From 281a418ce269e348fe4488eb2b9d933a193774df Mon Sep 17 00:00:00 2001 From: kuuuube Date: Sun, 18 Oct 2026 14:29:31 -0400 Subject: [PATCH 1/2] Filter out plugin versions with max supported version lower than selected version --- site/_includes/filterjs.html | 15 +++++++++++++-- site/_layouts/plugins.html | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/site/_includes/filterjs.html b/site/_includes/filterjs.html index 1218b0cd..36134185 100644 --- a/site/_includes/filterjs.html +++ b/site/_includes/filterjs.html @@ -39,6 +39,7 @@ let card = cards[i]; let name = card.getAttribute('data-name').toUpperCase(); let version = card.getAttribute('data-version'); + let maxVersion = card.getAttribute('data-max-version'); if (!isCompatible(version, targetVersion)) continue; @@ -57,9 +58,10 @@ let card = cards[i]; let name = card.getAttribute('data-name').toUpperCase(); let version = card.getAttribute('data-version'); + let maxVersion = card.getAttribute('data-max-version'); let searchMatches = name.indexOf(searchFilter) >= 0; - let versionMatches = targetVersion == '' || isCompatible(version, targetVersion); + let versionMatches = targetVersion == '' || isCompatible(version, targetVersion, maxVersion); let isNewest = true; if (name in versions) { isNewest = versions[name] == version; @@ -69,7 +71,7 @@ } } - function isCompatible(pluginVersion, driverVersion) { + function isCompatible(pluginVersion, driverVersion, maxPluginVersion) { // support truth table: // plugin / driver // 0.5.3.3 and 0.6.0.0: false @@ -78,6 +80,7 @@ // 0.5.3.3 and 0.5.2.0: false let pluginSplit = pluginVersion.split('.'); + let maxPluginSplit = !!maxPluginVersion ? maxPluginVersion.split('.') : null; let driverSplit = driverVersion.split('.'); if (pluginSplit[0] != driverSplit[0]) @@ -89,6 +92,14 @@ if (pluginSplit[2] > driverSplit[2]) return false; + if (maxPluginSplit != null) { + if (maxPluginSplit[2] < driverSplit[2]) + return false; + + if (maxPluginSplit[2] == driverSplit[2] && maxPluginSplit[3] < driverSplit[3]) + return false; + } + return true; } diff --git a/site/_layouts/plugins.html b/site/_layouts/plugins.html index 0df33778..72600106 100644 --- a/site/_layouts/plugins.html +++ b/site/_layouts/plugins.html @@ -73,7 +73,7 @@ {% endif %} {%- endcapture -%}
+ data-name="{{ metadata.Name }}" data-version="{{ metadata.SupportedDriverVersion }}" data-max-version="{{ metadata.MaxSupportedDriverVersion }}">
From 8fc3d94c814d9e6e8d6666fd89ff25abec0a6fe9 Mon Sep 17 00:00:00 2001 From: kuuuube Date: Sun, 18 Oct 2026 14:57:24 -0400 Subject: [PATCH 2/2] Make it not explode if we get to a subversion of 10 or higher --- site/_includes/filterjs.html | 39 ++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/site/_includes/filterjs.html b/site/_includes/filterjs.html index 36134185..9d315ec2 100644 --- a/site/_includes/filterjs.html +++ b/site/_includes/filterjs.html @@ -79,27 +79,40 @@ // 0.5.2.0 and 0.5.3.3: true // 0.5.3.3 and 0.5.2.0: false - let pluginSplit = pluginVersion.split('.'); - let maxPluginSplit = !!maxPluginVersion ? maxPluginVersion.split('.') : null; - let driverSplit = driverVersion.split('.'); + let pluginSplit = getIntSplit(pluginVersion); + let maxPluginSplit = getIntSplit(maxPluginVersion); + let driverSplit = getIntSplit(driverVersion); - if (pluginSplit[0] != driverSplit[0]) - return false; - - if (pluginSplit[1] != driverSplit[1]) - return false; + try { + if (pluginSplit[0] != driverSplit[0] || (maxPluginSplit != null && maxPluginSplit[0] != driverSplit[0])) { + return false; + } - if (pluginSplit[2] > driverSplit[2]) - return false; + if (pluginSplit[1] != driverSplit[1] || (maxPluginSplit != null && maxPluginSplit[1] != driverSplit[1])) { + return false; + } - if (maxPluginSplit != null) { - if (maxPluginSplit[2] < driverSplit[2]) + if (pluginSplit[2] > driverSplit[2] || (maxPluginSplit != null && maxPluginSplit[2] < driverSplit[2])) { return false; + } - if (maxPluginSplit[2] == driverSplit[2] && maxPluginSplit[3] < driverSplit[3]) + // The final version number on a plugin's base version number is allowed through no matter what, this filtering is intentionally not applied: + // pluginSplit[2] == driverSplit[2] && pluginSplit[3] > driverSplit[3] + // Only the MaxSupportedPluginVersion is checked for the final version number + if (maxPluginSplit != null && maxPluginSplit[2] == driverSplit[2] && maxPluginSplit[3] < driverSplit[3]) return false; + } catch (e) { + console.error(`Failed to determine plugin version compatibility. Plugin version: ${pluginVersion}. Driver version: ${driverVersion}.\nError: ${e}`); + return false; } return true; } + + function getIntSplit(inputString) { + if (inputString) + return inputString.split('.').map((x) => Number(x)); + + return null; + }