Document the VSCode-like local-first product shape, demote Convex to a control-plane role, and retire stale architecture drafts. Add local workspace migration/export references plus smoke coverage for no-Convex managed workspace startup, local markdown title/body/options persistence, asset upload behavior, and Convex fixture export. Verification: git diff --cached --check; node scripts/check-local-first-convex-guard.js --staged; node scripts/task444-convex-workspace-export-local-fixture-smoke.js; node scripts/task166-local-first-managed-workspace-no-convex-smoke.js; node scripts/task167-local-markdown-title-body-options-no-convex-smoke.js
8.8 KiB
8.8 KiB
Wolai 基础功能 ↔ mnote 实现完整对照矩阵
生成时间:2026-05-19 说明:逐项对照 Wolai 帮助中心基础功能和当前 mnote 代码,每项标注 ✅/❌/🔧 并附证据路径
一、基础操作
| # | Wolai 功能 | 状态 | mnote 证据 |
|---|---|---|---|
| 1 | 基本编辑(输入/换行/方向键) | ✅ | leptos-tiptap island ProseMirror 编辑器 |
| 2 | 块概念(Block Editor 模式) | ✅ | EditorBlockType 枚举定义 15 种块(core-protocol/src/editor/model.rs:7-22) |
| 3 | 拖动块(:: 手柄拖拽) | ✅ | HANDLE_SHELL_SELECTOR / DragEvent(lib.rs:45, 136) |
| 4 | 选中块(Esc/方向键/Shift多选) | ✅ | TiptapSelectionState 选择状态(lib.rs) |
| 5 | 上方/下方插入块(+按钮 / a/b快捷键) | ✅ | block handle shell + 快捷键处理 |
| 6 | 分栏(拖拽到左/右侧) | ❌ | columnsLayout Tiptap 扩展未注册 |
| 7 | 块布局显示(Ctrl+Shift+U) | 🔧 | pageOptionIsSupported 未包含此选项 |
| 8 | 块转换(文本↔标题↔列表↔页面) | ✅ | EditorCommand::ReplaceBlock(editor/command.rs:22) |
| 9 | 块菜单(点击 :: → 转换/颜色/操作) | 🔧 | 上下文菜单存在,但块菜单功能可比 |
| 10 | 复制/粘贴 | ✅ | write_mnote_text_to_clipboard |
| 11 | 缩进/取消缩进(Tab/Shift+Tab) | ✅ | Tiptap 原生支持 |
| 12 | 文本样式工具条(粗/斜/下划/删除线/行内代码) | ✅ | TextMark::{Bold, Italic, Underline, Strike, Code} |
| 13 | 文字颜色/背景色 | ✅ | TiptapColorAttributes TiptapHighlightAttributes |
| 14 | 超链接(Ctrl+K) | ✅ | TiptapLinkResource TiptapMarkName::Link |
| 15 | 行内数学公式 | ✅ | 数学公式 Tiptap 扩展 |
| 16 | 选中文字 → 页面引用 | 🔧 | PageReference 块类型存在,快捷交互待接线 |
| 17 | 块引用 | ✅ | EditorBlockType::BlockReference + TiptapNodeName 支持 |
| 18 | 脚注与注释 | ❌ | 无脚注/注释扩展 |
二、页面选项
| # | 选项 | 状态 | mnote 证据 |
|---|---|---|---|
| 1 | 自适应宽度(wideLayout) | ✅ 已接通 | layout.rs:531: maxWidth = wideLayout ? '980px' : '760px' |
| 2 | 小字体(smallText) | ✅ 已接通 | data-page-small-text attribute(layout.rs:529) |
| 3 | 标题目录(showToc) | 🔧 UI可见待接线 | layout.rs:438 说"当前 Rust 壳还没有正式目录面板" |
| 4 | 标题自动编号(showHeadingNumbers) | ✅ 已接通 | layout.rs:439 hint: "标题前显示顺序编号" |
| 5 | 编辑保护(protectEditing) | 🔧 UI可见待接线 | layout.rs:447 hint: "只显示降级说明" |
| 6 | 折叠反向引用(collapseBacklinks) | 🔧 UI可见待接线 | |
| 7 | 隐藏子页面(hideChildPages) | 🔧 UI可见待接线 | |
| 8 | 显示块引用数字(showBlockRefCount) | 🔧 UI可见待接线 | |
| 9 | 布局密度(layoutDensity) | ✅ 已接通 | hint: "段落与列表间距会变化" |
| 10 | 页面字体(pageFont) | ✅ 已接通 | hint: "当前页面字体会切换" |
| 11 | 字数统计 | ✅ | computeLivePageStats() 实时计算(layout.rs:485-507) |
| 12 | 待办统计 | ✅ | todoTotal / todoDone 统计(layout.rs:503-506) |
| 13 | 暗色模式 | ✅ | Good Night 模式 / 跟随系统(layout.rs) |
| 14 | 删除页面(进垃圾桶) | ✅ | tree.resource.archive |
| 15 | 移动到... | ✅ | tree 命令 routes/tree.rs |
| 16 | 页面引用链接复制 | ✅ | 上下文菜单"复制页面引用链接"(layout.rs:3146-3148) |
| 17 | 导出页面 | ❌ | 无导出 UI |
三、基础块类型
| # | 块类型 | Wolai 命令 | 状态 | mnote 证据 |
|---|---|---|---|---|
| 1 | 文本/段落 | /wb /wenben /text /plain |
✅ | Paragraph + TiptapExtension::Paragraph |
| 2 | 标题 H1-H4 | /bt /biaoti /h1 /h2 /h3 /h4 |
✅ | Heading + TiptapExtension::Heading |
| 3 | 列表(无序) | /lb /liebiao /wuxu /bullet |
✅ | BulletListItem + TiptapExtension::BulletList |
| 4 | 数字列表(有序) | /szlb /shuzi /number |
✅ | NumberedListItem + TiptapExtension::OrderedList |
| 5 | 待办列表 | /dblb /daiban /todo |
✅ | Todo + TiptapExtension::TaskList + TiptapExtension::TaskItem |
| 6 | 折叠列表 | /zdlb /toggle + space |
❌ | 无 Toggle 扩展 |
| 7 | 页面块(subpage) | 块转换 → 页面 | 🔧 | PageReference 类型存在,嵌入页 UI 待确认 |
| 8 | 引述文字(blockquote) | /yswz /quote |
✅ | Quote + TiptapExtension::Blockquote |
| 9 | 着重文字(callout) | /zzwz /callout !! space |
❌ | 无 Callout 扩展 |
| 10 | 代码片段 | /dmpd /code |
✅ | CodeBlock + TiptapExtension::CodeBlock |
| 11 | 数学公式 | /sxgs /latex /math |
✅ | LaTeX 公式扩展 |
| 12 | 分割线 | /fgx /fengexian |
✅ | Divider + TiptapExtension::HorizontalRule |
四、进阶块类型(基础级)
| # | 块类型 | 状态 | mnote 证据 |
|---|---|---|---|
| 1 | 简单表格 | ✅ | Table + TiptapExtension::Table/TableRow/TableCell/TableHeader |
| 2 | 数据表格(database) | ❌ | 无 Database/Notion-DB 扩展 |
| 3 | 统计图表 | ❌ | 无 Charts 扩展 |
| 4 | Mermaid 绘图 | ❌ | 无 Mermaid 扩展 |
| 5 | 思维导图 | ✅ | Mindmap + routes/mindmap_api.rs + ssr/pages/mindmap.rs |
| 6 | 页面目录(TOC) | 🔧 | Toc + TiptapExtension::TocNode 已注册,但 showToc 标注"待接线" |
| 7 | 按钮 | ❌ | 无 Button 扩展 |
| 8 | 进度条 | ❌ | 无 ProgressBar 扩展 |
| 9 | 仪表数字 | ❌ | 无 Dashboard/Counter 扩展 |
| 10 | 会议 | ❌ | 无 Meeting 扩展 |
| 11 | 嵌入第三方应用 | 🔧 | OnlyOffice 已接,其他 iframe embed 待定 |
| 12 | 网址书签 | ❌ | 无 Bookmark 扩展 |
五、媒体与文件
| # | 类型 | 状态 | mnote 证据 |
|---|---|---|---|
| 1 | 图片 | ✅ | Image + TiptapExtension::Image + TiptapImageResource |
| 2 | 视频 | ✅ | 视频 Tiptap 扩展 |
| 3 | 音频 | ❌ | 无 Audio 扩展 |
| 4 | 文件附件 | ✅ | OnlyOffice adapter + 附件块 |
| 5 | Emoji 表情 | ✅ | Emoji 选择器 |
| 6 | Font Awesome 图标 | ❌ | 无 FA 图标选择器 |
| 7 | 动态图标 | ❌ | 无动态图标 |
| 8 | 卡通头像 | ❌ | 仅有文字头像(layout.rs:7873: "L") |
六、编辑器 UI / 壳
| # | 功能 | 状态 | mnote 证据 |
|---|---|---|---|
| 1 | 侧栏(品牌/搜索/页面树) | ✅ | layout.rs:7801: "左侧栏 + 内容区的双栏布局" |
| 2 | 浮动 AI 按钮 | ✅ | wolai-floating-ai button(layout.rs:7927) |
| 3 | 浮动帮助按钮 | ✅ | wolai-floating-help button(layout.rs:7926) |
| 4 | 搜索模态(Ctrl+P) | ✅ | 搜索壳 + smoke 验证 |
| 5 | 垃圾桶入口 | ✅ | 侧栏下方入口 |
| 6 | 模板中心 | ❌ | 无模板功能 |
| 7 | 右侧边栏(双栏编辑) | 🔧 | 上下文菜单有"在右侧边栏打开",面板 UI 待确认 |
| 8 | 今日速记/日记 | ❌ | 无每日速记功能 |
| 9 | 页面关系图 | ❌ | 无关系图可视化 |
| 10 | 导航历史 | 🔧 | 页面上下文菜单含"块历史",但非历史列表 |
七、键盘快捷键
| # | 快捷键 | 功能 | 状态 |
|---|---|---|---|
| 1 | Ctrl+P |
搜索 | ✅ |
| 2 | Ctrl+Shift+L |
标题目录 | 🔧(选项UI可见但功能待接线) |
| 3 | Ctrl+Shift+U |
显示块结构 | ❌ |
| 4 | Ctrl+Shift+C |
编辑保护 | 🔧 |
| 5 | Ctrl+Z |
撤回 | ✅ |
| 6 | Ctrl+Shift+V |
匹配样式粘贴 | ✅ |
| 7 | Tab / Shift+Tab |
缩进/取消缩进 | ✅ |
| 8 | Esc |
选中块 | ✅ |
| 9 | a / b |
上方/下方插入块 | ✅ |
| 10 | Enter(思维导图) |
插入同级节点 | ✅ |
| 11 | Alt+O |
右侧边栏打开 | 🔧 |
| 12 | Alt+Q |
打开/关闭右侧边栏 | ❌ |
| 13 | Ctrl+Alt+G |
Good Night 暗色模式 | ✅ |
| 14 | Ctrl+ |
今日速记 | ❌ |
八、汇总
| 类别 | 总数 | ✅ | 🔧 | ❌ | 覆盖率 |
|---|---|---|---|---|---|
| 基础操作 | 18 | 11 | 3 | 4 | 61% |
| 页面选项 | 17 | 10 | 5 | 2 | 59% |
| 基础块类型 | 12 | 9 | 1 | 2 | 75% |
| 进阶块类型 | 12 | 2 | 2 | 8 | 17% |
| 媒体与文件 | 8 | 4 | 0 | 4 | 50% |
| 编辑器 UI/壳 | 10 | 6 | 2 | 2 | 60% |
| 键盘快捷键 | 14 | 8 | 3 | 3 | 57% |
| 总计 | 91 | 50 | 16 | 25 | 55% |
注:🔧 = 存在代码/UI 但功能未完全接通(如标题目录 TOC 扩展已注册但 UI 面板未挂接)