From 63ec87fa24c65ee5ae4888730d965e445dfa045a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 12 Oct 2026 03:48:39 -0400 Subject: [PATCH] C14.5 r3: the storage test types in source mode; C14.5 done Co-Authored-By: Claude Opus 5.5 (1M context) --- tasks/TASKS.md | 4 ++-- tasks/reviews/C14.5-r3.md | 3 +++ tests/scripts/storage.sh | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 tasks/reviews/C14.5-r3.md diff --git a/tasks/TASKS.md b/tasks/TASKS.md index 941232e..ea1b22c 100644 --- a/tasks/TASKS.md +++ b/tasks/TASKS.md @@ -102,8 +102,8 @@ - [~] C14.2 组件库:公式与 Mermaid(MARK-04)。`typography::Latex` 改由 RaTeX 排出;Mermaid 由 mermaid-rs-renderer 画成图;画不出即显示错误与原文;`MarkdownRenderer` 用二者,本地图片按属主给的文件夹读,网络图片不自动载入 — R1 FAIL 六项已修:版面失败把公式写进日志(只记固定文字);资源与图集从不释放(`primitives::held` 持有,换内容或离开即释放);公式失败丢了原文与位置(显示原因、位置与原文);零边距裁掉字形(按墨迹重取画框);`file:` 地址把片段当文件名、把主机当相对路径(解析主机,去查询与片段);Mermaid 节点字色未取 Ely 前景。R2 FAIL 一项已修:一个持有者离开即逐出共享资源(按资源计数)。R3 FAIL 两项已修(不再送审):最后离开的持有者若未收到图,图集里的图不释放(图存于共享记录,由最后离开者释放,单测 `the_last_holder_frees_the_image_another_painted`);一行注释 11 词(已缩短) - [~] C14.3 组件库:文件级 Markdown 文档组件。一个 `CodeEditor` 持全文与撤销;可视(变高虚拟列表,逐块渲染,按下的块开成源码,写回为一步撤销)、源码(`CodeEditor` 加 Markdown 着色)、预览(只读);属主可读写文本、模式、插入点行列、滚动,可跳到行;改动发事件 — R1 FAIL 七项已修:写回后按下别的块用旧范围(按偏移换算所按的块,结构变了不开);插入点偏移撤销后落在字符中间(改用编辑器选区为唯一插入点);预览收撤销重做(预览不挂动作);末尾新块的插入点漏算接缝;无插入点与滚动的设定(`set_caret`、`set_top_line`,换模式保持顶行);输入法组字与撤销重做不受 64 MiB 限制(每条路径都限,含重做);块不可用键盘到达(Tab 停靠点,Enter、空格打开)。R2 FAIL 三项已修:长文后台解析期间写回后按下仍用旧范围(解析文字与编辑器文字相同才可打开);块内滚动位置丢失(按块高比例);换文字后立即设顶行用旧块(要求等其文字解析后落定)。R3 FAIL 四项已修(不再送审):迟到的帧回调完成了新的要求(要求带编号,只完成自己的);等待中的顶行越过换成的短文字而崩溃(放时按当下行数夹住);换文字后的 `reveal` 用旧块(`reveal` 也是等解析的要求);测试不跑帧回调(`frames` 调 `simulate_next_frame`,并核对要求已完成,块内比例改为零时测试失败) - [x] C14.4 ElyMark 文件会话改为原生(MARK-01,§14.3,QA-21):视图换成 C14.3 的组件,文本即文件原文,无序列化;BOM、CRLF 照旧;新建、打开、保存、另存、重命名照旧;应用不再依赖 `ely-web-content`。网页实现的功能随之删去,在各自的任务里原生重做:查找替换与表格(C14.9)、附件(C14.10)、书写视图的应用(C14.12,`look.json` 与菜单照旧)、导出与打印(C14.14);其文案留到那时。依赖网页的真窗口脚本 `tests/scripts/mark-*` 删去,ElyMark 的行为由 gpui 窗口测试覆盖 — R1 FAIL 四项已修:载入未报给外壳(视图在下一轮更新报一次);大文件判定只看打开时(随当前文字,越过即转源码,组件库丢旧读取);刷新测试不核对文字与撤销;四行注释超长。R2 ok -- [ ] C14.5 删去 CEF:`crates/ely-web-content`、`scripts/fetch-cef.sh`、`scripts/build-mark-content.sh`、`apps/ely-mark/web`、打包里的 CEF 辅助应用与许可、CEF 的测试脚本;PRD 与 `agents.md` 写明新路线,ElyMail 正文不用 CEF 与 Electron -- [ ] C14.6 编辑模式与大文件(MARK-02、14,PERF-07):可视、源码、预览按标签切换,切换不改文件,撤销跨模式;超过阈值的文件只开源码并说明;1 MB 文档 2 秒内可编辑,实测记录 +- [x] C14.5 删去 CEF:`crates/ely-web-content`、`scripts/fetch-cef.sh`、`scripts/build-mark-content.sh`、`apps/ely-mark/web`、打包里的 CEF 辅助应用与许可、CEF 的测试脚本;PRD 与 `agents.md` 写明新路线,ElyMail 正文不用 CEF 与 Electron — R1 FAIL 三项已修:帮助里“只读所在文件夹”是网页的限制(改写原生的图片规则);`agents.md` 与无障碍记录引用已删的脚本;PERF-07 的就绪日志随 C14.6 接上(写明)。R2 FAIL 一项已修:存储测试的样本在干净启动时被删(改为崩溃后只由清除记号删去恢复副本,记号用掉即为重试)。R3 FAIL 一项已修(不再送审):新建文档在可视模式键入无处落下,存储测试先 Cmd+2 到源码;产品缺陷记入 C14.6 +- [ ] C14.6 编辑模式与大文件(MARK-02、14,PERF-07):可视、源码、预览按标签切换,切换不改文件,撤销跨模式;超过阈值的文件只开源码并说明;1 MB 文档 2 秒内可编辑,实测记录;新建的空文档在可视模式下键入无处落下(C14.5 审查查出),须可直接键入 - [ ] C14.7 Markdown 与扩展语法(MARK-03、04):CommonMark 与 GFM、脚注、公式、Mermaid、front matter(不进可视,原样在上方);文档旁图片;链接照 M-05(可视 Cmd/Ctrl 单击、预览单击交应用) - [ ] C14.8 导航(MARK-05):大纲取 markdown-rs 的标题与位置,按标题跳转;文件树、多标签、最近文件照旧 - [ ] C14.9 编辑工具(MARK-06):查找替换(大小写、全词、正则),缩进,列表续写,表格插入与行列操作,代码高亮 diff --git a/tasks/reviews/C14.5-r3.md b/tasks/reviews/C14.5-r3.md new file mode 100644 index 0000000..854fb94 --- /dev/null +++ b/tasks/reviews/C14.5-r3.md @@ -0,0 +1,3 @@ +FAIL + +1. `tests/scripts/storage.sh:94` — After Cmd+N, the native document starts in visual mode with the document container focused; no editable block is open. Typing `edit 1 ` therefore changes nothing, creates no recovery point, and the fresh-HOME run fails at line 96 after its 25-second wait, before checking retention or restart clearing. A GPUI window probe against the pinned f59c9f7 component confirms that this input leaves the focused visual document empty, while switching to source mode accepts exactly that text (`.work/C14.5-r3/focus-probe.log`). Switch the new document to source mode before typing, or explicitly open and focus its visual editing block, then verify the recovery-point sequence. diff --git a/tests/scripts/storage.sh b/tests/scripts/storage.sh index 36f4339..fa86993 100755 --- a/tests/scripts/storage.sh +++ b/tests/scripts/storage.sh @@ -86,6 +86,8 @@ sleep 1 tabs=$(grep -c "as tab" "$data/ely.log" || true) keys 'keystroke "n" using command down' for _ in $(seq 40); do [ "$(grep -c "as tab" "$data/ely.log")" -gt "$tabs" ] && break; sleep 0.25; done +# Source mode takes typing in an empty file. +keys 'keystroke "2" using command down' sleep 2 # Twelve points written, one edit each. written() { grep -c "recovery: a point at" "$data/ely.log" || true; }