news 2026/9/11 2:35:08

思源笔记 v3.1.15 版本解读:鸿蒙支持落地与编辑器、数据库、搜索体验全面进化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
思源笔记 v3.1.15 版本解读:鸿蒙支持落地与编辑器、数据库、搜索体验全面进化

思源笔记 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 位数字的年份(如12345这类非标准但合法的年份值)。该能力与 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),在手动同步模式下需要更加谨慎地处理本地与远端的分叉,避免静默覆盖。

面向开发者的变更

改进选择块或表格单元格后的按键操作

选择块或表格单元格后,BackspaceDeleteTabShift+Tab的按键行为得到系统性改进,编辑器的选区删除与表格内焦点移动逻辑更加符合直觉。

新增内核 API:/api/filetree/moveDocsByID

这是本版本对开发者最有价值的新增接口,允许通过文档 ID(而非路径)批量移动文档。该接口的实现位于 filetree.go,其核心流程为:

  1. 从请求参数中读取fromIDs(源文档 ID 数组)与toID(目标位置块 ID);
  2. 逐一校验 ID 合法性(util.InvalidIDPattern);
  3. 通过model.LoadTreeByBlockID将每个 ID 解析为文档树路径,并去重;
  4. toID无法解析为树,则回退将其视为笔记本 ID(model.Conf.Box)处理;
  5. 最终复用既有的model.MoveDocs完成实际的树移动与索引更新。

相比旧的/api/filetree/moveDocs(基于fromPaths/toPath/toNotebook路径参数,见 filetree.go),新接口屏蔽了路径概念,调用方只需持有块 ID 即可完成移动,显著降低了插件与自动化脚本的使用门槛。接口已同步登记在 API.zh-CN.md 文档中。

请求示例:

{ "fromIDs": ["20210808180117-6v0mkxr", "20210808180117-czj9bvb"], "toID": "20211226090932-5lcq56f" }

为 Protyle 新增disableenable方法

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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 2:33:41

Auracast蓝牙广播音频开发实战:BT2106C模块与LC3编码详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 2:33:37

数据结构实验三单链表详解:从指针原理到工程实现与避坑指南

说来也巧,每年到这个节点,总能在群里看到同一类问题:“实验3到底要写什么”“链表怎么老崩”“排序排完链表断了”。中国矿业大学的数据结构实验课进行到第三个实验,基本上就到了大家集体和指针搏斗的阶段。前两个实验如果还能靠静…

作者头像 李华
网站建设 2026/9/11 2:33:28

Django项目管理系统开发实战:从模型设计到部署上线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 2:32:50

嵌入式开发板完整启动流程:从环境搭建到烧录验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 2:32:45

自建MySQL还是RDS?从成本、运维到迁移的数据库选型全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 2:30:39

Go语言不可变类型:从8年尘封提案到工程实践替代方案

1. 从“数据竞争”这块硬骨头说起我知道很多人第一次看到“Go要引入不可变类型”这个标题时,第一反应都是:真的假的?那玩意在Go里吵了那么多年,居然还有下文?先别急着怀疑。咱们从实际工程场景往回推。我在项目里维护过…

作者头像 李华