complete local markdown resource lifecycle contract

This commit is contained in:
lix-2026
2026-05-24 03:22:03 +08:00
parent 6df74fb4e0
commit 36eac664f2
8 changed files with 269 additions and 33 deletions
@@ -1,12 +1,12 @@
# 4-49 [process][bug] 本地文件夹 Markdown 附件、打开目标与标题合同缺口 v1
# 4-49 [done][bug] 本地文件夹 Markdown 附件、打开目标与标题合同缺口 v1
> 发现时间:2026-05-23
>
> 状态:`[process]`
> 状态:`[done]`
>
> 关联主线:`04-tree-domain``05-editor-mainline`
>
> 关联设计:`design/04-tree-domain/process/4-48-local-folder-markdown-resource-lifecycle-contract-v1.md`
> 关联设计:`design/04-tree-domain/done/4-48-local-folder-markdown-resource-lifecycle-contract-v1.md`
## 1. 范围判断
@@ -324,3 +324,5 @@ PLAYWRIGHT_CHROME_EXECUTABLE=/snap/bin/chromium node scripts/task479-local-folde
- 2.5 / 2.7 resource tab 打开目标已补 active/selected row 验证:`task479` Check 4 断言刚进入 asset-only local folder 点击 `report-a.pdf` 后,主编辑区 resource tab 打开且 File Tree 唯一 selected/active row 保持在该附件 row。
- 2.2 missing tab 点击根因已收口:本地 Markdown 附件缺失时,`openTiptapResourceTab()` 读取 `/api/local-folder/resource/read` 失败,`openResourceInActiveTab()` 已创建 resource tab 并调用 `markResourceTabError()`,但此前仍返回 `false`;外层 `openEditorAttachmentDetail()``opened=false` 执行 `window.open()` fallback,导致弹出新窗口。修复为错误 tab 已渲染时返回 `true`,表示主编辑区已接管打开意图。
- 2.8 页面设置中“隐藏本地 Markdown 文件标题”的可切换 UI / 持久化已实现:新增 `hideTitleHeader` page option,本地 Markdown 默认开启;关闭后页头立即显示,刷新后从 `.mnote/page-options.json` 恢复。`task479` Check 6 通过。
- 2.2 watcher 缺失状态刷新已收口:新增本地文件 `stat` 端点,编辑器附件增强逻辑在 watcher / projection 刷新后重新检查本地链接存在性;删除真实附件后不刷新页面即标记 `data-mnote-attachment-missing="true"`,并保持 Markdown 正文不变。`task479` Check 3 通过。
- 2.6 滚动边界已补齐显式 wheel 拦截:Workbench 根容器固定视口高度,内部滚动容器隔离滚动,resize handle 的 wheel 事件不再穿透到 body。`task479` Check 5 通过。