docs(presenter): M116 r4 P3 —— settings_bridge 的「三个键」漂移对齐到四个字段

AppearanceBase 自 M116 起有四个字段(整窗 α / 标题栏三态 / 配色来源 / 窗口圆角),
load_base 的文档与测试名还写着「三个键」。只改注释与测试函数名,行为零改动。
This commit is contained in:
AskaEth committed 2026-11-05 06:35:19 +08:00
1 parent abc51a957b
commit 1cb36da1e2
1 file changed
+6 -5
+6 -5
View File
@@ -101,12 +101,13 @@ impl SettingsBridge {
)
}
/// 外观**下层**的只读快照(D36·D37·D38):整窗 α / 标题栏三态 / 配色来源档。
/// 外观**下层**的只读快照(D36·D37·D38 · M116):整窗 α / 标题栏三态 / 配色来源档 /
/// 窗口圆角策略(`AppearanceBase` 的**四个**字段)。
///
/// 为什么不并进 [`SettingsBridge::load`] 的返回值:那个结构体(`AppearancePrefs`)是
/// **UI 写入用**的(每个字段都会被 `persist` 回写),而这三个键**只读不写**——
/// **UI 写入用**的(每个字段都会被 `persist` 回写),而这**四个**键**只读不写**——
/// 落盘走 core 的 `Appearance::write`。并进去会让每个 `AppearancePrefs` 构造点都要补字段,
/// 还会让「这三项只读」这件事在类型上消失。
/// 还会让「这四项只读」这件事在类型上消失。
///
/// UI 侧(`crates/app-iced`)拿它读启动值:`app-iced` 不直接依赖 `unlucky-core`,
/// 所以「把 core 的 `SettingDocument` 翻译成只读快照」这一步必须留在本 crate。
@@ -311,13 +312,13 @@ mod tests {
assert!(!appearance.bg_active(), "路径空也不算生效");
}
/// `load_base()` 是「重启后读回整窗 α / 配色来源」的唯一通道(M93)。
/// `load_base()` 是「重启后读回整窗 α / 配色来源 / 窗口圆角」的唯一通道(M93 · M116)。
///
/// 抓得住:①文件里写着 `window_opacity=0.6` / `palette_source=wallpaper` 时能被**新开的**
/// bridge 读到(= 重启语义);②缺键时回出厂(1.0 / preset),而不是 `0.0` 或随机档。
/// 抓不住:UI 侧是否真的用它来下发窗口 α(那由 `app-iced` 的日志与单测证明)。
#[test]
fn load_base_reads_the_three_read_only_keys_and_defaults_when_missing() {
fn load_base_reads_the_four_read_only_keys_and_defaults_when_missing() {
let path = temp_config("base");
// 文件由「外部写者」(CLI / AI / 设置页的 SetSetting)产生,这里直接落 JSON。
std::fs::write(