test(presenter)+fix(i18n): 淘汰策略与共享缓存解耦;注释里的 ASCII 引号

- prune() 抽成独立函数:全局缓存被所有用例共享,谁往里面灌 240+ 条都会顺手清掉
  别的用例刚缓存的键(实测:并行跑时 the_second_identical_refresh_... 假红)。淘汰
  策略改在本地 Cache 上测,两条判据各自确定;
- clippy -D warnings:from_ref 代替 &[x.clone()];
- model.rs 注释里的 "原因 + OS 原文" 用 ASCII 引号 → 页面字面量白名单守门报红,改
  中文引号;core/events 的三处文档失真登记为 TowerFinding(scope 外);
- 出处文案口径:TooLarge 的 detail 只留数字(presenter 不产人读文案)。
This commit is contained in:
AskaEth committed 2026-11-11 16:52:47 +08:00
1 parent 0b6b8f0a62
commit dd9962e610
11 files changed
+127 -64

No files matched your search

+2 -2
View File
@@ -56,7 +56,7 @@
//!
//! | 变化 | 落点 |
//! |---|---|
//! | 截图不再是一行字,而是「图 + 副文案」的格子 | [`wall`](3 列,见那个模块的文档) |
//! | 截图不再是一行字,而是「图 + 副文案」的格子 | [`wall`](2 列 = 同列元信息卡的栅格,见那个模块的文档) |
//! | 像素**不在**这里解,也不在渲染回调里解 | presenter 的后台线程(`host::saves::thumbs`)解好、随快照过来;本层只把 `Handle` 建一次(`model::from_state`) |
//! | 没有像素的格子**不许留白** | 占位框 + 一句短话;副文案把原因说全(超 8 MiB / 读不出 / 解不出 / 超 60 张预算) |
//!
@@ -164,7 +164,7 @@ pub(super) fn section<'a>(
if saves.screenshots.is_empty() {
body = body.push(note(ui, texts.saves_no_screenshots()));
} else {
// 缩略图墙(M251):一行三格,没像素的格子给占位框 + 原因,不留白。
// 缩略图墙(M251):一行两格(详情列 ≤424 宽,三格装不下),没像素的格子给占位框 + 原因。
body = body.push(wall::grid(ui, &saves.screenshots));
}
if saves.skipped > 0 {