From bd16dbbe251e65a5cdf28ac36c133ee6cfce1653 Mon Sep 17 00:00:00 2001 From: boomzero Date: Sun, 15 Mar 2026 15:29:44 +0800 Subject: [PATCH 1/4] fix: gate MonochromeUI-specific styling in contestrank pages behind flag Fixes #932. Header black/white forcing and inline style clearing on contestrank-oi.php and contestrank-correct.php now only apply when MonochromeUI is enabled. Badge ranks, color-coded cells, and auto-refresh remain unconditional as part of the base UI. Co-Authored-By: Claude Sonnet 4.6 --- XMOJ.user.js | 56 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/XMOJ.user.js b/XMOJ.user.js index 3cddb42c..20ebce26 100644 --- a/XMOJ.user.js +++ b/XMOJ.user.js @@ -3043,13 +3043,15 @@ async function main() { HeaderCells[2].innerText = "昵称"; HeaderCells[3].innerText = "AC数"; HeaderCells[4].innerText = "得分"; - for (let j = 0; j < HeaderCells.length; j++) { - HeaderCells[j].removeAttribute("bgcolor"); - HeaderCells[j].style.setProperty("background-color", "black", "important"); - HeaderCells[j].style.setProperty("color", "white", "important"); - let Links = HeaderCells[j].querySelectorAll("a"); - for (let k = 0; k < Links.length; k++) { - Links[k].style.setProperty("color", "white", "important"); + if (UtilityEnabled("MonochromeUI")) { + for (let j = 0; j < HeaderCells.length; j++) { + HeaderCells[j].removeAttribute("bgcolor"); + HeaderCells[j].style.setProperty("background-color", "black", "important"); + HeaderCells[j].style.setProperty("color", "white", "important"); + let Links = HeaderCells[j].querySelectorAll("a"); + for (let k = 0; k < Links.length; k++) { + Links[k].style.setProperty("color", "white", "important"); + } } } let RefreshOIRank = async () => { @@ -3062,7 +3064,9 @@ async function main() { TidyTable(ParsedDocument.getElementById("rank")); let Temp = ParsedDocument.getElementById("rank").rows; for (var i = 1; i < Temp.length; i++) { - Temp[i].style.backgroundColor = ""; + if (UtilityEnabled("MonochromeUI")) { + Temp[i].style.backgroundColor = ""; + } let MetalCell = Temp[i].cells[0]; let Metal = document.createElement("span"); Metal.innerText = MetalCell.innerText; @@ -3072,9 +3076,11 @@ async function main() { GetUsernameHTML(Temp[i].cells[1], Temp[i].cells[1].innerText); Temp[i].cells[2].innerHTML = Temp[i].cells[2].innerText; Temp[i].cells[3].innerHTML = Temp[i].cells[3].innerText; - for (let j = 0; j < 5 && j < Temp[i].cells.length; j++) { - Temp[i].cells[j].style.backgroundColor = ""; - Temp[i].cells[j].style.color = ""; + if (UtilityEnabled("MonochromeUI")) { + for (let j = 0; j < 5 && j < Temp[i].cells.length; j++) { + Temp[i].cells[j].style.backgroundColor = ""; + Temp[i].cells[j].style.color = ""; + } } for (let j = 5; j < Temp[i].cells.length; j++) { let InnerText = Temp[i].cells[j].innerText; @@ -3144,13 +3150,15 @@ async function main() { HeaderCells[2].innerText = "昵称"; HeaderCells[3].innerText = "AC数"; HeaderCells[4].innerText = "得分"; - for (let j = 0; j < HeaderCells.length; j++) { - HeaderCells[j].removeAttribute("bgcolor"); - HeaderCells[j].style.setProperty("background-color", "black", "important"); - HeaderCells[j].style.setProperty("color", "white", "important"); - let Links = HeaderCells[j].querySelectorAll("a"); - for (let k = 0; k < Links.length; k++) { - Links[k].style.setProperty("color", "white", "important"); + if (UtilityEnabled("MonochromeUI")) { + for (let j = 0; j < HeaderCells.length; j++) { + HeaderCells[j].removeAttribute("bgcolor"); + HeaderCells[j].style.setProperty("background-color", "black", "important"); + HeaderCells[j].style.setProperty("color", "white", "important"); + let Links = HeaderCells[j].querySelectorAll("a"); + for (let k = 0; k < Links.length; k++) { + Links[k].style.setProperty("color", "white", "important"); + } } } let RefreshCorrectRank = async () => { @@ -3163,7 +3171,9 @@ async function main() { TidyTable(ParsedDocument.getElementById("rank")); let Temp = ParsedDocument.getElementById("rank").rows; for (var i = 1; i < Temp.length; i++) { - Temp[i].style.backgroundColor = ""; + if (UtilityEnabled("MonochromeUI")) { + Temp[i].style.backgroundColor = ""; + } let MetalCell = Temp[i].cells[0]; let Metal = document.createElement("span"); Metal.innerText = MetalCell.innerText; @@ -3173,9 +3183,11 @@ async function main() { GetUsernameHTML(Temp[i].cells[1], Temp[i].cells[1].innerText); Temp[i].cells[2].innerHTML = Temp[i].cells[2].innerText; Temp[i].cells[3].innerHTML = Temp[i].cells[3].innerText; - for (let j = 0; j < 5 && j < Temp[i].cells.length; j++) { - Temp[i].cells[j].style.backgroundColor = ""; - Temp[i].cells[j].style.color = ""; + if (UtilityEnabled("MonochromeUI")) { + for (let j = 0; j < 5 && j < Temp[i].cells.length; j++) { + Temp[i].cells[j].style.backgroundColor = ""; + Temp[i].cells[j].style.color = ""; + } } for (let j = 5; j < Temp[i].cells.length; j++) { let InnerText = Temp[i].cells[j].innerText; From 8384f850fd117a6163284d05f9a5cde8d568294f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Mar 2026 07:30:46 +0000 Subject: [PATCH 2/4] 3.3.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a2826d87..47509807 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xmoj-script", - "version": "3.3.3", + "version": "3.3.4", "description": "an improvement script for xmoj.tech", "main": "AddonScript.js", "scripts": { From 0ca625329e54ff5e90cb70c4ab95ba7ae152fa4b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Mar 2026 07:30:52 +0000 Subject: [PATCH 3/4] Update version info to 3.3.4 --- Update.json | 11 +++++++++++ XMOJ.user.js | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Update.json b/Update.json index 63669aa3..dc6815cb 100644 --- a/Update.json +++ b/Update.json @@ -3455,6 +3455,17 @@ } ], "Notes": "Display status.php query content." + }, + "3.3.4": { + "UpdateDate": 1773559847015, + "Prerelease": true, + "UpdateContents": [ + { + "PR": 939, + "Description": "fix: gate MonochromeUI-specific styling in contestrank pages behind flag" + } + ], + "Notes": "修复了未开启「极简黑白界面风格」时,比赛排行榜表头仍显示为黑白样式的问题 (#932)" } } } \ No newline at end of file diff --git a/XMOJ.user.js b/XMOJ.user.js index 20ebce26..d8c8c077 100644 --- a/XMOJ.user.js +++ b/XMOJ.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name XMOJ -// @version 3.3.3 +// @version 3.3.4 // @description XMOJ增强脚本 // @author @XMOJ-Script-dev, @langningchen and the community // @namespace https://github/langningchen From d07172e30934db7dc90c131041527251b3263f69 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Mar 2026 07:31:02 +0000 Subject: [PATCH 4/4] Update time and description of 3.3.4 --- Update.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Update.json b/Update.json index dc6815cb..1b7716ab 100644 --- a/Update.json +++ b/Update.json @@ -3457,7 +3457,7 @@ "Notes": "Display status.php query content." }, "3.3.4": { - "UpdateDate": 1773559847015, + "UpdateDate": 1773559861504, "Prerelease": true, "UpdateContents": [ {