十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SiYuan v3.3.5 版本更新解析:getTag 新参数、reloadIcon 内核 API 与搜索、导出体验改进

SiYuan v3.3.5 版本更新解析:getTag 新参数、reloadIcon 内核 API 与搜索、导出体验改进 SiYuan v3.3.5 版本更新解析getTag 新参数、reloadIcon 内核 API 与搜索、导出体验改进【免费下载链接】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.3.5 版本的更新日志展开完整梳理该版本在增强、缺陷修复与开发接口三个维度的全部变更并结合内核源码深入讲解两个对插件开发者最关键的接口改动——getTagAPI 新增可选参数ignoreMaxListHint与新增的内核 API/api/ui/reloadIcon的实现原理。读完本文你可以完整了解 v3.3.5 的行为变化并掌握如何在插件或外部脚本中正确使用这两个 API。v3.3.5 更新总览v3.3.5 是一个以细节打磨为主的版本官方概览描述为“improves some details”。变更集中在四个方面浏览器剪藏扩展新增“发送到思源”Send to SiYuan右键菜单、改进“剪藏网页后打开文档”配置项、优化 HTML 中img的剪藏行为数据库属性视图体验改进关联字段的筛选设置、文档树打开的文档其数据库属性面板不显示内容的问题、数据库持续加载的问题并为数据库块新增“在文件夹中显示”Show in Folder菜单项搜索与只读模式搜索结果展示文档标题并改进标题高亮、搜索输入框关闭自动补全与拼写检查、只读模式支持预览标题图片与点击文档标签搜索多端与同步HarmonyOS 主题跟随系统浅色/深色模式、移动端编辑工具栏加高、数据同步 S3 提供商兼容性改进。增强Enhancement完整清单以下为该版本全部 25 项增强变更完整继承自官方更新日志 v3.3.5.md浏览器剪藏扩展支持右键菜单“发送到思源”Send to SiYuan改进数据库关联字段的筛选设置改进文档浏览位置browsing location的加载逻辑支持 HarmonyOS 上主题跟随系统设置切换浅色/深色模式改进间隔复习spaced repetition界面搜索结果展示文档标题改进工具栏toolbar位置计算改进折叠标题的编辑行为改进浏览器剪藏扩展“剪藏网页后打开文档”配置项增加移动端编辑工具栏的高度为数据库块新增“在文件夹中显示”Show in Folder只读模式支持预览标题图片并支持点击文档标签进行搜索改进搜索结果中文档标题的高亮效果改进块引用的导出样式移除文档内部文档块菜单中的“导入”Import项网页无权限读取剪贴板时给出提示改进块备注block memo的显示退出专注模式后滚动到对应块时取消动画效果搜索输入框关闭自动补全与拼写检查autocomplete / spellcheck改进包含子文档的空文档的导出行为改进导出 Markdown 时块引用相对路径的处理将“搜索资产内容”与“导出 PDF 或图片添加水印”两项功能由付费改为免费改进复制与剪切行为改进数据同步 S3 提供商的兼容性改进 HTML 中img的剪藏。缺陷修复Bugfix清单该版本修复了 8 个已知问题列表中块的拖拽出现错误移动端向空列表项插入图片时图片会被插入到下一段落块从文档树打开的文档其数据库属性面板不显示内容代码更新后图表chart不刷新数据库持续处于加载状态设置 KaTeX 宏定义后无法导出 PDF无法保存查找替换的类型设置相关问题的修复均对应官方 issue 记录详见 更新日志。开发Development变更清单对插件与 API 使用者最重要的三项变更getTagAPI 新增可选参数ignoreMaxListHint新增内部内核 API/api/ui/reloadIcon改进只读模式下多选块后click-blockicon事件的触发行为。下面结合内核源码对前两项做深入解析。深入解析一getTag API 新增 ignoreMaxListHint 参数getTag是获取全库标签树的核心 API路由注册于 kernel/api/router.goginServer.Handle(POST, /api/tag/getTag, model.CheckAuth, getTag)v3.3.5 在参数解析处新增了可选布尔参数ignoreMaxListHint见 kernel/api/tag.govar ignoreMaxListHint bool var app string var sortVal float64 if !util.ParseJsonArgs(arg, ret, // API getTag add an optional parameter ignoreMaxListHint util.BindJsonArg(ignoreMaxListHint, ignoreMaxListHint, false, false), util.BindJsonArg(app, app, false, false), util.BindJsonArg(sort, sortVal, false, false), ) { return } ... tags : model.BuildTags(ignoreMaxListHint, app, int(sortVal))三个参数均为可选requiredfalseignoreMaxListHint默认falseapp用于指定消息推送目标应用sort控制排序方式。MaxListCount 截断逻辑与提示消息标签列表并非无限制返回。构建标签树的BuildTags位于 kernel/model/tag.gofunc BuildTags(ignoreMaxListHintArg bool, appID string, sortVal int) (ret *Tags) { FlushTxQueue() sql.FlushQueue() ... for _, tag : range tags { *tmp append(*tmp, tag) countTag(tag, total) if Conf.FileTree.MaxListCount total !ignoreMaxListHintArg { if nil util.NotificationsCfg || util.NotificationsCfg.TagMaxList { util.PushMsgWithApp(appID, fmt.Sprintf(Conf.Language(243), Conf.FileTree.MaxListCount), 7000) } break } } ... }从源码结构看其行为是累计标签总数total当total超过Conf.FileTree.MaxListCount且未传入ignoreMaxListHint: true时推送一条“标签列表超过上限”的提示消息默认 7 秒并break截断返回传入ignoreMaxListHint: true后跳过截断判断可完整拉取全量标签树。上限值由文件树配置项maxListCount控制默认值为 512见 kernel/conf/filetree.goMaxListCount int json:maxListCount // 最大列出数量 ... MaxListCount: 512,因此对插件开发者而言这一改动的实战意义是此前在标签较多的工作区调用getTag会静默被截断在 512 条并弹出提示现在显式传入{ignoreMaxListHint: true}即可绕过截断获取完整标签树且不再触发TagMaxList提示适合用于全库标签统计、批量改名等自动化场景。同版本的listDocsByPathAPI 也已有同名参数见 kernel/api/filetree.go两者语义一致可对照使用。深入解析二新增内部内核 API /api/ui/reloadIconv3.3.5 新增了用于重载外观图标资源并广播外观配置的内核 API路由注册于 kernel/api/router.goginServer.Handle(POST, /api/ui/reloadIcon, model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, reloadIcon)处理函数位于 kernel/api/ui.gofunc reloadIcon(c *gin.Context) { ret : gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) model.LoadIcons() util.BroadcastByType(main, setAppearance, 0, , model.Conf.Appearance) }从实现看该接口做了两件事调用model.LoadIcons()重新加载工作区的外观图标如自定义图标通过util.BroadcastByType(main, setAppearance, ...)向主界面广播setAppearance事件并携带当前Conf.Appearance配置使各窗口即时应用新图标。路由中间件链为CheckAuthCheckAdminRoleCheckReadonly即需要管理员角色、且只读模式下同样放行——这与同文件中reloadThemekernel/api/ui.go的模式一致属于外观资源热重载家族接口内核重启或插件/主题资源变更后无需重启进程即可刷新前端图标。更新日志将其标注为“internal kernel API”意味着它面向内核内部与插件生态的图标刷新需求。click-blockicon 事件行为改进开发清单中的第三项是只读模式下多选块后click-blockicon事件的触发改进。该事件在前端 gutter块图标栏中派发可参见 app/src/protyle/gutter/index.ts 与 app/src/protyle/gutter/index.ts事件类型定义在 app/src/types/index.d.ts。改进后只读模式下多块选中时点击块图标的事件触发更可靠依赖该事件实现批量操作的插件/脚本受益。其余变更的落地场景说明结合本仓库的结构对若干高频关注的变更补充说明搜索结果显示文档标题搜索结果现在会带出所属文档标题并支持标题高亮涉及前端搜索模块 app/src/search/ 与内核搜索服务 kernel/api/search.go用户可更快速定位结果来源导出改进块引用样式、含子文档的空文档导出、Markdown 块引用相对路径三项修复对应内核导出链路 kernel/model/export.go 与 kernel/api/export.go直接依赖md2html与 pandoc 链路配置见 kernel/util/pandoc.goS3 同步兼容性数据同步的 S3 提供商兼容性改进位于内核同步模型 kernel/model/sync.go 相关路径使用第三方 S3 兼容对象存储的用户升级后可减少连接与鉴权相关的兼容问题功能开放“搜索资产内容”与“导出 PDF 或图片添加水印”由付费改为免费其中资产内容搜索依托内核的资产内容索引见 kernel/sql/asset_content.go 与 kernel/model/asset_content.goHarmonyOS 深色模式主题跟随系统明暗设置由内核鸿蒙适配层 kernel/harmony/kernel.go 所在平台实现支撑配合外观配置 kernel/conf/appearance.go。版本定位与参考资料v3.3.5 属于 3.3.x 系列中的细节优化版本不含破坏性变更两项 API 变更均为向后兼容的增量新增可选参数、新增内部接口现有插件无需修改即可正常运行。主要参考资料均为仓库内相对路径更新日志原文app/changelogs/v3.3.x/v3.3.5/v3.3.5.mdgetTag实现kernel/api/tag.go标签树构建与截断逻辑kernel/model/tag.gomaxListCount默认值 512kernel/conf/filetree.go/api/ui/reloadIcon路由与实现kernel/api/router.go、kernel/api/ui.goclick-blockicon事件派发app/src/protyle/gutter/index.ts适用于当前仓库所对应的 SiYuan 3.3.x 版本线升级到更高小版本时API 行为可能继续演进建议以仓库内最新 docs/API.zh-CN.md 为准核对参数说明。【免费下载链接】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),仅供参考
返回列表