首页
/ SiYuan v3.0.11 版本深度解析:数据库属性视图交互全面增强与编辑器体验打磨

SiYuan v3.0.11 版本深度解析:数据库属性视图交互全面增强与编辑器体验打磨

2026-09-08 17:07:50作者:郁楠烈Hubert

SiYuan(思源笔记)v3.0.11 是一个以"修复缺陷 + 改进细节"为主的稳定版本,其变更记录(见 v3.0.11_zh_CN.md)共覆盖改进功能 26 项、缺陷修复 8 项、文档改进与开发者能力更新各 1 项,其中约半数改动集中在**数据库(属性视图 Attribute View)**模块。阅读本文后,你将能系统性掌握 v3.0.11 在数据库视图、编辑器交互、剪藏安全、移动端、集市安装等方向的具体改动及其背后的实现脉络。

版本概况与分类总览

该版本变更分为四类:改进功能修复缺陷改进文档开发者,与仓库中同一版本的英文版 v3.0.11.md 和繁体中文版 v3.0.11_zh_CHT.md 一一对应,方便跨语言对照。整体改动画像如下:

主题域 本次涉及改动 典型条目
数据库 / 属性视图 改进 + 修复约 20 项 行/列拖放排序、镜像列宽、解绑行为、汇总与筛选、主键编辑
编辑器与块交互 改进约 6 项 iframe 块拖动选择、Ctrl+Click、替换文本元素
安全与剪藏 改进 2 项 剪藏扩展隐藏令牌明文、资源列支持 siyuan 协议链接
移动端 改进 2 项 底部状态栏、数据库输入滑动
标签 / 解析 / 窗口 改进 3 项 标签面板数量上限、HTML 解析代码块、新窗口链接用浏览器打开
集市与网络 改进 1 项 安装包下载/校验超时改为 2 分钟
关系图 / 反向链接 修复 2 项 关系图刷新无效、移动 块后反向链接面板错误
开发者 改进 1 项 插件 Custom 类新增 editors

数据库(属性视图)模块:本版本的改进重心

v3.0.11 有超过一半的条目围绕数据库表格视图(Table View)与绑定/镜像机制展开,本节按"能力改进"与"缺陷修复"两条线拆解。

表格视图行列拖放与列交互增强

  • 行/列拖放排序改进(issue #11048):此前在数据库表格视图中通过拖拽调整行或列的顺序存在状态不同步、落点判定不准等问题,本版本优化了拖放排序的交互反馈与最终排序结果的一致性。
  • 拖动数据库列时编辑器不应滚动(issue #11056):当列头跨区域拖动时,底层文档编辑器不应跟随产生滚动,避免视图跳动。
  • 新建列时菜单位置修正(issue #11051):此前在表格末尾新建列时右键菜单可能定位偏移,本版本修正了菜单锚点计算。
  • 更新列的交互改进(issue #11084):针对表格视图中修改列(字段)定义时的交互链路做了整体打磨。

从内核实现看,列序与行序的调整最终都会落到 kernel/api/av.go 暴露的排序类接口上,例如 sortAttributeViewKey(字段全局排序,见 kernel/api/av.go#L639)、sortAttributeViewViewKey(视图内列排序)以及 setAttrViewSorts(行数据排序,见 kernel/api/av.go#L255),它们都通过模型层的 SetAttrViewSortsSortAttributeViewKey 写入定义文件,并在成功后调用 ReloadAttrView 触发视图重新渲染。前端拖放结束后实际上就是触发这一类事务接口,因此拖放排序的"手感"与后端列/行模型的一致性密切相关。

绑定、镜像与主键相关的缺陷修复

  • 调整镜像数据库的列宽度会影响其他视图(issue #11019):镜像(Mirror)数据库与源数据库共享属性视图定义,直接修改列宽曾可能串扰到其他视图布局。仓库模型层 kernel/model/attribute_view.go 中专门实现了 syncAttrViewTableColWidth(见 attribute_view.go#L712)来同步表格列宽,本次修复即是对该同步范围与条件的收紧——列宽应只作用于当前视图,而不是扩散到同一定义关联的其他视图。
  • 数据库解绑块导致条目被删除(issue #11101):将文档块从数据库中解绑(unbind)时,曾出现对应条目被连带移除的严重数据问题,本版本修复了"解绑"与"删除条目"两个操作的边界。
  • 添加行后无法立即编辑主键(issue #11079):新增行后主键字段的编辑态与光标定位存在时序问题,现已可即时编辑。
  • 嵌入块中的数据库界面颜色异常(issue #11032):当数据库以嵌入块形式出现在文档中时,界面配色可能丢失上下文主题变量,本版本修正了样式作用域。
  • 列表项下表格内删除列后无法输入(issue #11085):在列表项内嵌的表格中删除列后编辑器失焦不可输入,属于焦点恢复缺陷。

字段能力增强:汇总、多选、日期与模板

  • 汇总过滤改进(issue #11059):对"汇总(Rollup)"字段结果继续施加过滤条件时,聚合计算的正确性得到改进。
  • 汇总字段设置改进(issue #11083):汇总字段的来源与聚合方式配置界面交互更清晰。
  • 数据库多选字段排序改进(issue #11062):多选(Multi-select)字段值参与排序时的次序规则被修正。
  • 数据库日期过滤器排除空值(issue #11061):对日期字段使用过滤时,未填写日期的行不再错误地出现在结果中(此前会被判定为"小于任何日期"而落入过滤集)。
  • 模板字段报错时提示(issue #11070):模板字段在渲染阶段若引用出错,现在会向用户给出明确提示而非静默失败。
  • 表格视图中自定义图标不再变形(issue #11066):字段自定义图标在表格表头中因 CSS 拉伸而变形的现象得到修复。
  • 表格视图中编辑链接时全选文本(issue #11060):在表格视图单元格内编辑链接文本时,进入编辑态即自动全选,便于整体替换。
  • 数据库中未绑定的行支持"添加到数据库"(issue #11093):此前"添加到数据库"仅对未绑定的文档块可用,现在数据库中未绑定的独立行也能通过该操作补充到其他数据库,配合 kernel/api/av.go#L445appendAttributeViewDetachedBlocksWithValues 这类"携带值追加游离块"的内部接口,可以把未绑定行的已有字段值一并带过去。

关于数据库模块的底层机制

数据库(属性视图)在 SiYuan 中并非简单的二维表格,而是由"属性视图定义(Attribute View)"与"多个视图(Table/Board/Kanban/Gallery 等)"构成的复合结构,行可以绑定到具体文档块,也可以以游离(detached)形式存在。内核通过 kernel/api/av.go 提供了一整套 /api/av/* 接口(增删行列、排序、筛选、分组、渲染等),并在模型层 kernel/model/attribute_view.go 中统一以事务方式执行变更、以 ReloadAttrView 保证内存缓存与磁盘定义一致。理解这一点,就能明白为什么"镜像列宽"、"解绑"这类改动往往牵一发而动全身——它们共享同一份属性视图定义,任何写操作都必须精确限定作用域。

编辑器与块交互:细节体验打磨

  • 改进包含 iframe 的块的拖动和选择(issue #11033):iframe 内容会吞掉鼠标事件,导致包含 iframe 的块难以被整体框选或拖动,本版本对事件穿透做了处理。
  • 改进 Ctrl+Click 选择/取消选择块(issue #11075):优化了按住 Ctrl 单击时块的选中/取消选中行为,避免误触与状态错乱。
  • 支持用其他元素替换文本元素(issue #11058):这是 Markdown 编辑引擎(Lute)层面的能力扩展,允许在保留行级结构的前提下,把文本节点替换为其他类型的内联元素,为后续格式转换操作提供基础。
  • 改进 复制 文本*(issue #11057):块菜单中"复制 文本"类命令的复制结果格式更干净。
  • 提及面板不应在展开数为 0 时关闭(issue #11097):当"提及展开数"被设置为 0 时,提及面板仍应保持可用,本次修正了面板意外关闭的条件判断。
  • 移动块后反向链接面板错误(issue #11092,缺陷修复):文档间移动块后,反向链接面板曾显示失效引用,本版本确保移动操作后反向链接数据被正确重建。

安全与剪藏:令牌与协议链接

  • 浏览器剪藏扩展隐藏令牌明文(issue #10975):浏览器剪藏扩展(Web Clipper)在填写/存储 API 令牌时,界面不再直接暴露令牌明文,降低旁人窥屏或截图泄露令牌的风险。这属于安全加固类改进,令牌仍用于本地 API 鉴权,但展示与存储环节做了掩码处理。
  • 支持在资源列中打开 siyuan 协议链接(issue #11073):数据库"资源(Asset)"类型的单元格此前只能打开普通附件,本次扩展为可识别并打开 siyuan:// 协议链接,使得资源列可以承载指向工作空间内部文档/块/数据库的深层链接,联动内部知识网络。

移动端改进

  • 改进移动端底部状态栏(issue #11041):移动端底部状态栏在信息展示密度与触控热区上做了调整。
  • 改进移动端上数据库输入时的滑动(issue #11077):在手机上编辑数据库单元格时,软键盘弹出与页面滚动的冲突容易导致输入框被遮挡或误滚动,本版本针对该场景优化了滑动行为。

标签面板、HTML 解析与新窗口行为

  • 限制标签面板中列出的标签最大数量(issue #11071):当工作空间标签数量极大时,标签面板一次性渲染全部标签会带来明显卡顿,本版本引入了数量上限保护,超出部分不再全部枚举。
  • 改进 HTML 解析代码块(issue #11068):粘贴或导入 HTML 时,<pre>/代码块结构(含换行、缩进、多语言标注)的解析结果更符合预期。
  • 新窗口中的链接使用浏览器打开(issue #11050):通过"在新窗口中打开"产生的独立窗口,点击其中的外部链接将交由系统默认浏览器处理,而不是在应用窗口内导航,避免破坏窗口内的编辑上下文。
  • 提示未正常退出(issue #11054):当应用上次未正常退出(崩溃或强杀)时,再次启动会给出提示,帮助用户了解可能的异常历史。

集市与网络相关调整

  • 集市安装包超时改为 2 分钟(issue #11106):集市(Marketplace)在下载并校验主题/插件安装包时,将请求超时时间调整为 2 分钟。集市安装逻辑位于内核 kernel/bazaar/install.go,其下载、校验、解包流程对网络质量较敏感,超时过短容易在大安装包或弱网环境下误报失败,本次放宽超时属于稳定性权衡。

文档与开发者更新

  • 改进用户指南"格式化元素"和"快捷键"章节(issue #11049 / PR):用户指南(User Guide)中关于格式化元素与快捷键的说明被重写得更准确、更易检索,对应文档目录位于仓库 docs 之外的内置帮助文档中。
  • 在插件的 Custom 类中添加 editors(issue #11072):面向插件开发者的 API 扩展——插件的 Custom 类新增了 editors 相关能力,让插件可以对编辑器的自定义事件/逻辑进行更细粒度的接管或扩展。这意味着第三方插件生态可以在编辑器层面获得更完整的钩子支持,建议插件作者升级后对照官方插件 API 文档核对字段签名。

小结

v3.0.11 是一次典型的"稳基座、磨细节"版本:数据库属性视图在拖放排序、镜像、解绑、汇总/筛选、主键编辑等高频交互上集中收敛了一大批边界问题;编辑器、剪藏安全、移动端与标签面板的细节改进则直接作用于日常写作体验。对于正在使用数据库管理知识条目的用户,建议优先升级以规避"解绑误删条目""镜像列宽串扰"等数据一致性风险;对于插件开发者,可同步关注 Custom.editors 的新增能力。

说明:以上各改动条目编号与描述均来源于仓库内 v3.0.11_zh_CN.md(原文档的"下载"小节指向官方发布页,本文不再重复列出)。如需核对内核实现,可继续阅读 kernel/api/av.go(数据库 API)与 kernel/model/attribute_view.go(属性视图模型与事务)。

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

项目优选

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