Files
ElyOffice/tasks/reviews/C10.3-r1.md
T

5.9 KiB
Raw Blame History

FAIL

apps/ely-show/src/table.rs:32 — 插入表格使用尚未提交的旧行列数。真实窗口中把“列”从 3 键入为 7,AX 已显示 7,直接点击“插入”,随后保存 PPTX;两次复现的 a:tblGrid 都只有 3 个 a:gridCol,行数仍为 3。NumberInput 只在 on_commit 更新 Dialog,而按钮读取并移除 Dialog 时字段仍持有草稿。修复方向:在键入时同步对话框草稿,或确认前提交所有数字字段,再发送一次 table.insert;回归测试须覆盖键入数字后直接点击按钮并核对保存文件。

apps/ely-show/src/notes.rs:62 — 备注提交用缓存的 slides.current 核对目标,notes.set 却只操作命令执行时的当前幻灯片。复现:在第 1 张输入备注,延迟 worker,先排入 show_part(1),随后触发备注失焦,再释放 worker。review_notes_blur_after_queued_slide_change_keeps_origin 实测第 1 张备注为空,第 2 张变成“Notes only for slide zero”。修复方向:把备注所属幻灯片身份传到内核操作,并保证提交与切页的有序关系;失焦、右键切页及延迟 worker 的回归应逐页核对备注。

patches/libreoffice/0027-lok-impress-objects-guides.patch:316 — SlideObjects 过滤批注后,数组下标与 SelectObject 使用的原始对象下标发生错位。复现:依次插入矩形、批注、椭圆,对象列表为原文本、矩形、椭圆;选择列表下标 2 后,椭圆的 selected 为 false,内核选中的是位于 (0,0) 的批注对象。真实 LOK 探针 review_comment_objects_keep_selection_indices 失败。修复方向:读出稳定的内核对象索引并按该索引选择,或让读取与选择共同使用过滤后的索引;覆盖批注前后插入对象、层次调整和多选。

apps/ely-show/src/chart.rs:142 — 图表读取回来后直接覆盖当前窗口的对话框,未核对发起标签仍然可见。复现:标签 A 选中图表,延迟读取,发起编辑后切到标签 B,再释放读取。review_delayed_chart_dialog_stays_with_origin_tab 实测当前标签为 1,对话框 editing.tab 为 0;提交路径随后仍向隐藏的 A 发 show.chart。修复方向:采用带发起标签校验的读取,并在窗口回调落地时核对标签、幻灯片及目标图表身份,丢弃已过期的请求;补延迟读取期间切标签和关闭标签的回归。

patches/libreoffice/0028-svx-chart-look-and-data-helpers.patch:326 — 图表数据读取以类别描述的数量决定数值行数,无法读取 PPTX 散点图的数值 X/Y 数据。复现:插入含两行、两个系列的散点图,保存 PPTX,重新打开并选中;.uno:Chart 返回 categories=[],四个 series 的 values 全为空。仅改标题再提交即报“show.chart: the undo history did not move”,违反 SHOW-07 保存后仍可编辑。review_pptx_scatter_keeps_editable_data 失败;同一内容的 ODP 读取正常。修复方向:按实际数据序列读取并保留散点图的 X/Y 角色与数值,保证对话框和写回结构匹配;回归须保存、重开、核对原数据并修改标题和数值。

patches/libreoffice/0028-svx-chart-look-and-data-helpers.patch:345 — std::isfinite 把 XChartDataArray 的缺失值哨兵 DBL_MIN 当成正常数字。复现:载入数值表含 office:value="NaN" 的柱形图,内核的数据读取给该点 2.2250738585072e-308,界面会显示这个数;将读取结果原样写回并仅改标题,show.chart 被拒绝。ChartDataWrapper::isNotANumber 明确把 DBL_MIN 判为缺失值,当前读取绕过了该判定。修复方向:使用图表接口的缺失值判定,完整支持缺失数据点的读取、对话框保留和写回;补含空点的保存重开及仅改外观回归。

patches/libreoffice/0030-lok-impress-charts-notes-comments.patch:311 — 备注格式检查只检查字符属性,替换文本时丢弃段落格式。复现:载入仅有一段、字符格式一致且段落 fo:text-align="end" 的备注,读取给 editable=true、rich=false;执行 notes.set 后保存,原有右对齐属性消失。review_notes_paragraph_format_is_preserved_or_refused 和保存前后 FODP 比较均复现。修复方向:在替换中保留段落属性;当前纯文本编辑无法保留的格式应纳入 rich 判定并明确拒绝,读接口与命令校验保持一致。

reference/Ely-GPUI-Components/src/collab/sidebar.rs:157 — 批注条目只有鼠标 on_click,缺少 Tab 停靠、键盘选择和无障碍语义。真实 ElyShow 窗口添加一条批注后,屏幕显示正文、作者和时间,AX 树只有“添加批注”“编辑”“删除”按钮;从备注按 Tab 到“添加批注”,再按 Tab 直接跳到标签栏控件,批注保持未选择,“编辑”“删除”保持禁用。键盘与辅助技术无法完成 SHOW-08 的定位、编辑和删除,也违反 PRD §20.3。修复方向:在 CommentSidebar 中提供有名称和选中状态的可聚焦条目,支持键盘选择并复用 on_select;用真实 Tab 顺序和 AX 树验证。

patches/libreoffice/0028-svx-chart-look-and-data-helpers.patch:147 — 带默认值的 get 把错误的 legend 数据静默转换成 true,IsChartLook 随之通过。复现:通过 show.chart 发送 {"type":"column","legend":"banana","data":{"categories":["A"],"series":[{"name":"S","values":[1]}]}},命令返回 Ok,文档新增或修改图表,读回 legend=true。review_bad_look_json_refuses_without_killing_worker 失败,违背项目禁止兜底和本任务“JSON 不合即拒绝”的约定。修复方向:严格校验已提供字段的 JSON 类型,错误值在修改前拒绝,保留文档与撤销历史;覆盖错误类型和有效可选字段。

apps/ely-show/src/remarks.rs:84 — 注释“Sends the dialog's text as a new comment or an edit.”共 11 词,超过 agents.md 的十词上限。python3 tests/scripts/comments.py 在该行返回 FAIL。修复方向:将注释压缩至十词以内并重新运行检查。