5.3 KiB
FAIL
apps/ely-table/src/rules.rs:96 — 等待输入落地后重新调用 ask_rule,它重新读取活动工作簿,丢失发起工作簿的身份;data.rs:288 的分列和本文件 428 的条件格式列表使用同一重入方式。复现:工作簿 A 排队跳到 A2,立即打开数据验证,再切到 B;等待结束后 Dialog::Validation.tab 为 B,确认将修改 B。隔离探针得到 Some(1),期望 Some(0)。修复方向:等待回调捕获发起的 tab id,后续读取、对话框和提交全程使用该 id,并为三条等待路径补回归。
crates/ely-lok/src/view/clip.rs:89 — 内核剪贴板的可用性绑定到目标视图的 copied,跨工作簿粘贴公式会进入纯文本分支并丢失公式。复现:A 的 B1 为 =A1*3、显示 6,复制 B1;切到从未复制过的 B,在 C1 执行“粘贴为公式”;保存 FODS 后 C1 是数值 6,公式数保持 1,期望新增公式后为 2。同视图现有回归通过,跨工作簿探针失败。修复方向:在共用 worker 的剪贴板状态中记录复制来源,验证系统剪贴板仍对应该来源后,允许目标工作簿使用内核的公式粘贴;增加跨工作簿保存结果断言。
crates/ely-lok/src/view/clip.rs:92 — 外部剪贴板分支对两个选择性粘贴操作均调用普通文本粘贴,“粘贴为值”会执行以 = 开头的文本。复现:系统剪贴板写入 =1+2,在空格执行“粘贴为值”;保存 FODS 后出现新增的 table:formula,实际公式数 2,期望保持 1。修复方向:根据粘贴操作设置内核的导入与选择性粘贴方式,使值模式保留值或字面文本,并用保存文件检查公式属性。
apps/ely-table/src/rules.rs:240 — 验证规则缓存仅以地址判定是否重读,同格应用或撤销规则后继续使用旧规则,同地址切换工作表也会复用它。复现:停在 E2,初始缓存为 any,应用带下拉列表和输入提示的 list 规则;等待队列落地后内核返回 list,界面缓存仍为 any,cell_aids 因此继续隐藏下拉按钮和提示。修复方向:缓存键包含工作表身份与规则变更状态,在应用、清除、撤销和切表后重读,并验证当前格的缓存及可见控件。
apps/ely-table/src/rules.rs:31 — “清除数据验证”用 Validation::default() 构造 any,序列化得到空 operator 和 errorStyle;补丁第 455 行校验这两项后拒绝执行。复现:E2 已有 list 验证,发送菜单生成的清除参数,worker 返回 rules.validation: the undo history did not move,原验证规则保留。修复方向:为清除发送合法的 any 参数,并在内核按该模式处理无关字段;增加从实际菜单参数到规则消失的回归。
crates/ely-lok/src/sheet/data.rs:157 — type == "any" 时直接返回默认字段,丢弃已存在的输入提示;apps/ely-table/src/rules.rs:126 又将此类规则重建为默认配置。复现:数据验证选择“任何值”,开启输入提示并填写 Enter an identifier;内核实际返回 showInput:true 和完整消息,解析结果却为 show_input:false、空消息,重新选择该格或重开验证对话框后提示消失。修复方向:区分“没有规则”和“已有 unrestricted 规则”,完整保留后者的提示字段,并覆盖应用、重读及再次编辑。
apps/ely-table/src/format.rs:132 — 数字格式缓存键只有地址与编辑计数,工作表切换保持同地址时跳过重读。复现:第一表 A1 为百分比,第二表 A1 为货币;面板显示第二表后切回第一表,内核返回 percent,面板仍为 currency。隔离探针确认该不一致。修复方向:将工作表身份加入缓存键,在切表完成后刷新格式类别和代码,并增加同地址切表回归。
crates/ely-lok/src/events.rs:263 — 将完整 Request::Invalid 以 Debug 写入日志,包含文档自定义的验证标题和消息;apps/ely-table/src/rules.rs:223 还把同一消息交给会记录全文的 Tabs::toast。复现:验证消息为 PrivateWorkbookMessage,触发无效输入;捕获的日志含 Invalid { title: "PrivateTitle", message: "PrivateWorkbookMessage", ... },违反 agents.md 规则 4 和 PRD §18.2 的日志约束。修复方向:日志仅记录请求种类、样式和接受状态,消息内容留在界面反馈通路;对日志中用户文档内容缺失作断言。
crates/ely-lok/src/client/tests/rules.rs:118 — 边框验收只检查 worker.run 成功,无法发现已撤销记录掩盖的实际格式缺失。复现:在隔离副本中把边框命令的全部 Arg::Line(..., true) 改为 false,构建独立 mutant worker;现有 number_formats_alignment_and_fills_apply 仍通过,而保存 FODS 的探针确认所选 B2:B5 的边框样式缺失。同一保存探针在原 worker 下通过。修复方向:分别验证全部、外框和清除操作后所选单元格实际保存的外边框与内边框属性,使该变异触发失败。
patches/libreoffice/0016-lok-calc-formats-data-rules.patch:501 — 文件共 919 行,超过 agents.md 规则 5 的 500 行上限。复现:wc -l 返回 919。修复方向:按格式、数据整理和规则拆分补丁,使每份符合行数限制,并同步构建脚本中的补丁顺序与重复应用检查。