From eda34d24b1d941a24bcc54d98353e108eb4a0adc Mon Sep 17 00:00:00 2001 From: 7015725 Date: Tue, 19 May 2026 00:45:59 +0800 Subject: [PATCH] fix: refresh stale ToolHub settings schema --- code/th_01_base.js | 34 ++++++++++++++++++++++++++++++++++ manifest.json | 6 +++--- manifest.sig | 2 +- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/code/th_01_base.js b/code/th_01_base.js index df88170..f81945f 100644 --- a/code/th_01_base.js +++ b/code/th_01_base.js @@ -886,6 +886,40 @@ var ConfigManager = { if (sStr.indexOf("ENABLE_SNAP_TO_EDGE") < 0 || sStr.indexOf("ENABLE_ANIMATIONS") < 0 || sStr.indexOf("BALL_IDLE_ALPHA") < 0 || sStr.indexOf("PANEL_POS_GRAVITY") < 0 || sStr.indexOf("single_choice") < 0 || sStr.indexOf("ball_shortx_icon") < 0 || sStr.indexOf("ball_color") < 0 || sStr.indexOf("SETTINGS_THEME") < 0 || sStr.indexOf("BALL_BG_COLOR_HEX") < 0 || sStr.indexOf("BALL_ICON_SIZE_DP") < 0 || sStr.indexOf("TOOLAPP_BACK_EDGE_WIDTH_DP") < 0 || sStr.indexOf("TOOLAPP_BACK_COMMIT_DISTANCE_DP") < 0 || sStr.indexOf("TOOLAPP_BACK_PROGRESS_DISTANCE_DP") < 0) { needReset = true; } + + // 旧 schema.json 可能已经含有 key,但 UI 文案/范围仍是旧值;关键字段不一致时也强制刷新 + var findSchemaItemByKey = function(arr, key) { + if (!arr) return null; + for (var i = 0; i < arr.length; i++) { + var it = arr[i]; + if (it && it.key === key) return it; + var child = null; + if (it && it.children) child = findSchemaItemByKey(it.children, key); + if (!child && it && it.items) child = findSchemaItemByKey(it.items, key); + if (child) return child; + } + return null; + }; + var schemaItemDiffers = function(key, fields) { + var cur = findSchemaItemByKey(s, key); + var def = findSchemaItemByKey(ConfigManager.defaultSchema, key); + if (!cur || !def) return true; + for (var i = 0; i < fields.length; i++) { + var f = fields[i]; + if (typeof def[f] !== "undefined" && String(cur[f]) !== String(def[f])) return true; + } + return false; + }; + if (!needReset) { + if (schemaItemDiffers("BALL_ICON_TINT_HEX", ["name", "type"]) || + schemaItemDiffers("BALL_ICON_SIZE_DP", ["name", "type", "min", "max", "step"]) || + schemaItemDiffers("BALL_BG_COLOR_HEX", ["name", "type"]) || + schemaItemDiffers("TOOLAPP_BACK_EDGE_WIDTH_DP", ["name", "type", "min", "max", "step"]) || + schemaItemDiffers("TOOLAPP_BACK_COMMIT_DISTANCE_DP", ["name", "type", "min", "max", "step"]) || + schemaItemDiffers("TOOLAPP_BACK_PROGRESS_DISTANCE_DP", ["name", "type", "min", "max", "step"])) { + needReset = true; + } + } } else { // # 仅当文件不存在时才标记为需要重置(新建),避免因读取失败导致覆盖 try { diff --git a/manifest.json b/manifest.json index b6ed96e..602c819 100644 --- a/manifest.json +++ b/manifest.json @@ -2,8 +2,8 @@ "alg": "SHA256withRSA", "files": { "th_01_base.js": { - "sha256": "b1ff842821c7d7c8d40543f74ba54134289d7ff4bb412c439ee0e96756744f95", - "size": 54166 + "sha256": "6066fdd266c85adb6b2ca2168845fb4618f952256fcc3aeb1f133160b505fa15", + "size": 55958 }, "th_02_core.js": { "sha256": "15bb9bfbd19a673d442e221b0a00a456ed5f87af2666b9c73b117d6223faeecd", @@ -68,5 +68,5 @@ }, "keyId": "toolhub-targets-2026-rsa3072", "schema": 2, - "version": 20260518163640 + "version": 20260518164547 } diff --git a/manifest.sig b/manifest.sig index ba1f3f8..0eb5fb1 100644 --- a/manifest.sig +++ b/manifest.sig @@ -1 +1 @@ -alRPatTnVV9xdtK76WLorimRuW2Lx3XXOsFDdOukNr/r518G+GCfm1Q6PA8rDvdfPb32ujMtizTkSogiONUWE8nFMg/JSRQbFYClvJaNx+utHFSeJS0l9gSiGJFHnjNO0AXfw2+5Ya1040g8NxERYDpfhC4evUTjs8+l5mTu2jX9Wf6w1z+MqEHtCpPafCNBjgl9nIRV6fRKBul/WsdtfNJ+KwLEaBUMRfK/P97IkNHWwYk+v49paPcyATon3AgYzJP1jrMfZ9BP0IOaoJLNu2srFfY606VOF4kgDjOyp9GcLhCbH7TIZkQJkeqKFBIL0JGukIaY0aKm2A+ABexsaInti9l+vlwbh++5JnuB4+C+5ZGNqOkNC5zmtxf3fFuBRO9mLZ2esvffN2opH2Jffed3yn+O5pSNccsnfLFZ8bDsL+zmzxGwpnjkYFKU/PI+7Zj5CmJwNCNmCqaHlx4QTzhHhudygwzF31PKAlD10pBKNb0IMo9doupg/DblzpHe +KaDfDzHxHnW41gnd+x+uamSg0x1kQYMZKRCLgUMnOwFksc08+vq06eI+ElnZP7vPLXVEoo+avqjh7fxC4z1hIYfRvhWyhcHJ1NCaKjmdRgsORXGOP17YFnzS389Xk3hgPlidJU3VLhDgEUEa1Q2Wt4nQ+7fXZY1Lw4SUBU2Ovk02u9eIOxXPmEJ9lOnnuXS9OfiwOpwS7HKeVQQmPiBb0VPaQYeRBojYVCVgp6kCNedvpsyw1rd25oXPUOaJkvvDc1qKO7P+yGrI8QUe3e4bzFcXT555C6op6RBk5mEVsvlq0dZKZoK63BqCrQHQAoDzAONdJ0zPV+jjpb+P0sqK1ztMlupOJJN21C6EdaibHQ3ZcnV4Tep281z5+9wpiSgx5CbIvT10gjIJ+lJaT8yFQA14IkqoL2nyKccsPoLfBIqA9KrSiaK9COrRbvCMbBUMa0KgVELoBfb3puXBqczRD/wxXfQPmZFVWDucq0sW/sCt5F73JC/gUXcpmuVTFJeH