Siyuan v3.6.5 版本解析:data-task 索引优化、Editor 细节改进与 Protyle 开发者 API 演进
2026/9/10 5:02:07 网站建设 项目流程

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字体变量、openTabswitchMode开发者 API 的实际实现位置,帮助读者理解这个“细节改进型”版本如何同时覆盖移动端体验、编辑器内核、数据索引与插件生态。

版本概述:一个以“细节打磨”为主线的版本

v3.6.5 的官方概述只有一句话:“This version improves some details.”(此版本改进了一些细节)。从 变更记录 的完整条目来看,这个版本的改动分布有明确的层次:

类别数量关注点
Enhancement(功能增强)14数据历史语义、移动端外观与工具栏、任务列表索引、快捷键、代码块行号性能、数据索引、输入法兼容、剪藏扩展
Bugfix(缺陷修复)11iOS 滚动跳转、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-markerdata-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 入口,配合上面openTabdoc.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.modeswitchMode)”五件事一次做完。对使用者,最直接的收益是 iOS 端不再跳顶、标签/书签/资源重命名在数据历史中语义清晰、安全漏洞得到修复;对插件开发者,openTabdoc.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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询