From c3f31f91d62c200c01d5c3fbd15de2ff241c3783 Mon Sep 17 00:00:00 2001
From: neveler <55753029+neveler@users.noreply.github.com>
Date: Thu, 12 Mar 2026 14:00:54 +0800
Subject: [PATCH 1/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BE=E7=BD=AE?=
=?UTF-8?q?=E9=A1=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_data/settings.yaml | 24 +++------
_layouts/default.html | 2 +-
_layouts/settings.html | 92 ++++++++++++++++++++------------
_sass/minimal-mistakes-plus.scss | 14 ++---
assets/js/settings.js | 65 +++++++++++++++-------
assets/js/theme.js | 11 ++--
settings.yaml | 21 ++------
7 files changed, 129 insertions(+), 100 deletions(-)
diff --git a/_data/settings.yaml b/_data/settings.yaml
index e91dd2cd..803899fb 100644
--- a/_data/settings.yaml
+++ b/_data/settings.yaml
@@ -5,23 +5,13 @@ appearance_color:
- light
- dark
- auto
-appearance_skin_light:
- type: radio
- default: default
- options:
- - default
- - air
- - aqua
- - contrast
- - dark
- - dirt
- - neon
- - mint
- - plum
- - sunrise
-appearance_skin_dark:
- type: radio
- default: dark
+appearance_skin:
+ type: multi-radio
+ children:
+ light:
+ default: default
+ dark:
+ default: dark
options:
- default
- air
diff --git a/_layouts/default.html b/_layouts/default.html
index e691d2a6..f820331a 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -12,7 +12,7 @@
{% if site.preview and site.preview.pr-number %}
- 当前站点为预览构建而非官方文档。如需反馈问题,请前往
#{{ site.preview.pr-number }} 留言。
+ 当前站点为预览构建而非官方文档。如需反馈问题,请前往
#{{ site.preview.pr-number }} 留言。
{% endif %}
{% include_cached skip-links.html %}
diff --git a/_layouts/settings.html b/_layouts/settings.html
index af675a0c..1e86a0dc 100644
--- a/_layouts/settings.html
+++ b/_layouts/settings.html
@@ -1,46 +1,72 @@
---
-layout: document
+layout: single
---
-{% for group in page.data %}
-
-{% capture notice %}
-
-## {{ group.title }}
-
+{%- for group in page.data %}
+{{ group.title }}
{% for pair in group.settings %}
{% assign name = pair[0] %}
{% assign value = pair[1] %}
{% assign setting = site.data.settings[name] %}
-
-{% if setting.type == 'radio' %}
-
+
+ {{ value.title }}
+ {{ value.description }}
+
+ {% if setting.type == 'radio' %}
+ {% for option in setting.options %}
+
+ {% endfor %}
+ {% elsif setting.type == 'multi-radio' %}
+
+ {% endif %}
+{% endfor %}
+{% endfor %}
-{% endif %}
-{% endfor %}
-{% endcapture %}
-{{ notice | markdownify }}
-{% endfor %}
+
+
diff --git a/_sass/minimal-mistakes-plus.scss b/_sass/minimal-mistakes-plus.scss
index 1d6d0b45..07bfdaec 100644
--- a/_sass/minimal-mistakes-plus.scss
+++ b/_sass/minimal-mistakes-plus.scss
@@ -11,14 +11,10 @@ blockquote {
word-break: break-word;
}
-.notice ul:first-child {
- margin-top: 0;
-}
-
-.task-list-item label {
- display: inline
-}
-
-.m0 {
+.preview {
+ top: 0;
+ z-index: 999;
+ padding: 0.4em;
+ position: sticky;
margin: 0 !important;
}
diff --git a/assets/js/settings.js b/assets/js/settings.js
index 13e6e59f..19f838d0 100644
--- a/assets/js/settings.js
+++ b/assets/js/settings.js
@@ -5,7 +5,7 @@ layout: null
var PREFIX = "HMCL_DOCS_SETTINGS_";
var data = {};
var events = {};
- var config = /*{%comment%}*/{}/*{%endcomment%}*//**{{'/'}}{{ site.data.settings | jsonify }}/**/;
+ var configs = /*{%comment%}*/{}/*{%endcomment%}*//**{{'/'}}{{ site.data.settings | jsonify }}/**/;
global.addEventListener("storage", function (event) {
if (!event.key) return;
@@ -27,15 +27,21 @@ layout: null
});
var settings = {
- set: function (key, value) {
- if (config[key] === undefined) return;
- var strKey = (PREFIX + key).toUpperCase();
+ set: function (name, value) {
+ var keys = name.split(".");
+ if (keys.length === 0) return;
+ var item = configs[keys[0]];
+ if (item === undefined) return;
+ for (var i = 1; i < keys.length; i++) {
+ if (item.children === undefined || item.children[keys[i]] === undefined) return;
+ item = item.children[keys[i]];
+ }
+ var strKey = (PREFIX + name).toUpperCase();
var newValue = value + "";
data[strKey] = newValue;
localStorage.setItem(strKey, newValue);
var handlers = events[strKey];
if (!handlers) return;
-
for (var i = 0; i < handlers.length; i++) {
if (typeof handlers[i] === "function") {
handlers[i](newValue);
@@ -43,29 +49,48 @@ layout: null
}
},
- get: function (key, defaultValue) {
- if (config[key] === undefined) return;
- var strKey = (PREFIX + key).toUpperCase();
+ get: function (name) {
+ var keys = name.split(".");
+ if (keys.length === 0) return;
+ var item = configs[keys[0]];
+ if (item === undefined) return;
+ for (var i = 1; i < keys.length; i++) {
+ if (item.children === undefined || item.children[keys[i]] === undefined) return;
+ item = item.children[keys[i]];
+ }
+ var strKey = (PREFIX + name).toUpperCase();
data.hasOwnProperty(strKey) || (data[strKey] = localStorage.getItem(strKey));
- if (typeof defaultValue === "string" && data[strKey] === null) {
- return defaultValue;
+ if (typeof item.default === "string" && data[strKey] === null) {
+ return item.default;
}
return data[strKey];
},
- refresh: function (key) {
- if (config[key] === undefined) return;
- settings.set(key, settings.get(key, config[key].default));
+ refresh: function (name) {
+ var keys = name.split(".");
+ if (keys.length === 0) return;
+ var item = configs[keys[0]];
+ if (item === undefined) return;
+ for (var i = 1; i < keys.length; i++) {
+ if (item.children === undefined || item.children[keys[i]] === undefined) return;
+ item = item.children[keys[i]];
+ }
+ settings.set(name, settings.get(name, item.default));
},
- onChange: function (key, handler) {
- if (config[key] === undefined) return;
- if (typeof handler !== "function") return;
- var strKey = (PREFIX + key).toUpperCase();
- if (config[key].type === "radio") {
- handler(settings.get(key, config[key].default));
+ onChange: function (name, handler) {
+ var keys = name.split(".");
+ if (keys.length === 0) return;
+ var item = configs[keys[0]];
+ if (item === undefined) return;
+ for (var i = 1; i < keys.length; i++) {
+ if (item.children === undefined || item.children[keys[i]] === undefined) return;
+ item = item.children[keys[i]];
}
- if (!events[strKey]) {
+ if (typeof handler !== "function") return;
+ var strKey = (PREFIX + name).toUpperCase();
+ handler(settings.get(name, item.default));
+ if (events[strKey] === undefined) {
events[strKey] = [handler];
} else {
events[strKey].push(handler);
diff --git a/assets/js/theme.js b/assets/js/theme.js
index 9a202792..9d795750 100644
--- a/assets/js/theme.js
+++ b/assets/js/theme.js
@@ -4,11 +4,14 @@ layout: null
window.addEventListener("DOMContentLoaded", function () {
var skinLink = document.getElementById("skin");
var darkModeQuery = window.matchMedia("(prefers-color-scheme: dark)");
+ function applySkin(skin) {
+ skinLink.href = "{{ '/assets/css/skins/' | relative_url }}" + skin + ".css";
+ }
function applyDarkSkin() {
- skinLink.href = "{{ '/assets/css/skins/' | relative_url }}" + settings.get("appearance_skin_dark", "dark") + ".css";
+ applySkin(settings.get("appearance_skin.dark"));
}
function applyLightSkin() {
- skinLink.href = "{{ '/assets/css/skins/' | relative_url }}" + settings.get("appearance_skin_light", "default") + ".css";
+ applySkin(settings.get("appearance_skin.light"));
}
function autoSchemeHandler() {
if (darkModeQuery.matches) {
@@ -61,10 +64,10 @@ window.addEventListener("DOMContentLoaded", function () {
}
}
settings.onChange("appearance_color", applyTheme);
- settings.onChange("appearance_skin_dark", function () {
+ settings.onChange("appearance_skin.dark", function () {
settings.refresh("appearance_color");
});
- settings.onChange("appearance_skin_light", function () {
+ settings.onChange("appearance_skin.light", function () {
settings.refresh("appearance_color");
});
});
diff --git a/settings.yaml b/settings.yaml
index d8d79aed..defbb3fa 100644
--- a/settings.yaml
+++ b/settings.yaml
@@ -12,23 +12,12 @@ data:
light: 亮色
dark: 暗色
auto: 自动
- appearance_skin_light:
- title: 亮色皮肤
- description: 亮色模式下应用的皮肤。
- options:
- default: 默认
- air: 天空
- aqua: 水蓝
- contrast: 高对比
+ appearance_skin:
+ title: 皮肤
+ description: 各颜色模式下应用的皮肤。
+ children:
+ light: 亮色
dark: 暗色
- dirt: 泥土
- neon: 霓虹
- mint: 薄荷
- plum: 梅紫
- sunrise: 日出
- appearance_skin_dark:
- title: 暗色皮肤
- description: 暗色模式下应用的皮肤。
options:
default: 默认
air: 天空
From 7fd8507fd82ea32ff47c558b1e01da51fac97f2f Mon Sep 17 00:00:00 2001
From: neveler <55753029+neveler@users.noreply.github.com>
Date: Thu, 12 Mar 2026 14:39:21 +0800
Subject: [PATCH 2/9] =?UTF-8?q?=E5=85=81=E8=AE=B8=E7=A6=81=E7=94=A8?=
=?UTF-8?q?=E9=A2=9C=E8=89=B2=E6=A8=A1=E5=BC=8F=E5=BF=AB=E6=8D=B7=E5=BC=80?=
=?UTF-8?q?=E5=85=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_data/settings.yaml | 6 ++++++
assets/js/theme.js | 5 +++++
settings.yaml | 6 ++++++
3 files changed, 17 insertions(+)
diff --git a/_data/settings.yaml b/_data/settings.yaml
index 803899fb..9323459d 100644
--- a/_data/settings.yaml
+++ b/_data/settings.yaml
@@ -5,6 +5,12 @@ appearance_color:
- light
- dark
- auto
+appearance_color_switcher:
+ type: radio
+ default: enable
+ options:
+ - enable
+ - disable
appearance_skin:
type: multi-radio
children:
diff --git a/assets/js/theme.js b/assets/js/theme.js
index 9d795750..ee468e88 100644
--- a/assets/js/theme.js
+++ b/assets/js/theme.js
@@ -70,4 +70,9 @@ window.addEventListener("DOMContentLoaded", function () {
settings.onChange("appearance_skin.light", function () {
settings.refresh("appearance_color");
});
+ settings.onChange("appearance_color_switcher", function (value) {
+ if (modeSwitcher !== null) {
+ modeSwitcher.style.display = value === "enable" ? "" : "none";
+ }
+ });
});
diff --git a/settings.yaml b/settings.yaml
index defbb3fa..fb8dacd2 100644
--- a/settings.yaml
+++ b/settings.yaml
@@ -12,6 +12,12 @@ data:
light: 亮色
dark: 暗色
auto: 自动
+ appearance_color_switcher:
+ title: 颜色模式快捷开关
+ description: 用于快捷切换站点主题颜色模式的开关,位于页面右上角。
+ options:
+ enable: 启用
+ disable: 禁用
appearance_skin:
title: 皮肤
description: 各颜色模式下应用的皮肤。
From f5897b5d4195cf7b1733cd837bc42b688ee84de8 Mon Sep 17 00:00:00 2001
From: neveler <55753029+neveler@users.noreply.github.com>
Date: Thu, 12 Mar 2026 21:29:48 +0800
Subject: [PATCH 3/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=20js=20=E4=BB=A3?=
=?UTF-8?q?=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
assets/js/settings.js | 134 ++++++++++++++----------------------------
1 file changed, 44 insertions(+), 90 deletions(-)
diff --git a/assets/js/settings.js b/assets/js/settings.js
index 19f838d0..2f197483 100644
--- a/assets/js/settings.js
+++ b/assets/js/settings.js
@@ -1,101 +1,55 @@
---
layout: null
---
-(function (global) {
- var PREFIX = "HMCL_DOCS_SETTINGS_";
- var data = {};
- var events = {};
- var configs = /*{%comment%}*/{}/*{%endcomment%}*//**{{'/'}}{{ site.data.settings | jsonify }}/**/;
-
- global.addEventListener("storage", function (event) {
- if (!event.key) return;
- if (event.key.indexOf(PREFIX) !== 0) return;
-
- var handlers = events[event.key];
- if (!handlers) return;
-
- var newValue = event.newValue;
- var oldValue = event.oldValue;
- if (oldValue === newValue) return;
-
- data[event.key] = newValue;
- for (var i = 0; i < handlers.length; i++) {
- if (typeof handlers[i] === "function") {
- handlers[i](newValue, oldValue);
- }
- }
+(function () {
+ const PREFIX = "HMCL_DOCS_SETTINGS_", data = {}, events = {}, configCache = {}, configs = /*{%comment%}*/ {}; /*{%endcomment%}*/ /**{{'/'}}{{ site.data.settings | jsonify }}/**/
+ window.addEventListener("storage", ({ key, newValue }) => {
+ if (key === null || !key.startsWith(PREFIX) || newValue === data[key]) return;
+ data[key] = newValue;
+ events[key]?.forEach((handler) => handler(newValue));
});
-
- var settings = {
- set: function (name, value) {
- var keys = name.split(".");
- if (keys.length === 0) return;
- var item = configs[keys[0]];
- if (item === undefined) return;
- for (var i = 1; i < keys.length; i++) {
- if (item.children === undefined || item.children[keys[i]] === undefined) return;
- item = item.children[keys[i]];
- }
- var strKey = (PREFIX + name).toUpperCase();
- var newValue = value + "";
- data[strKey] = newValue;
- localStorage.setItem(strKey, newValue);
- var handlers = events[strKey];
- if (!handlers) return;
- for (var i = 0; i < handlers.length; i++) {
- if (typeof handlers[i] === "function") {
- handlers[i](newValue);
- }
- }
+ const getConfig = (key) => {
+ if (typeof key !== "string") return undefined;
+ if (configCache[key] !== undefined) return configCache[key];
+ const keys = key.split(".");
+ let item = configs[keys[0]];
+ for (let i = 1; i < keys.length; i++) {
+ if (item.children?.[keys[i]] === undefined) return undefined;
+ item = item.children[keys[i]];
+ }
+ return configCache[key] = JSON.parse(JSON.stringify({ ...configs[keys[0]], ...item }));
+ };
+ window.settings = {
+ set(key, value) {
+ const config = getConfig(key);
+ if (config === undefined) return;
+ const name = PREFIX + key.toUpperCase().replaceAll(".", "_");
+ localStorage.setItem(name, (data[name] = String(value)));
+ events[name]?.forEach(handler => handler(data[name]));
},
-
- get: function (name) {
- var keys = name.split(".");
- if (keys.length === 0) return;
- var item = configs[keys[0]];
- if (item === undefined) return;
- for (var i = 1; i < keys.length; i++) {
- if (item.children === undefined || item.children[keys[i]] === undefined) return;
- item = item.children[keys[i]];
- }
- var strKey = (PREFIX + name).toUpperCase();
- data.hasOwnProperty(strKey) || (data[strKey] = localStorage.getItem(strKey));
- if (typeof item.default === "string" && data[strKey] === null) {
- return item.default;
- }
- return data[strKey];
+ get(key) {
+ const config = getConfig(key);
+ if (config === undefined) return null;
+ const name = PREFIX + key.toUpperCase().replaceAll(".", "_");
+ if (data[name] === undefined) data[name] = localStorage.getItem(name);
+ if (typeof config.default === "string" && data[name] === null) return config.default;
+ return data[name];
},
-
- refresh: function (name) {
- var keys = name.split(".");
- if (keys.length === 0) return;
- var item = configs[keys[0]];
- if (item === undefined) return;
- for (var i = 1; i < keys.length; i++) {
- if (item.children === undefined || item.children[keys[i]] === undefined) return;
- item = item.children[keys[i]];
- }
- settings.set(name, settings.get(name, item.default));
+ refresh(key) {
+ const value = settings.get(key);
+ if (value !== null) settings.set(key, value);
},
-
- onChange: function (name, handler) {
- var keys = name.split(".");
- if (keys.length === 0) return;
- var item = configs[keys[0]];
- if (item === undefined) return;
- for (var i = 1; i < keys.length; i++) {
- if (item.children === undefined || item.children[keys[i]] === undefined) return;
- item = item.children[keys[i]];
- }
+ onChange(key, handler) {
if (typeof handler !== "function") return;
- var strKey = (PREFIX + name).toUpperCase();
- handler(settings.get(name, item.default));
- if (events[strKey] === undefined) {
- events[strKey] = [handler];
+ const config = getConfig(key);
+ if (config === undefined) return;
+ const name = PREFIX + key.toUpperCase().replaceAll(".", "_");
+ handler(settings.get(key));
+ if (events[name] === undefined) {
+ events[name] = [handler];
} else {
- events[strKey].push(handler);
+ events[name].push(handler);
}
- }
+ },
};
- global.settings = settings;
-})(window);
+})();
From da0ec9b66fe1fbeae5ad8090a4b48cee96f980ca Mon Sep 17 00:00:00 2001
From: neveler <55753029+neveler@users.noreply.github.com>
Date: Fri, 13 Mar 2026 10:12:40 +0800
Subject: [PATCH 4/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=20js?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
assets/js/settings.js | 58 ++++++++++++++-----------------------------
assets/js/theme.js | 5 ++--
2 files changed, 21 insertions(+), 42 deletions(-)
diff --git a/assets/js/settings.js b/assets/js/settings.js
index 2f197483..088b0c56 100644
--- a/assets/js/settings.js
+++ b/assets/js/settings.js
@@ -2,54 +2,32 @@
layout: null
---
(function () {
- const PREFIX = "HMCL_DOCS_SETTINGS_", data = {}, events = {}, configCache = {}, configs = /*{%comment%}*/ {}; /*{%endcomment%}*/ /**{{'/'}}{{ site.data.settings | jsonify }}/**/
- window.addEventListener("storage", ({ key, newValue }) => {
- if (key === null || !key.startsWith(PREFIX) || newValue === data[key]) return;
- data[key] = newValue;
- events[key]?.forEach((handler) => handler(newValue));
- });
- const getConfig = (key) => {
- if (typeof key !== "string") return undefined;
- if (configCache[key] !== undefined) return configCache[key];
- const keys = key.split(".");
- let item = configs[keys[0]];
- for (let i = 1; i < keys.length; i++) {
- if (item.children?.[keys[i]] === undefined) return undefined;
- item = item.children[keys[i]];
+ const PREFIX = "HMCL_DOCS_SETTINGS_", data = {}, bus = new EventTarget(), configs = /*{%comment%}*/{}/*{%endcomment%}*/ /**{{'/'}}{{ site.data.settings | jsonify }}/**/;
+ window.addEventListener("storage", ({ key, newValue }) => key !== null && key.startsWith(PREFIX) && newValue !== data[key] && bus.dispatchEvent(new CustomEvent(key, { detail: (data[key] = newValue) })));
+ for (const [key, config] of Object.entries(configs)) {
+ if (config.children === undefined) continue;
+ for (const [childKey, child] of Object.entries(children)) {
+ configs[`${key}.${childKey}`] = { ...config, ...child };
}
- return configCache[key] = JSON.parse(JSON.stringify({ ...configs[keys[0]], ...item }));
- };
+ }
+ const formatKey = (key) => PREFIX + key.toUpperCase().replaceAll(".", "_");
window.settings = {
set(key, value) {
- const config = getConfig(key);
- if (config === undefined) return;
- const name = PREFIX + key.toUpperCase().replaceAll(".", "_");
+ const name = formatKey(key);
localStorage.setItem(name, (data[name] = String(value)));
- events[name]?.forEach(handler => handler(data[name]));
+ bus.dispatchEvent(new CustomEvent(name, { detail: data[name] }));
},
get(key) {
- const config = getConfig(key);
- if (config === undefined) return null;
- const name = PREFIX + key.toUpperCase().replaceAll(".", "_");
- if (data[name] === undefined) data[name] = localStorage.getItem(name);
- if (typeof config.default === "string" && data[name] === null) return config.default;
- return data[name];
- },
- refresh(key) {
- const value = settings.get(key);
- if (value !== null) settings.set(key, value);
+ const name = formatKey(key);
+ if (data[name] !== undefined) return data[name];
+ data[name] = localStorage.getItem(name);
+ if (data[name] !== null) return data[name];
+ const config = configs[key];
+ if (config === undefined || typeof config.default !== "string") return null;
+ return config.default;
},
onChange(key, handler) {
- if (typeof handler !== "function") return;
- const config = getConfig(key);
- if (config === undefined) return;
- const name = PREFIX + key.toUpperCase().replaceAll(".", "_");
- handler(settings.get(key));
- if (events[name] === undefined) {
- events[name] = [handler];
- } else {
- events[name].push(handler);
- }
+ bus.addEventListener(formatKey(key), (event) => handler(event.detail));
},
};
})();
diff --git a/assets/js/theme.js b/assets/js/theme.js
index ee468e88..013e8a3d 100644
--- a/assets/js/theme.js
+++ b/assets/js/theme.js
@@ -64,11 +64,12 @@ window.addEventListener("DOMContentLoaded", function () {
}
}
settings.onChange("appearance_color", applyTheme);
+ applyTheme(settings.get("appearance_color"));
settings.onChange("appearance_skin.dark", function () {
- settings.refresh("appearance_color");
+ applyTheme(settings.get("appearance_color"));
});
settings.onChange("appearance_skin.light", function () {
- settings.refresh("appearance_color");
+ applyTheme(settings.get("appearance_color"));
});
settings.onChange("appearance_color_switcher", function (value) {
if (modeSwitcher !== null) {
From e45379ec26bbfa678b9bdae3d5acd10a5eb3dbbb Mon Sep 17 00:00:00 2001
From: neveler <55753029+neveler@users.noreply.github.com>
Date: Fri, 13 Mar 2026 10:15:19 +0800
Subject: [PATCH 5/9] update
---
assets/js/settings.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/assets/js/settings.js b/assets/js/settings.js
index 088b0c56..5ad0b8d5 100644
--- a/assets/js/settings.js
+++ b/assets/js/settings.js
@@ -6,7 +6,7 @@ layout: null
window.addEventListener("storage", ({ key, newValue }) => key !== null && key.startsWith(PREFIX) && newValue !== data[key] && bus.dispatchEvent(new CustomEvent(key, { detail: (data[key] = newValue) })));
for (const [key, config] of Object.entries(configs)) {
if (config.children === undefined) continue;
- for (const [childKey, child] of Object.entries(children)) {
+ for (const [childKey, child] of Object.entries(config.children)) {
configs[`${key}.${childKey}`] = { ...config, ...child };
}
}
From 3a7a7a1543957990c3efb158e7f0a7ba2c4f4780 Mon Sep 17 00:00:00 2001
From: neveler <55753029+neveler@users.noreply.github.com>
Date: Fri, 13 Mar 2026 10:21:16 +0800
Subject: [PATCH 6/9] update
---
assets/js/settings.js | 3 +++
assets/js/theme.js | 1 -
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/assets/js/settings.js b/assets/js/settings.js
index 5ad0b8d5..1d0dace0 100644
--- a/assets/js/settings.js
+++ b/assets/js/settings.js
@@ -27,6 +27,9 @@ layout: null
return config.default;
},
onChange(key, handler) {
+ const value = this.get(key);
+ if (value === null) return;
+ handler(value);
bus.addEventListener(formatKey(key), (event) => handler(event.detail));
},
};
diff --git a/assets/js/theme.js b/assets/js/theme.js
index 013e8a3d..6cece472 100644
--- a/assets/js/theme.js
+++ b/assets/js/theme.js
@@ -64,7 +64,6 @@ window.addEventListener("DOMContentLoaded", function () {
}
}
settings.onChange("appearance_color", applyTheme);
- applyTheme(settings.get("appearance_color"));
settings.onChange("appearance_skin.dark", function () {
applyTheme(settings.get("appearance_color"));
});
From 9f19908613080fb20803f6d75280fd94233307bf Mon Sep 17 00:00:00 2001
From: neveler <55753029+neveler@users.noreply.github.com>
Date: Fri, 13 Mar 2026 10:35:04 +0800
Subject: [PATCH 7/9] update
---
_layouts/settings.html | 27 ++++++---------------------
1 file changed, 6 insertions(+), 21 deletions(-)
diff --git a/_layouts/settings.html b/_layouts/settings.html
index 1e86a0dc..0279e6bf 100644
--- a/_layouts/settings.html
+++ b/_layouts/settings.html
@@ -16,8 +16,7 @@ {{ group.title }}
{% if setting.type == 'radio' %}
{% for option in setting.options %}
{% endfor %}
@@ -37,8 +36,7 @@ {{ group.title }}
| {{ value.options[option] }} |
{% for item in setting.children %}
- |
+ |
{% endfor %}
{% endfor %}
@@ -50,23 +48,10 @@ {{ group.title }}
{% endfor %}
-
+
From 590eb1ae60cc4f45ce432792af775a14712f1606 Mon Sep 17 00:00:00 2001
From: neveler <55753029+neveler@users.noreply.github.com>
Date: Sun, 15 Mar 2026 11:47:21 +0800
Subject: [PATCH 8/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E5=A4=84?=
=?UTF-8?q?=E9=94=99=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
assets/js/settings.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/assets/js/settings.js b/assets/js/settings.js
index 1d0dace0..b4674c33 100644
--- a/assets/js/settings.js
+++ b/assets/js/settings.js
@@ -20,8 +20,8 @@ layout: null
get(key) {
const name = formatKey(key);
if (data[name] !== undefined) return data[name];
- data[name] = localStorage.getItem(name);
- if (data[name] !== null) return data[name];
+ const value = localStorage.getItem(name);
+ if (value !== null) return data[name] = value;
const config = configs[key];
if (config === undefined || typeof config.default !== "string") return null;
return config.default;
From afd0ef836f3d6cf9c5c4a1c1b097fcaf77a5431c Mon Sep 17 00:00:00 2001
From: neveler <55753029+neveler@users.noreply.github.com>
Date: Sun, 15 Mar 2026 12:41:15 +0800
Subject: [PATCH 9/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=B7=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_layouts/settings.html | 2 +-
_sass/minimal-mistakes-plus.scss | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/_layouts/settings.html b/_layouts/settings.html
index 0279e6bf..96bc81bb 100644
--- a/_layouts/settings.html
+++ b/_layouts/settings.html
@@ -21,7 +21,7 @@ {{ group.title }}
{% endfor %}
{% elsif setting.type == 'multi-radio' %}
-
+
| {{ value.title }} |
diff --git a/_sass/minimal-mistakes-plus.scss b/_sass/minimal-mistakes-plus.scss
index 07bfdaec..344a3ca8 100644
--- a/_sass/minimal-mistakes-plus.scss
+++ b/_sass/minimal-mistakes-plus.scss
@@ -18,3 +18,9 @@ blockquote {
position: sticky;
margin: 0 !important;
}
+
+table.setting-multi-radio td {
+ border: 0;
+ text-align: center;
+ border-left: 1px solid mix(#000, $border-color, 25%);
+}