SiYuan v2.10.9 技术详解:标题块制卡与文档级闪卡上限、数据库时间列及多项交互修复

发布时间:2026/9/10 1:26:41
SiYuan v2.10.9 技术详解:标题块制卡与文档级闪卡上限、数据库时间列及多项交互修复 SiYuan v2.10.9 技术详解标题块制卡与文档级闪卡上限、数据库时间列及多项交互修复【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan本文基于仓库 v2.10.9.md中文版本见 v2.10.9_zh_CN.md展开。v2.10.9 是 SiYuan 间隔重复闪卡 / Spaced Repetition与属性视图数据库能力密集升级的一个版本本版本新增“标题块制卡”与“文档级新卡 / 复习卡上限”让.sy.zip导出携带闪卡数据数据库侧新增created/updated时间列与模板内置变量同时围绕内核事务、Electron 桌面层做了一轮重构。读完本文你将掌握 v2.10.9 各变更项的完整清单、底层实现位置与配置用法并能在升级后快速验证这些能力。一、版本概述与升级建议v2.10.9 属于 v2.8.4v2.12.8 时代线内的一个稳定修复版本官方给出的定位是“修复了一些缺陷建议升级”。该版本同时公布了一则商业化信息功能特性PRO Features正处于早鸟价阶段且年付订阅已包含功能特性年付订阅用户无需单独购买——这部分信息仅作为该版本的发布说明背景记录在 changelog 中。从变更构成看本版本共包含13 项功能改进Enhancement、11 项缺陷修复Bugfix、3 项重构Refactor以及 6 项开发者能力变更Development核心发力点集中在闪卡 / 间隔重复体系和属性视图数据库两个模块上。二、闪卡间隔重复体系标题块制卡与文档级卡量上限v2.10.9 在闪卡模块的两处增强都带有明显的“制卡模式扩展 复习节奏可控”特征且都有完整的源码落点可以验证。2.1 支持标题块制作闪卡此前 SiYuan 的闪卡制卡入口主要覆盖标记块mark、列表项list item和超级块super block等块类型。本版本正式支持以标题块为卡片的制卡模式Issue #9005。在配置模型里标题块制卡以一个独立开关存在// kernel/conf/flashcard.go type Flashcard struct { NewCardLimit int json:newCardLimit ReviewCardLimit int json:reviewCardLimit Mark bool json:mark // 是否启用标记制卡 #7794 List bool json:list // 是否启用列表块制卡 #7701 SuperBlock bool json:superBlock // 是否启用超级块制卡 #7702 Heading bool json:heading // 是否启用标题块制卡 #9005 Deck bool json:deck // 是否启用卡包制卡 #7724 ... }配置默认值中Heading: true见 kernel/conf/flashcard.go即开启标题块制卡能力。用户可在“设置 → 闪卡”标签页中通过flashcard.heading开关控制对应配置页实现位于 flashcardTab.ts。由于标题块天然具有“标题即问题、其下内容即答案”的语义开启该模式后系统会从标题块的子内容中抽取制卡素材。这一“隐藏标题以下内容”的作答交互在前端有专门处理复习卡渲染时若启用标题块制卡会为文档加上card__block--hideh样式类并隐藏标题块后续内容相关实现见 openCard.ts隐藏样式的规则定义在 _card.scss--hideh系列。2.2 文档级新卡 / 复习卡上限控制此前新卡 / 复习卡的上限是全局配置flashcard.newCardLimit默认 20与flashcard.reviewCardLimit默认 200对应配置模型中的NewCardLimit、ReviewCardLimit见 kernel/conf/flashcard.go。v2.10.9 引入文档级覆盖机制Issue #9365可以在单个文档的属性IAL中设置两个自定义属性用文档粒度覆盖全局上限从而对“某篇文档新卡一次放太多、或旧卡积压刷不完”的节奏进行更精细的控制IAL 属性名含义生效粒度custom-riff-new-card-limit该文档的新卡每日 / 每轮上限文档级未设置时回落到全局newCardLimitcustom-riff-review-card-limit该文档的复习卡上限文档级未设置时回落到全局reviewCardLimit内核读取逻辑位于 flashcard.go先从文档 IAL 中读取custom-riff-new-card-limit/custom-riff-review-card-limit字符串若存在则用strconv.Atoi转成整型覆盖全局值转换失败时仅记录一条invalid new card limit [...]的 warn 日志并继续沿用全局配置随后与getDeckDueCards中的计数逻辑见同文件 L1105 起协作在取到期卡片时分别按newCardLimit与reviewCardLimit截断新卡与复习卡数量。值得留意的是闪卡使用的文档 IAL 属性家族统一定义于 constants.tsCUSTOM_RIFF_DECKS custom-riff-decks并在 NodeAttrRiffDecks 相关常量中于内核侧保持一致自定义上限属性的加入使这套 IAL 体系更完整。2.3 导出.sy.zip时关联导出闪卡数据此前把文档打包为.sy.zip时仅携带正文与属性视图数据闪卡的调度进度并不包含在内。v2.10.9 起导出时会将相关闪卡数据一并写入Issue #9372保证跨实例恢复后复习进度不丢失。实现位于 export.go导出阶段会先加载storage/riff目录下的内置卡组riff.LoadDeck(exportStorageRiffDir, builtinDeckID, ...)随后遍历本次导出的文档树用getTreeFlashcards(tree.ID)取出每棵树的闪卡并deck.AddCard(...)归入卡组最后在卡片数大于 0 时deck.Save()写回导出目录。这样.sy.zip内会包含对应的storage/riff数据导入后即可继续原有复习队列。2.4 相关修复CtrlAltF 在间隔重复中的快捷键失效本版本同时修复了CtrlAltF全文搜索快捷键在间隔重复界面中无法使用的问题Issue #9384使快捷键体系在闪卡复习场景下与主界面保持一致。三、编辑器与界面交互改进3.1 移动大量文档时在后台执行索引此前移动大量文档时索引操作可能阻塞交互、造成明显的等待。v2.10.9 将“移动大量文档”场景下的索引任务放入后台执行Issue #9356界面响应随之改善。从内核结构看文档索引队列相关实现集中在 kernel/sqlindex_queue.go、queue.go等与 kernel/task/queue.go该改动属于将批量文档移动后的重索引工作交由后台队列异步完成的调度优化。3.2 浮窗文档菜单精简编辑器浮窗中的“文档”菜单不再直接提供大纲、反链和关系图三个入口Issue #9341。这三个视图仍可通过侧边栏对应面板或正常文档菜单访问只是从浮窗菜单中移除以减少高频操作路径上的干扰项。前端菜单定义集中在 app/src/menus其底层文档树菜单事件含本版本新增的open-menu-doctree见下文第五节也随之一同维护。3.3 块级复制与文本细节块级复制改进Issue #9362优化块级内容的复制结果涉及多块选择复制时的内容组织。块引锚文本不再包含行级备注内容Issue #9363生成块引锚文本时行级元素内嵌套的备注行级备注不再被带入锚文本避免引用标题 / 摘要被注释内容污染。复制时替换不间断空格为普通空格Issue #9382NBSPU00A0在外部应用中常引发排版与搜索异常复制时统一替换为普通空格。3.4 其它界面与查询优化改进书签面板渲染Issue #9361书签面板在大量条目下的渲染性能与稳定性得到优化。块引搜索结果列表中显示笔记本路径Issue #9378块引搜索命中的结果会在hpath中同时呈现所属笔记本便于在多笔记本工作区中快速区分同名校块。改进一些界面细节Issue #9359一组 UI 细节打磨覆盖整体观感一致性。仅开通功能特性的账号显示其开通状态Issue #9367账号信息中只对购买过一次性功能特性而非订阅的账户展示 PRO 开通状态避免显示歧义。微软商店版不再显示“开机自动启动”配置项Issue #9373因 Microsoft Store 打包限制该渠道版本隐藏了开机自启设置项非 Store 渠道不受影响。四、修复的 11 个缺陷一览本版本缺陷修复以“编辑器细节 多端一致性 配置可用性”为主完整清单如下分类修复内容编辑器代码块不换行时行号错位#9337编辑器多选列表项剪切异常#9349编辑器无法在行级代码中粘贴#9369编辑器行级元素中的自定义表情输入后丢失#9370编辑器无法在表格单元格中输入自定义表情#9358多端新窗口加载某些 PDF 失败#9343多端部分 Linux 桌面发行版无法启动#9347多端移动端 APP 不显示访问授权码设置项#9346配置无法取消网络代理设置#9374账号流云数据中心账号登录验证码无法显示#9375快捷键CtrlAltF 无法在间隔重复界面使用#9384其中“无法在表格中输入自定义表情”“行级元素自定义表情丢失”两条同属自定义表情custom emoji在行级与表格场景下的 IME / 输入事件处理修复“访问授权码设置项在移动端缺失”则补齐了移动端设置面板中 API 访问授权码的展示。五、重构内核事务、Electron 升级与桌面进程通信本版本的重构集中在架构层面不影响既有用户数据格式重构内核模型层事务机制Issue #9338模型层将文档操作纳入更规范的事务处理。与文档变更事务直接相关的实现集中在 kernel/model/transaction.go 与 kernel/treenode该重构为后续文档级 IAL 类改动如本版本 2.2 的文档级卡量上限提供了更一致的事务边界。升级 ElectronIssue #9342桌面壳升级到更新的 Electron 基线同步获得上游安全修复与稳定性改进。桌面主进程相关代码位于 app/electronmain.js、window.js等。使用 ipcRenderer 替代 electron/remoteIssue #9368electron/remote允许渲染进程直接触碰主进程 API属已被官方逐步淘汰的桥接方式本版本将其替换为标准的ipcRenderer消息通道收窄渲染进程权限面是桌面安全模型上的一个重要收敛。六、开发者向变更数据库时间列与事件总线面向插件与数据库开发者的 6 项变更多数围绕属性视图数据库与内核 API 能力6.1 数据库支持created/updated类型列属性视图此前只有各类手工列无法直接表达“行记录的创建 / 更新时间”。v2.10.9 新增两种系统时间列类型Issue #9371类型常量定义于 kernel/av/av.goKeyTypeCreated KeyType created // 创建时间 KeyTypeUpdated KeyType updated // 更新时间这两类列的取值来自属性视图值Value内置的CreatedAt/UpdatedAt时间戳字段见 kernel/av/value.go。该结构还有两个值得注意的语义细节SetUpdatedAt在“更新时间与创建时间相等”时会强制UpdatedAt 1000毫秒级偏移确保排序场景中“从未更新过”的记录也能获得稳定可区分的更新时间针对存量数据内核在 kernel/av/av_fix.go 中提供了回填逻辑当CreatedAt 0时依据块的实际创建时间或当前时间补齐CreatedAt并令UpdatedAt初始等于CreatedAt保证新列对历史数据同样可用。由于CreatedAt/UpdatedAt是值级时间戳这两类新列天然支持时间过滤、排序见 kernel/av/sort.go与分组统计适合做“最近录入 / 最近更新”类视图。6.2 数据库模板列支持created/updated内置变量数据库的模板列template类型见 kernel/av/av.go在本版本补充了created与updated两个内置变量Issue #9364可在模板表达式中引用当前行的创建 / 更新时间配合 6.1 的时间列共同完善了数据库的时间维度表达。6.3 数据库其它细节改进数据库列图标Issue #9304各列类型在表头展示类型图标便于快速辨认列类型属性视图的图标字段定义见 kernel/av/av.go。支持通过视图标题搜索数据库块Issue #9348当以数据库块为主进行全局搜索时可将视图标题纳入匹配范围提升多视图场景下的定位效率。改进一些数据库细节Issue #9274一批围绕属性视图内部实现的小优化。6.4 插件事件总线新增open-menu-doctree面向插件开发者事件总线新增了open-menu-doctree事件Issue #9351。该事件在文档树右键菜单含文档树各层级入口弹出时广播允许插件在菜单打开阶段注入自定义菜单项。事件总线类型定义见 types/index.d.ts与open-menu-av、open-menu-content、open-menu-breadcrumbmore等并列事件分发点在 navigation.ts 等多处文档树菜单打开路径上。七、升级与验证建议官方建议升级到本版本以获取缺陷修复。升级后可按以下路径验证本版本关键能力标题块制卡在“设置 → 闪卡”中确认flashcard.heading为开启状态默认开启将光标定位到标题块并制作闪卡随后在间隔重复中作答观察标题下内容在作答前被隐藏card__block--hideh文档级卡量上限在某个文档属性中追加custom-riff-new-card-limit: 5复习该文档时新卡放出数量应被限制到 5且不受全局默认 20 影响数据库时间列新建一个属性视图并添加“创建时间 / 更新时间”列历史记录应自动回填时间模板列中可通过created/updated引用导出携带闪卡对含闪卡的文档导出.sy.zip解包后应能在storage/riff下找到对应卡组数据插件事件监听open-menu-doctree的插件在文档树右键时应能收到事件并注入菜单。仓库内完整的原始变更记录可进一步查阅 v2.10.9.md英文与 v2.10.9_zh_CN.md简体中文后续版本在 app/changelogs 下按版本目录持续归档。八、小结v2.10.9 是一个“小而密”的迭代版本对终端用户而言它补齐了标题块制卡、文档级闪卡节奏控制与.sy.zip闪卡数据导出并把批量文档移动的索引改为后台化对开发者而言数据库时间列与模板变量、open-menu-doctree事件总线为插件与属性视图扩展提供了新的基础能力而 Electron 升级与electron/remote的替换则为后续桌面端的安全与稳定性演进铺平了道路。【免费下载链接】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),仅供参考