Perf/frontend chunk loading优化前端构建加载,完善 Markdown 预设、警告框、章节折叠与外部文件刷新 #32

Merged
Kronecker merged 5 commits from perf/frontend-chunk-loading into main 2026-09-06 13:42:58 +08:00
Owner

改动说明

本分支优化编辑器与图表依赖的加载方式,补充 Markdown 编辑设置,并解决外部文件变化后工作区无法及时刷新及恢复的问题。

构建与加载

  • Mermaid 改为首次使用时加载,复用加载 Promise,失败后允许重试。
  • 拆分 Milkdown、ProseMirror、CodeMirror 和不同版本的 KaTeX。
  • 保留语言语法与图表模块按需加载,增加构建体积报告。

Markdown 编辑与主题

  • 支持 GitHub 风格警告框及 Obsidian 常用类型、别名、自定义标题、嵌套和默认折叠状态。
  • 工作区和静态预览共享警告框解析与主题配色,补充功能演示笔记。
  • 新增 Markdown 语法预设:标题语法、列表标记、代码围栏、扩展渲染开关,以及代码行号、换行、缩进和默认语言。
  • 支持保存、应用和删除命名预设,并在本机持久化。
  • 新增 H1–H6 章节折叠及标题外观设置。
  • 工具栏使用单个按钮:有可见章节展开时显示“全部折叠”,全部收起后显示“全部展开”;隐藏子章节保留自身状态。
  • 标题旁折叠箭头统一样式,悬停或键盘聚焦时显示。
  • 更新六个主题及社区预览:内置主题 1.3.0、纸间时光 1.8.0、Ocean Blue 1.5.0、Midnight Purple 2.3.0。

外部文件刷新与编辑保护

  • 文件树后台检查外部新增、删除和重命名,保留目录展开状态,并忽略过期响应。
  • 新文件先登记元数据与全文索引,向量计算继续后台执行。
  • 当前正文未修改时自动加载外部版本;存在未保存编辑时保留缓冲区并提示冲突。
  • 保存请求携带正文 SHA-256 基线,不匹配时拒绝覆盖。
  • 原文件删除或移动后,可下载当前 Markdown 副本,或确认关闭笔记后继续导航。
  • 取消关闭、确认期间继续编辑均不会丢弃当前内容。

桌面接口与文档

  • 增加版本化编辑命令边界、能力查询及参数校验,为后续桌面菜单和快捷键接入预留接口。
  • 更新 README、开发说明与演示导航。

自动验证

在仓库根目录运行:

npm --prefix frontend run test
npm --prefix frontend run build
npm --prefix frontend run build:report
backend/.venv/Scripts/python.exe -m pytest backend/tests/test_workspace.py backend/tests/test_workspace_background.py -q -p no:cacheprovider

最终结果:

  • 前端:401 项测试通过。
  • 后端工作区:11 项测试通过。
  • 类型检查与生产构建通过。
  • 构建体积报告生成成功。

手工验收方法

  1. 在设置中保存并应用语法预设,重新打开笔记,检查标题、列表与代码围栏输出。
  2. 打开警告框演示笔记,切换六个主题,检查工作区及静态预览的配色、嵌套和折叠。
  3. 逐个折叠包含子标题的顶层章节,确认按钮直接切换为“全部展开”;展开任一章节后恢复“全部折叠”。
  4. 从大纲跳入隐藏正文,确认相关章节展开且光标可见。
  5. 在文件管理器中新增、重命名、删除笔记,确认文件树自动更新。
  6. 分别在正文未修改和存在未保存编辑时,从外部修改同一文件,验证自动加载及冲突保护。
  7. 外部删除当前文件后,下载副本并核对正文、元数据;取消关闭应保留内容,确认关闭后应能打开其他文件。

当前限制

  • Web 使用串行轮询,尚未接入 Tauri 原生文件事件。
  • 现有文件的外部正文修改不会自动重建其搜索索引,需要主动重建索引。
  • 写作模式的语法预设在重新打开编辑器后生效;保存会规范化正文语法标记。
  • 桌面命令接口不代表原生快捷键、Tauri IPC 和全部元数据命令已实现。
  • 部分构建分块仍超过 500 kB,本分支未消除全部体积警告。
## 改动说明 本分支优化编辑器与图表依赖的加载方式,补充 Markdown 编辑设置,并解决外部文件变化后工作区无法及时刷新及恢复的问题。 ### 构建与加载 - Mermaid 改为首次使用时加载,复用加载 Promise,失败后允许重试。 - 拆分 Milkdown、ProseMirror、CodeMirror 和不同版本的 KaTeX。 - 保留语言语法与图表模块按需加载,增加构建体积报告。 ### Markdown 编辑与主题 - 支持 GitHub 风格警告框及 Obsidian 常用类型、别名、自定义标题、嵌套和默认折叠状态。 - 工作区和静态预览共享警告框解析与主题配色,补充功能演示笔记。 - 新增 Markdown 语法预设:标题语法、列表标记、代码围栏、扩展渲染开关,以及代码行号、换行、缩进和默认语言。 - 支持保存、应用和删除命名预设,并在本机持久化。 - 新增 H1–H6 章节折叠及标题外观设置。 - 工具栏使用单个按钮:有可见章节展开时显示“全部折叠”,全部收起后显示“全部展开”;隐藏子章节保留自身状态。 - 标题旁折叠箭头统一样式,悬停或键盘聚焦时显示。 - 更新六个主题及社区预览:内置主题 1.3.0、纸间时光 1.8.0、Ocean Blue 1.5.0、Midnight Purple 2.3.0。 ### 外部文件刷新与编辑保护 - 文件树后台检查外部新增、删除和重命名,保留目录展开状态,并忽略过期响应。 - 新文件先登记元数据与全文索引,向量计算继续后台执行。 - 当前正文未修改时自动加载外部版本;存在未保存编辑时保留缓冲区并提示冲突。 - 保存请求携带正文 SHA-256 基线,不匹配时拒绝覆盖。 - 原文件删除或移动后,可下载当前 Markdown 副本,或确认关闭笔记后继续导航。 - 取消关闭、确认期间继续编辑均不会丢弃当前内容。 ### 桌面接口与文档 - 增加版本化编辑命令边界、能力查询及参数校验,为后续桌面菜单和快捷键接入预留接口。 - 更新 README、开发说明与演示导航。 ## 自动验证 在仓库根目录运行: ```powershell npm --prefix frontend run test npm --prefix frontend run build npm --prefix frontend run build:report backend/.venv/Scripts/python.exe -m pytest backend/tests/test_workspace.py backend/tests/test_workspace_background.py -q -p no:cacheprovider ``` 最终结果: - 前端:401 项测试通过。 - 后端工作区:11 项测试通过。 - 类型检查与生产构建通过。 - 构建体积报告生成成功。 ## 手工验收方法 1. 在设置中保存并应用语法预设,重新打开笔记,检查标题、列表与代码围栏输出。 2. 打开警告框演示笔记,切换六个主题,检查工作区及静态预览的配色、嵌套和折叠。 3. 逐个折叠包含子标题的顶层章节,确认按钮直接切换为“全部展开”;展开任一章节后恢复“全部折叠”。 4. 从大纲跳入隐藏正文,确认相关章节展开且光标可见。 5. 在文件管理器中新增、重命名、删除笔记,确认文件树自动更新。 6. 分别在正文未修改和存在未保存编辑时,从外部修改同一文件,验证自动加载及冲突保护。 7. 外部删除当前文件后,下载副本并核对正文、元数据;取消关闭应保留内容,确认关闭后应能打开其他文件。 ## 当前限制 - Web 使用串行轮询,尚未接入 Tauri 原生文件事件。 - 现有文件的外部正文修改不会自动重建其搜索索引,需要主动重建索引。 - 写作模式的语法预设在重新打开编辑器后生效;保存会规范化正文语法标记。 - 桌面命令接口不代表原生快捷键、Tauri IPC 和全部元数据命令已实现。 - 部分构建分块仍超过 500 kB,本分支未消除全部体积警告。
Kronecker added 5 commits 2026-09-06 13:42:28 +08:00
Author
Owner

本轮审阅发现的问题已在 750e172 修复并推送:

  • 补齐原文件删除或移动后的恢复入口,可下载正文副本或确认关闭,避免编辑器阻塞后续导航。
  • 移除重复标题箭头。
  • 折叠工具栏合并为单按钮,按可见章节状态切换动作;被父章节隐藏的子标题不再导致额外点击。

回归检查覆盖取消关闭、确认期间继续编辑、等待保存期间的内容变化、副本正文与元数据保留,以及嵌套章节、单独展开和标题增删后的按钮状态。

最终验证:前端 401 项、后端工作区 11 项测试通过,类型检查、生产构建及体积报告通过。复审未发现新的阻塞问题,建议合并。

合并前建议按 PR 中的手工步骤复核六主题外观及真实文件管理器操作。大型分块警告、原生文件监听和外部正文索引同步仍按说明保留。

本轮审阅发现的问题已在 750e172 修复并推送: - 补齐原文件删除或移动后的恢复入口,可下载正文副本或确认关闭,避免编辑器阻塞后续导航。 - 移除重复标题箭头。 - 折叠工具栏合并为单按钮,按可见章节状态切换动作;被父章节隐藏的子标题不再导致额外点击。 回归检查覆盖取消关闭、确认期间继续编辑、等待保存期间的内容变化、副本正文与元数据保留,以及嵌套章节、单独展开和标题增删后的按钮状态。 最终验证:前端 401 项、后端工作区 11 项测试通过,类型检查、生产构建及体积报告通过。复审未发现新的阻塞问题,建议合并。 合并前建议按 PR 中的手工步骤复核六主题外观及真实文件管理器操作。大型分块警告、原生文件监听和外部正文索引同步仍按说明保留。
Kronecker merged commit 5a3546b3ac into main 2026-09-06 13:42:58 +08:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Kronecker/NotesAgentic#32