diff --git a/tasks/TASKS.md b/tasks/TASKS.md index a9a67b1..f80fa5d 100644 --- a/tasks/TASKS.md +++ b/tasks/TASKS.md @@ -99,22 +99,22 @@ - [x] C14.0 前置:`reference/` 加 markion 与 markdown-rs 并钉提交;`scripts/review.sh` 照用户新定(gpt-6.1-sol,effort high,fast,每条最多三轮) — R2 ok - [x] C14.1 组件库:`MarkdownRenderer`、`MarkdownEditor`、Markdown 着色、块范围、大纲与链接查找改用 markdown-rs(`documents` 的 `tree`、`markdown`、`render`);`BlockEditor` 的导入导出不属 ElyMark,仍用 pulldown-cmark;原有测试照过,改了语义的测试写明 markdown-rs 的读法;推送,ElyOffice 钉新提交 — R2 ok -- [~] 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.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.R 复审通过 +- [x] 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`,并核对要求已完成,块内比例改为零时测试失败);三轮后的修复经 C14.R 复审通过 - [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 — 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 审查查出),须可直接键入 — R1 FAIL 两项已修:预览回可视不再打开空文档的输入框(同一焦点,无事件;换模式时直接查);自动打开的空块吞掉撤销(块未动时撤销走全文)。R2 FAIL 两项已修:以文字相同判断块的历史边界,丢了块内的重做;全文撤销成空后不再能键入(读完新文字再打开)。R3 FAIL 一项已修(不再送审):两份历史,关块即丢块内重做;改为只有全文一份历史,块内撤销重做先写回块再走全文(组件库 639521e,三条复现写成回归) -- [~] C14.7 Markdown 与扩展语法(MARK-03、04):CommonMark 与 GFM、脚注、公式、Mermaid、front matter(不进可视,原样在上方);文档旁图片;链接照 M-05(可视 Cmd/Ctrl 单击、预览单击交应用) — R1 FAIL 四项已修:坏 GIF 使 gpui 的加载器永不结束(坏帧即结束并报错);加载器把图片路径写进日志(错误不带路径);表格单元格丢图片(单元格为块);组件库的长注释。R2 FAIL 三项已修:窄格里图片不缩(单元格可收缩);`tree.rs` 超过 500 行(测试移出);测试文件的长注释。R3 FAIL 一项已修(不再送审):`data:` 图片走 `Image::to_image_data`,同一坏帧循环(同样结束并报错,应用测试复现) +- [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.R 复审通过 +- [x] C14.6 编辑模式与大文件(MARK-02、14,PERF-07):可视、源码、预览按标签切换,切换不改文件,撤销跨模式;超过阈值的文件只开源码并说明;1 MB 文档 2 秒内可编辑,实测记录;新建的空文档在可视模式下键入无处落下(C14.5 审查查出),须可直接键入 — R1 FAIL 两项已修:预览回可视不再打开空文档的输入框(同一焦点,无事件;换模式时直接查);自动打开的空块吞掉撤销(块未动时撤销走全文)。R2 FAIL 两项已修:以文字相同判断块的历史边界,丢了块内的重做;全文撤销成空后不再能键入(读完新文字再打开)。R3 FAIL 一项已修(不再送审):两份历史,关块即丢块内重做;改为只有全文一份历史,块内撤销重做先写回块再走全文(组件库 639521e,三条复现写成回归);三轮后的修复经 C14.R 复审通过 +- [x] C14.7 Markdown 与扩展语法(MARK-03、04):CommonMark 与 GFM、脚注、公式、Mermaid、front matter(不进可视,原样在上方);文档旁图片;链接照 M-05(可视 Cmd/Ctrl 单击、预览单击交应用) — R1 FAIL 四项已修:坏 GIF 使 gpui 的加载器永不结束(坏帧即结束并报错);加载器把图片路径写进日志(错误不带路径);表格单元格丢图片(单元格为块);组件库的长注释。R2 FAIL 三项已修:窄格里图片不缩(单元格可收缩);`tree.rs` 超过 500 行(测试移出);测试文件的长注释。R3 FAIL 一项已修(不再送审):`data:` 图片走 `Image::to_image_data`,同一坏帧循环(同样结束并报错,应用测试复现);三轮后的修复经 C14.R 复审通过 - [x] C14.8 导航(MARK-05):大纲取 markdown-rs 的标题与位置,按标题跳转;文件树、多标签、最近文件照旧 — R1 FAIL 一项已修:大纲不滚动,标题多时下方的选不到(放进纵向滚动区,侧栏测试滚到最后一个)。R2 ok -- [~] C14.9 编辑工具(MARK-06):查找替换(大小写、全词、正则),缩进,列表续写,表格插入与行列操作,代码高亮 — R1 FAIL 六项已修:表头之外的多余单元格使列操作越界(照留,在其上的列操作拒绝);引用与列表里的表格丢前缀(照留,前缀不一即拒绝);预览里能改正文(库的修改入口在预览拒绝);替换后下一处沿用旧序号(从替换文字之后找,到尾回绕);替换后可视显示匹配被丢(先读,长文等读完;自己的写入计入);代码里的 `- a` 被续写(只在 markdown-rs 读作列表项时)。R2 FAIL 两项已修:引用前缀与 Tab 不续写(照所在项的前缀、缩进与空白写出);等着的匹配不随文字作废(记下文字版本,新请求取代)。R3 FAIL 三项已修(不再送审):空任务项回车不结束列表;Shift+Tab 不退 Tab 缩进;空白缩进行插表格成了缩进代码(组件库 cd16b20,三条各有回归) +- [x] C14.9 编辑工具(MARK-06):查找替换(大小写、全词、正则),缩进,列表续写,表格插入与行列操作,代码高亮 — R1 FAIL 六项已修:表头之外的多余单元格使列操作越界(照留,在其上的列操作拒绝);引用与列表里的表格丢前缀(照留,前缀不一即拒绝);预览里能改正文(库的修改入口在预览拒绝);替换后下一处沿用旧序号(从替换文字之后找,到尾回绕);替换后可视显示匹配被丢(先读,长文等读完;自己的写入计入);代码里的 `- a` 被续写(只在 markdown-rs 读作列表项时)。R2 FAIL 两项已修:引用前缀与 Tab 不续写(照所在项的前缀、缩进与空白写出);等着的匹配不随文字作废(记下文字版本,新请求取代)。R3 FAIL 三项已修(不再送审):空任务项回车不结束列表;Shift+Tab 不退 Tab 缩进;空白缩进行插表格成了缩进代码(组件库 cd16b20,三条各有回归);三轮后的修复经 C14.R 复审通过 - [x] C14.10 附件(MARK-07):拖放与粘贴图片复制到文档旁 `assets/`,在插入点写相对链接 — R1 FAIL 两项已修:文件名里的换行使图片链接断成两段(控制字符换成空格,以 markdown-rs 核对为一张图);非规范文字的文件名生成错的地址(复制前即拒绝并说明)。R2 ok - [x] C14.11 外部修改(MARK-08,§14.4,QA-22):干净即重载并保持位置,有改动即比较,合并结果为一步撤销;改名、删除、读错照旧 — R1 FAIL 两项已修:保留修改时间的原子替换不被察觉(指纹加上文件身份);迟到的旧读取覆盖新版本(读盘编号,落定前核对磁盘)。R2 ok -- [~] C14.12 书写视图(MARK-09):专注模式、打字机滚动、正文宽度、字体、字号,存 `look.json`,不改 Markdown — R1 FAIL 已修:打开的块不随字号;首末块与首末行不能居中;缩放后不重新居中。R2 FAIL 已修:源码的上下内边距缩小了列表可见区,居中行以下不画,输入法与点按坐标错开半屏(改为列表首尾的空行);切换模式的定位覆盖居中。R3 FAIL 已修(三轮用尽,未再审):编辑器的居中记录只看行号,模式往返、再次跳到同一行、小幅缩放后不再居中(记录加上视图与行高,定位落定后清掉编辑器的记录) +- [x] C14.12 书写视图(MARK-09):专注模式、打字机滚动、正文宽度、字体、字号,存 `look.json`,不改 Markdown — R1 FAIL 已修:打开的块不随字号;首末块与首末行不能居中;缩放后不重新居中。R2 FAIL 已修:源码的上下内边距缩小了列表可见区,居中行以下不画,输入法与点按坐标错开半屏(改为列表首尾的空行);切换模式的定位覆盖居中。R3 FAIL 已修(三轮用尽,未再审):编辑器的居中记录只看行号,模式往返、再次跳到同一行、小幅缩放后不再居中(记录加上视图与行高,定位落定后清掉编辑器的记录);三轮后的修复经 C14.R 复审通过 - [x] C14.13 搜索(MARK-10):本文件与文件夹,结果跳到该行该处 — R1 FAIL 已修:查询整串转小写,原文逐字转小写,词尾 σ 对不上(两边逐字折叠,ς 同 σ)。R2 ok -- [~] C14.14 输出(MARK-11):自包含 HTML、带资源文件夹的 HTML、纯文本(markdown-rs)、PDF(MuPDF Story,经 `ely-pdf-worker`)、打印、富文本复制;缺图、错公式、画不出的图随导出提示 — R1 FAIL 十项已修:改由语法树逐节点写 HTML(各处行号、原地址、`data:` 图片、缺图留原地址或写替代文字);资源文件夹名编码;图片以 `create_new` 占名;每次 PDF 各自的暂存;图的缺字报错;纯文本的引用图片;富文本复制提示所缺。R2 FAIL 三项已修:链接按浏览器读法判协议;只删本次建成的文件夹;公式无轮廓的字以系统字体变路径或报错。R3 FAIL 三项已修(三轮用尽,未再审):公式先变路径再定边框;每次打印各自的文件;渲染模式无源码选区 +- [x] C14.14 输出(MARK-11):自包含 HTML、带资源文件夹的 HTML、纯文本(markdown-rs)、PDF(MuPDF Story,经 `ely-pdf-worker`)、打印、富文本复制;缺图、错公式、画不出的图随导出提示 — R1 FAIL 十项已修:改由语法树逐节点写 HTML(各处行号、原地址、`data:` 图片、缺图留原地址或写替代文字);资源文件夹名编码;图片以 `create_new` 占名;每次 PDF 各自的暂存;图的缺字报错;纯文本的引用图片;富文本复制提示所缺。R2 FAIL 三项已修:链接按浏览器读法判协议;只删本次建成的文件夹;公式无轮廓的字以系统字体变路径或报错。R3 FAIL 三项已修(三轮用尽,未再审):公式先变路径再定边框;每次打印各自的文件;渲染模式无源码选区;三轮后的修复经 C14.R 复审通过 - [x] C14.15 会话恢复(MARK-12):标签、未保存内容、模式、插入点、滚动、视图设置 — 所记模式类型化,认不出即读不出;重启与崩溃恢复的窗口测试。R1 FAIL 两项已修:恢复点与会话写不进只记日志(改为提示,恢复点写明上次存下的时间)。R2 FAIL 两项已修:按原话去重,含临时文件名的错误每次都提示(改按错误类别);崩溃恢复的标签“上次存下”为空(取所载恢复点的时间)。R3 ok - [x] C14.16 Git 配合与验收(MARK-13):状态栏 Git 状态与打开 ElyTree 照旧;三端构建,ElyMark 冒烟;逐条核对 MARK-01 至 14、QA-21、QA-22、PERF-07 — Git 状态各态与保存后重问有测试;Windows 与 Linux(WSL)分装、冒烟正常,macOS 只能经发布 CI,未验证。R1 FAIL 两项已修:量尺寸与导出的选字与 gpui 不同(照其回退规则);测试提交受用户签名设置影响(关掉签名)。R2 FAIL 已修:未载入 gpui 自带的字体与通用族映射(照载)。R3 ok -- [ ] C14.R 三轮后修复的合并复审(用户定,2026-10-12):C14.2、C14.3、C14.5、C14.6、C14.7、C14.9、C14.12、C14.14 第三轮的发现,在当前树里逐条核对已从根上修好并有测试;只判这些发现 +- [x] C14.R 三轮后修复的合并复审(用户定,2026-10-12):C14.2、C14.3、C14.5、C14.6、C14.7、C14.9、C14.12、C14.14 第三轮的发现,在当前树里逐条核对已从根上修好并有测试;只判这些发现 — R1 FAIL 已修:Shift+Tab 只数空格,空格后跟 Tab 退不出(改按列)。R2 FAIL 已修:两行注释超十字。R3 ok ## C15 ElyAgent(§15) diff --git a/tasks/reviews/C14.R-r3.md b/tasks/reviews/C14.R-r3.md new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/tasks/reviews/C14.R-r3.md @@ -0,0 +1 @@ +PASS