v1.4.2 - 2026-07-27
✨ 新增
- 支持多账号登录历史切换 (88976e3)
- frontend: 提升知识树滚动条性能与设置体验 (b8a0e69)
- tree: 支持无需弹窗直接内联创建文档 (9ebbe49)
- tree: 添加内联创建草稿辅助方法 (63fd495)
- layout: 强制桌面端和移动端仅使用统一树导航 (15ae19f)
- layout: 启动时迁移旧版笔记本列表偏好设置 (113dc45)
- layout: 定义仅使用统一树的导航策略 (35bb333)
- mobile: 在导航栏中提供全局笔记搜索入口 (26992bb)
- mobile: 添加笔记搜索启动辅助方法 (1aba32f)
- frontend: 添加知识树排序控件 (0bcad89)
- frontend: 将选定的排序模式应用到知识树列表 (2311939)
- frontend: 添加统一的知识树排序模型 (8d0d7bb)
- editor: 集成安全的一次性格式刷 (251305e)
- editor: 添加安全的格式刷事务辅助方法 (df86790)
- android: 将沉浸式编辑扩展到 Markdown (68cd545)
- android: 添加移动端沉浸式编辑模式 (44e8d09)
- knowledge-tree: 添加基于能力判断的节点右键菜单 (d04f510)
- knowledge-tree: 将统一树设为侧边栏唯一的层级结构 (#467) (2f96915)
- knowledge-tree: 协调旧版 Notes/Notebooks 层级写入 (#465) (00c864b)
- knowledge-tree: 在统一树中显示共享的混合内容 (#463) (c0540c7)
- navigation: 将统一知识树设为侧边栏主要层级结构 (#461) (ef307e8)
- shortcuts: 集成快捷键自定义运行时与设置 (066ec9e)
- shortcuts: 解析覆盖配置并校验快捷键绑定 (0c70d8c)
- shortcuts: 标记可配置的命令 (e969c10)
- settings: 添加快捷键自定义面板 (5ff7dc1)
- shortcuts: 执行可自定义的富文本快捷键绑定 (3f199bc)
- shortcuts: 添加按平台隔离的覆盖配置存储 (a06157c)
- shortcuts: 添加统一注册表与帮助中心 (#456) (9edf24d)
- issue-370: 实现 P0 权限和 P1 统一知识树 (0d65d43)
- shares: 添加集中式分享管理 (#447) (fdabc64)
- perf: 添加 issue 210 验收校验器 (4d7c70f)
- perf: 接入 issue 210 验收运行时 (92c0d06)
- perf: 添加 issue 210 运行时验收采集器 (75fa180)
- shares: 添加集中式管理页面 (#447) (a6a7df0)
- shares: 添加管理展示辅助方法 (#447) (86385b4)
- shares: 添加管理查询服务 (#447) (940aed3)
- issue-370: 加固并产品化分屏编辑 (140e176)
- issue-370: 产品化布局命令 (015cc32)
- issue-370: 添加工作区布局辅助方法 (c2a04dd)
- sidebar: 添加共享笔记本树组件 (3938152)
- editor: 让编辑器统一经过初始化看门狗 (1e4f4d7)
- editor: 封装 Tiptap 初始化流程 (d4aa92a)
- editor: 封装 Markdown 初始化流程 (5aaa46a)
- editor: 监控编辑器就绪状态 (e3ee89b)
- editor: 添加初始化超时策略 (3fd1e20)
- images: 历史笔记网络图片批量本地化 (#423) (c5828a3)
- code-block: 在语言选择器中提供 MAXScript (dc70053)
- editor: 在 lowlight 初始化前注册 MAXScript (6039400)
- 移除侧栏账号入口 (a6cc5ea)
- markdown: 为 MAXScript 代码围栏添加高亮 (e699921)
- code-block: 复用 MAXScript 的 lowlight 配置 (a403210)
- code-block: 添加 MAXScript 语法定义 (e18dd05)
- import: 在主导入流程中应用权限映射 (7c7e55c)
- import: 挂载权限迁移中心 (1c29a67)
- 移除一次性数据迁移接口 (3eee71d)
- import: 提交显式权限映射 (28de8a4)
- export: 添加显式权限导出对话框 (9b5d36d)
- 移除桌面端服务器资料凭据 (f3b3d91)
- export: 添加权限导出桥接 (27d54db)
- import: 添加权限映射弹窗 (c53cf6c)
- import: 添加权限映射审核队列 (6896f7c)
- import: 添加权限账号映射面板 (ce49ba3)
- 移除连接与迁移前端功能 (25fd9aa)
- import: 提供支持权限处理的软件包接口 (0406d76)
- import: 集成权限预览与应用流程 (2c186a2)
- export: 将权限清单改为可选启用 (a00128c)
- import: 添加受保护的权限撤销功能 (b2cb360)
- import: 添加 v2 权限迁移服务 (8be6ded)
- 将拆分文档移入更多菜单 (af4fddb)
- 增加窗口化性能签收标签 (8e57ad2)
- 增加跨章节安全回退与最新快照 (1de5278)
- 绑定子文档离线更新代际 (195fcac)
- 实现子文档代际冲突与结构重分段 (768bc7e)
- 增加子文档代际迁移 (a0a7859)
- 同步恢复导入后的 Block 权威状态 (16429cf)
- 增加 Block 权威跨库原子写入 (a63e235)
- 添加 Block 权威灰度主读 (dbfdbb7)
- 接入编辑器性能门禁与分段存储基础 (002ff0f)
- editor: 完成 Block 权威存储与 Subdocument 窗口化 (152706c)
- editor: 校验内联图片替换快照 (ea12df5)
- blocks: 校验内联图片替换节点 (4c0c1b2)
- 增强块补丁与 Tiptap 编辑器性能分析能力 (782fa43)
- ai: 探索并测试嵌入模型 (34fbc4c)
- blocks: 持久化限定作用域的列表项结构补丁 (27c8ebf)
- editor: 启用列表项结构规划 (351e8af)
- editor: 定义限定作用域的列表项结构补丁类型 (1ac3e93)
- editor: 规划受控的列表项创建与删除 (6c9f4ce)
- blocks: 应用限定作用域的列表项结构补丁 (6e157b1)
- blocks: 规划列表项结构索引 (81b4d6a)
- ai: 将嵌入模型绑定到已保存的配置档案 (8381a08)
- blocks: 添加受控的列表项创建与删除 (e6d94a3)
- editor: 定义列表子树索引响应类型 (3825345)
- blocks: 使用增量列表子树索引 (1e97c74)
- blocks: 规划增量列表子树索引 (0a80118)
- tasks: 将已完成任务移动到待办任务下方 (c88fa23)
- editor: 启用列表层级补丁规划 (fded464)
- editor: 组合列表层级补丁规划 (51f54f3)
- editor: 规划受控的列表层级移动 (510fe54)
- editor: 定义受控列表项移动类型 (bacf7ac)
- blocks: 支持受控的列表层级补丁 (eb1dede)
- blocks: 添加受控的列表项移动 (0517674)
- mindmap: 添加极简无边框节点样式 (d30eaad)
- editor: 接入空 Block 身份分发机制 (0516390)
- editor: 在不产生历史记录的情况下修复空 Block ID (c318aff)
- editor: 安全修补空的 Tiptap 文档 (d1a433c)
- editor: 规划富文本混合结构补丁 (c61c1b8)
- editor: 定义混合索引更新元数据类型 (ac03a09)
- blocks: 暴露混合索引更新类型 (061428e)
- editor: 定义结构索引更新元数据类型 (c94f926)
- blocks: 暴露结构索引更新类型 (8153f72)
- blocks: 暴露补丁索引更新模式 (31ee6a4)
- blocks: 规划增量补丁索引更新 (a98c34c)
- attachments: 添加安全的旧版图床迁移 (d9f43b8)
- electron: 防止将数据目录设置到受保护的系统路径 (57c9e19)
- import: 添加权限映射客户端 API (bb41225)
- import: 挂载往返权限映射路由 (8badde8)
- import: 添加权限包与映射接口 (c68ee55)
- import: 添加受保护的工作区权限映射服务 (1375451)
- 添加持久化导入报告与受保护的撤销功能 (#380) (ee62e2c)
- import: 添加冲突安全的往返增量同步 (26271e7)
- editor: 规划富文本叶子 Block 替换 (a96d370)
- editor: 定义富文本 Block 替换操作类型 (3933188)
- editor: 校验富文本 Block 替换快照 (4027466)
- blocks: 应用已校验的富文本 Block 替换 (e892153)
- blocks: 校验富文本 Block 替换节点 (7a21e8a)
- editor: 灰度启用 Tiptap Block Patch 保存 (1a655e0)
- editor: 定义 Block Patch 灰度发布策略 (41218fa)
- blocks: 暴露权威补丁响应 (4f1d64a)
- blocks: 返回权威补丁快照 (f373323)
- editor: 规划安全的 Tiptap Block 补丁 (39c9f80)
- import: 将往返软件包安全合并到现有文件夹 (55de099)
- blocks: 添加经确认的前端补丁客户端 (3ffc91c)
- import: 显示往返导入预检报告 (9ef0f15)
- blocks: 添加原子批量补丁路由 (8786188)
- blocks: 添加纯函数式 Tiptap 批量补丁引擎 (86763c4)
- block-links: 导航前解析拆分重定向 (49d935c)
- block-links: 接入拆分重定向解析器 (5eb116e)
- block-links: 暴露拆分重定向解析器 (a1b6c81)
- block-links: 解析因笔记拆分而移动的 Block (c9cca98)
- import-export: 在往返导入导出中保留树结构和附件 (c70d51b)
- note-split: 支持 Tiptap 预览和 Block 链接确认 (6e07707)
- note-split: 提供富文本 Block 链接警告 (09561e7)
- note-split: 提供 Tiptap 标题拆分入口 (3bdc48b)
- note-split: 预览 Tiptap 标题章节 (b11fae0)
- note-split: 注册 Tiptap 拆分路由 (ef5453d)
- note-split: 添加事务化 Tiptap 拆分 (3c0b015)
- note-split: 添加 Tiptap 标题拆分规划器 (67d760b)
- note-split: 拆分前选择章节 (1c21933)
- note-split: 发送选中的章节索引 (236c8ad)
- note-split: 优先注册选定章节路由 (4b86722)
- note-split: 支持提取选定章节 (a714bbf)
- note-split: 安全构建部分拆分源内容 (0b19c24)
- note-split: 在拆分和撤销期间保留附件归属 (8776a75)
- note-split: 让编辑器通过拆分运行时外壳运行 (6591282)
- note-split: 在编辑器中提供拆分操作 (f699013)
- note-split: 添加拆分预览与撤销对话框 (f831df4)
- note-split: 添加经确认的拆分 API 客户端 (d9c3242)
- note-split: 添加客户端拆分预览规划器 (e6c6955)
- note-split: 注册笔记拆分路由 (94d8e0b)
- note-split: 添加事务化拆分与撤销路由 (8d68f62)
- note-split: 添加 Markdown 拆分规划器 (a127aa9)
- markdown: 让大型编辑器通过增量同步外壳运行 (6bca463)
- markdown: 增量同步 CodeMirror 与 Y.Text (9cf3c5f)
- markdown: 跟踪增量协作运行时 (3298669)
- editor: 将粘贴的哔哩哔哩视频链接嵌入编辑器 (7a453ab)
- markdown: 添加增量 CodeMirror 与 Y.Text 映射 (18895c4)
- markdown: 根据视口等级启用优化编辑器 (fb64b9b)
- markdown: 将中型文档切换到视口编辑器 (37f9112)
- markdown: 将大型文档升级到视口编辑器 (4a52fee)
- markdown: 添加防过期 Worker 控制器 (e1e7869)
- markdown: 在 Worker 中运行文档分析 (33ea398)
- markdown: 添加可在 Worker 中安全运行的文档分析 (2a68c05)
- editor: 让重型节点通过运行时外壳运行 (5d5c5a5)
- editor: 根据视口延迟渲染 Mermaid (55f82f5)
- editor: 懒加载挂载视频和 iframe 节点视图 (3fa9d60)
- editor: 支持需交互后激活的重型节点 (c1a2f35)
- editor: 提供运行模式提示与会话恢复 (9c8f7a7)
- editor: 添加可复用的重型节点视口 Hook (1f93df2)
- editor: 说明紧急文档保护的原因 (f63f9f1)
- editor: 让笔记遵循渐进式运行时策略 (e536a29)
- editor: 添加运行模式存储与长任务升级机制 (b779eb2)
- editor: 添加渐进式运行模式策略 (230ab27)
- editor: 添加统一文档复杂度分析器 (20ba263)
- search: 暴露侧边栏搜索等待状态 (ab7a705)
- search: 添加渐进式查询策略 (b97e6fe)
- editor: 为超大型 Markdown 笔记添加轻量编辑器 (aa46b7b)
- editor: 检测存在风险的大型 Markdown 文档 (263cf0f)
- settings: 加载开关卡片样式 (f3641e3)
- settings: 重新设计偏好设置开关 (167726f)
- auth: 保护多服务器账号配置 (#343) (7645fb4)
- sync: 轮询桌面端集合以检测外部写入 (b57b488)
- sync: 接入工作区刷新桥接 (01cb894)
- sync: 添加桌面端工作区刷新桥接 (6186955)
- note-transfer: 向客户端暴露重写后的链接数量 (#325) (62651f5)
- note-transfer: 支持本地与对象存储的原子迁移 (#325) (c6504f2)
- audit: 添加笔记迁移审计分类 (#325) (cb34a36)
- note-transfer: 挂载跨空间迁移中心 (#325) (13042fc)
- note-transfer: 添加复制与移动迁移中心界面 (#325) (559354a)
- note-transfer: 添加带类型的前端迁移客户端 (#325) (ca3261e)
- note-transfer: 挂载专用迁移路由 (#325) (8ef6616)
- note-transfer: 提供预览与执行接口 (#325) (60c1147)
- note-transfer: 添加安全的跨工作区笔记迁移服务 (#325) (71b6386)
- settings: 挂载 Docker 更新中心 (#330) (8b97e1c)
- settings: 添加 Docker 在线更新体验 (#330) (7cc9aeb)
- updater: 添加管理员预检备份与应用 API (#330) (dd301ba)
- settings: 挂载管理员更新控制面板 (#330) (5003fa5)
- updater: 暴露经过身份认证的内部控制面板 (#330) (1213f28)
- updater: 持久化更新任务和回滚容器 (#330) (54cb7ea)
- updater: 添加受限的 Docker Engine 适配器 (#330) (b86233d)
- docker: 拆分本地构建 Compose 覆盖配置 (#330) (4f8c0e7)
- docker: 打包更新器入口和健康检查元数据 (#330) (b5cbb5e)
- docker: 添加受管理的更新器部署配置 (#330) (43cdc4b)
🐛 修复
- android: 改进分享导入的 multipart 处理和安全区域布局 (0bbb7cb)
- release: 支持 AppImage 内嵌 blockmap (9344371)
- docker: 修复多架构构建语法 (7bb77c5)
- md (6c27a83)
- import: 预处理浏览器保存的 HTML 文档 (73a41e5)
- import: 在转换为笔记前规范化 SingleFile HTML (cd08dce)
- ai: 缩小嵌入设置观察器的监听目标范围 (c976fa6)
- ai: 保持索引任务文案桥接具备幂等性 (89b7e7d)
- tree: 启动时接入自定义滚动条桥接 (56630b8)
- tree: 为 Web 端和桌面端添加运行时自定义滚动条 (a80f487)
- tree: 恢复桌面端可见滚动条 (b9cef05)
- frontend: 恢复知识树筛选器旁的排序按钮 (a618125)
- electron: 打开 Markdown 时保留文本编码 (a87d1cb)
- electron: 解码 Windows Markdown 编码 (5a73653)
- editor: 在格式刷中保留嵌套 Block 结构 (b6369bc)
- issue-455: 添加一次性嵌套 Block 安全工作流 (f9618d6)
- issue-455: 添加嵌套 Block 安全补丁 (7f9385d)
- editor: 将格式刷 Hook 保持在组件作用域内 (8c2f665)
- issue-455: 添加一次性 Hook 作用域修复 (de3fb7a)
- issue-455: 修正 Hook 作用域 (337e776)
- editor: 保持格式刷 Hook 无条件调用 (1311eb1)
- issue-455: 添加 Hook 调用顺序修复工作流 (e69d914)
- issue-455: 修正 Hook 调用顺序 (954455c)
- android: 在沉浸式工具栏中保留编辑器焦点 (1c783f7)
- knowledge-tree: 将导入文档保留在选中的树父节点下 (cc92910)
- knowledge-tree: 移除重复的子节点映射声明 (df5cfac)
- knowledge-tree: 修复右键菜单面板 JSX (9735f92)
- knowledge-tree: 恢复目录右键菜单能力 (a6c13ed)
- knowledge-tree: 延迟触发插入保护,并修复跨作用域父节点映射 (4cbb244)
- shortcuts: 清除绑定后移除过期的工具提示 (a8b4eff)
- shortcuts: 支持动态生成的标题命令 (24489d3)
- yjs: 避免 flush 时因无操作而递增版本号 (7792d1f)
- knowledge-tree: 每个数据库连接仅初始化一次 Schema (1aa409e)
- knowledge-tree: 恢复资源前先激活树子树 (e9f99d7)
- postgres: 仅在结构更新时校验树父节点 (7719ec5)
- knowledge-tree: 运行时确保完成后仍保留结构保护 (0c2f56b)
- knowledge-tree: 注册 v64 结构保护 (9e0f6a2)
- knowledge-tree: 仅在结构变化时校验父节点作用域 (2881903)
- postgres: 旧版笔记本更新时保留文档父节点 (01b71dd)
- knowledge-tree: 运行时确保完成后保留加固的同步触发器 (ce36ca8)
- knowledge-tree: 注册 v63 旧版同步迁移 (04dd066)
- knowledge-tree: 拆分旧版笔记本父节点和状态触发器 (7f4122a)
- knowledge-tree: 通过子树恢复机制还原已删除的后代节点 (8be01ed)
- knowledge-tree: 恢复完整的已删除子树 (4ea844c)
- permissions: 为新建节点保留工作区角色 (f2f8efc)
- permissions: 让工作区创建者继续使用继承的团队角色 (837f39d)
- knowledge-tree: 通过限定字段的 SQL 实现执行列表查询 (ddde99f)
- knowledge-tree: 使用无歧义的混合树标题排序 (4f8219c)
- knowledge-tree: 避免迁移启动时出现 Schema 循环依赖 (3712f52)
- knowledge-tree: 在树查询前确保可选资源表已存在 (c999f0d)
- 完善笔记删除与附件清理逻辑 (1fdad04)
- 完善编辑器分屏镜像与多编辑器集成 (29bdc37)
- 优化编辑器分屏镜像同步逻辑 (7296fb1)
- 清理前端初始化与设置相关逻辑 (8a1795a)
- collaboration: 渲染完整的共享笔记本树 (43750b4)
- api: 加固笔记内容视图边界 (#355) (c59f04c)
- api/editor: 隐藏 Markdown Block ID,并按内容格式路由 (#355) (0d397a1)
- tags: 使标签创建在作用域内具备幂等性 (8a3cebd)
- tags: 注册限定作用域的标签唯一性迁移 (9d6637a)
- tags: 将标签名称迁移为作用域内唯一 (1785f78)
- tags: 添加具备幂等性的作用域标签创建 (8e06def)
- sdk: 由服务端生成附件所属笔记的搜索文本 (478a26f)
- sdk: 合并并发的附件登录请求,避免重复 (6c8a316)
- sdk: 创建 Blob 前复制类型化数组 (d9d196a)
- sdk: 为公共客户端加入 Web 平台类型 (5d350da)
- ci: 在缺少锁文件缓存时仍安装 SDK (ac15412)
- sdk: 暴露笔记内容格式类型 (de815dc)
- editor: 修复大纲生成与跳转 (f36bbbf)
- editor: 在自动模式中排除仅允许显式选择的语法 (2d07fca)
- code-block: 保留自动检测使用的语言子集 (f54337e)
- editor: 移除轻量编辑模式提示 (7fd14c2)
- editor: 移除视口优化提示 (93640a2)
- import: 在撤销错误中保留禁止访问状态 (2e37e2a)
- import: 撤销权限前重新检查管理员角色 (0c1e4d6)
- export: 遵循数据管理员的工作区作用域 (6697434)
- import: 在预检中显示无效的权限清单 (ab13f80)
- 清理遗留服务器资料数据 (734f5ad)
- import: 加固旧版权限映射 (58bb44d)
- 修复超长笔记滚动区域 (51e6e06)
- 修复窗口化笔记滚轮失效 (dce9211)
- 收口 M6 M7 权威存储与窗口化一致性 (5811aa3)
- 重分段后立即回退单体编辑器 (435c34b)
- clipper: 恢复缺失的内容脚本接收器 (a344e48)
- blocks: 强制保证列表项容器兼容性 (c13a742)
- editor: 验证列表结构的 Block 身份 (b13ad3f)
- editor: 列表结构补丁被拒绝后执行回退 (ad9c660)
- blocks: 复用结构索引规划类型 (53c484f)
- editor: 规划包含大型子树的列表移动 (76f211f)
- editor: 保留列表属性并选择等价移动方式 (1c7a5df)
- blocks: 下沉列表项时保留列表属性 (2accf67)
- editor: 列表移动被拒绝后执行回退 (21cf1b1)
- ai: 保持向量状态提示文案一致 (e918dc9)
- blocks: 跟踪临时结构 Block 身份 (a1af567)
- ai: 明确向量索引状态 (5272ff2)
- ai: 接入嵌入任务队列加固逻辑 (ede3455)
- ai: 加固嵌入任务队列恢复流程 (8a84ffb)
- blocks: 缩小增量叶子节点操作范围 (4faf2c6)
- blocks: 报告实际已建立索引的 Block 行数 (baa958a)
- blocks: 暴露祖先节点索引更新 (d762bff)
- blocks: 为叶子节点补丁刷新已索引的祖先节点 (cec9019)
- editor: 缩小富文本替换操作类型范围 (dbabd0b)
- editor: 富文本 Block 节点被拒绝后执行回退 (22a1578)
- blocks: 补丁保存期间保留笔记历史记录 (c4bfc0b)
- editor: 将 Tiptap 运行时策略限定到所属笔记 (4cf9295)
- editor: 让空 Tiptap 文档继续走整文保存路径 (19a5a34)
- editor: 隔离 Block Patch 对 AppContext 的使用 (b47d29e)
- editor: 在 Block Patch 之后串行保存标题 (234d98d)
- blocks: 定义列表更新广播负载类型 (ccc21c8)
- editor: 隔离已过期的 Block Patch 完成结果 (dc3b624)
- blocks: 拒绝跨笔记复用幂等键 (819c95b)
- 加固附件路由器启动流程 (b319734)
- blocks: 删除后仍保留有效的 Tiptap 容器 (7701035)
- blocks: 执行原子补丁前规范化源内容 (6f4a7c6)
- editor: 对齐运行时搜索插件键的类型定义 (41d1639)
- block-links: 在重定向链中强制执行 ACL 权限控制 (0f3a2fb)
- block-links: 使重定向解析器不依赖路由顺序 (0e39363)
- block-links: 在重定向链中保留已移动 Block 的 ID (b29eae2)
- note-split: 避免 Tiptap 进入 Markdown Yjs 房间 (d981c87)
- note-split: 修改后刷新拆分可用状态 (39a27a6)
- note-split: 保持空 Tiptap 章节有效 (c16a70a)
- note-split: 保持 Tiptap 目录 Schema 干净 (d2408c7)
- note-split: 从标题中移除持久化的 Block ID (ca0e85f)
- note-split: 从标题中隐藏运行时 Block ID (3fbc1d5)
- note-split: 生成有效的内部笔记链接 (56aaf95)
- docker: 为完整备份加载加固后的后端入口 (#352) (2690bb1)
- desktop: 修复视频全屏与打包校验 (1ac40e3)
- editor: 避免将笔记格式同步为用户偏好设置 (6aa2952)
- note-split: 事务版本竞争时执行回滚 (64691f4)
- desktop: 打开笔记时遵循 Markdown 格式 (f89cfbc)
- desktop: 使用 Markdown 编辑器打开 Markdown 笔记 (2349ab7)
- markdown: 紧急富文本模式下跳过格式转换 (2b0ac4a)
- markdown: 为大型模式分类规范化后的内容 (4319446)
- markdown: 保持分析 Worker 与旧版 WebView 兼容 (ed45702)
- build: 使用浏览器计时器句柄类型 (ab29e74)
- build: 安全转换仅运行时存在的笔记元数据 (88a04e1)
- build: 使用数值型 Tiptap 末尾选区 (de1e637)
- build: 为 lowlight 运行时测试替身补充类型 (1a79680)
- build: 对齐编辑器性能诊断类型 (972687f)
- video: 修正桌面端覆盖层保护语法 (#367) (cf41b24)
- video: 保持桌面端原生控制条可交互 (#367) (6bad94f)
- editor: 保持运行模式提示与旧版 WebView 兼容 (6ed11f6)
- editor: 加固视口高亮调度 (8bec5ce)
- editor: 使用规范的空装饰集合 (db9f00b)
- editor: 保留富文本阈值兼容性 (649c657)
- editor: 避免紧凑富文本误触发大型文档模式 (b5a0255)
- search: 为全文搜索加载旋转图标添加动画 (ead4262)
- search: 让侧边栏加载旋转图标正常旋转 (d66d51f)
- search: 缓冲侧边栏输入并保留焦点 (c4f0394)
- 删除不必要的文件 (a88fd22)
- editor: 超大型富文本笔记绕过 Tiptap 和 Yjs (c0a44c7)
- search: 保留用户有意输入的短查询 (bc40fee)
- search: 延迟执行渐进式短查询 (7e8b0e0)
- search: 取消已过期的渐进式请求 (394fd8b)
- editor: 将超大型 Markdown 笔记切换到安全模式 (61bfd1a)
- android: 对齐 findLast 长度转换语义 (4b37273)
- editor: 区分 WebView 兼容错误与笔记结构异常 (e5be206)
- android: 在应用启动前加载运行时兼容层 (639ddb9)
- android: 补齐旧版 WebView findLast 兼容 (1d15943)
- editor: 移除任务列表 DOM 观察器循环 (#361) (635fda3)
- editor: 对齐任务列表和项目符号列表标记 (#361) (82cad44)
- search: 修复源文本并限制候选结果检索范围 (#340) (5c4ead6)
- editor: 保持笔记内搜索匹配项可见 (#328) (9a3df5f)
- editor: 完善缓存优先与拆分加载覆盖 (#351) (fb40a94)
- editor: 平滑延迟笔记加载的过渡效果 (#351) (e998f9e)
- sync: 使用服务端探测结果判断局域网连通性 (#350) (14d1e11)
- sync: 正确处理 syncNow 失败结果 (#350) (ac7abca)
- sync: 加固恢复 flush 的单航班机制 (#350) (a0b85a7)
- sync: 区分可见性探测与真实恢复 (#350) (27699df)
- sync: 收紧工作区刷新桥接的类型定义 (882f678)
- ui: 去除重复的空间导航入口 (290e8dd)
- ui: 加载空间操作触发保护 (52450c0)
- ui: 隐藏旧版迁移悬浮入口 (bbb6788)
- ui: 将空间操作移入导航栏 (bc32d3e)
- ui: 将空间操作整合到紧凑启动器中 (24ae016)
- editor: 明确 Block 缩进快捷键 (#327) (b61dc13)
- editor: 在 NodeView 中渲染代码块缩进 (#327) (5c08f2e)
- electron: 校验更新器发布资源 (#329) (7b39915)
- siyuan: 导入后保持富文本索引一致 (#284) (9e3b805)
- embed: 保持沙箱与回退状态同步 (#284) (e958bbd)
- markdown: 隐藏独立的思源 Block IAL 行 (#284) (4cfc5bf)
- siyuan: 使用显式安全映射完成富文本导入 (#284) (06dc638)
- siyuan: 加固导入高级节点的富文本映射 (#284) (ded13ea)
- siyuan: 规范化真实 Callout 与 IAL AST 节点 (#284) (f975e3d)
- embed: 要求密码握手并提供安全回退 (#284) (8b010fd)
- markdown: 保持语义预览 Block 完整 (#284) (2de3d82)
- markdown: 规范化导入的思源 Callout (#284) (ae94cc5)
- note-transfer: 要求交互式安全移动执行 (#325) (a15bb2c)
- note-transfer: 保持内容文本引用一致 (#325) (830f995)
- note-transfer: 要求完整的移动预览版本信息 (#325) (37f883d)
- note-transfer: 接入当前工作区刷新桥接 (#325) (6c0b7ed)
- note-transfer: 迁移后刷新当前工作区 (#325) (ec59051)
- note-transfer: 等待对象存储预览与执行完成 (#325) (9ac3a3d)
- note-transfer: 强制使用附件安全的移动语义 (#325) (17c82e2)
- note-transfer: 桥接笔记链接索引同步 (#325) (584ba3f)
- note-transfer: 桥接附件引用同步 (#325) (37a7541)
- note-transfer: 使用 UUID 链接测试夹具并初始化审计 Schema (#325) (4622c33)
- note-transfer: 修正预览链接数量和阻塞状态 (#325) (098b410)
- upload: 以确定性方式完成离线图片上传 (#331) (1bf9451)
- android: 启用 WebView 长按文本选择 (#335) (cf352e6)
- android: 恢复编辑器文本选择操作 (#335) (4b9a79c)
- android: 在应用挂载前接入编辑器媒体作用域保护 (#338) (91d5525)
- android: 将非编辑器媒体按钮与编辑器桥接隔离 (#338) (8120ce7)
⚡ 优化
- ai: 将索引文案观察器限定在设置面板 (2bad49f)
- frontend: 将侧边栏搜索观察器限定到相关节点 (1ea704d)
- blocks: 统一混合补丁索引更新 (a595ffd)
- blocks: 增量索引顶层结构补丁 (563f8f8)
- blocks: 增量更新叶子节点补丁索引 (f6343e2)
- editor: 在优化模式下禁止重复扫描大纲 (9b6fa97)
- editor: 缓存 ProseMirror 纯文本快照 (8b7b831)
- editor: 停止实时重复扫描全文搜索 (c040f6a)
- editor: 根据运行模式延迟渲染数学节点 (84b4c46)
- markdown: 增量同步时绕过旧版全文差异比较 (9c8d4f5)
- editor: 将代码高亮限制在当前视口 (5775cfd)
- editor: 在轻量模式下停止扫描代码块 (5935b18)
- editor: 测量笔记获取与运行时策略各阶段耗时 (90f91fb)
- editor: 懒加载视口外的富文本图片 (c985498)
- editor: 在轻量模式下禁用代码高亮 (0635080)
- sidebar: 使用乐观更新创建笔记本 (#344) (4be7b08)
- sidebar: 使用乐观更新创建笔记本 (b6f10c9)
- editor: 优化代码块输入与保存确认 (#342) (c72c971)
- editor: 优化代码块输入与保存确认 (39120f1)
♻️ 重构
- ai: 挂载嵌入索引任务文案桥接 (03d1bc6)
- ai: 明确嵌入索引任务文案 (d69501b)
- tree: 对创建与导入操作进行分组 (8e99702)
- sidebar: 删除旧版笔记本目录实现 (a8b5804)
- layout: 停用管理模式和列表切换快捷键 (2bc0913)
- shortcuts: 移除已停用的笔记列表布局快捷键 (f1fd25d)
- commands: 停用旧版笔记列表布局命令 (e2078cb)
- navigation: 移除旧版“全部笔记”目录入口 (790fb77)
- frontend: 安全处理所有侧边栏搜索界面 (5aca659)
- frontend: 挂载统一的侧边栏搜索体验 (d3e2ddb)
- frontend: 接入侧边栏搜索兼容桥接 (16aa13c)
- frontend: 停用重复的侧边栏搜索框 (c613e18)
- frontend: 移除旧版笔记本树切换开关 (0897353)
- knowledge-tree: 为触发器加固保留基础 Schema 辅助方法 (ae49e45)
- permissions: 为修复工作区归属保留权限能力核心 (50d43b8)
- knowledge-tree: 为列表查询修复保留核心服务 (fce65cc)
- code-block: 将语言配置保留在视图依赖中 (a0939da)
- editor: 使用限定作用域的列表移动操作 (7908287)
- editor: 限定列表项移动的作用域 (4beee4e)
- blocks: 使用限定作用域的列表移动协议 (99d8465)
- blocks: 限定列表层级移动的作用域 (37207c8)
- attachments: 移除已停用的图床相关文案 (5e72f3f)
- attachments: 移除第三方图床功能 (f128192)
- image-hosting: 通过 Repository 处理旧版配置 (faf015f)
- frontend: 简化笔记列表拖放目标解析逻辑 (19d1661)
- upload: 移除图床专用超时常量 (9dac0ac)
- api: 移除已停用的图床上传覆盖配置 (2e7cb0a)
- image-hosting: 移除已停用的回退策略服务 (146b6be)
- image-hosting: 移除已停用的 S3 图床服务 (4ec7bc7)
- frontend: 简化笔记本排序偏好存储并优化刷新按钮锚点 (ae33d88)
- image-hosting: 停用上传 API 并保留迁移元数据 (976f78c)
- attachments: 停用第三方图片上传路径 (be940fb)
- navigation: 通过账号菜单提供连接操作 (473e416)
- desktop: 将服务器中心改造为连接与账号流程 (d840e4e)
- migration: 移除已被替代的轻量迁移引擎 (dfc518c)
- migration: 移除旧版云迁移对话框 (46c8ada)
- desktop: 将服务器管理移入账号流程 (86fa803)
- editor: 复用 Tiptap 派生运行时策略 (f53bab1)
- editor: 隔离 Tiptap 派生运行时策略 (e822a71)
- editor: 将 Markdown 安全模式与运行时策略统一 (17f945c)
- releases: 让更新器复用缓存的版本查询 (#330) (bab11a4)
📝 文档
- 设计知识树滚动条视觉方案 (25ac654)
- perf: 记录 issue 210 跨平台验收说明 (7c74301)
- sdk: 展示 Markdown 创建与更新流程 (882b980)
- api: 记录原生 Markdown 笔记契约 (c74a609)
- 设计移除视口优化提示 (fc18197)
- 编写移除侧栏账号入口计划 (3aff5ee)
- 设计移除侧栏账号入口 (16bcc6a)
- 编写移除连接与迁移功能计划 (9833ddc)
- 设计移除连接与迁移功能 (180bfd5)
- 编写拆分文档菜单实现计划 (6039616)
- 设计拆分文档入口移入更多菜单 (bac901e)
- 更新 M6~M7 灰度与代际说明 (ba91868)
- 添加 M6~M7 实施计划 (54e1e70)
- 固化 M6~M7 灰度演进设计 (c4dfd0c)
- blocks: 记录安全内联图片 V2-J (170c8be)
- blocks: 记录列表项结构补丁 V2-I (737491a)
- blocks: 说明列表项结构补丁 (3514376)
- blocks: 记录列表子树索引模式 (8bab906)
- blocks: 记录列表子树索引更新 (b50490d)
- blocks: 明确列表属性与子树规划 (bbb96dc)
- blocks: 记录列表层级补丁 V2-G (7c8d442)
- blocks: 说明受控列表层级补丁 (1bba45f)
- blocks: 记录不写入历史的空 Block 修复 (f6e43ea)
- blocks: 记录空文档修复 V2-E (6f77735)
- blocks: 记录空文档修复 (66b6044)
- blocks: 记录混合索引补丁 V2-D (126da74)
- blocks: 记录结构索引补丁 V2-C (ff34ed4)
- blocks: 记录增量索引更新 (e9e7d97)
- blocks: 记录富文本替换补丁 V2 (c7dcfb0)
- env: 移除旧版图床相关文案 (b74ca53)
- attachments: 记录图床功能停用与迁移说明 (c97f32e)
- desktop: 记录连接优先的服务器工作流 (7e59384)
- blocks: 记录灰度保存的安全边界 (b89a148)
- blocks: 记录 Tiptap 灰度发布方案 (4bd7883)
- blocks: 明确用户级幂等键 (8aa9a85)
- blocks: 记录 Block Patch API V1 (658e547)
- block-links: 记录拆分重定向行为 (ade6961)
- note-split: 记录 Tiptap 拆分实现 (f180963)
- note-split: 评估富文本标题拆分 (a1b3106)
- readme: 使用 HTTP 官方地址和演示地址 (cac88e4)
- tutorials: 更新 Web 指南和 HTTP 链接 (88c222d)
- tutorials: 更新快速入门流程 (b41af29)
- tutorials: 重建当前帮助中心索引 (b72d9cc)
- readme: 区分官方网站与演示站点 (42ec2d4)
- readme: 对齐英文项目指南 (ee25ab6)
- readme: 重写项目概览与部署指南 (6b108df)
- docker: 更新部署与在线升级流程 (#330) (e02e7fa)
- updater: 添加安全与恢复指南 (#330) (ec9b6ce)
- docker: 记录更新器环境控制项 (#330) (2cb50aa)
💄 样式
✅ 测试
- import: 覆盖 SingleFile HTML 规范化测试 (f23cb6a)
- ai: 覆盖嵌入索引任务文案测试 (e74fe59)
- tree: 锁定 Web 滚动条运行时契约 (e629c57)
- tree: 覆盖自定义滚动条几何计算测试 (ee5570b)
- tree: 锁定桌面端可见滚动条契约 (0b9be0c)
- tree: 锁定内联创建交互契约 (c129362)
- tree: 覆盖内联创建标题辅助方法测试 (e75cb19)
- sidebar: 接受简化后的统一侧边栏根节点保护 (e1a39e3)
- shortcuts: 移除旧版笔记列表快捷键预期 (842c8a7)
- layout: 覆盖仅统一树的迁移与视图策略测试 (a93a7d7)
- layout: 使编辑器工作区测试与统一树对齐 (68fc21d)
- mobile: 在 jsdom 中运行笔记搜索启动器 (8d18b79)
- mobile: 覆盖笔记搜索启动顺序测试 (2634ceb)
- frontend: 在 jsdom 中运行知识树排序测试 (4a4c05e)
- frontend: 覆盖统一知识树排序测试 (5fea266)
- frontend: 覆盖侧边栏搜索作用域清理测试 (134e30f)
- electron: 覆盖 Markdown 编码检测测试 (693d89d)
- editor: 使格式刷测试夹具与 Schema 对齐 (a24b726)
- issue-455: 添加一次性 Schema 测试夹具修正 (c4441d3)
- issue-455: 添加符合 Schema 的测试修复 (dfaf622)
- editor: 保护格式刷 UI 集成 (444c4cc)
- editor: 覆盖安全格式刷行为测试 (85a9df8)
- android: 覆盖 Markdown 沉浸式编辑测试 (d009e44)
- android: 添加沉浸式编辑器回归门禁 (90b6a7b)
- knowledge-tree: 覆盖右键菜单能力矩阵测试 (2bc1d26)
- shortcuts: 验证清除绑定后会移除工具提示 (bfcc334)
- shortcuts: 模拟真实的 ProseMirror 编辑器根节点 (3556083)
- shortcuts: 验证导出的平台文档 (d9c3477)
- shortcuts: 覆盖持久化校验与重置测试 (5e002f9)
- note-split: 清理数据库时销毁 Yjs 房间 (7045e4a)
- note-split: 后端测试套件完成后关闭数据库 (d29647a)
- 后端测试套件完成后关闭共享数据库 (4410050)
- knowledge-tree: 跟踪子树恢复步骤 (268906b)
- knowledge-tree: 暴露操作失败阶段 (2c44357)
- postgres: 覆盖 v64 结构保护测试 (9d25391)
- knowledge-tree: 校验 v64 结构保护 Schema (d20f55e)
- postgres: 验证文档父节点保留触发器 (f636ded)
- knowledge-tree: 校验 v63 旧版同步 Schema (1dcd713)
- knowledge-tree: 验证完整子树恢复 (8a55a79)
- permissions: 防止工作区创建者自动成为节点管理员 (b9a4886)
- knowledge-tree: 避免 CommonJS 顶层 await (714117f)
- shares: 挂载具名管理路由 (#447) (7eeb53d)
- shares: 覆盖管理 HTTP 契约测试 (#447) (0a42d22)
- perf: 要求完整的 issue 210 稳定性证据 (ca82c66)
- perf: 保存采样前聚焦合成编辑器 (fe2c575)
- shares: 使用仓库内 React DOM 测试框架 (#447) (4f8daeb)
- perf: 覆盖 issue 210 验收校验器测试 (12393b9)
- shares: 稳定页面 API Mock (#447) (7ab181e)
- perf: 覆盖 issue 210 运行时采集器测试 (0a647b2)
- shares: 覆盖管理页面渲染与筛选测试 (#447) (7cc830d)
- shares: 覆盖管理展示辅助方法测试 (#447) (9ee4f0e)
- shares: 覆盖管理筛选与访问控制测试 (#447) (c03b10e)
- issue-370: 覆盖工作区布局辅助方法测试 (a4dd3d1)
- api: 覆盖已授权的共享笔记本子树测试 (45724fc)
- sidebar: 覆盖共享笔记本层级测试 (5f0040b)
- block-patch: 使门禁与当前协议对齐 (#355) (cb4b829)
- editor: 覆盖初始化超时降级测试 (be1138d)
- tags: 覆盖作用域内幂等创建测试 (f9d7f89)
- tags: 覆盖作用域唯一性迁移测试 (bfa3f52)
- sdk: 覆盖 Markdown 笔记 API 契约测试 (49f9da4)
- code-block: 分离大小写与自动检测检查 (30f07a0)
- code-block: 覆盖 MAXScript 选择器标签测试 (f1252fc)
- markdown: 覆盖 MAXScript 代码围栏测试 (89c5b0a)
- code-block: 覆盖 MAXScript 注册测试 (304fec0)
- import: 权限撤销必须具备当前管理员角色 (348e513)
- export: 解析数据管理员工作区作用域 (dc31740)
- import: 读取 PostgreSQL 导入批次迁移 (e8cfe39)
- import: 验证 PostgreSQL 权限 Schema 契约 (beea4ac)
- import: 接受规范化的 Markdown Block ID (ecf8229)
- import: 覆盖权限审核与请求负载测试 (1504186)
- import: 覆盖 v2 权限迁移与撤销测试 (e113372)
- 修正窗口化选择测试类型 (8d1387c)
- editor: 发送内联图片 Block 补丁 (9baa4e8)
- blocks: 覆盖图片替换路由事务测试 (e1bfdba)
- editor: 规划内联图片 Block 替换 (f5d7e15)
- blocks: 覆盖内联图片替换补丁测试 (71d005d)
- editor: 为列表结构 API 测试夹具补充类型 (88d77a2)
- editor: 覆盖列表结构 API 契约测试 (8bba0ac)
- editor: 拒绝冲突的列表结构身份 (f47d223)
- blocks: 保持真正无关的数据行稳定 (0b45e11)
- editor: 发送列表项结构 Block 补丁 (efb6bca)
- editor: 覆盖列表项结构规划测试 (6042f6e)
- blocks: 覆盖列表项结构补丁事务测试 (2cbc3d2)
- blocks: 覆盖受控列表项结构补丁测试 (9e9c72d)
- editor: 接受列表子树索引响应 (bbc26aa)
- blocks: 覆盖增量列表子树索引测试 (af01cba)
- editor: 覆盖大型子树列表移动测试 (7acdd84)
- editor: 对齐确定性的相邻列表移动 (40817fe)
- editor: 覆盖有序属性与等价列表移动测试 (0df7ee7)
- blocks: 下沉时保留有序列表属性 (86f86f6)
- editor: 列表移动被拒绝后执行回退 (5ef3b88)
- editor: 发送列表层级 Block 补丁 (c7cd8de)
- blocks: 覆盖列表层级补丁事务测试 (1e62559)
- editor: 覆盖受控列表层级规划测试 (77e9349)
- blocks: 覆盖受控列表层级移动测试 (b6411ba)
- editor: 修复空 Block ID 时保留撤销能力 (844c753)
- editor: 校验空文档 Block 补丁 (d7a890b)
- editor: 修复服务端空 Block 身份 (5099932)
- editor: 规划空文档 Block 修复 (a7c48b2)
- ai: 隔离嵌入任务队列加固用例 (48ad3b5)
- blocks: 覆盖先创建后移动的混合身份测试 (b1a6309)
- editor: 使富文本规划器与统一顶层批次对齐 (556dd53)
- ai: 覆盖嵌入任务队列恢复测试 (9c27cde)
- blocks: 覆盖混合增量补丁索引测试 (5988237)
- editor: 规划富文本混合结构批次 (9c7aa5b)
- editor: 暴露结构索引更新类型 (b746651)
- blocks: 覆盖增量顶层结构索引测试 (901bde7)
- blocks: 暴露增量索引响应元数据 (b24d0b2)
- blocks: 覆盖祖先节点与类型索引更新测试 (c36c785)
- blocks: 覆盖增量补丁索引测试 (752523c)
- blocks: 为路由 V2 数量断言补充类型 (38380c2)
- editor: 通过补丁 V2 处理富文本 Block 变更 (c36e630)
- editor: 规划安全的富文本 Block 替换 (cb0da33)
- blocks: 覆盖富文本替换事务测试 (9c5fe01)
- blocks: 覆盖安全富文本 Block 替换测试 (5e4af1c)
- image-hosting: 强制执行基于 Repository 的旧版清理 (fb6c991)
- image-hosting: 验证已停用的后端接口范围 (abc9c75)
- attachments: 锁定第三方图床停用行为 (b7be8cc)
- desktop: 覆盖连接优先的服务器导航测试 (d0950c8)
- import: 覆盖权限映射客户端请求测试 (5320cfc)
- import: 覆盖权限导出与受保护映射测试 (d3d058b)
- editor: 覆盖富文本节点回退分类测试 (aa835bc)
- editor: 覆盖富文本 Block 补丁规划测试 (81e9206)
- blocks: 覆盖富文本 Block 替换测试 (5decf7c)
- blocks: 通过事务保留版本历史 (3e4955d)
- editor: 将 Block Patch 运行时限定到所属笔记 (8998259)
- editor: 在整文保存回退路径中保留“全部删除”操作 (a6d510c)
- editor: 在 Block Patch 后串行保存标题 (dfc3cd1)
- editor: 让公共 Tiptap 保持在 AppContext 外部 (47bbdc6)
- editor: 覆盖 Tiptap Block Patch 运行时外壳测试 (efca5d1)
- blocks: 覆盖权威补丁响应测试 (bea1d9d)
- blocks: 断言权威补丁快照 (332e46e)
- editor: 覆盖 Block Patch 灰度策略测试 (0aa797a)
- editor: 覆盖安全 Tiptap 补丁规划测试 (486e1bc)
- blocks: 拒绝跨笔记复用操作 ID (666d9f4)
- blocks: 覆盖经确认的前端补丁客户端测试 (3e7d6b5)
- blocks: 补丁删除后保持嵌套容器有效 (8aa6696)
- blocks: 覆盖原子批量补丁路由测试 (a64a716)
- blocks: 覆盖纯 Tiptap 批量补丁引擎测试 (213d8a8)
- editor: 覆盖优化后的 Tiptap 派生策略测试 (06d61d8)
- editor: 覆盖不可变派生快照缓存测试 (7fdf233)
- editor: 覆盖 Tiptap 派生运行时别名测试 (a260aa7)
- editor: 在 Vitest 中镜像运行时外壳别名 (c833f4b)
- editor: 避免依赖装饰实现细节 (f2812d9)
- editor: 覆盖轻量搜索运行时策略测试 (6a0f04d)
- editor: 覆盖延迟数学渲染测试 (98d53ab)
- block-links: 覆盖 Markdown 拆分重定向测试 (0d34e72)
- block-links: 覆盖重定向后的客户端导航测试 (df31de1)
- block-links: 测试真实的两跳 Block 链 (fd6c0e1)
- block-links: 覆盖拆分重定向解析测试 (8b90ab2)
- note-split: 覆盖空 Tiptap 章节正文测试 (1f1dba8)
- note-split: 覆盖富文本风险确认测试 (0418f31)
- note-split: 覆盖 Tiptap 预览边界测试 (2642e35)
- note-split: 覆盖 Tiptap 规划与事务测试 (77a9f95)
- note-split: 从标题中移除持久化的 Block ID (527622c)
- note-split: 在预览中移除标题 Block ID (728f028)
- note-split: 验证有效的目录反向链接 (b9b5c1f)
- note-split: 提交选中的章节索引 (5a80f1b)
- note-split: 覆盖选定章节与附件保留测试 (b961ee7)
- docker: 保护加固后的备份入口 (#352) (d1b97ad)
- note-split: 移除 Block ID 时保留 Markdown 换行 (bf61383)
- note-split: 按语义比较恢复后的 Markdown (f9265ba)
- note-split: 验证事务化拆分、附件与撤销流程 (c9f4ed4)
- editor: 验证感知格式的模式分阶段切换 (1601cca)
- desktop: 覆盖 Markdown 编辑器选择测试 (bcca496)
- note-split: 覆盖客户端拆分预览测试 (6470ea1)
- note-split: 覆盖 Markdown 拆分规划测试 (726172c)
- markdown: 校验真实 Y.Text 事件增量 (a6fe049)
- markdown: 覆盖增量协作运行时测试 (27b60f9)
- editor: 提高哔哩哔哩粘贴断言的稳定性 (86df640)
- editor: 覆盖哔哩哔哩链接粘贴嵌入测试 (52fefbd)
- markdown: 覆盖增量 Y.Text 映射测试 (ecd9414)
- markdown: 覆盖视口编辑器路由测试 (44806ec)
- markdown: 覆盖防过期 Worker 控制器测试 (f4b4215)
- markdown: 覆盖 Worker 安全分析测试 (63e933b)
- editor: 稳定延迟媒体节点测试覆盖 (f2c64d3)
- editor: 覆盖延迟视频与 Mermaid 外壳测试 (290361e)
- editor: 覆盖交互后激活的重型节点测试 (016bce8)
- editor: 使视口高亮时序具备确定性 (817cc0e)
- editor: 覆盖运行模式提示会话恢复测试 (231d552)
- editor: 覆盖视口范围代码高亮测试 (57cb100)
- editor: 修正结构节点预期 (41034f0)
- editor: 避免全局 act 环境类型冲突 (2454d09)
- editor: 覆盖重型节点视口激活测试 (46000bb)
- editor: 在 jsdom 中运行运行时存储测试 (ae53012)
- editor: 覆盖渐进式富文本路由测试 (351c580)
- editor: 覆盖运行时存储与能力变化测试 (df7c4ad)
- editor: 覆盖渐进式运行模式测试 (4c91d39)
- editor: 覆盖富文本安全模式阈值测试 (206e28a)
- search: 覆盖全文搜索旋转图标动画回退测试 (64b3678)
- search: 覆盖侧边栏旋转图标动画测试 (f220471)
- search: 覆盖侧边栏输入缓冲策略测试 (2996e2b)
- search: 覆盖渐进式查询延迟测试 (b35dba6)
- search: 覆盖渐进式短查询策略测试 (2dc881a)
- editor: 覆盖大型 Markdown 安全模式阈值测试 (920c448)
- editor: 添加大型 Markdown 卡死复现用例 (e669742)
- android: 修正 findLast 回调类型约束 (02354e3)
- android: 稳定旧 WebView 编辑器兼容用例 (fcea8d9)
- editor: 覆盖 WebView 兼容错误提示 (6a76d22)
- android: 覆盖旧 WebView Tiptap findLast 回归 (43aaef0)
- editor: 移除过时的任务 DOM 身份测试 (#361) (dae12bc)
- editor: 防止任务列表观察器循环 (#361) (7100c33)
- sync: 覆盖无成功信号的恢复失败测试 (#350) (2faed86)
- sync: 覆盖可见性与真实恢复状态测试 (#350) (3b3ba30)
- editor: 覆盖代码块 NodeView 缩进测试 (#327) (94665ce)
- electron: 拒绝过期的更新器二进制文件 (#329) (8dfd0e7)
- embed: 覆盖已确认的跨域密码传递测试 (#284) (37ade57)
- siyuan: 使 issue 284 测试夹具路径不依赖运行器 (#284) (81e5697)
- embed: 使用当前 jsdom 来源地址 (#284) (f6c4372)
- siyuan: 使测试夹具 Block ID 与规范 2 对齐 (#284) (665ca16)
- siyuan: 端到端覆盖 issue 284 软件包导入 (#284) (1691f73)
- siyuan: 记录 issue 284 回归测试夹具 (#284) (7a8beb1)
- siyuan: 添加有效的 issue 284 思源 AST 测试夹具 (#284) (b4f80e5)
- embed: 覆盖 DOM 填充与免密码握手提议测试 (#284) (2dc9d14)
- markdown: 通过真实预览渲染动态 Callout (#284) (0750027)
- markdown: 覆盖导入的 Callout 别名与 IAL 测试 (#284) (8cb604b)
- note-transfer: 覆盖预览保护与引用对齐测试 (#325) (e1f8c87)
- note-transfer: 等待分阶段附件迁移完成 (#325) (585835d)
- note-transfer: 覆盖跨工作区复制与移动测试 (#325) (d1f835c)
- android: 覆盖编辑器选区回退决策测试 (#335) (a4a92d2)
- android: 覆盖日记与编辑器媒体作用域隔离测试 (#338) (64aa10e)
- updater: 覆盖镜像限制与配置保留测试 (#330) (9b093e0)
📦 构建
- blocks: 注册批量补丁路由 (d0befe3)
- editor: 通过运行时保护执行 Tiptap 派生读取 (1357974)
- editor: 通过运行时外壳处理数学节点与搜索 (e0a5a2b)
- markdown: 输出经典模式分析 Worker (64d2934)
🤖 CI
- ai: 添加嵌入索引文案回归门禁 (340e634)
- issue-455: 上传类型检查诊断信息 (82fb71e)
- issue-455: 上传聚焦测试诊断信息 (011597b)
- issue-455: 添加永久安全格式刷门禁 (aca37ce)
- knowledge-tree: 完成右键菜单回归门禁 (29f8f9c)
- issue-468: 添加一次性重复声明修复运行器 (56a30af)
- issue-468: 添加一次性面板语法修复运行器 (2ffd638)
- knowledge-tree: 发布右键菜单类型检查诊断信息 (c9e3ede)
- knowledge-tree: 覆盖恢复后的右键菜单能力测试 (3d14924)
- issue-468: 添加受控右键菜单补丁运行器 (5716cd7)
- shortcuts: 使用仓库的类型检查命令 (93e5970)
- shortcuts: 暴露类型检查诊断信息 (a0ac34f)
- shortcuts: 减少诊断初始化输出 (09adfe9)
- shortcuts: 保持失败日志简洁 (e1db641)
- shortcuts: 运行注册表与覆盖配置测试 (ead8420)
- knowledge-tree: 移除临时 Yjs 补丁任务 (7947c40)
- note-split: 已知测试完成后强制退出 (7eb1f2c)
- note-split: 恢复聚焦回归门禁 (9a01c57)
- issue-370: 通过分支工作流修补 Yjs flush (4e1dd65)
- note-split: 在回归门禁前修补无操作 Yjs flush (f2e176c)
- issue-370: PR 更新时运行 Yjs 补丁 (5262d90)
- issue-370: 应用 Yjs 无操作 flush 修复 (5fcc533)
- note-split: 在诊断信息中暴露失败测试末尾日志 (cc747a4)
- note-split: 输出聚焦超时诊断信息 (098efac)
- note-split: 暴露各测试套件失败状态 (8ea7449)
- note-split: 发布限定范围的失败诊断信息 (d996f02)
- note-split: 仅在失败时上传诊断信息 (2b6c76a)
- note-split: 限定并隔离后端诊断范围 (a56e32e)
- note-split: 捕获后端失败诊断信息 (442329c)
- knowledge-tree: 恢复修复后重新触发校验 (eecae9a)
- knowledge-tree: 发布后端失败诊断信息 (e2db313)
- knowledge-tree: 将分支校验结果报告到 Epic (f6d8e5d)
- knowledge-tree: PR 前校验功能分支 (b6596c8)
- shares: 记录最终 V1 门禁 (#447) (22d174b)
- 为 issue 447 最终同步 main (cf4fcae)
- shares: 保留后端诊断信息 (#447) (31e34fe)
- shares: 添加管理路由契约测试 (#447) (ec9d753)
- 为 issue 447 同步最新 main (d972108)
- shares: 添加分享管理回归门禁 (#447) (339a896)
- 应用并验证 issue 210 验收加固 (5d0f360)
- 使用可空标题修复重新运行 issue 447 (f7098b8)
- 对齐 issue 447 可空笔记标题 (d2296d7)
- 捕获 issue 447 TypeScript 诊断信息 (5ad96e0)
- 上传 issue 210 测试诊断信息 (6fee820)
- 验证 issue 210 性能验收工具 (89173fc)
- 捕获 issue 447 前端诊断信息 (54e2eb4)
- 测试修复后重新运行 issue 447 初始化流程 (7acb151)
- 验证 issue 447 实现 (f365a99)
- 初始化 issue 447 集成 (d9ae8bf)
- issue-370: 添加布局与拆分检查 (fa4d40e)
- 初始化共享笔记本树补丁 (9127715)
- issue-355: 最终审查前同步最新 main (812c26f)
- issue-355: 补全 API Mock 结构 (c77c0b2)
- issue-355: 捕获门禁修复失败信息 (83c6fb6)
- issue-355: 修复并验证 Block Patch 门禁 (6bf5c73)
- issue-355: 上传诊断日志 (737ea8b)
- issue-355: 诊断 Block Patch 回归问题 (19cb0f8)
- issue-355: 加入 REST 内容视图契约测试 (ad26977)
- editor: 添加初始化超时回归门禁 (5fbf00a)
- issue-355: 验证 API 与投影边界 (18f0080)
- issue-355: 添加内容格式回归门禁 (0e23b2a)
- issue-355: 在工作流路径外提交已验证源码 (c172a05)
- issue-355: 重做前检出源码分支 (097f1e0)
- issue-355: 允许由 PR 触发已验证的重做流程 (b998e9f)
- issue-355: 运行已验证的内容格式重做 (4980176)
- tags: 添加幂等性回归门禁 (d2e6f65)
- sdk: 完成只读契约门禁 (7a6afca)
- sdk: 捕获契约测试诊断信息 (bb665e6)
- sdk: 在 Pull Request 中报告构建诊断信息 (a771393)
- sdk: 拆分构建与契约测试步骤 (c4b72de)
- sdk: 添加公共 API 契约门禁 (3b1849c)
- search: 为 issue #340 添加回归门禁 (84da9c4)
- code-block: 移除临时诊断工作流 (1d61f7a)
- code-block: 拆分大小写与自动检测检查 (6e385b2)
- code-block: 隔离 MAXScript 语法检查 (9b8ef72)
- editor: 隔离 MAXScript 校验步骤 (b639a7b)
- editor: 校验代码块语言扩展 (4e9af99)
- import: 覆盖权限撤销授权测试 (09d9ae7)
- import: 监控主软件包导入流程 (627a794)
- import: 校验 PostgreSQL 权限 Schema 契约 (83476d5)
- import: 校验权限迁移 v2 (c8b4c22)
- blocks: 覆盖图片路由与运行时集成测试 (1e9edc2)
- blocks: 覆盖内联图片 Block 补丁测试 (0c9fddf)
- editor: 允许手动运行聚焦工作流 (04873f4)
- blocks: 允许手动运行聚焦工作流 (8df1925)
- blocks: 覆盖列表结构客户端契约测试 (c9caaf2)
- blocks: 覆盖列表项结构补丁测试 (69aaa01)
- blocks: 覆盖列表子树索引规划测试 (6f67bd5)
- blocks: 覆盖受控列表层级补丁测试 (32bf59b)
- blocks: 覆盖不写入历史的空 Block 修复测试 (8e1884b)
- blocks: 覆盖空文档修复测试 (ac85394)
- 移除嵌入任务队列触发器 (2e4276d)
- blocks: 覆盖混合增量索引测试 (de71d75)
- 移除一次性嵌入任务队列脚本 (c3c2408)
- 移除一次性嵌入任务队列工作流 (8342a80)
- 准备运行嵌入任务队列修复 (79d0d45)
- 通过合并推送触发嵌入修复 (d442816)
- 运行嵌入任务队列修复校验 (70bab12)
- 添加一次性嵌入任务队列修复脚本 (6d6923f)
- 替换嵌入任务队列校验工作流 (b1c9012)
- 校验嵌入任务队列恢复修复 (4b3b02c)
- blocks: 覆盖增量补丁索引测试 (be473a6)
- blocks: 覆盖富文本替换补丁 V2 测试 (d284ca8)
- 移除已验证删除产物工作流 (e99393a)
- 移除一次性图床删除工作流 (7468644)
- pg: 移除过时的图床校验器 (2567b69)
- pg: 移除图床最终同步 Hook (da786d5)
- pg: 移除图床恢复 Hook (6522627)
- 应用已验证的图床删除产物 (fc562cb)
- 加入已验证的隐藏删除包 (b03d15d)
- 发布已验证的图床删除产物 (3e0b8ff)
- 将已验证的图床删除内容发布到结果分支 (d8647b4)
- 通过一次性 PR 触发图床删除 (27b1bf6)
- 通过 issue 评论触发图床删除 (d87d7ba)
- 触发完整图床删除 (ca67e21)
- 添加一次性图床删除工作流 (c3fe58d)
- image-hosting: 移除已停用的迁移触发器 (710d7f1)
- image-hosting: 移除已停用的迁移工作流 (e1372dc)
- import: 校验往返权限映射 (f6f9ec7)
- pg: 移除临时往返 C-1 校验器 (7f48e5a)
- pg: 通过 Pull Request 校验往返 C-1 (2ff7d15)
- pg: 添加往返批次元数据迁移门禁 (a3e9342)
- editor: 覆盖公共 Tiptap 运行时上下文测试 (a3aa9ed)
- blocks: 覆盖公共 Tiptap 上下文隔离测试 (617877e)
- editor: 运行 Tiptap Block Patch 外壳测试 (ab7395e)
- pg: 在稳定触发器上使用最终同步门禁 (16c4dba)
- blocks: 运行 Tiptap 运行时外壳回归测试 (fa34f26)
- pg: 添加最终 latest-main 同步门禁 (23c6f14)
- editor: 覆盖 Tiptap Block Patch 灰度发布测试 (5ed495f)
- blocks: 校验 Tiptap 灰度发布 (a44da36)
- pg: 校验图床迁移批次 (afb021b)
- pg: 触发图床运行时迁移 (0063229)
- pg: 添加确定性的图床迁移运行器 (f36b25a)
- pg: 完成图床运行时迁移 (38d013e)
- pg: 通过运行时 Repository 迁移图床设置 (a56ff09)
- pg: 从已验证的 Yjs 修复 HEAD 同步 main (ce93fc1)
- pg: 使 Yjs 修复兼容不同缩进 (295df2c)
- pg: 将已验证的 Yjs 修复应用到迁移分支 (7686e2a)
- pg: 修复 Yjs 无操作版本计数 (cf8e02e)
- pg: 添加笔记拆分撤销诊断信息 (ae5046e)
- blocks: 校验前端补丁契约 (6274d03)
- pg: 使用 Yjs 修复重新运行已同步 main 校验 (bb1b3dc)
- blocks: 校验批量补丁引擎与路由 (f21084c)
- pg: 同步期间修补 Yjs 版本语义 (847bca2)
- pg: 校验前推送 Yjs 修复 (112d6bf)
- pg: 同步 main 前校验 Yjs 修复 (86cda5b)
- editor: 覆盖 Tiptap 派生运行时保护测试 (0853664)
- pg: 通过同步 PR 评论触发 Yjs 修复 (16e198f)
- pg: 触发 Yjs 版本修复 (dd741ad)
- pg: 添加一次性 Yjs 版本修复运行器 (73b001a)
- pg: 触发已同步 main 校验 (023cc1a)
- pg: 添加用于同步的确定性推送触发器 (cf12b08)
- pg: 使 main 同步具备确定性 (d09ab16)
- editor: 运行时测试别名变更时触发流程 (3d25d41)
- editor: 覆盖数学节点与搜索运行时外壳测试 (4dc2f45)
- 修复剩余的 main 同步回归问题 (ee6de23)
- block-links: 覆盖拆分重定向解析测试 (5ac89be)
- 保留已协调的 PG 文件并上传 SQLite 诊断信息 (a7fabd5)
- 使用详细诊断信息重新运行失败的 SQLite 文件 (443d873)
- note-split: 加入空 Tiptap 章节回归测试 (baa84b3)
- PG 同步期间发布 SQLite 回归诊断信息 (3cae1d2)
- note-split: 覆盖 Tiptap 拆分工作流测试 (1bb24b1)
- 同步期间发布 PostgreSQL Schema 一致性诊断信息 (4944f8e)
- PG 同步期间发布 SQLite 边界诊断信息 (87547f2)
- main 同步期间保留已协调的 PostgreSQL 文件 (fcd0543)
- 将 PostgreSQL 同步状态发布到固定评论 (d4436cc)
- PostgreSQL 分支同步期间校验 Token 资源 (cbc7995)
- 加入已合并 Token 路由源码诊断信息 (5bcdfbb)
- note-split: 加入标题规范化测试 (337ff12)
- 发布 PostgreSQL 同步类型检查诊断信息 (4acf57f)
- 添加一次性 main 到 PostgreSQL 分支同步工作流 (0dee261)
- note-split: 覆盖选定章节工作流测试 (6ecdca7)
- note-split: 添加前后端回归工作流 (cea8ecf)
- markdown: 覆盖增量 Y.Text 同步测试 (4442bfb)
- markdown: 覆盖视口 Worker 分析测试 (d28b4d0)
- editor: 覆盖延迟媒体运行时外壳测试 (6ace8a5)
- editor: 覆盖视口高亮与运行模式提示测试 (31eabf1)
- editor: 加入代码高亮运行时回归测试 (6d249fb)
- editor: 添加渐进式运行时回归检查 (05f57a3)
🔧 其他
- 忽略 frontend/dist.bak 构建备份 (e36b8dc)
- issue-455: 移除一次性嵌套 Block 工作流 (74ee0ec)
- issue-455: 移除一次性 Hook 作用域工作流 (54a6b16)
- issue-455: 移除一次性测试夹具工作流 (7ba0e8b)
- issue-455: 移除一次性 Hook 顺序工作流 (f379594)
- issue-455: 移除一次性格式刷工作流 (05db9d6)
- issue-455: 添加一次性格式刷集成工作流 (b465f0b)
- issue-455: 添加受控格式刷集成 (cadc116)
- android: 移除一次性沉浸式焦点工作流 (9a9640a)
- android: 添加一次性沉浸式工具栏焦点集成 (b276f81)
- android: 添加最终沉浸式工具栏焦点修复 (4afdfb8)
- android: 移除一次性 Markdown 切换工作流 (d5c22e0)
- android: 添加一次性 Markdown 沉浸式集成 (5fdbffa)
- android: 添加一次性 Markdown 沉浸式补丁 (9fc2dcc)
- editor: 移除一次性沉浸式切换工作流 (cbd0974)
- editor: 使用唯一的沉浸式编辑器补丁锚点 (be543e4)
- editor: 捕获沉浸式补丁诊断信息 (41da241)
- editor: 添加一次性 Android 沉浸式编辑器集成 (cfc5515)
- editor: 添加一次性 Android 沉浸式编辑器补丁 (736b964)
- issue-468: 移除一次性重复声明工作流 (e578ac3)
- issue-468: 添加一次性重复声明修复 (a427634)
- issue-468: 移除一次性面板语法工作流 (72a5a2a)
- issue-468: 添加一次性面板语法修复 (1a9e6bc)
- issue-468: 移除一次性右键菜单补丁工作流 (d442a4e)
- issue-468: 添加受控右键菜单集成补丁 (882e983)
- shortcuts: 移除一次性自定义工作流 [skip ci] (93486dd)
- shortcuts: 从 Pull Request 运行一次性补丁 (9df5a13)
- shortcuts: 运行一次性自定义补丁 (a3640c0)
- shortcuts: 添加一次性补丁脚本 (7e7ba35)
- shortcuts: 触发集成补丁 (b84a2d6)
- shortcuts: 添加一次性自定义补丁 (756daa7)
- issue-370: 移除临时 Yjs 自动修复工作流 (0e62ddd)
- issue-370: 移除临时 Yjs 补丁工作流 (18a614c)
- issue-370: 添加临时 Yjs flush 自动修复工作流 (efe131d)
- knowledge-tree: 移除恢复诊断信息 (e369ccc)
- shares: 移除最终 main 同步工作流 (8b6c4f7)
- shares: 移除临时 main 同步工作流 (3662257)
- perf: 移除临时 issue 210 加固脚本 (d72b969)
- shares: 移除临时初始化工作流 (5da94f4)
- ci: 移除临时 issue 210 加固工作流 (8e4f66e)
- shares: 移除临时类型修复脚本 (de3f8a2)
- shares: 移除临时集成脚本 (6bbc49f)
- perf: 添加临时 issue 210 加固补丁 (d055f96)
- ci: 移除临时 issue 210 验证工作流 (cc32b32)
- perf: 添加 issue 210 验收命令 (9d11b4a)
- 移除 issue 365 初始化工作流 (e643850)
- 移除 issue 365 初始化脚本 (8b6dd61)
- 添加 issue 365 分支补丁初始化流程 (34b92a7)
- issue-355: 移除临时 main 同步工作流 (6247e08)
- issue-355: 移除临时门禁修复工作流 (6231c90)
- issue-355: 移除临时门禁修复脚本 (4327dd5)
- issue-355: 添加 Block Patch 门禁修复脚本 (c49c31b)
- issue-355: 移除临时边界脚本 (4cfbc78)
- issue-355: 移除临时边界工作流 (e9fe614)
- issue-355: 添加边界验证脚本 (3f968ee)
- issue-355: 移除临时重做脚本 (a27d704)
- issue-355: 移除临时重做工作流 (1e50013)
- issue-355: 添加已验证的重做脚本 (1cd94f3)
- 移除误添加的文件 (3dc9740)
- 移除误添加的占位内容 (573c1ae)
- 占位内容 (7634ac7)
- import: 将权限中心与最新 main 同步 (4397551)
- 移除未使用的搜索热修复工作流 (a0133bd)
- 在 main 上应用搜索输入热修复 (56a8f4b)
⏪ 回滚
- 移除误添加的占位文件 (fcbe300)
📌 杂项
发布版本 v1.4.2
目标平台:android、clipper、docker、fpk、linux-app、lite、pc
Docker 镜像:cropflre/nowen-note:v1.4.2
Docker 镜像:cropflre/nowen-note:latest
提交:0bbb7cb4 fix(android):改进分享导入的 multipart 处理和安全区域布局