SiYuan v2.10.11 版本技术变更详解:字体变量、工作区命名限制、Pandoc 路径初始化与数据库视图能力升级
SiYuan v2.10.11 版本技术变更详解字体变量、工作区命名限制、Pandoc 路径初始化与数据库视图能力升级【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan本文以 SiYuan思源笔记v2.10.11 的官方变更日志为主体完整覆盖该版本的全部 Enhancement、Bugfix 与 Development 条目并结合当前仓库中的 Go 内核源码与前端主题样式深入讲解每一项变更背后的实现机制帮助开发者理解 SiYuan 在编辑器排版、工作区管理、导出管线与插件沙箱等环节的真实实现方式。版本概览v2.10.11 是一个以缺陷修复为主、兼具多项编辑器与数据库Database体验增强的维护版本官方建议升级。原文档还附带了一条商业化说明PRO Features当时处于早鸟价格阶段且年度Subscription已包含 Pro 功能年度订阅用户无需单独购买 PRO Features。以下各节按技术主题对变更日志中的全部条目进行继承与展开。编辑器排版--b3-font-family字体变量体系v2.10.11 的排版增强包含三条紧密相关的条目数学块与嵌入embed块编辑时使用固定宽度字体issue #9406为kbd元素的 font-family 追加--b3-font-familyissue #9412为.b3-menu__accelerator菜单快捷键提示的 font-family 追加--b3-font-familyissue #9439。这三处修改都落在 SiYuan 的主题 CSS 变量体系内。从源码结构看主题样式文件 theme.css 定义了一整套排版变量--b3-font-family: Emojis Additional, Emojis Reset, BlinkMacSystemFont, Helvetica, Luxi Sans, DejaVu Sans, arial, sans-serif, emojis; --b3-font-family-protyle: var(--b3-font-family); --b3-font-family-code: Emojis Additional, Emojis Reset, JetBrainsMono-Regular, mononoki, Consolas, Liberation Mono, var(--b3-font-family); --b3-font-family-graph: arial; --b3-font-family-emoji: Emojis Additional, emojis; --b3-font-family-math: KaTeX_Math; --b3-font-family-kbd: var(--b3-font-family-protyle);可以看到 SiYuan 用变量名区分了正文protyle、代码、图谱graph、表情、数学math与键盘按键kbd等不同渲染场景。--b3-font-family-kbd: var(--b3-font-family-protyle)这一条正是本版本为kbd元素追加--b3-font-family的落点键盘按键样式最终继承正文变量从而随用户选定的字体如 appearance/fonts 中可选的 JetBrains Mono、LXGW 文楷、Noto 等字体包联动。数学块使用--b3-font-family-math: KaTeX_Math则对应 KaTeX 渲染字体而本版本将数学与 embed 块编辑态切换为固定宽度字体即--b3-font-family-code一类的等宽栈目的是在编辑过程中减少因字符宽度变化导致的行内跳动。深色主题 midnight/theme.css 中存在对称定义修改会同时覆盖两套内置主题。工作区命名限制调整为 32 个 rune变更日志中Adjust workspace name length limit to 32 runesissue #9440对应内核侧的校验逻辑。在 isInvalidWorkspacePath 中可以看到完整校验链func isInvalidWorkspacePath(absPath string) bool { if absPath { return true } name : filepath.Base(absPath) if name { return true } if strings.HasPrefix(name, .) { return true } if !gulu.File.IsValidFilename(name) { return true } if 32 utf8.RuneCountInString(name) { // Adjust workspace name length limit to 32 runes https://github.com/siyuan-note/siyuan/issues/9440 return true } toLower : strings.ToLower(name) return gulu.Str.Contains(toLower, []string{conf, home, data, temp}) }这里有一个值得注意的细节限制使用的是utf8.RuneCountInString而非字节长度即 32 的计数单位是 Unicode 字符rune。这意味着中文工作区名可以取 32 个汉字而不是被字节长度压缩到约 10 个字符源码注释也直接标注了对应的 issue 编号体现了 SiYuan 变更日志与代码的逐条对应关系。该校验同时拒绝以.开头的隐藏目录、非法文件名字符以及名称中包含conf、home、data、temp的目录避免工作区路径与内核自身的数据目录冲突。插件加载与 Bazaar 信任机制Dont load plugin when the user hasnt agreed to trust bazaar content yetissue #9426是一项安全边界调整用户在未明确信任 Bazaar插件市场内容之前内核不启动任何插件。从源码结构看这一约束由Conf.Bazaar.Trust配置项统一把关例如 PluginManager.Startif model.Conf.Bazaar.PetalDisabled || !model.Conf.Bazaar.Trust { logging.LogInfof(kernel plugins are disabled by configuration, skipping start) return }同样的判断也出现在 model/plugin.go 的插件加载入口与 api/setting.go 的设置接口中即信任开关在模型层、API 层与管理器层三处共同生效用户同意前插件进程worker根本不会被拉起。配合PetalDisabled全局禁用项可以推断 SiYuan 将市场内容信任视为插件供应链的第一道门禁。Pandoc 二进制路径设置改进Improve pandoc binary path settingissue #9427对应导出管线中 Pandoc 的初始化逻辑。核心实现在 InitPandoc其初始化优先级如下资源文件探测先在pandoc-resources/、再在pandoc/pandoc-resources/下查找 Docx 模板pandoc-template.docx与颜色过滤器pandoc_color_filter.lua仓库内可见 pandoc-resources 目录自定义路径优先若工作区conf.json的export.pandocBin指向一个不属于临时目录strings.HasPrefix(customPandocBinPath, tempPandocDir)判断且能成功执行pandoc --version的可执行文件则直接采用用户自定义的二进制并跳过内置解压流程内置二进制按操作系统与架构Windows amd64 / Darwin / Linux amd64定位temp/pandoc/bin/pandoc兜底解压内置二进制不存在时按平台从pandoc-os-arch.zip仓库提供 pandoc-linux-amd64.zip 等五平台压缩包解压到临时目录在 macOS/Linux 上执行chmod x后再验证版本。用户侧的自定义入口是导出配置项PandocBin定义于 conf/export.goJSON 键pandocBin实际导出时由 ExportPandocConvertZipWithOptions 等函数以exec.Command(Conf.Export.PandocBin, args...)调用。本版本的改进正是让这套自定义 → 内置 → 解压兜底的路径探测更稳健避免用户设置了自定义 pandoc 后仍被内置版本覆盖或反复解压。数据库Database视图能力增强v2.10.11 的 Development 条目绝大多数围绕 SiYuan 的数据库块Attribute View即数据库展开完整继承如下修改数据库模板列的自定义属性动作#9401点击数据库资产列中的 PDF 资产时在右侧打开#9402改进数据库模板编辑#9404数据库模板列支持数字计算#9408数据库模板列支持数字过滤#9414数据库块加载动画#9416数据库表格视图支持方向键/Esc 选择单元格/行#9417改进数据库 UI并为文本、模板、数字、日期、创建时间与更新时间列添加复制按钮#9418支持搜索数据库视图内容#9419改进数据库表格视图行菜单属性#9420、改进行交互#9421点击模板单元格修改模板#9423修复数据库表格视图导出时 select 列内容不显示的问题#9428。这些功能在内核侧有对应的分层实现可以印证列值的取值、计算与过滤逻辑集中在 kernel/avcalc.go、filter.go、value.go等不同布局的渲染分别位于 layout_table.go、layout_kanban.go、layout_gallery.goSQL 层的表视图查询在 sql/av_table.go模板与列定义则经由 attribute_view.go 管理。从源码结构看模板列支持数字计算与数字过滤依赖av/calc.go对模板列求值结果的类型判定支持搜索数据库视图内容则可推断是扩展了 sql/av.go 中视图内容检索对模板列渲染值的覆盖。资产列点击 PDF 在右侧打开则与 api/av.go 中资产预览接口的前端联动相关。其他增强与缺陷修复其余 Enhancement 条目完整继承如下并附源码印证macOS 桌面应用图标改进#9403桌面端图标资源由 app/appearance/icons 与 Electron 打包配置electron-builder.yml共同提供只读文档下引用右键菜单不显示 backlink 与 graph#9409引用菜单项的可见性受文档只读状态约束大纲支持 CtrlClick 聚焦打开#9410大纲面板的标题定位行为增强PDF 大纲遮挡编辑器选中文本工具栏#9415PDF 预览大纲层与选区工具栏的层级冲突修复移动端使用 ref 时隐藏文本工具栏#9431移动布局app/src/mobile下的工具栏显隐策略选中图片后 CtrlX 应剪切图片而非整个块#9433块编辑器app/src/protyle中图片选区优先于块选区的剪切语义修正*PDF 批注中清空链接锚点时将文本置为并新增转为文本菜单#9443。Bugfix 条目逐条如下以新窗口打开的 PDF 再次打开时应跳回该窗口#9405PDF 打开行为受单窗口策略约束model/pdf.go 负责 PDF 的打开与标注管理点击表格块空白处粘贴文本抛异常#9411部分系统上 SVG 图片无法显示#9413打开无标注的 PDF 文件时出错#9425iPad 上不显示访问授权码设置项#9432标题块折叠状态super block叠加使用时展开标题导致内容重复#9435。小结v2.10.11 是一个典型的 SiYuan 维护版本以字体变量、工作区命名32 rune 上限见 workspace.go 的 rune 计数、Pandoc 路径初始化见 pandoc.go 的三级探测与 Bazaar 信任门禁见 plugin/manager.go等源码可见的调整印证了日志中每一项变更同时大量 Development 条目集中投入数据库块的模板列计算、过滤、搜索与表格视图交互奠定了后续版本 Attribute View 能力的基础。对于自托管部署的用户升级此版本可同步获得上述全部修复与增强。【免费下载链接】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),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →