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

4.0 KiB
Raw Blame History

FAIL

apps/ely-mark/web/src/main.js:92 — 在另一模式编辑后返回时,drop(entry) 销毁原编辑器及其撤销历史,违反 PRD §14.3 的“保留内容历史与当前修订”。真窗口复现:打开 Alpha.\n,可视模式键入 v,源码模式键入 s,返回可视,连续 Cmd+Z 两次并保存,落盘仍为 svAlpha.\n;同模式编辑、撤销的对照用例通过。CEF 探针测得可视历史深度从 1 变为 0,经预览往返的对照仍为 1。方向:让本文件的编辑事务和历史跨模式保持连续,模式切换同步当前修订。证据:/tmp/ely-c143-r1-logs/mark-history.log、history-after.log、reviewprobe.log。

crates/ely-office/src/rename.rs:82 — 重命名完成回调在发起标签已关闭时仍调用 sessions.open,创建没有标签承接的会话登记,随后打开该文件会被这个登记挡住。隔离副本仅在文件系统改名调用前延迟 2 秒:发起 a.md → closed.md,通过正常 request_close 关闭干净标签,等改名完成后重新打开 closed.md;实测关闭后的标签数为 0、登记为 Ok(true),重新打开进入 Open::Focus,最终仍是 tabs=0, active=None。方向:完成回调先核对发起标签的存活和路径身份,再更新登记;关闭标签后完成的操作应保持登记与现存标签一致。证据:/tmp/ely-c143-r1-logs/rename-race.err。

crates/ely-web-content/src/surface.rs:118 — file_url 把 Windows 驱动器冒号和路径反斜杠都转义到 file:// 的 authority 中,生成无效 URL。按现有函数算法处理 C:\Users\Alice\notes\doc.md,结果为 file://C%3A%5CUsers%5CAlice%5Cnotes%5Cdoc.md,URL 解析器直接报 Invalid URL;Windows 的内容页面路径和图片目录均经过此函数,因而页面载入及本地图片解析受影响。本轮验证的是路径转换与 URL 解析,Windows 应用运行仍未验证。方向:按平台处理驱动器、UNC 和规范化路径,生成合法 file URL,并让路径围栏使用对应的反向转换。证据:/tmp/ely-c143-r1-logs/file-url.log。

apps/ely-mark/web/src/main.js:128 — 新模式异步构建期间 current 为 null,后续模式请求直接返回,用户最后选择的模式被丢弃。真 CEF 页面从源码模式连续调用 ely.mode('visual')、ely.mode('preview'),第二次调用返回 undefined,最终页面模式为 visual。相同路径可由快速连续的 Cmd+1、Cmd+3 触发。方向:保留最新模式请求和对应文本修订,使构建完成后呈现最后一次选择,并覆盖构建中的连续切换。证据:/tmp/ely-c143-r1-logs/reviewprobe.log 的 mode_race。

tests/scripts/mark-modes.sh:122 — “新建为空文档”的检查只等待 visual 模式日志,缺少内容断言,支撑不了 TASKS.md 的空文档验证声明。隔离副本把 Desk::on_new 的空字符串改成 REVIEW_NONEMPTY\n,重新构建后完整脚本仍输出 ok: mark modes、退出码 0。方向:对新建标签的实际空内容做断言,让非空初始化变异触发失败。证据:/tmp/ely-c143-r1-logs/new-mutation.diff、mark-modes-new-mutation.log;原实现的 mark-modes.sh、mark-content.sh、mark-session.sh 均独立通过,相关五个 crate 单测共 140 通过、1 忽略,Doc/Table/Show/PDF/Mark 调用点编译检查通过。

crates/ely-web-content/src/handlers.rs:501 — 文件实测 507 行,违反 agents.md 的每文件 500 行上限。方向:拆出完整的一组 CEF handler 职责,使各源码文件符合行数上限。

crates/ely-office/src/rename.rs:29 — Renaming: Host 为全部 Host 引入通用扩展 trait,经 lib.rs 和 prelude 公开,产品调用者实际只有 apps/ely-mark/src/desk.rs,违反 agents.md 的“无第二个使用者的抽象”约束。全项目调用点扫描确认其他文档应用沿用 FILE 命令表,只有 Desk 调用该 trait 的 rename。方向:将 Mark 专属的改名流程落实到 Desk,保留 ely-files 的平台原子改名函数。