SiYuan v3.0.6 版本全解析大纲面板拖拽调整标题层级、数据库视图增强与移动端交互改进【免费下载链接】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.0.6 版本的官方变更日志 v3.0.6.md 撰写系统梳理该版本在编辑体验、数据库属性视图、移动端、内核稳定性等方面的全部增强与缺陷修复并结合仓库源码前端 Outline.ts、内核 outline.go、block_op.go 等说明关键功能的实现原理。读完本文你将完整掌握 v3.0.6 的迭代内容并能理解大纲拖拽、数据库多字段排序、数据历史查询等功能的底层调用链。版本概述v3.0.6 是本系列的一个功能型迭代版本核心亮点是大纲面板支持通过拖拽直接调整大纲条目的级别Heading 层级与位置。围绕这一核心能力该版本同时覆盖了移动端图片交互、数据库表视图主键粘贴引用块、代码片段搜索、数据历史全笔记本查询、数据库汇总数值计算、布局编辑等多个维度的增强并修复了一批编辑器解析、XSS、导出等缺陷。从版本节奏看v3.0.6 属于 v3.0.x 系列的中期稳定版本大量改进围绕「数据库属性视图」与「编辑器交互」两大主线展开。大纲面板拖拽调整标题层级与位置功能入口与交互本次版本最引人注目的特性是在大纲面板中可以直接按住鼠标左键拖拽大纲条目将其移动为另一个标题的子级提升或降低层级或调整其在同级标题中的先后位置。配合已有的点击跳转、右键菜单升降级等功能大纲面板从「只读导航」升级为「可直接编辑文档结构的工具」。该功能对应的 Issue 为 siyuan-note/siyuan#7957是 v3.0.6 的 Overview 主推能力。前端实现拖拽判定与幽灵节点拖拽逻辑实现在前端 Outline.ts 的bindSort()方法中。其工作流程如下按下判定在面板的mousedown事件中通过hasClosestByClassName(event.target, b3-list-item)找到被按住的LI条目若面板处于data-loadingtrue正在提交移动事务则忽略本次按下。拖拽阈值移动距离小于 3px 视为点击而非拖拽避免误触。幽灵节点一旦判定为拖拽原条目透明度降为0.38并克隆出一个iddragGhost的固定定位幽灵节点跟随鼠标移动同时调用dragOverScroll在面板边缘自动滚动。落点指示根据鼠标与目标条目的相对位置给目标条目添加dragover__top插入到目标之前、dragover__bottom插入到目标之后、dragover成为目标的子级三类样式实时预览拖放结果。数据提交moveOutlineHeading 事务松手时前端计算出目标parentID父标题与previousID同级前一个标题构造事务并调用transaction(editor, doOperations, undoOperations)提交操作类型为moveOutlineHeading见 Outline.ts 中的bindSort()收尾逻辑。后端在 block_op.go 的moveOutlineHeading处理器中接收id、parentID、previousID三个参数均经过util.InvalidIDPattern校验包装为DoOperations事务后调用model.PerformTransactions与model.FlushTxQueue落库路由注册于 router.go 的POST /api/block/moveOutlineHeading需管理员角色且非只读模式。内核原理层级联动调整事务的真正执行逻辑在 outline.go 中其关键设计是标题与其子内容的联动调整移动到新父级下降级将被拖拽标题的HeadingLevel设置为min(6, parentHeading.HeadingLevel 1)不超过 H6并计算新旧级别差diffLevel将其所有子标题的级别同步减去该差值保证整个子树相对结构不变子级最小不低于 H1超限则截断。移动到同级位置平级调整如果目标位置存在前一个同级标题则将当前标题级别对齐到该标题的HeadingLevel同样联动调整子树。安全校验事务执行前会拒绝headingID parentID || headingID previousID的非法移动并校验目标节点必须是标题块treenode.GetNodeInTree查找、非文档根节点——从源码结构看这类防呆校验是为了避免将标题拖入自身或造成循环嵌套。配套提交moveOutlineHeading撤销信息undoPreviousID、undoParentID拖拽后可通过编辑器撤销CtrlZ完整回退且拖拽完成后会将文档内所有标题的contenteditable暂时置为false防止拖拽事务与编辑状态冲突对应 Issue #10828 的修复。数据库属性视图系列增强v3.0.6 对数据库表视图与属性面板做了多项交互与计算能力增强是本次版本改动最密集的领域主键支持粘贴引用块#10690数据库表视图的主键列允许直接粘贴块引用Block Ref将引用块作为主键值。URL 字段显示改进#10712优化数据库表视图中 URL 类型字段的展示形式。窗口失焦时行操作难以选中的问题#10731修复当 SiYuan 窗口未聚焦时数据库行左侧选项区域难以点击选中的问题。多选交互改进#10738优化表视图多行选择时的交互体验。多字段排序时空值处理改进#10758当排序涉及多个字段且部分字段为空值时排序结果更符合预期。行菜单一键新增行#10763数据库表视图的行右键菜单中新增「添加行」入口减少操作路径。汇总支持数值计算#10796、#10810、#10822数据库的汇总Rollup字段支持对数值进行求和等计算同时数据库模板字段在使用汇总计算时也支持数值运算。这三个 Issue 连续迭代说明该能力在版本内经历了多轮打磨。复制文本优化#10817 关联修复数据库块复制文本时出现多余*字符的问题。移动端与窗口交互改进移动端是本版本另一条增强主线移动端图片点击交互改进#10646优化移动端点击图片后的展示与操作方式。Android 支持通过其他应用打开图片#10736在 Android 端可调用系统其他应用打开图片。翻页连接处留白#10702文档上下翻页时保留两行空白间距便于视觉衔接避免首尾内容紧贴。移动端switch-protyle插件事件总线#10766开发向增强移动端补齐了switch-protyle事件使插件可在移动端监听/触发 protyle 切换。窗口管理方面Hide/Show Window支持配置AltFn组合键#10754快捷键可自定义为含 Fn 的键位组合。Hide/Show Window仅作用于工作区#10755该功能语义收敛为「隐藏/显示工作区窗口」避免影响其他窗口。编辑器与阅读体验优化代码片段搜索#10739新增对代码片段Code Block 内容的搜索支持扩展搜索覆盖面。首次加载不再提示滚动加载#10716打开文档且首个块已加载完成时不再弹出 Dont panic... scroll up and down to load more 的提示减少噪音。退出焦点定位改进#10746从编辑状态退出焦点后光标/选区定位更准确。只读模式下CtrlHome失效#10806修复文档只读时CtrlHome无法回到文档开头的问题。选中超链接文本时不再触发跳转#10808文本选中与链接跳转的鼠标事件判定分离。只读模式下引用/PDF 引用光标样式#10813统一只读模式下的光标样式避免误以为可编辑。纯文本复制改进#10816复制操作生成的纯文本内容更干净。标签页菜单抖动改进#10737优化标签页右键菜单弹出时的布局抖动。闪卡菜单新增Open with New Window#10773闪卡支持在新窗口打开。数据管理与其他增强块未找到时自动从文件系统加载并建索引#10772当数据库索引中找不到块时内核自动从文件系统加载并重建索引提升异常自愈能力。数据同步冲突生成改进#10784优化多端同步冲突文档的生成逻辑。数据历史支持在所有笔记本中查询#10788数据历史Data History的查询范围扩展至全部笔记本不再局限于当前笔记本配套的 i18n 文案也在 PR #10793 中完善。支持编辑已保存的布局#10783已保存的界面布局Layout可直接编辑调整。拖入文件夹时给出提示#10779向文档树拖入文件夹时弹出确认提示防止误操作。市场包 UI 改进#10760集市Marketplace包列表界面优化。缺陷修复清单v3.0.6 共修复 10 个缺陷按影响面可分为类别Issue修复内容安全#10753面包屑 XSS 漏洞编辑器#10751按 Enter 后行内公式无法显示编辑器#10759输入/后紧跟三个反引号导致解析异常数据库#10750只读模式下数据库表视图列右键菜单未禁用数据库#10812属性面板中数据库模板自定义属性不显示闪卡#10765闪卡新窗口全屏时按钮无法点击浮动窗口#10805嵌入块浮动窗口按 Enter 报错导出#10814文档含 HTML 块时导出 PDF 报错同步#10761数据同步前不应执行索引修复数据库#10817数据库块复制文本出现多余*其中 #10753面包屑 XSS与 #10761同步前索引修复属于安全性 / 数据完整性修复建议用户优先升级。开发向更新与获取方式开发相关两项插件事件总线#10766移动端补齐switch-protyle事件支持。内核 API Token 认证改进#10792内核 API 的 token 认证机制增强开发者调用内核 API 时需留意认证方式的调整。下载与升级v3.0.6 的下载渠道包括 B3log 官方下载页与 GitHub Releases 页面见变更日志 v3.0.6.md 的 Download 章节。升级后建议重点验证大纲拖拽在加密笔记本内核会通过notebook参数走OutlineInBox加密分支见 outline.go与发布只读场景下的表现以及数据库汇总数值计算是否符合预期。结语v3.0.6 以「大纲拖拽调整层级」为标志性能力配合数据库视图交互与计算能力的多轮增强显著提升了知识组织的效率移动端图片交互与 Android 系统级打开能力则进一步完善了跨端体验。从源码层面看大纲拖拽通过前端bindSort()计算落点、内核moveOutlineHeading事务联动调整整棵标题子树的HeadingLevelmin(6, parent1)级别钳制形成了从交互到持久化的完整闭环——理解这条调用链将有助于你在插件或二次开发中复用相同的事务模式。【免费下载链接】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),仅供参考
