From cb849598ac6c43b7cbfa321a5af57398fc975d70 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Fri, 14 Aug 2026 13:46:06 +0800 Subject: [PATCH 1/4] minify hmcl-signature-verify.js --- _config.yml | 2 ++ _pages/verify.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index e76e9a43..fec82ba3 100644 --- a/_config.yml +++ b/_config.yml @@ -340,6 +340,8 @@ post_process: - /assets/js/plugins/smooth-scroll.js - /assets/js/plugins/jquery.auto-redirect.js - /assets/js/_main.js + /assets/js/hmcl-signature-verify.min.js: + - assets/js/hmcl-signature-verify.js remove_dirs: - /assets/images/ - /assets/js/plugins/ diff --git a/_pages/verify.md b/_pages/verify.md index 623492fe..afcc8bdf 100644 --- a/_pages/verify.md +++ b/_pages/verify.md @@ -95,4 +95,4 @@ toc: false } - + From 47542e9281770e0e3991543ebc332c50c03d71d8 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Fri, 14 Aug 2026 18:53:47 +0800 Subject: [PATCH 2/4] update --- _config.yml | 3 +- _pages/verify.md | 98 ++++++------------------------ assets/js/hmcl-signature-verify.js | 65 +++++++++++++------- 3 files changed, 66 insertions(+), 100 deletions(-) diff --git a/_config.yml b/_config.yml index fec82ba3..d1cb9561 100644 --- a/_config.yml +++ b/_config.yml @@ -341,7 +341,7 @@ post_process: - /assets/js/plugins/jquery.auto-redirect.js - /assets/js/_main.js /assets/js/hmcl-signature-verify.min.js: - - assets/js/hmcl-signature-verify.js + - /assets/js/hmcl-signature-verify.js remove_dirs: - /assets/images/ - /assets/js/plugins/ @@ -352,3 +352,4 @@ post_process: - /assets/js/theme.js - /assets/js/settings.js - /assets/js/main.min.js.map + - /assets/js/hmcl-signature-verify.js diff --git a/_pages/verify.md b/_pages/verify.md index afcc8bdf..efc59621 100644 --- a/_pages/verify.md +++ b/_pages/verify.md @@ -1,98 +1,40 @@ --- -title: 验证 HMCL 文件 +title: HMCL 校验 permalink: /verify.html +classes: wide toc: false --- -
-

检查 HMCL 文件是否是官方构建。

+检查 HMCL 文件是否是官方构建。 -
- - 未选择文件 - -
- - +
+
点击并选择文件或将文件拖拽到此处进行校验
+
+
diff --git a/assets/js/hmcl-signature-verify.js b/assets/js/hmcl-signature-verify.js index a8ea3b3d..5f1a06f0 100644 --- a/assets/js/hmcl-signature-verify.js +++ b/assets/js/hmcl-signature-verify.js @@ -27,26 +27,53 @@ } } - const fileInput = document.getElementById("hmcl-verify-file"); - const resultElement = document.getElementById("hmcl-verify-result"); - const selectedFileElement = document.getElementById("hmcl-verify-selected-file"); - let verificationRequestId = 0; + const container = document.getElementById("hmcl-verify"); + if (!container) return; + ["dragenter", "dragover", "dragleave", "drop"].forEach(eventName => { + container.addEventListener(eventName, (e) => { + e.preventDefault(); + e.stopPropagation(); + }, false); + }); + + ["dragenter", "dragover"].forEach(eventName => { + container.addEventListener(eventName, () => { + container.className = "notice--info"; + }, false); + }); + + ["dragleave", "drop"].forEach(eventName => { + container.addEventListener(eventName, () => { + container.className = "notice"; + }, false); + }); + + container.addEventListener("drop", (event) => handleFiles(event.dataTransfer.files), false); + + const fileInput = document.getElementById("hmcl-verify-input"); + if (!fileInput) return; + + container.addEventListener("click", () => fileInput.click()); + const resultElement = document.getElementById("hmcl-verify-alert"); + const selectedFileElement = document.getElementById("hmcl-verify-file"); if (!fileInput || !resultElement) { return; } - fileInput.addEventListener("change", async () => { + fileInput.addEventListener("change", async () => handleFiles(fileInput.files)); + + let verificationRequestId = 0; + async function handleFiles(files) { const requestId = ++verificationRequestId; - const file = fileInput.files && fileInput.files[0]; + const file = files && files[0]; if (!file) { setSelectedFileName(""); - hideResult(); return; } setSelectedFileName(file.name); - setResult("正在验证,请稍候..."); + setResult("正在校验中"); try { await verifyHmclFile(file); @@ -54,16 +81,16 @@ return; } setResult( - "验证通过,该文件是 HMCL 的官方构建,可以放心使用。", + "校验成功,该文件是 HMCL 的官方构建,可以放心使用", "ok" ); } catch (error) { if (!isCurrentVerification(requestId)) { return; } - setResult(`验证失败。\n${formatVerificationError(error)}`, "error"); + setResult(`校验失败,${formatVerificationError(error)}`, "error"); } - }); + } function isCurrentVerification(requestId) { return requestId === verificationRequestId; @@ -385,20 +412,16 @@ function setResult(message, state) { resultElement.textContent = message; - resultElement.hidden = false; - if (state) { - resultElement.dataset.state = state; + resultElement.style.display = "block"; + if (state === "ok") { + container.className = "notice--success"; + } else if (state === "error") { + container.className = "notice--danger"; } else { - delete resultElement.dataset.state; + container.className = "notice"; } } - function hideResult() { - resultElement.textContent = ""; - resultElement.hidden = true; - delete resultElement.dataset.state; - } - function setSelectedFileName(fileName) { if (selectedFileElement) { selectedFileElement.textContent = fileName || "未选择文件"; From b86e1048cf11c55b39f732dba61d07e572a3c085 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Fri, 14 Aug 2026 19:10:10 +0800 Subject: [PATCH 3/4] update --- _data/navigation.yml | 2 +- assets/js/hmcl-signature-verify.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/_data/navigation.yml b/_data/navigation.yml index 24900581..c3183b89 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -49,7 +49,7 @@ docs: url: /changelog/dev.html - title: 其他 children: - - title: 验证 HMCL + - title: HMCL 校验 url: /verify.html - title: 用户协议 url: /eula/hmcl.html diff --git a/assets/js/hmcl-signature-verify.js b/assets/js/hmcl-signature-verify.js index 5f1a06f0..911aecbf 100644 --- a/assets/js/hmcl-signature-verify.js +++ b/assets/js/hmcl-signature-verify.js @@ -386,27 +386,27 @@ function formatVerificationError(error) { switch (error && error.code) { case VerificationErrorCode.MISSING_PUBLIC_KEY: - return "这不是可验证的 HMCL 文件,或者 HMCL 版本过低,无法验证。"; + return "这不是可验证的 HMCL 文件,或者 HMCL 版本过低,无法验证"; case VerificationErrorCode.MISSING_SIGNATURE: - return "这是非官方构建,请谨慎甄别其来源。"; + return "这是非官方构建,请谨慎甄别其来源"; case VerificationErrorCode.INVALID_PUBLIC_KEY: case VerificationErrorCode.INVALID_SIGNATURE: case VerificationErrorCode.INVALID_LAUNCHER_HEADER: - return "该 HMCL 文件可能被篡改或已损坏,请不要使用此文件。你可以从 HMCL 官方网站重新下载 HMCL。"; + return "该 HMCL 文件可能被篡改或已损坏,请不要使用此文件;你可以从 HMCL 官方网站重新下载 HMCL"; case VerificationErrorCode.INVALID_ZIP: - return "这个文件不是有效的 HMCL 文件,或文件已经损坏。"; + return "这个文件不是有效的 HMCL 文件,或文件已经损坏"; case VerificationErrorCode.UNSUPPORTED_ZIP: - return "暂不支持验证这种文件格式。"; + return "暂不支持验证这种文件格式"; case VerificationErrorCode.UNSUPPORTED_BROWSER: - return "当前浏览器不支持读取这个文件,请换用新版 Chrome、Edge 或 Firefox。"; + return "当前浏览器不支持读取这个文件,请换用新版 Chrome、Edge 或 Firefox"; default: - return "无法完成验证,请确认你选择的是从官方渠道下载的 HMCL 文件。"; + return "无法完成验证,请确认你选择的是从官方渠道下载的 HMCL 文件"; } } From 6f7762e397bab15c09bc3781588e77dff490e8c6 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Fri, 14 Aug 2026 19:34:54 +0800 Subject: [PATCH 4/4] update --- _plugins/kramdown_enhancer.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/_plugins/kramdown_enhancer.rb b/_plugins/kramdown_enhancer.rb index 5ad64746..d1d9810b 100644 --- a/_plugins/kramdown_enhancer.rb +++ b/_plugins/kramdown_enhancer.rb @@ -105,6 +105,10 @@ def convert_html_element(el, indent) if el.value == "a" && el.attr["href"].is_a?(String) el.attr["href"] = relative_url(el.attr["href"]) el.options[:relative] = true + elsif el.value == "script" && el.attr["src"].is_a?(String) + puts el.attr["src"] + el.attr["src"] = relative_url(el.attr["src"]) + el.options[:relative] = true elsif el.value == "img" && el.attr["src"].is_a?(String) src = el.attr["src"] el.attr["src"] = relative_url(el.attr["src"])