Persist PageTree expand state via control-plane view-state and align chevron/DOM with restored expansion; keep Sidex-style shallow page-tree scan and drop the unused recursive scanner that only added cargo noise. Add password vault workbench routes/runtime/skill/CLI, split page_ai_pi into a module package, and retire Hermes/ACP/OpenHub recycle + root harness evidence from the index while gitignoring recycle and local diag dumps. Archive superseded design/bugs docs under old/, point architecture at ARCHITECTURE.md, and refresh smokes for Pi S1–S7, vault, and editor regressions so the working tree can stay clean.
9.8 KiB
9.8 KiB
[recycle] 3-8 [done] Rust Web 3000 Wolai UI Parity Checklist v1
更新时间:2026-04-29
对应计划:
/mnt/Data1T/mnote/design/03-rust-web/process/3-7-rust-web-3000-wolai-ui-parity-plan-v1.md参考输入:
- 当前 3000 截图:
/mnt/Data1T/mnote/tmp/image copy 30.png- 当前 3100 legacy/Next 对照截图:
/mnt/Data1T/mnote/tmp/image copy 31.png- 目标 UI:
/mnt/Data1T/mnote/design/design/html/image.png- 目标 HTML:
/mnt/Data1T/mnote/design/design/html/个人.html
1. 当前结论
当前已经完成的是:
3000默认由mnote-web监听。GET /返回x-mnote-web-owner: mnote-web。3100已降为 legacy/Next 对照链,不是公开主入口 owner。harness-tasks.json中task-001到task-026全部为completed。
当前没有完成的是:
3000首屏恢复到 3100 的 workspace/document 产品壳。3000首屏达到目标 Wolai UI 的结构与视觉效果。3000文档页在当前真实运行态下稳定打开,不返回未登录502。- smoke 验收从“owner header 通过”升级为“产品壳 UI parity 通过”。
一句话判断:
Rust Web owner cutover 已完成;本轮已把 3000 恢复为 Rust Web 持有的 Wolai workspace/document 产品壳,并用 task114/task115/task118/task119 固化验收。
2. 不可误判为完成的情况
- 只看到
x-mnote-web-owner: mnote-web,不算 UI parity 完成。 - 只看到极简
MNOTE欢迎页,不算工作区 shell 完成。 - 只在
MNOTE_WEB_ALLOW_DEV_FIXTURES=1下通过,不算当前真实 3000 完成。 - 只把 3000 proxy 回 3100,不算 Rust Web 产品壳完成。
- 只恢复 3100 legacy UI,不算 Rust Web 3000 UI 完成。
- 只补 CSS 像截图,但 session/document shell 仍 502,不算完成。
3. Phase U-0:冻结 UI parity smoke
目标:先让当前差距可自动失败,避免继续靠人工看截图判断。
- 新增
scripts/task118-rust-web-wolai-ui-parity-smoke.js。 - smoke 断言
GET /是data-mnote-shell="workspace"。 - smoke 断言根页包含账号/工作区身份。
- smoke 断言根页包含
星标置顶。 - smoke 断言根页包含
我的页面。 - smoke 断言根页包含
垃圾箱。 - smoke 断言根页包含
模板中心。 - smoke 断言根页包含
data-testid="wolai-topbar"。 - smoke 断言根页包含
data-testid="wolai-floating-ai"。 - smoke 负向断言根页不再包含
欢迎使用 MNOTE 知识管理平台。 task114-rust-web-gateway-entry-smoke.js不再检查Rust Web gateway调试文案。task115-rust-web-document-shell-smoke.js在 502 时输出 body,能看见未登录根因。
验证命令:
cd /mnt/Data1T/mnote
MNOTE_UI_BASE_URL=http://127.0.0.1:3000 node scripts/task118-rust-web-wolai-ui-parity-smoke.js
MNOTE_UI_BASE_URL=http://127.0.0.1:3000 node scripts/task114-rust-web-gateway-entry-smoke.js
MNOTE_UI_BASE_URL=http://127.0.0.1:3000 node scripts/task115-rust-web-document-shell-smoke.js
4. Phase U-1:修复真实 session / document shell 基线
目标:当前 3000 文档页不能继续因为 Rust Web 到 Convex 的 session/handoff 问题返回 未登录 502。
- 确认当前 3000 进程环境和浏览器请求中的 auth/session 来源。
- 固定 Rust Web session handoff 优先级:浏览器 cookie / session handoff token >
mnote_web_convex_token> 显式开发态 fallback。 transport/convex.rs能把必要 cookie/header/token 传到 Convex。/documents/:id在当前登录态或开发态下不返回convex_upstream_error: 未登录。- 文档页仍返回
x-mnote-web-owner: mnote-web。 - 文档页仍返回
x-mnote-web-shell: document。 - 文档页仍嵌入
__MNOTE_PAGE_AGGREGATE__。 - 文档页仍标记默认
data-editor-host="leptos_tiptap_island"。
验证命令:
cd /mnt/Data1T/mnote/rust
cargo test -p mnote-web document_shell session
cd /mnt/Data1T/mnote
MNOTE_UI_BASE_URL=http://127.0.0.1:3000 node scripts/task115-rust-web-document-shell-smoke.js
5. Phase U-2:建立 workspace shell projection
目标:Rust Web 根页不再手写欢迎页,而是消费稳定 workspace/sidebar/page projection。
- 新增
WorkspaceShellProjection或等价 Rust 类型。 - projection 包含
workspaceId。 - projection 包含
workspaceName。 - projection 包含
activePageId/activePageTitle。 - projection 包含
starredItems。 - projection 包含
myPageItems。 - projection 包含
bottomEntries,至少覆盖垃圾箱与模板中心。 - projection 从
sidebar.dataset.list或 Rust kernel sidebar projection 构建,不在 UI 层另造树真相。 - 空数据时输出空 workspace shell,不回到极简营销欢迎页。
验证命令:
cd /mnt/Data1T/mnote/rust
cargo test -p mnote-web workspace_shell
6. Phase U-3:替换极简 PageLayout 为 Wolai workspace shell
目标:mnote-web SSR 输出与目标 UI 同级的产品壳结构。
- SSR layout 根节点标记
data-mnote-shell="workspace"。 - 左侧栏标记
data-testid="wolai-sidebar"。 - 左侧栏顶部包含头像/首字母块与工作区名称。
- 左侧栏快捷操作区包含搜索、图谱/关系、快捷动作、收纳/文件、更多等 slot。
- 左侧栏包含
星标置顶section。 - 左侧栏包含
我的页面section。 - 左侧栏 page row 支持 active/selected 视觉状态。
- 左侧栏底部包含
垃圾箱与模板中心。 - 主区顶部包含
data-testid="wolai-topbar"。 - 主区右上包含收藏、演示/评论/关系/成员/历史/更多等 action slot。
- 右下包含
data-testid="wolai-floating-ai"。 - 右下包含
data-testid="wolai-floating-help"。 - CSS 左栏宽度、浅灰背景、选中行浅红背景、主内容居中宽度与目标图接近。
验证命令:
cd /mnt/Data1T/mnote/rust
cargo test -p mnote-web wolai_workspace_layout
7. Phase U-4:恢复 3000 根路径产品首屏
目标:GET / 是真实 workspace/document 入口,而不是极简欢迎页。
gateway.rs::root_entry不再直接渲染HomePage欢迎页。- 根路径选择 active page 的顺序固定:URL
pageId> session 最近页面 > projection active page > 第一个我的页面 > 空 workspace。 - 根路径返回 HTML 包含
data-mnote-shell="workspace"。 - 根路径返回 HTML 不包含
欢迎使用 MNOTE 知识管理平台。 - 根路径返回 HTML 不包含旧三项导航壳
首页 / 搜索 / 文档作为主 UI。 MNOTE_WEB_ENABLE_LEGACY_NEXT_COMPAT=0时根路径仍可打开核心 shell。
验证命令:
cd /mnt/Data1T/mnote
MNOTE_UI_BASE_URL=http://127.0.0.1:3000 node scripts/task118-rust-web-wolai-ui-parity-smoke.js
8. Phase U-5:文档页内容区对齐
目标:/documents/:id 恢复 workspace/document 产品壳,同时继续保持 Page Aggregate 与 leptos-tiptap 主链。
- 文档页包含 workspace sidebar。
- 文档页包含 topbar / breadcrumb。
- 文档页包含收藏/更多/AI action slot。
- 文档页标题来自 Page Aggregate。
- 文档页正文 mount 保持
leptos_tiptap_island。 - 文档页不重新把 BlockNote 设为默认主编辑器。
- 文档页在真实 3000 下通过 smoke,不返回 502。
验证命令:
cd /mnt/Data1T/mnote/rust
cargo test -p mnote-web document_shell page_aggregate
cd /mnt/Data1T/mnote
MNOTE_UI_BASE_URL=http://127.0.0.1:3000 node scripts/task115-rust-web-document-shell-smoke.js
9. Phase U-6:补视觉回归 smoke
目标:用浏览器自动化把“看起来像目标 UI”变成可回归指标。
- 新增
scripts/task119-rust-web-wolai-visual-regression-smoke.js。 - 检查左栏存在且宽度稳定。
- 检查 topbar 存在且不遮挡正文。
- 检查主内容区未被侧栏覆盖。
- 检查右下浮动按钮存在且不遮挡正文。
- 检查根页没有极简欢迎页。
- 输出截图到
/mnt/Data1T/mnote/test-results/。
验证命令:
cd /mnt/Data1T/mnote
MNOTE_UI_BASE_URL=http://127.0.0.1:3000 node scripts/task119-rust-web-wolai-visual-regression-smoke.js
10. Harness 映射建议
当前 harness-tasks.json 中 task-001 到 task-026 已全部 completed。若进入执行,建议追加新任务,不修改旧任务状态:
| 新任务 | Phase | 标题 | 优先级 |
|---|---|---|---|
task-027 |
U-0 | 冻结 Rust Web 3000 Wolai UI parity smoke | P0 |
task-028 |
U-1 | 修复 Rust Web session/document shell 当前 502 基线 | P0 |
task-029 |
U-2 | 建立 workspace shell projection 聚合器 | P0 |
task-030 |
U-3 | 替换极简 PageLayout 为 Wolai workspace shell | P0 |
task-031 |
U-4 | 恢复 3000 根路径 workspace/document 产品首屏 | P0 |
task-032 |
U-5 | 对齐文档页 topbar/content/Page Aggregate shell | P1 |
task-033 |
U-6 | 补 Wolai UI visual regression smoke | P1 |
说明:本 checklist 建立阶段不直接修改 harness-tasks.json,避免把分析结果误登记为已排队执行任务。
11. 完成判定
GET http://127.0.0.1:3000/返回x-mnote-web-owner: mnote-web。- 根页 body 标记
data-mnote-shell="workspace"。 - 根页不再出现极简欢迎页文案。
- 根页包含目标 UI 的核心结构区。
/documents/:id不返回未登录502。- 文档页继续消费 Page Aggregate snapshot。
- 文档页默认编辑 host 仍是
leptos_tiptap_island。 3100只作为 legacy/reference/debug。task114、task115、task118和可选task119在当前 3000 上通过。- 本 checklist 才能移动到
design/03-rust-web/done/。