思源笔记 v3.1.15 版本解读:鸿蒙支持落地与编辑器、数据库、搜索体验全面进化
【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan
导读
思源笔记(SiYuan)v3.1.15 是一个以"新平台 + 细节打磨"为双主线的小版本:一方面正式将鸿蒙系统纳入支持的移动端平台,另一方面围绕编辑器交互、数据库、搜索、导出、剪藏等高频使用场景完成了 20 余项改进与缺陷修复,并为开发者新增了文档批量移动 API 与 Protyle 实例级开关方法。读完本文,你将完整了解该版本的功能变更清单、关键改进背后的源码实现原理,以及可供插件与自动化脚本直接调用的新内核 API 用法。
版本概述
根据 v3.1.15 更新日志,本版本的核心亮点是支持鸿蒙系统(HarmonyOS),使思源笔记的移动端覆盖范围进一步扩展。除平台支持外,该版本还包含若干编辑器、数据库与搜索相关的改进,以及一批针对移动端数据历史、同步冲突等问题的缺陷修复。
改进功能详解
编辑器与窗口交互
- 改进 Alt+M 隐藏/显示视窗:桌面端快捷键
Alt+M用于快速隐藏/显示主窗口,本版本优化了该交互的响应逻辑,适合需要频繁切换窗口进行对照写作或查阅的场景。 - 改进文件标签添加交互:文件标签(Tag)的添加流程得到优化,减少了输入与确认之间的操作摩擦。
- 改进工具提示:界面工具提示(Tooltip)的展示逻辑改进,涉及 breadcrumb/index.ts 等前端模块中的菜单交互代码。
- 改进系统字体载入:优化了系统字体的加载时机与顺序,降低启动阶段字体阻塞渲染的概率。
数据库相关改进
- 改进数据库单元格定位和编辑输入框大小:属性视图(Attribute View)表格中单元格的定位精度与编辑输入框尺寸得到调整,提升长文本编辑体验。
- 支援数据库日期栏位少于 4 位元的年份:日期字段现在可以正确处理少于 4 位数字的年份(如
123、45这类非标准但合法的年份值)。该能力与 attribute_view.go 中基于time包对日期分组(av.GroupMethodDateDay/Week/Month/Year/Relative)的处理逻辑相互配合,日期值的解析与分组不再假设年份必然为 4 位。 - 改进数据库描述的互动:属性视图描述区域的交互行为优化。
- 属性面板 - 数据库支持移除目前块:在属性面板中操作数据库字段时,可以直接移除当前块,简化了从数据库中解除某个块关联的操作路径。
搜索与引用
- 改进导出块引用:块引用导出时的格式与内容组织得到优化。
- 改进搜索高亮:搜索结果中的关键词高亮逻辑改进,尤其针对包含特殊字符(如
%)的查询与文档内容。 - 简化搜索结果中的文件块路径:搜索结果中文件块的路径展示被精简,减少冗余层级,便于快速定位。
- 改进范本搜索:模板(Template)搜索的匹配与结果排序优化。
- 修复点选行级标签后找不到结果:此前在搜索结果中点击行级标签可能无法正确跳转或过滤,本版本修复了该问题。
剪藏与资源播放
- 改进 HTML 剪藏:浏览器剪藏扩展(Web Clipper)对 HTML 内容的清洗与转换逻辑改进,粘贴或剪藏时能更干净地去除冗余样式。
- 浏览器剪藏扩充功能加入了一些实验性功能:剪藏扩展新增若干实验性能力,可在扩展设置中按需启用。
- 支援 flac 音讯资源播放:FLAC 无损音频格式正式纳入资源播放支持。从源码实现看,path.go 中的音频资源类型列表
SiYuanAssetsAudio已包含.flac,同时 serve.go 在 gzip 压缩排除列表中也将.flac排除,避免对已压缩的音频流做无意义的二次压缩;file.go 的 MIME 类型映射同样覆盖.flac。这意味着 FLAC 文件会被正确识别为音频资源,并可通过内置播放器直接播放。
其他改进
- 贴上时移除折叠标题的折叠状态:粘贴内容时,若来源包含折叠标题,粘贴结果会自动展开折叠状态,避免复制"一份折叠中的文档"后粘贴到新位置仍保持折叠、内容不可见的困惑。
- 产生包含
'字符的块引用时导致奇怪的行为:修复了块引用文本中包含单引号'时引用生成异常的问题,该问题与引用 ID 与文本的拼接解析有关。 - 当图像 URL 包含
%时无法双击预览:修复了图片地址中含百分号(URL 编码字符)时双击无法打开预览的问题。 - 在 Linux 上使用鼠标中键关闭标签页会触发贴上:修复了 Linux 桌面端中键点击关闭标签页时误触发粘贴(即中键粘贴行为)的冲突。
- 改进设定外观优先权:设置中"外观"(Appearance)相关配置的优先级判断得到修正,涉及 appearanceRuntime.ts 中主题模式(明亮/暗黑/跟随系统)的切换逻辑。
修复缺陷汇总
本版本共修复 6 项缺陷,覆盖移动端与桌面端:
| 缺陷 | 影响场景 |
|---|---|
| 行动端资料历史中的文件在下滑时关闭 | 移动端数据历史列表滚动时文件意外收起 |
| 点选行级标签后找不到结果 | 搜索场景下行级标签跳转失效 |
| HTML 标签搜寻转义问题 | 搜索 HTML 标签时的转义处理错误 |
| 汇出至 .docx 的有序列表序号不正确 | Word 导出时有序列表编号错乱 |
以.结尾的档案名称被视为缺失资源 | 文件名以点结尾时资源识别误判 |
| 完全手动同步模式导致资料冲突 | 纯手动同步模式下数据一致性受损 |
其中"完全手动同步模式导致资料冲突"值得注意:该修复涉及同步引擎的冲突处理分支(sync.go),在手动同步模式下需要更加谨慎地处理本地与远端的分叉,避免静默覆盖。
面向开发者的变更
改进选择块或表格单元格后的按键操作
选择块或表格单元格后,Backspace、Delete、Tab、Shift+Tab的按键行为得到系统性改进,编辑器的选区删除与表格内焦点移动逻辑更加符合直觉。
新增内核 API:/api/filetree/moveDocsByID
这是本版本对开发者最有价值的新增接口,允许通过文档 ID(而非路径)批量移动文档。该接口的实现位于 filetree.go,其核心流程为:
- 从请求参数中读取
fromIDs(源文档 ID 数组)与toID(目标位置块 ID); - 逐一校验 ID 合法性(
util.InvalidIDPattern); - 通过
model.LoadTreeByBlockID将每个 ID 解析为文档树路径,并去重; - 若
toID无法解析为树,则回退将其视为笔记本 ID(model.Conf.Box)处理; - 最终复用既有的
model.MoveDocs完成实际的树移动与索引更新。
相比旧的/api/filetree/moveDocs(基于fromPaths/toPath/toNotebook路径参数,见 filetree.go),新接口屏蔽了路径概念,调用方只需持有块 ID 即可完成移动,显著降低了插件与自动化脚本的使用门槛。接口已同步登记在 API.zh-CN.md 文档中。
请求示例:
{ "fromIDs": ["20210808180117-6v0mkxr", "20210808180117-czj9bvb"], "toID": "20211226090932-5lcq56f" }为 Protyle 新增disable和enable方法
Protyle(思源笔记的编辑器渲染实例)新增了实例级开关方法,实现位于 app/src/protyle/index.ts:
public disable() { disabledProtyle(this.protyle); } public enable() { enableProtyle(this.protyle); }这两个方法分别调用disabledProtyle/enableProtyle对实例进行整体禁用与恢复,适用于插件在运行时临时接管或锁定编辑器输入的场景。
移除编辑器输入控制台日志
移除了编辑器输入过程中的控制台调试日志,减少开发者模式下的噪声输出,避免影响对真实告警信息的排查。
下载与升级
本版本的发布包可通过思源笔记官网与 GitHub Releases 获取(更新日志原文 中的"下载"一节),涵盖桌面端与移动端各平台。升级前建议先备份工作空间(Workspace),尤其是使用同步功能的用户,应等待同步完成后在多个设备上依次升级,以确保数据一致性。
结语
v3.1.15 是思源笔记在"横向扩平台、纵向深打磨"策略下的一个典型版本:鸿蒙系统的支持让移动端生态更加完整,编辑器与数据库的交互改进直接作用于日常写作效率,而moveDocsByID与 Protyledisable/enable则为插件开发者提供了更简洁、更稳定的扩展接口。如果你正在为思源笔记开发插件,或正在评估其作为知识管理平台的成熟度,这个版本值得关注。
【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考