2.4 KiB
2.4 KiB
5-43 大 JSON 资源 tab 打开后卡死且无法关闭
状态
- 状态:done
- owner:05-editor-mainline
- 发现时间:2026-06-04
- 修复时间:2026-06-04
现象
在 local-folder 文件树中打开 OCR sidecar 的 source-map JSON,例如:
/mnt/Data1T/research/DHA_cosmetics/literature/SCCS_1612_19_DHA.ocr/SCCS_1612_19_DHA.pdf.source-map.json
页面会把 JSON 当作可编辑 code 资源加载进 Tiptap resource tab。大 JSON 打开后主线程明显卡顿,标签页关闭按钮无响应或被资源编辑 session 的关闭保护阻止;其它普通资源 tab 仍可关闭。
根因
document-resource-tab-runtime.js 将 .json 归类为 code,并且 markdown/text/code 统一走 openTiptapResourceTab。这会为 JSON 创建完整 Tiptap 编辑 session、序列化大文档、挂本地文件事件 channel,并把 code 资源纳入 dirty close guard。
OCR source-map JSON 是机器生成的只读索引文件,不适合作为页面编辑器文档打开;大文件走 Tiptap 会放大渲染和关闭保护成本。
修复
code资源不再声明为 editable。.json等 code 资源改走轻量只读<pre><code>预览,不创建 Tiptap editor session。- 只读预览显示文件大小,超过预览上限时截断提示。
- Markdown 和普通 text resource tab 仍保留原可编辑 Tiptap 路径。
验证
node --check rust/crates/mnote-web/browser/document-resource-tab-runtime.jscargo build -p mnote-web --manifest-path rust/Cargo.toml- 临时启动
127.0.0.1:3023后用 Playwright 打开真实页面:rootUri=file:///mnt/Data1T/research/DHA_cosmetics- 页面:
literature/dha_computational_modeling_literature.md - 资源:
literature/SCCS_1612_19_DHA.ocr/SCCS_1612_19_DHA.pdf.source-map.json
- 浏览器验证结果:
- resource tab 成功打开只读 code preview。
- 当前 panel 不存在
mnote-leptos-tiptap-island-editor-root,证明没有挂 Tiptap 编辑器。 - 预览加载
970708字符,meta 显示只读预览 · 971,098 bytes。 - 点击 tab close 后
openResourcePanels=0,主页面 tab 恢复选中。
备注
task505-resource-tab-watch-contract-smoke.js 在本次临时 standalone 服务上未通过,失败点是 Markdown resource 外部文件变更 watcher 未把写盘更新同步回 resource editor;该路径与本次 JSON 只读预览不同,未作为本 bug 验收条件。