尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

思源笔记 v3.6.5 更新日志深度解析:细节改进、缺陷修复与插件 API 增强

思源笔记 v3.6.5 更新日志深度解析:细节改进、缺陷修复与插件 API 增强 思源笔记 v3.6.5 更新日志深度解析细节改进、缺陷修复与插件 API 增强【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan本篇技术指南围绕思源笔记SiYuanv3.6.5 版本的官方更新日志展开逐一解读该版本在数据历史、移动端交互、Markdown 索引、编辑体验、输入法兼容性等方面的改进项与缺陷修复并结合当前仓库app/前端与kernel/后端源码揭示每项变更背后的实现原理。读完本文你将清楚了解 v3.6.5 中将标签/书签/资源重命名视为Replace历史操作的数据层机制、任务列表data-task标记的索引约束、openTab新增的doc.mode参数用法以及 Protyle 实例新增的switchMode方法等开发者能力。版本概述v3.6.5 是思源笔记 3.6.x 系列的一次细节打磨型版本官方更新日志v3.6.5_zh_CN.md给出的概述为此版本改进了一些细节。变更记录共分为四类改进功能13 项覆盖数据历史、移动端交互、编辑体验、索引与渲染性能等修复缺陷11 项覆盖 iOS、IFrame、数据库资源字段、大纲、安全漏洞等开发重构1 项升级 Electron 至 v40.9.1开发者3 项涉及插件卸载、openTab新参数与 Protyle 新方法。改进功能详解1. 标签、书签和资源的重命名统一记入数据历史Replace操作此前标签、书签和资源的重命名在数据历史中的记录方式与普通文档变更不一致。v3.6.5 将这三类重命名统一视为Replace替换操作写入数据历史使历史回溯行为更可预期。从源码看数据历史的操作类型常量定义于 kernel/model/history.goconst ( HistoryOpClean clean HistoryOpUpdate update HistoryOpDelete delete HistoryOpFormat format HistoryOpSync sync HistoryOpReplace replace HistoryOpOutline outline )HistoryOpReplace在 v3.6.5 中正是被用于标签、书签和资源这三类重命名场景仓库中的调用点可以印证这一设计标签重命名/删除kernel/model/tag.go 与 kernel/model/tag.go 在生成历史时调用getHistoryDir(HistoryOpReplace)书签操作kernel/model/bookmark.go 与 kernel/model/bookmark.go资源操作kernel/model/assets.go搜索相关数据kernel/model/search.go。以标签为例kernel/model/tag.go 中RemoveTag的执行流程是先通过sql.QueryTagSpansByLabel(label)查询所有包含该标签的块再按RootID分组随后为每个受影响的树调用generateTreeHistory(tree, historyDir)生成replace类型的历史快照最后才批量修改节点并重建索引。也就是说任何重命名操作发生前都会先在data/history/replace目录留下完整的树快照保证用户可以随时回滚。2. 任务列表项data-task标记的 Markdown 索引改进思源笔记的任务列表项通过data-task属性标记当前状态如[x]已完成、[ ]未完成以及自定义状态。v3.6.5 改进了该标记在 Markdown 索引中的解析行为使自定义任务状态的索引更准确。后端对data-task有明确的保护性约束见 kernel/model/blockial.goif lowerName data-task { err errors.New(setting or removing [data-task] attribute is not allowed via this interface. Please use /api/block/updateTaskListItemMarker or /api/block/batchUpdateTaskListItemMarker to update the task list item marker) }即data-task属性不允许通过通用的属性设置接口IAL 更新直接修改必须走专用的任务标记 API。这两个专用 API 实现于 kernel/api/block_op.go其核心校验逻辑在 kernel/api/block_op.go标记长度必须为 1 个字符task list item marker length should be 1不允许使用[或]避免与 Markdown 任务语法冲突通过 Lute 解析器定位ast.NodeTaskListItemMarker节点后写入新标记并同步更新TaskListItemChecked状态。v3.6.5 对data-task的 Markdown 索引改进正是为了确保这些自定义状态在搜索、反链、数据索引等场景下能保持一致性与正确性。3. 移动端交互与外观改进本版本对移动端进行了三项针对性优化改进行级文本的外观设置移动端对行级文本如加粗、斜体、行内代码等的样式设置入口与展示效果得到优化点击编辑器外部时工具栏不再隐藏此前移动端点击编辑器外部区域会误收起工具栏v3.6.5 修复了该交互逻辑使工具栏的显隐行为更符合用户预期改进标签切换移动端在编辑器与文档之间切换标签页时更加顺畅。4. 编辑体验改进粘贴超链接时对锚文本的解码当复制的链接包含 URL 编码的锚文本时粘贴后会正确解码避免出现乱码或错误文本改进kbd字体--b3-font-family-kbd对键盘按键样式kbd元素的字体系列变量进行了调整。该 CSS 变量在前端样式系统中被广泛引用例如 app/src/assets/scss/business/_config.scss、app/src/assets/scss/business/_search.scss、app/src/assets/scss/component/_menu.scss、app/src/assets/scss/component/_typography.scss 与 app/src/assets/scss/util/_function.scss 均通过font: 75% var(--b3-font-family-kbd)之类的声明引用该变量。用户可在外观主题中自定义--b3-font-family-kbd以覆盖默认的等宽字体将 macOS 上默认的重做快捷键改为⇧⌘Z这是 macOS 平台的系统惯例CmdShiftZ此前与思源默认的重做快捷键存在差异本版本统一对齐改进表格中撤销后的光标定位在表格中执行撤销操作后光标能够恢复到正确的单元格位置优化代码块行号渲染以提升性能代码块行号在长文档中的渲染开销被优化滚动与编辑时的卡顿感降低。5. 数据索引与兼容性改进改进数据索引对数据仓库data repo的索引流程进行了修正提升索引一致性改进输入法兼容性优化了中文等输入法组合输入过程中的光标与文本状态同步问题改进剪藏扩展解决图片过大无法剪藏浏览器剪藏扩展在遇到超大图片时不再因体积限制而失败。修复缺陷详解v3.6.5 共修复 11 个缺陷覆盖平台兼容、编辑器核心与安全三类平台与安全iOS 上点击编辑器可能导致页面跳到顶部修复了 iOS 端点击编辑区时因焦点处理导致的滚动位置丢失问题启动时缺少window.siyuan.config会导致报错修复了某些环境下前端启动时序问题——window.siyuan.config尚未注入时即被访问所引发的异常由于 Cookie 过长导致授权页验证失败修复了云端/认证场景中 Cookie 超过浏览器上限导致授权流程失败的缺陷修复一些安全漏洞本版本包含安全修补建议用户尽快升级。编辑器与界面IFrame 块无法编辑修复了嵌入网页IFrame块在编辑状态下无法操作的问题将链接粘贴到数据库资源字段时会创建重复条目修复了向数据库属性视图资源字段粘贴链接导致重复记录的缺陷大纲不会自动刷新修复了文档内容变化后大纲面板不同步更新的问题拆分标签页后出现空白区域修复了布局中拆分标签页产生的空白残留斜杠菜单中的引用选项无法搜索修复了斜杠菜单内引用条目在关键字过滤时无法命中的问题修复预览模式下大纲的问题修复了阅读预览模式下大纲面板的显示与定位异常。开发重构Electron 升级至 v40.9.1v3.6.5 将桌面端底层框架 Electron 升级到 v40.9.1跟随上游修复了渲染进程与系统集成层面的若干问题。Electron 版本在 app/package.json 中声明当前仓库主分支的electron依赖版本已进一步演进桌面端打包配置见仓库根目录下的 electron-builder.yml 及各平台变体如 electron-builder-darwin.yml、electron-builder-linux.yml。开发者相关变更独立窗口中卸载插件报错修复此前在独立窗口中执行插件卸载会因窗口上下文不一致而报错v3.6.5 修复了该问题确保插件管理器在独立窗口场景下可以正常卸载插件。为openTab添加文档打开模式参数doc.mode插件 APIopenTab的文档打开选项新增了mode参数允许开发者控制新打开的文档以所见即所得还是预览模式呈现。TEditorMode类型的定义位于 app/src/types/protyle.d.tstype TEditorMode preview | wysiwyg在 app/src/plugin/API.ts 中doc.mode被透传给底层打开文档的函数return openFileById({ app: options.app, keepCursor: options.keepCursor, removeCurrentTab: options.removeCurrentTab, position: options.position, afterOpen: options.afterOpen, id: options.doc.id, action: options.doc.action, zoomIn: options.doc.zoomIn, scrollPosition: start, mode: options.doc.mode, });而 app/src/editor/util.ts 中openFileById的签名明确声明了可选参数mode?: TEditorMode并在内部通过openFile将其传递给编辑器模型初始化。开发者可通过如下方式让文档以预览模式打开siyuan.openTab({ app: this.app, doc: { id: 20210808180117-6v0mkxr, mode: preview, // 或 wysiwyg }, });为 Protyle 实例添加switchMode方法Protyle思源内核编辑器实例新增了switchMode(mode)方法用于在preview预览与wysiwyg所见即所得两种编辑模式间切换。实现位于 app/src/protyle/index.tspublic switchMode(mode: TEditorMode) { setEditMode(this.protyle, mode); }底层逻辑在 app/src/protyle/util/setEditMode.ts 中实现切换到preview时会隐藏编辑内容元素与滚动条、渲染预览内容并更新大纲切换到wysiwyg时会隐藏预览层、恢复编辑层并触发resize重排。该方法同样被面包屑breadcrumb组件用于切换编辑/预览状态见 app/src/protyle/breadcrumb/index.ts。如何获取 v3.6.5该版本作为思源笔记 3.6.x 系列更新发布用户可通过思源官网下载页或 GitHub Releases 获取对应平台的安装包。桌面端支持 Windows、macOS 与 Linux各平台构建配置可参考仓库中的 electron-builder.yml 及其平台变体。v3.6.5 的完整变更记录可在仓库 app/changelogs/v3.6.x/v3.6.5/ 目录下查看该目录同时提供英文v3.6.5.md、简体中文v3.6.5.zh-CN.md与繁体中文v3.6.5.zh-TW.md三个版本。小结v3.6.5 虽然定位为细节改进版本但其变更横跨数据历史模型Replace操作类型、任务标记约束data-taskAPI 收紧、编辑器交互与渲染性能、Electron 底座升级以及插件 API 扩展doc.mode与switchMode等多个层面。对于插件开发者而言openTab的doc.mode与 Protyle 的switchMode提供了更精细的文档打开与模式控制能力对于普通用户输入法兼容性、粘贴解码、iOS 滚动、大纲刷新等修复则直接提升了日常编辑体验。【免费下载链接】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),仅供参考
返回列表