v0.1.26: 墨规清辉——MOD 规范范式 + 灾因注册表 + 页面提亮(1047 全绿)

【MOD 规范与范式(核心命题)】
- docs/MOD_GUIDE.md:完整作者守则——命名/id 规约/semver/schema:1/五数据口
  (事件/模板/词库/灾因/配方)/依赖冲突/安全红线(无脚本·禁碰 rng·不动核心时序)/
  打包分发(.cotymod 单文件)/行为承诺
- validateMod 深度校验:category/weight/境界/负成本/非空/options.eff 形状
- modPreflight 权威冲突检测:findEvent(池+动态分支 raid/渡劫/大比/传薪全量)
- MOD_SCHEMA_VERSION=1 + schema 声明与升级提示;PluginStatus.author 展示

【灾因归一化(平衡版落地)】
- calamities 由 as const 死表→聚合注册表(calamityNames/calamityFamilyOf/calamityEffectOf+addCalamity)
- WorldSim 灾签/生产/Market 全链路走聚合读口——MOD 灾因(剑灾/灵潮湍变)进入世界循环
- 默认表不变→基准世界指纹零漂(clock.test 全绿实证)

【页面可读性(有点暗)】
- .dim #6d6150→#a99c80(3.4:1→7+:1)、.dim2 #96896e→#c3b595、.help-text 提亮、
  .feed-item 显色 #efe4c9 + 灰金系 8 处提亮(styles.css 12+/11- 纯色值)
- tests/contrast-readability.test.ts:WCAG 对比度审计(≥4.5:1)+ 历史暗色迁移断言

【测试】1047 全绿(47 套件):mod-system 9(+validate/灾因/冲突/预检)、contrast 3;
【金钟罩】0.1.25 基线零漂;build 通过
This commit is contained in:
2026-08-23 16:37:11 +08:00
parent 5d9c333c76
commit ba9766e152
16 changed files with 354 additions and 27 deletions
+2 -2
View File
@@ -79,7 +79,7 @@ export default function SettingsPanel() {
<div className="plugin-info">
<b>{p.name}</b>
<span className="dim2" style={{ fontSize: '0.8rem' }}>
v{p.version} · {p.kind} · {p.description}
v{p.version}{p.author ? ` · ${p.author}` : ''} · {p.kind} · {p.description}
</span>
</div>
<div className="plugin-actions">
@@ -256,7 +256,7 @@ export default function SettingsPanel() {
· <br />
·
</div>
<div className="dim2" style={{ marginTop: 8 }}> 0.1.25 · Chronicle of the Immortal Clan</div>
<div className="dim2" style={{ marginTop: 8 }}> 0.1.26 · Chronicle of the Immortal Clan</div>
</div>
</div>
)
+12 -11
View File
@@ -209,7 +209,7 @@ html[data-blade] .battle-lines {
.btn {
background: linear-gradient(180deg, #20180f, #191209);
border: 1px solid #3d3221;
color: #d8c8a8;
color: #e6d8ba;
padding: 6px 14px;
border-radius: 3px;
cursor: pointer;
@@ -295,11 +295,11 @@ html[data-blade] .battle-lines {
}
.dim {
color: #6d6150;
color: #a99c80;
font-size: 0.9rem;
}
.dim2 {
color: #96896e;
color: #c3b595;
font-size: 0.85rem;
}
.good {
@@ -474,7 +474,7 @@ html[data-blade] .battle-lines {
}
.boot-en {
letter-spacing: 5px;
color: #7d6c4a;
color: #a4916c;
font-size: 0.72rem;
}
.boot-divider {
@@ -580,7 +580,7 @@ html[data-blade] .battle-lines {
}
.newgame .card-title {
font-size: 1.6rem;
color: #d9bd85;
color: #e6cd9a;
letter-spacing: 10px;
}
.field {
@@ -590,7 +590,7 @@ html[data-blade] .battle-lines {
}
.field label {
width: 80px;
color: #b09f7c;
color: #c4b28a;
letter-spacing: 2px;
}
.field input,
@@ -622,7 +622,7 @@ html[data-blade] .battle-lines {
border: 1px solid #3a3021;
border-radius: 3px;
cursor: pointer;
color: #cbbd9e;
color: #ddceac;
transition: all 0.16s;
}
.diff-opt:hover {
@@ -744,7 +744,7 @@ html[data-blade] .battle-lines {
display: flex;
align-items: center;
gap: 5px;
color: #cbbd9e;
color: #ddceac;
background: rgba(38, 29, 16, 0.6);
border: 1px solid #2f2517;
padding: 3px 9px;
@@ -943,6 +943,7 @@ html[data-blade] .battle-lines {
border-left: 2px solid transparent;
margin-bottom: 3px;
font-size: 0.85rem;
color: #efe4c9;
line-height: 1.5;
border-radius: 2px;
}
@@ -1092,7 +1093,7 @@ html[data-blade] .battle-lines {
}
.help-text {
color: #a2906c;
color: #c9b894;
font-size: 0.85rem;
line-height: 1.8;
max-width: 680px;
@@ -1358,7 +1359,7 @@ html[data-blade] .battle-lines {
.opt-eff {
display: block;
font-size: 0.74rem;
color: rgba(150, 132, 96, 0.9);
color: rgba(196, 178, 140, 0.96);
margin-top: 3px;
letter-spacing: 0.02em;
}
@@ -1884,7 +1885,7 @@ html[data-blade] .battle-lines {
padding: 3px 10px;
cursor: pointer;
font-family: inherit;
color: #cbbd9e;
color: #ddceac;
transition: all 0.15s;
}
.world-badge:hover {