SiYuan v2.10.13 版本解析:文件树与块拖拽交互优化、同步稳定性改进与开发者新特性
【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan
本文基于 SiYuan 官方变更日志梳理 v2.10.13 版本的完整内容:本版本聚焦文件树与编辑器块的拖拽交互体验改进,同时提升了数据同步在部分文件系统上的稳定性,并带来一系列编辑、导出、移动端与插件生态的增强。读完后你将掌握该版本全部改进/修复/重构/开发者清单的语义含义,并能从仓库源码中印证 PDF 资源检索上限、插件事件switch-protyle、市集包keywords字段与插件常量app.appId的实际实现位置。
适用说明:以下内容以仓库中 v2.10.13 变更日志(繁中版) 为主体,配套源码佐证来自当前仓库快照,适用于 SiYuan v2.10.13 及之后的版本行为分析。
版本概述:拖拽交互与同步稳定性双主线
官方对本版本的定性是两点:
- 改进文件树和编辑器块拖拽的互动体验——对应条目包括「改进块拖曳互动体验」「改进文件树文件拖曳互动体验」;
- 改进资料同步稳定性——对应「改善在某些档案系统上资料同步的稳定性」。
此外,原变更日志还附有一则商业化说明:功能特性(PRO Features)当时处于早鸟价阶段,且年付订阅已包含功能特性,订阅会员无需单独购买。属于发布时的营销信息,此处仅做记录,与功能实现无关。
改进功能(Enhancement)完整清单
以下逐条继承变更日志中的 25 项改进,并按主题归类,便于按需检索:
交互与导航类
- 支援更多切换页籤快捷鍵;
- 改進塊拖曳互動體驗;
- 改進文件樹文件拖曳互動體驗;
- 改進行動端取消釘住外掛程式;
- 縮小大綱面板標題圖示;
- 改進引用搜尋框位置;
- 滑鼠位於浮窗時不再顯示浮動停靠列;
- 在行動端搜尋介面建立文件時,將文件儲存於目前開啟的文件所屬筆記本下;
- 在 Android 平板上支援「在瀏覽器上使用」;
- 改進行動端建立新文件;
- 唯讀模式下支援顯示圖片選單。
编辑器能力类
- 關閉所有頁籤後更新應用程式標題;
- 在聚焦狀態下支援「跳到父級的下一個塊」;
- 改進塊屬性為空時自動刪除屬性;
- 公式和圖表編輯框非正常關閉時也會儲存資料;
- 插入文件題頭圖支援在資源文件中搜尋;
- 支援更新 AI 操作;
- 支援在 HTML 塊中進行搜尋替換。
导出与检索类
- 改進匯出 PDF 時程式碼塊行號顯示;
- 大於 128MB 的 PDF 檔案不再納入資源檔案搜尋;
- 匯出 Markdown 時非表格內的
<br />節點替換為\n節點; - 改進匯出 Markdown 時加粗、斜體等元素的處理;
- PDF 搜尋關鍵字時移除輸入框背景色。
平台与同步类
- 改善在某些檔案系統上資料同步的穩定性;
- Windows 桌面端不再能夠開啟位址為空的超連結(避免误点开文件管理器)。
源码印证:128MB PDF 检索上限
「大於 128MB 的 PDF 檔案不再納入資源檔案搜尋」这条改进在 Go 内核中有精确落点。kernel/model/asset_content.go 定义了常量PDFAssetContentMaxSize = 1024 * 1024 * 128,即 128 MiB;同文件第 875 行附近的注释直接引用了对应的 issue 号(#9500),说明资源内容索引进程在构建 PDF 文本时会先校验文件大小,超限文件不再进入全文索引。可以推断该限制用于控制内存与索引耗时,避免超大 PDF 拖慢资源检索。
修复缺陷(Bugfix)
本版本修复 4 个缺陷:
- 使用包含資料庫的範本建立日記時,編輯器解析異常;
- 將標題塊轉換為文件時,標題下塊不顯示;
- 複製貼上後轉義文字不正確;
- 搜尋預覽區無法調整圖片大小。
其中「模板含数据库导致日记解析异常」与「折叠标题转文件后块不显示」两个修复,都落在「块 → 文件」这一 SiYuan 核心数据模型的操作路径上,属于结构性缺陷修复,值得在升级前重点回归验证。
重构:升级 Electron
开发重构仅一项:升级 Electron。Electron 是桌面端运行时底座,升级通常带来渲染进程安全补丁与内核能力更新;从变更日志本身无法确认具体版本差异,需以 app/electron/main.js 所在目录与 app/package.json 中的依赖声明为准。
开发者特性(Development)详解
本版本对插件/开发者生态的投入最为密集,共 12 项。以下逐条展开,并对 4 个有源码实证的关键特性做深入说明。
1. 新增插件事件switch-protyle
该事件用于在编辑器实例切换时通知插件(例如多文档切换、移动端前进/后退恢复页面)。从源码结构看,前端统一通过事件总线发出switch-protyle事件并携带当前protyle实例,触发点包括:
- app/src/editor/util.ts:桌面端切换编辑器实例时
item.eventBus.emit("switch-protyle", {protyle: options.protyle}); - app/src/mobile/editor.ts:移动端编辑器初始化/恢复路径同样发出该事件;
- app/src/mobile/util/MobileBackFoward.ts:移动端前进/后退导航恢复页面后发出;
- app/src/types/index.d.ts:事件名被列入类型声明联合类型(
"switch-protyle" | "switch-protyle-mode" | ...),保证 TS 侧类型安全。
另有伴生事件switch-protyle-mode(见 app/src/protyle/util/setEditMode.ts)在编辑模式切换时发出,插件可同时监听二者以感知「切文档」与「切模式」。
2. 市集包新增keywords字段
市集(Bazaar)包描述 JSON 新增keywords字段,用于增强插件/模板/主题的检索命中。内核实现位于 kernel/bazaar/package.go:Package结构体含Keywords []string \json:"keywords"`字段,加载时会对其做 HTML 反转义处理(第 155-156 行);检索链路getSearchKeywords→packageContainsKeywords(第 220-277 行附近)会按空格拆分查询词,并让包名与 keywords 共同参与匹配。对市集作者而言,这意味着在包package.json中补充keywords` 数组可显著提升被搜索到的概率。
3. 新增插件常量app.appId
插件 API 的app对象新增appId常量,插件可据此判断宿主为 SiYuan 并参与跨应用识别。前端实现证据:
- app/src/index.ts:应用主对象声明
public appId: string并在构造时赋值为Constants.SIYUAN_APPID; - app/src/plugin/kernel.ts:插件内核在构造插件实例 URL 时通过
URLSearchParams({ name: this.#name, appId: this.#appId })透传该标识,移动端窗口对象(app/src/mobile/index.ts)与独立窗口对象(app/src/window/index.ts)同样暴露appId,保证桌面/移动两条链路行为一致。
4. 导出Constants给插件
变更日志「匯出Constants給外掛程式」表明常量模块(app/src/constants.ts)对插件暴露面扩大,插件可直接引用 SiYuan 定义的内联块类型等常量。从 app/src/plugin/index.ts 可见工具栏项校验逻辑Constants.INLINE_TYPE.concat("|").includes(toolbarItem.name)即依赖该常量集,插件侧复用后可避免硬编码类型名。
其余开发者条目
- 資料庫日期類型支援指定具體時間(日期字段可携带时间分量);
- 支援修改資料庫列類型(属性视图列类型可在创建后变更);
- 資料庫啟用排序後新增行時覆蓋異常(修复);
- 行動端編輯資料庫儲存格時自動捲動(自动滚动到视口顶部);
- 改進資料庫表格視圖列寬拖曳;
- 支援拖曳檔案到資料庫資源列(拖文件入资源列即完成附件绑定);
- 跳到 CSS 載入順序(CSS 加载顺序调整,影响主题/插件样式优先级)。
小结与升级建议
v2.10.13 是一个「体验 + 生态」版本:普通用户收益集中在拖拽交互、聚焦导航(跳到父级下一个块)、Markdown/PDF 导出修正与同步稳定性;插件开发者收益集中在switch-protyle事件、app.appId、Constants暴露与市集包keywords字段。若你维护市集包,建议本版本优先补充keywords;若你依赖块切换时序写插件,应在升级后基于switch-protyle事件重新梳理监听点。所有清单条目均可回溯至 app/changelogs/v2.8.4-v2.12.8/v2.10.13/v2.10.13_zh_CHT.md(英文/简中对照见同目录 v2.10.13.md、v2.10.13_zh_CN.md)。
【免费下载链接】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),仅供参考