1.9 KiB
FAIL
crates/ely-ui/src/settings/window.rs:131 — 作者名的在途保存缺少提交序号;恢复已保存值时直接返回,旧写入随后覆盖最后一次提交,违反配置提交与共用偏好同步要求。真窗口复现两次:初始 author=Ana,另一进程持有共用 .settings.lock;输入 Bob 并按 Enter,等待保存阻塞,再输入 Ana 并按 Enter。释放锁后,磁盘 author 与 AX 作者字段都变成 Bob。第二轮的写入失败保留输入及重试场景已通过,settings.sh 整体通过,当前回归未覆盖等待锁时恢复原值。证据:/tmp/c18-r3-native.log、/tmp/c18-r3-native-repeat.log、/tmp/c18-r3-author-pending.ax、/tmp/c18-r3-author-reverted.ax。修复方向:每次作者提交都更新提交序号,包括恢复已保存值;落盘与成功回显核对最新提交,覆盖持锁期间改回原值的窗口回归。
crates/ely-ui/src/settings/window.rs:161 — 最新 Git 提交核对发生在 Store::set 获取实际 .settings.lock 之前;等待文件锁期间已被后一次提交作废的写入,仍会在锁释放后原子替换配置。真窗口复现两次:初始 git="",另一进程持有 ElyTree 的 .settings.lock;提交 --version 成功返回 git version 2.56.0 的程序,等它进入保存等待,再清空 Git 字段并按 Enter。释放锁后,AX 字段保持空,磁盘 git 却变成旧程序路径;日志同时记录旧校验 was overtaken。第二轮的慢校验期间恢复已保存值及空值场景已通过,settings.sh 整体通过,当前回归未覆盖校验通过后的锁等待。证据:/tmp/c18-r3-native.log、/tmp/c18-r3-native-repeat.log、/tmp/c18-r3-git-pending.ax、/tmp/c18-r3-git-reset.ax、/tmp/c18-r3-ely-tree-settings.log。修复方向:在实际文件锁保护的提交阶段核对最新提交,并协调提交序号更新与最终替换;补校验通过后等待文件锁期间恢复已保存值的回归。