chore: 导入旧记忆备份供恢复

This commit is contained in:
2026-09-23 22:38:40 +08:00
parent 5313fcee7a
commit 6a6a895eaf
638 changed files with 29816 additions and 1 deletions
@@ -0,0 +1,23 @@
---
title: Checkpoint 2026-09-02 10:03:40 UTC [234316afba]
type: checkpoint
permalink: main/projects/4111f53b-afa5-48e1-aaf8-d70a7edc0638/checkpoint-2026-09-02-10-03-40-utc-234316afba
stable_id: 07689f07-a36f-48bd-bd6f-6c8294f22eda
scope: project
memory_type: checkpoint
project_id: 4111f53b-afa5-48e1-aaf8-d70a7edc0638
usage_profile_id: 7aee455b-24cc-4008-bdaf-443721e6f939
status: active
revision: 1
request_id: aoe3-code-review-user-changes-20260902
created_at: '2026-09-02T10:03:40.801295+00:00'
updated_at: '2026-09-02T10:03:40.801295+00:00'
tags:
- checkpoint
- review
- wpf
- safety
- pending-fixes
---
2026-09-02 代码审查(范围 3ee0022..10c013c),未修改代码。构建 0 警告 0 错误,真实 Data.bar 测试 50/50 通过。确认待修问题:1)目标版本保护被删除,DetectGame 只标 detected,ApplyAsync 对任意版本直接备份并覆盖 Data.bar,违反仅支持 100.19.17293.0 的安全约束;2)实体/卡牌/技能/战术/批量保存后没有更新 Original 基线,working.bar 已写入而 UI 仍标记修改,点“撤销未保存”会显示原值但不会撤销 working.bar,后续 UI 与导出内容不一致;3)ExportMod 先递归删除现有 Mod Data 目录后逐文件写入,非事务化,失败会留下部分启用 Mod;age3-mod-status.json 也直接覆盖而非原子替换;4)卡牌时代只校验非负但 UI 声明 0-4,发送次数允许任意负数而 UI 仅声明 -1 无限;5)SanitizeName 仅检查完整名称,con.txt 等 Windows 设备名带扩展名会通过,实际创建目录失败,现有测试还错误地断言 con.txt 合法;6)AppPaths 新增 %LOCALAPPDATA% 回退与默认自动清理超过 10 个手动/安全备份,和已确认的安装目录存储、不自动删除备份要求冲突;7)已存在但禁用的 Mod 被重新启用时返回 false,UI误报“已是启用状态”;8)人口规则页使用不可滚动 StackPanel,在最小窗口高度下底部列表可能裁切。生成的增量 Mod XML结构测试通过,但仍未经过真实游戏加载验证。下一步需用户授权后按优先级修复,建议先处理 1-3。