# Wolai 深度复刻计划 (Wolai Deep Replication Plan) **目标**:深度复刻 Wolai 的核心体验,重点解决左侧树状侧边栏的 Bug,并完善右侧编辑器的块交互(特别是「转为页面」功能)。 **基准**:严格遵循 `design/ui_react.md` 和 `design/PHASE_1.5_TURN_TO_PAGE_EXACT_CLONE.md`。 ## 1. 现状分析 & 问题定位 当前项目已具备基础骨架(Next.js + Supabase + BlockNote),但在精细度和交互上仍有差距: * **侧边栏 (Sidebar)**: * 存在 Bug:拖拽抖动、状态同步延迟、无限嵌套渲染可能出错。 * 缺失细节:右键菜单(重命名/删除)、多选操作、精确的 Hover/Active 样式。 * **编辑器 (Editor)**: * 缺失核心功能:「转为页面」互转逻辑。 * 样式细节:BlockNote 默认样式需定制为 Wolai 的蓝色系 (#2563eb)。 ## 2. 实施路线图 ### 阶段 A: 侧边栏重构与修复 (Sidebar Overhaul) **目标**:打造丝滑、无 Bug 的无限嵌套文件树。 1. **数据层优化**: ## 3. 技术规范 (Strict Guidelines) * **CSS 框架**:Tailwind CSS (v4)。 * **图标库**:`lucide-react` (通用), `react-icons` (特定品牌)。 * **状态管理**:`zustand` (全局 UI 状态), `swr` / `react-query` (数据获取)。 * **拖拽库**:`@dnd-kit/core`, `@dnd-kit/sortable` (推荐,比 react-dnd 更现代且易于控制样式)。 ## 4. 验证计划 ### 自动化测试 * (暂无,依赖手动验证) # Wolai 深度复刻计划 (Wolai Deep Replication Plan) **目标**:深度复刻 Wolai 的核心体验,重点解决左侧树状侧边栏的 Bug,并完善右侧编辑器的块交互(特别是「转为页面」功能)。 **基准**:严格遵循 `design/ui_react.md` 和 `design/PHASE_1.5_TURN_TO_PAGE_EXACT_CLONE.md`。 ## 1. 现状分析 & 问题定位 当前项目已具备基础骨架(Next.js + Supabase + BlockNote),但在精细度和交互上仍有差距: * **侧边栏 (Sidebar)**: * 存在 Bug:拖拽抖动、状态同步延迟、无限嵌套渲染可能出错。 * 缺失细节:右键菜单(重命名/删除)、多选操作、精确的 Hover/Active 样式。 * **编辑器 (Editor)**: * 缺失核心功能:「转为页面」互转逻辑。 * 样式细节:BlockNote 默认样式需定制为 Wolai 的蓝色系 (#2563eb)。 ## 2. 实施路线图 ### 阶段 A: 侧边栏重构与修复 (Sidebar Overhaul) **目标**:打造丝滑、无 Bug 的无限嵌套文件树。 1. **数据层优化**: ## 3. 技术规范 (Strict Guidelines) * **CSS 框架**:Tailwind CSS (v4)。 * **图标库**:`lucide-react` (通用), `react-icons` (特定品牌)。 * **状态管理**:`zustand` (全局 UI 状态), `swr` / `react-query` (数据获取)。 * **拖拽库**:`@dnd-kit/core`, `@dnd-kit/sortable` (推荐,比 react-dnd 更现代且易于控制样式)。 ## 4. 验证计划 ### 自动化测试 * (暂无,依赖手动验证) ### 官方操作策略 (Official Operational Strategies) * **块操作逻辑**: * **转换 (Turn into)**:核心逻辑是“保留内容,改变形式”。通过 `::` 菜单、快捷键或 `/` 菜单触发。 * **层级 (Hierarchy)**: * **缩进**:使用 `Tab` / `Shift+Tab` 控制缩进,建立父子关系。 * **嵌套**:拖拽块到另一个块的**内部**(下方缩进位)可创建嵌套结构。 * **布局 (Layout)**:通过拖拽块到左右边缘(显示垂直蓝线)创建分栏。支持 `/2` 等快捷指令。 * **多选 (Multi-select)**:支持鼠标框选或 `Shift+Click` 连续选择。`Esc` 选中当前块,`Shift+Arrow` 多选。 * **Markdown 自动格式化**:输入 `* ` 自动变列表,`# ` 变标题,`[] ` 变待办,`()` 变高级待办,`+[]` 变折叠待办。 * **引用系统 (Reference System)**: * **块引用 (Block Ref)**: * **行内引用**:`[[` 或 `# ` 触发。虚线下划线,不可编辑,点击跳转。快捷键 `Esc` -> `H`。 * **嵌入引用**:独立块,左侧虚线边框,可编辑(有限制)。快捷键 `Esc` -> `Q`。 * **页面引用 (Page Ref)**: * **双向链接 (Backlinks)**:页面底部显示“反向引用”列表。 * **预引用**:引用不存在的页面时,可创建“预引用”占位符或直接新建页面。 * **聚合应用**:如 `[[TODO]]` 标签聚合。 * **页面选项 (Page Options)**: * **宽屏模式**:切换定宽 (760px) / 自适应宽度。 * **小字体**:16px -> 14px 全局缩放。 * **标题目录 (TOC)**:右侧悬浮,层级 H1-H4 + 子页面。 * **统计**:字数统计、块数统计。 * **待办列表 (Todo List)**: * **进度条联动**:父块为进度条时,自动计算子待办块的完成百分比。 * **高级待办**:4种状态(未做、进行中、完成、取消)。`Alt+Click` 切换取消。 * **图片 (Image)**: * **插入**:命令、拖拽、复制、URL。 * **OCR**:需手动在菜单中点击“文字识别”以建立索引。 * **编辑**:支持裁剪、马赛克、绘图。 ### 手动验证清单 * **隐式 OCR**:官方文档未强调 OCR 功能,印证了其作为后台搜索索引服务的定位,而非前台核心编辑功能。 * **文件预览**:依赖第三方服务或浏览器原生能力,保持轻量化。 ### 手动验证清单 1. **侧边栏测试**: * [ ] 创建 3 层嵌套页面,确认缩进正确。 * [ ] 拖拽页面 A 到页面 B 内部,确认无刷新实时更新。 - **底部**:结果计数("共 N 条匹配结果")+ 快捷键提示("Ctrl+Enter 新窗口打开", "Alt+Enter 右侧边栏打开")。 - **OCR 策略 (Hidden OCR)**(Live Site 验证确认): - **机制**:图片上传后,后端异步进行 OCR 识别。 - **搜索**:识别的文本会被索引,支持通过关键词搜索到包含该文本的图片页面。 - **展示**:默认情况下,OCR 文本**不直接显示**在页面上(保持页面整洁),而是作为图片的元数据存在。 - **高亮**:在搜索结果摘要中,会高亮显示匹配的 OCR 文本。 - **图片块操作 (Image Block Operations)**(Live Site 捕捉确认): - **菜单项**: - **图片边框** (Toggle)。 - **设置图片超链接...**。 - **评论**。 - **对齐** (左/中/右)。 - **查看原图** / **全屏查看**。 - **编辑图片** (裁剪/旋转等)。 - **文字识别 (OCR)** (手动触发入口)。 - **添加说明 (Caption)** / **说明文字居中**。 - **下载**。 - **恢复默认大小**。 - **替换图片...**。 - **文件预览 (File View)**(Live Site 捕捉确认): - **Office 文档 (.docx, .xlsx, .pptx)**: - **策略**:不自行开发渲染器,调用 **Microsoft Office Online** 或 **Google Docs Viewer** 服务。 - **实现**:在新标签页打开,或使用 iframe 嵌入 Office Online 预览链接。 - **组件推荐**:`react-doc-viewer` (支持多种格式,自动降级) 或直接构建 Office Online URL。 - **PDF 文档**: - **策略**:使用 `react-pdf` 在应用内直接渲染,提供更好的阅读体验。 - **功能**:翻页、缩放、下载。 ## 5. 下一步行动 (Next Steps) 建议优先执行 **阶段 A (侧边栏)**,因为它是整个应用的导航骨架,Bug 最影响体验。 然后执行 **阶段 B**,打通「块 <-> 页面」的流转。