ElyMail's window lists accounts and adds Gmail, Microsoft, iCloud (app-specific password), IMAP and POP3 ones; a check logs in to both servers and reports each. Accounts live in the store as JSON with a case-insensitive unique address; secrets go to the keychain. Removal names the cache it deletes, takes the secret first and puts it back when local removal fails. Originals are set aside until commit and restored after a crash. Requests are numbered so late results stay with their own dialog. The account list is keyboard-navigable.
1.6 KiB
1.6 KiB
FAIL
-
[P2] apps/ely-mail/src/removing.rs:62 — 凭据先被永久删除,随后本地账号删除失败时没有恢复。Windows 探针以只读共享占住原文,再通过真实确认按钮删除:文件操作失败后账号和原文仍在,但
vault.get已为None,留下无法继续登录的账号;界面只报账号未删除。应在存储失败时恢复原有凭据,保持失败后的账号可用,并覆盖文件删除失败与只读存储的回归路径。复现见.work/C12.5-r2/ui-probe.log。 -
[P2] apps/ely-mail/src/side.rs:28 — 账号行使用只有鼠标点击的
ListItem,没有 Tab 停靠或键盘选择。已有两个账号时,键盘用户无法切到第二个账号,也无法操作它的删除;窗口探针循环 Tab、方向键、Enter 后仍选中第一个账号。此处违反项目对可按压元素的焦点规则。应使用组件库带键盘导航的列表,把选择事件接到pick,并添加键盘切换账号的窗口测试。复现见.work/C12.5-r2/ui-probe.log。 -
[P2] crates/ely-mail-engine/src/store/accounts.rs:23 — 存储层按原样插入地址,只防止大小写完全相同的重复;界面不分大小写的检查只看已返回的账号列表。第一次保存
ann@example.com尚未完成时,取消并重新添加ANN@example.com,两次检查都能通过,两个保存最终都成功。探针用存储锁延迟保存,确认重现两个重复账号,违背 C12.5 声称的同地址不重复添加。应在存储层原子地执行与界面一致的地址唯一约束,并覆盖两次保存尚未返回的情形。复现见.work/C12.5-r2/ui-probe.log。