chore: align local-first control plane and editor fixes
- wire SQLite control-plane access/session paths into Rust web local-folder routes - preserve local Markdown attachment semantics across upload, reload, and secondary-pane resource tabs - refresh design governance docs, Reasonix task templates, and bug records - retire root .mcp.json local MCP config
This commit is contained in:
+61
@@ -0,0 +1,61 @@
|
||||
# 5-38 [done][bug] 第二视图 Markdown 附件上传后主编辑区点击失效 v1
|
||||
|
||||
> 发现时间:2026-05-23
|
||||
>
|
||||
> 状态:`[done]`
|
||||
>
|
||||
> 关联主线:`05-editor-mainline`
|
||||
|
||||
## 1. 用户可见症状
|
||||
|
||||
打开第一视图和第二视图后,在第二视图上传 Markdown 附件会出现一组连续问题:
|
||||
|
||||
- 第一次点击第二视图上传后的文件时,第一视图菜单会短暂弹出后消失。
|
||||
- 上传第二个 Markdown 文件后,页面会卡住或主编辑区附件点击无反应。
|
||||
- 刷新后上传的 `.md` 附件曾退化成普通链接,只能新窗口打开。
|
||||
- 修复退化为链接后,仍存在“上传第二个文件后,之前所有附件都不能从主编辑器点击在 tab 打开”的问题。
|
||||
- 同时点击左侧文件树会把焦点跳到当前文件夹最上方文件,但文件树直接打开文件仍可工作。
|
||||
|
||||
## 2. 根因
|
||||
|
||||
问题不是第二视图和主视图是否应完全隔离这么简单,而是附件打开、上传插入、刷新重建三条链路没有共享同一个 pane-aware 资源 tab 合同:
|
||||
|
||||
- 编辑器内上传后的本地 `.md` 附件在 Markdown 回写 / 重新解析时没有稳定保留为 `data-mnote-attachment-link` 语义,刷新后容易回退成普通链接。
|
||||
- 资源 openTarget=side 和 document secondary pane 的 URL / DOM 状态边界不完整,导致 secondary 资源 tab 打开时可能污染 primary 的 slash menu / active tab。
|
||||
- 主编辑器内附件点击只识别部分增强后的链接形态,第二次上传后 DOM 重建路径会让既有附件链接失去可点击的 tab 打开行为。
|
||||
- 文件树 active/reveal 逻辑和编辑器附件打开逻辑共享了一部分全局焦点状态,导致点击文件树时出现跳到顶部文件的伴随现象。
|
||||
|
||||
## 3. 修复
|
||||
|
||||
本轮修复把上传、解析、回写、点击打开统一到附件资源 tab 语义:
|
||||
|
||||
- 本地 Markdown 页面和 Markdown 资源读取时,根据 `.mnote` 元数据把属于当前文档的上传附件路径传给 Markdown parser,恢复附件链接语义。
|
||||
- Markdown 回写时支持把 `/api/local-folder/files/open?...` 这类本地打开 URL 改写成相对路径,避免刷新后退化为不可识别的普通链接。
|
||||
- 编辑器附件增强逻辑扩大到 `.ProseMirror a[href*="/api/local-folder/files/open"]`,即使 DOM 重建后仍能恢复 `data-mnote-attachment-link`、附件样式和 tab 打开行为。
|
||||
- 上传插入使用当前编辑器 root / pane role 作为目标上下文,secondary 上传只插入 secondary 资源编辑器,不污染 primary。
|
||||
- 资源 `openTarget=side` 与 `secondaryDocumentId` 分离:资源 tab 可在 secondary 打开,但不冒充 secondary 文档页。
|
||||
- smoke 覆盖连续上传两个真实 `.md` 附件、刷新后点击两个附件、再次上传第二个资源并确认都在对应 pane 的 tab 内打开。
|
||||
|
||||
## 4. 验证
|
||||
|
||||
已执行过的关键验证:
|
||||
|
||||
```bash
|
||||
cargo check -p mnote-web
|
||||
node scripts/task459-local-markdown-attachment-tab-smoke.js
|
||||
node scripts/task472-side-target-secondary-pane-smoke.js
|
||||
```
|
||||
|
||||
本次提交前已重新执行:
|
||||
|
||||
```bash
|
||||
cargo check -p mnote-web
|
||||
node scripts/task459-local-markdown-attachment-tab-smoke.js
|
||||
node scripts/task472-side-target-secondary-pane-smoke.js
|
||||
```
|
||||
|
||||
结果:全部通过。
|
||||
|
||||
## 5. 剩余边界
|
||||
|
||||
本记录只覆盖本地文件夹 Markdown 附件在主编辑器 / secondary pane / resource tab 中的上传和打开链路。OnlyOffice 编辑保存、Office 插件噪声和远端 cloud source 附件合同仍由对应 Office / Rust Web 缺陷记录继续跟踪。
|
||||
Reference in New Issue
Block a user