首页
/ SiYuan v3.0.11 版本变更深度解析:数据库表格交互、编辑器细节与移动端体验的批量打磨

SiYuan v3.0.11 版本变更深度解析:数据库表格交互、编辑器细节与移动端体验的批量打磨

2026-09-08 12:52:20作者:仰钰奇

本篇文章围绕思源笔记(SiYuan)内核仓库中 v3.0.11 英文变更记录(以及对应的 简体中文繁体中文 记录)展开,逐条梳理该版本针对数据库(属性视图/AV)表格交互、编辑器与块操作、移动端、安全隐私、集市与插件开发等维度的 26 项功能增强、8 项缺陷修复、1 项文档改进与 1 项开发者接口变更。读完本文,你不仅能对照 issue 编号完整掌握 v3.0.11 的改动清单与用户侧收益,还能在仓库源码中找到这些改动对应的前端渲染层(TypeScript)与后端数据层(Go)实现位置,便于进一步深入代码或评估升级影响。

一、版本概览与总体印象

与 v3.0.x 系列其他版本一致,v3.0.11 的定位是「修复一些缺陷并改进大量细节」,本身不含破坏性的大功能重构,而是一次典型的质量打磨型迭代

从变更记录的结构统计看,本版的关注点高度集中:

类别 数量 主题分布
功能增强(Enhancement) 26 数据库表格交互约占一半,其余为编辑器、移动端、安全、集市、提及/标签面板
缺陷修复(Bugfix) 8 镜像数据库、嵌入块、关系图、反向链接、解绑块、主键编辑等
文档改进(Document) 1 用户指南的格式化元素与快捷键章节
开发者(Development) 1 插件 Custom 类新增 editors 字段

其中**数据库(SiYuan 的属性视图 / Attribute View,仓库中常以 av 为目录名)**相关改动占据了最大比重,反映了该阶段开发重心集中在数据库表格体验的打磨上。下面按主题分组展开,每个条目均继承原文完整信息,并补充源码定位。

二、数据库(属性视图)是本版改动的主战场

数据库在 SiYuan 中对应内核侧的 AV(Attribute View)子系统,源码分布在后端 kernel/av(Go 实现)与前端渲染层 app/src/protyle/render/av(TypeScript 实现)。v3.0.11 中与之直接相关的条目约占总量一半,可再细分为交互、字段与过滤、行绑定三类。

2.1 表格视图的行、列与拖拽交互增强

  • 改进数据库表格视图行/列拖放排序(#11048):行/列拖拽排序的命中与反馈优化,属于高频操作体验改进。
  • 拖动数据库列时编辑器不应滚动(#11056):此前拖动列时主编辑器内容可能同步滚动、干扰拖拽定位,本版限制了这一副作用。
  • 改进更新数据库表格视图中的列的交互(#11084):对「更新列」操作的交互流程(确认、应用)做了细化。列的新增、重命名与类型调整逻辑在前端集中在 app/src/protyle/render/av/action.ts,可在此追踪列级操作的实际调用。
  • 数据库新建列时菜单位置不正确(#11051,修复):新建列弹出菜单的定位出现偏差,本版修正坐标计算。
  • 数据库表格视图中的自定义图标不再变形(#11066):自定义图标在表格单元格中按比例渲染,避免被拉伸变形。
  • 编辑数据库表格视图中的链接时选择所有文本(#11060):点击进入链接单元格编辑态时自动全选,符合「进入即全选、直接覆盖」的编辑预期。
  • 在数据库中添加行后无法立即编辑主键(#11079,修复):新增行后主键单元格应直接进入可编辑态,此前的焦点丢失问题被修复。
  • 列表项下表格内删除列后无法输入(#11085,修复):特殊结构(列表项内部的数据库表格)中删除列后编辑器失焦、无法继续输入的缺陷得到修复。
  • 嵌入块中的数据库界面颜色异常(#11032,修复):嵌入块(embed block)场景下数据库 UI 颜色异常,涉及前端渲染层的样式隔离问题。

2.2 镜像数据库与多视图联动

  • 调整镜像数据库的列宽度会影响其他视图(#11019,修复):镜像数据库(mirror database)与源数据库共享数据,本版修复了调整列宽「串改」到其他视图的问题——即视图级列宽配置与数据本体解耦。镜像语义在后端 kernel/av/mirror.go 中有专门实现,可从绑定/引用关系的角度理解「视图间影响」的来源。

2.3 字段过滤、排序与汇总计算

  • 数据库日期过滤器排除空值(#11061):日期字段筛选时自动忽略空值行,避免空日期参与过滤导致的结果偏差。
  • 改进数据库多选字段排序(#11062):多选(multi-select)字段参与排序时按选项语义而非文本处理。多选字段的值表达与比较可在后端 kernel/av/value.go 中进一步查看。
  • 改进数据库汇总过滤(#11059):汇总(rollup)字段的过滤行为优化。汇总字段依赖关联行的计算值,其计算与过滤分别位于后端 kernel/av/calc.gokernel/av/filter.go
  • 改进数据库汇总字段设置(#11083):汇总字段的设置交互(选择关联字段与聚合方式)被细化,同样可在 kernel/av/calc.go 中看到聚合计算的底层支撑。
  • 当数据库模板字段报告错误时提示(#11070):模板(template)字段的公式/模板表达式执行出错时给出明确提示,而不是静默失败。模板求值逻辑位于后端 kernel/av/calc_template.go

2.4 行绑定与「添加到数据库」

  • 数据库中未绑定的行支持「添加到数据库」(#11093):未绑定块的行此前无法纳入其他数据库,本版允许通过右键菜单将这类行「添加到数据库」。对应前端入口包括 app/src/protyle/render/av/addToDatabase.ts 以及块右键菜单中的 addToDatabase 动作(见 app/src/protyle/gutter/index.tsapp/src/protyle/header/openTitleMenu.ts),并可通过「通用设置」中的快捷键 addToDatabase(定义于 app/src/constants.ts)触发。
  • 数据库解绑块导致条目被删除(#11101,修复):在「绑定/解绑」语义下,解绑不应删除数据库条目本身,本版修复了该误删路径。从后端看,行与块的绑定关系由 AV 与文档树的映射维护,相关数据模型可参考 kernel/av 下对属性视图行/块关联的处理。

说明:以上分类中,用户可直接感知的交互改动大多落在前端渲染层 protyle/render/av,而过滤、排序、汇总、模板等「语义」改动则由内核 kernel/av 提供计算支撑——这也是 SiYuan 数据库功能「前端即时交互 + 后端持久化计算」的典型分工。

三、编辑器与块操作细节打磨

  • 改进包含 iframe 的块的拖动和选择(#11033):若块内包含 iframe,鼠标事件常被 iframe 内容抢占,导致拖动/选区不稳定。本版改进了这类块的拖拽与框选行为。
  • 改进 Ctrl+Click 选择/取消选择块(#11075):优化多块选择时的「加选/减选」手感,涉及编辑器块级选区管理。
  • 支持用其他元素替换文本元素(#11058):支持将文本块直接替换为其他元素类型(如转为标题、列表等),避免「先删除再新建」的操作链路。
  • 改进「复制 文本」(#11057)*:优化块菜单「复制为文本」类操作的复制结果格式。复制相关底层实现在内核侧 kernel/model/clipboard.go 可进一步查看。
  • 改进 HTML 解析代码块(#11068):对粘贴或导入内容中的 HTML 代码块解析更健壮,避免代码内容被错误转义或拆块。
  • 当提及展开数设置为 0 时提及面板不应关闭(#11097):设置中将 @ 提及的自动展开数量设为 0 后,手动唤起的提及面板此前会被立即关闭,本版修正该逻辑。
  • 限制标签面板中列出的标签的最大数量(#11071):为标签面板的展示列表设置上限,防止标签数量巨大时面板渲染卡顿,属于超大数据量场景下的性能保护。

四、移动端体验改进

  • 改进移动端底部状态栏(#11041):针对移动端(手机/平板)底部状态栏的信息密度与触控区域做调整。
  • 改进移动端上数据库输入时的滑动(#11077):移动端编辑数据库单元格时,软键盘与页面滚动存在冲突,本版优化了输入过程中的视图滚动行为。

以上两处均落在移动端 UI 层 app/src/mobile,说明数据库与编辑器改造在 v3.0.11 中同步考虑了移动端一致性。

五、安全、链接与退出体验

  • 浏览器剪藏扩展隐藏令牌明文(#10975):针对浏览器剪藏场景,避免 API 令牌以明文形式暴露在剪藏扩展中,提升凭证安全性。
  • 支持在资源列中打开 siyuan 协议链接(#11073):数据库的「资源」列单元格中可识别并打开 siyuan:// 协议链接,打通数据库与笔记内部导航。
  • 新窗口中的链接使用浏览器打开(#11050):从新窗口打开的链接改为交给系统浏览器,避免在应用窗口内捕获外链。桌面端窗口外链的处理策略可参考 app/electron/main.js 中的窗口事件逻辑。
  • 提示未正常退出(#11054):当上次会话未正常退出(如强杀进程)时,下次启动给出提示,帮助用户感知异常退出并检查数据状态。

六、集市安装体验

  • 更改集市安装包超时为 2 分钟(#11106):将集市(Bazaar)安装包的下载/安装超时统一调整为 2 分钟。集市功能在内核侧由 kernel/bazaar 目录承载(安装与包管理逻辑见其中的 install.gopackage.go 等文件),前端触发入口位于插件/主题/挂件等集市界面;该调整主要针对网络波动时安装流程更容易「卡死」的痛点,让超时行为更可预期。

七、开发者接口与文档更新

  • 在插件的 Custom 类中添加 editors(#11072):这是本版唯一面向插件开发者的接口变更。Custom 是插件自定义 Dock/标签页所用的类,本版为其新增了 editors 字段(Protyle[] 类型),使插件能够访问挂载在自定义面板中的编辑器实例。实现可直接在 app/src/layout/dock/Custom.ts 中看到:
import {Protyle} from "../../protyle";
export class Custom extends Model {
    // ...
    public editors: Protyle[] = [];
}

插件的入口装配逻辑(Custom 的实例化、Custom/MobileCustom 的分发)见 app/src/plugin/index.ts。升级到 v3.0.11 后,需要遍历自定义面板内编辑器的插件可直接遍历 custom.editors 而无需自行维护引用。

  • 改进用户指南的格式化元素和快捷键章节(#11049,PR):用户指南文档结构调整,属于文档侧改进,不影响运行时行为。

八、其余缺陷修复一览

除上述按主题展开的修复外,仍有部分缺陷修复值得关注:

  • 关系图刷新无效(#11087,修复):关系图视图的刷新动作此前可能无效果,本版修复后刷新能正确拉取最新节点关系。关系图的数据与接口分别涉及 kernel/model/graph.gokernel/api/graph.go
  • 「移动」块后反向链接面板错误(#11092,修复):将块移动到其他文档后,反向链接面板出现错乱,本版修正引用关系更新。反向链接处理位于内核侧 kernel/model/backlink.go,其正确性依赖移动操作后引用索引的同步。

九、升级建议与源码导览

v3.0.11 是一次偏「打磨」的版本:没有配置项或数据结构的破坏性变更,改动集中在数据库表格交互、编辑器细节与移动端体验,因此升级风险较低;但若你的工作流重度依赖数据库(尤其是镜像数据库、汇总/模板字段、多选字段排序),建议升级后重点回归上述场景。涉及插件开发者的唯一接口变化是 Custom.editors 的新增,为纯增量、向后兼容。

如需核对原文或继续深入,可直接阅读仓库内的一手资料:

安装与升级方面,桌面端各平台的打包配置位于 app/electron-builder.yml 及同目录下的平台分支配置,可据此了解产物形态;实际升级建议通过应用内「检查更新」或官方发布渠道获取对应安装包。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.76 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
860
1.35 K
docsdocs
暂无描述
Markdown
899
5.83 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
925
1.85 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.84 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
533
601
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.03 K
525
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.37 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
395