Siyuan v3.6.5 版本解析:data-task 索引优化、Editor 细节改进与 Protyle 开发者 API 演进
【免费下载链接】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.6.5 的官方变更记录(v3.6.5.md)展开,逐条解析该版本 14 项功能增强、11 项缺陷修复与 1 项运行时重构背后的技术含义,并结合当前仓库源码说明data-task任务标记、--b3-font-family-kbd字体变量、openTab与switchMode开发者 API 的实际实现位置,帮助读者理解这个“细节改进型”版本如何同时覆盖移动端体验、编辑器内核、数据索引与插件生态。
版本概述:一个以“细节打磨”为主线的版本
v3.6.5 的官方概述只有一句话:“This version improves some details.”(此版本改进了一些细节)。从 变更记录 的完整条目来看,这个版本的改动分布有明确的层次:
| 类别 | 数量 | 关注点 |
|---|---|---|
| Enhancement(功能增强) | 14 | 数据历史语义、移动端外观与工具栏、任务列表索引、快捷键、代码块行号性能、数据索引、输入法兼容、剪藏扩展 |
| Bugfix(缺陷修复) | 11 | iOS 滚动跳转、IFrame 块、属性视图资源字段、大纲刷新、Cookie 超长认证、安全漏洞等 |
| Refactor(重构) | 1 | 升级 Electron 至 v40.9.1 |
| Development(开发者 API) | 3 | 独立窗口卸载插件修复、openTab增加doc.mode参数、Protyle 实例新增switchMode方法 |
这类版本的价值在于:它把编辑器内核(data-task 索引、代码块行号渲染)、平台层(Electron 升级、移动端 WebView 行为)与插件 API 三条线的历史遗留问题集中收口。下面按主题逐组展开。
功能增强:逐条解析
数据历史:标签、书签与资源重命名记为 Replace 操作
将标签、书签和资源的重命名视为数据历史中的
Replace操作(issue #17407)
SiYuan 的数据历史(data history)用于记录工作区中各类实体的变更轨迹。此前重命名一个标签、书签或资源(asset)可能产生“删除旧名 + 新增新名”两条记录,使历史噪音大且难以追溯。该版本将这类重命名统一语义化为单条Replace操作,历史回放与对比时能直接看出“旧名 → 新名”的对应关系,而不是两条孤立条目。对依赖数据历史做审计或回溯的用户来说,这是一次操作语义的修正。
任务列表项的data-task标记改进 Markdown 索引
改进任务列表项中
data-task标记的 Markdown 索引(issue #17502)
这一条是 v3.6.5 中最有源码纵深的一项。SiYuan 的任务列表在 DOM 上通过data-task属性表达勾选状态,取值是" "(未勾选)或"X"(已勾选),并配合data-marker、data-subtype="t"等属性。在当前仓库中可以直接看到这套约定:
- wysiwyg/list.ts 中通过
taskItemElement.getAttribute("data-task")读取状态,点击切换时在" "与"X"之间写入;新任务项的模板为<div>// app/src/protyle/index.ts(第 597-599 行) public switchMode(mode: TEditorMode) { setEditMode(this.protyle, mode); }即
switchMode(mode)将目标编辑模式(编辑模式/预览模式等,类型TEditorMode)委托给内核的setEditMode统一处理。插件开发者可以在运行时以编程方式切换某个 Protyle 实例的模式,而不必操纵 DOM 或依赖 UI 入口,配合上面openTab的doc.mode,构成“打开即指定模式、打开后可切换模式”的完整控制链路。独立窗口中卸载插件报错
独立窗口(standalone windows)中
uninstall插件报错(issue #17509)修复了插件独立窗口在卸载流程中的异常,属于插件生命周期管理在“独立窗口”这一特殊载体下的健壮性补洞。
如何在仓库中继续深入验证
阅读完本版本记录后,可以在当前仓库中沿以下路径核对实现细节(均以仓库根目录为起点):
- 任务项
data-task状态机:app/src/protyle/wysiwyg/list.ts、app/src/protyle/wysiwyg/turnIntoList.ts、app/src/protyle/util/editorCommonEvent.ts; switchMode开发者 API:app/src/protyle/index.ts;--b3-font-family-kbd主题变量定义:app/appearance/themes/daylight/theme.css、app/appearance/themes/midnight/theme.css;- 桌面端运行时依赖:app/package.json;
- 本版本原始变更记录(英文/简中/繁中):v3.6.5.md、v3.6.5_zh_CN.md、v3.6.5_zh_CHT.md。
小结与升级建议
v3.6.5 没有引入大型新功能,但它把“任务列表状态在索引链路中的正确性(data-task)”“移动端编辑体验(滚动、工具栏、行内样式)”“编辑器内核稳定性(表格撤销、IFrame 块、大纲刷新)”“桌面运行时(Electron v40.9.1)”与“插件 API(
doc.mode、switchMode)”五件事一次做完。对使用者,最直接的收益是 iOS 端不再跳顶、标签/书签/资源重命名在数据历史中语义清晰、安全漏洞得到修复;对插件开发者,openTab的doc.mode参数与 ProtyleswitchMode方法让“模式控制”第一次成为可编程的一等能力。如果你仍在 v3.6.4 或更早版本,升级到 v3.6.5 及后续版本是低风险且收益明确的(其中包含安全修复,建议尽快跟进)。【免费下载链接】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),仅供参考