34 lines
2.0 KiB
Markdown
34 lines
2.0 KiB
Markdown
# 4-53 WorkspacePath / ObjectIdentity 浏览器矩阵缺口
|
||||
|
|
|
|||
|
|
## 状态
|
|||
|
|
|
|||
|
|
- 状态:done
|
|||
|
|
- Owner:04-tree-domain / 05-editor-mainline runtime identity
|
|||
|
|
- 发现时间:2026-06-01
|
|||
|
|
- 修复时间:2026-06-01
|
|||
|
|
|
|||
|
|
## 现象
|
|||
|
|
|
|||
|
|
P1 `WorkspacePath / ObjectIdentity` 已有底层协议与部分 smoke,但缺少一个单独覆盖 page `.md`、directory、raw file、mindmap、OnlyOffice 的浏览器矩阵。FileTree row、Resource Tab、OpenEditorsSnapshot、URL `resourceTab` 和 active tab identity 如果各自拼身份,后续 raw resource / mindmap / Office target 容易继续退化为“当前页”语义。
|
|||
|
|
|
|||
|
|
## 根因
|
|||
|
|
|
|||
|
|
已有 smoke 分散覆盖 copy-id、resource tab、mindmap 和 Office,但没有把统一 `ObjectWorkspacePath` 当作运行时消费合同统一断言。local folder 目录行还缺少 `local-dir:*` 的稳定 `documentId` fallback,resource tab 在部分本地资源打开路径下也缺少 `sourceKind` / `rootUri` fallback。
|
|||
|
|
|
|||
|
|
## 修复
|
|||
|
|
|
|||
|
|
- `rust/crates/mnote-web/browser/filetree-runtime.js`
|
|||
|
|
- `readWorkspacePathFromRow()` 为 folder / index 行合成 `local-dir:{relativePath}`。
|
|||
|
|
- `fileTreeRowDocumentId()` 允许读取 `data-owner-document-id`,用于资源行 owner page 对齐。
|
|||
|
|
- `rust/crates/mnote-web/browser/document-resource-tab-runtime.js`
|
|||
|
|
- 在 URL 参数缺失时,从 body dataset 或 FileTree row workspacePath 兜底读取 `sourceKind` / `rootUri`。
|
|||
|
|
- `scripts/task524-workspace-object-identity-matrix-smoke.js`
|
|||
|
|
- 新增 browser smoke,覆盖 page `.md`、directory、raw text、mindmap、OnlyOffice 的 FileTree row workspacePath、OpenEditorsSnapshot、URL `resourceTab`、active tab identity 对齐。
|
|||
|
|
|
|||
|
|
## 验收
|
|||
|
|
|
|||
|
|
- [x] `node --check rust/crates/mnote-web/browser/document-resource-tab-runtime.js`
|
|||
|
|
- [x] `node --check rust/crates/mnote-web/browser/filetree-runtime.js`
|
|||
|
|
- [x] `node --check scripts/task524-workspace-object-identity-matrix-smoke.js`
|
|||
|
|
- [x] `MNOTE_UI_BASE_URL=http://127.0.0.1:3301 node scripts/task524-workspace-object-identity-matrix-smoke.js`
|