v0.9.6 - 专注模式、多位置横幅、锚点复制、UI 细节升级、SEO 架构与安全加固
核心亮点
docmd v0.9.6 带来了全方位的引擎级功能扩展与架构升级:
- 专注模式(Zen Mode):专属右上角打印与浅色/深色模式切换控制,提供极致无干扰的纯粹技术阅读空间。
- 多位置横幅系统:支持 7 大专属展示位置(
top、header、sidebar-top、sidebar-bottom、toc-top、toc-bottom、footer),具备层级继承覆盖、侧边栏/目录栏卡片默认常驻显示及会话持久化。 - 标题锚点链接一键复制:点击任意标题的锚点符号(
#)即可自动复制完整 URL 到剪贴板,并呈现精致的绿色对勾动效。 - 图片灯箱重绑与现代磨砂 UI:SPA 页面切换自动重绑事件代理,配备毛玻璃背景(
backdrop-filter)说明栏与独立圆形关闭按钮。 - 标题与 SEO 架构:细粒度
layout.titleSeparator分隔符定制、titleAppend站点名称追加控制,以及全自动注入的 Google 标准 JSON-LD 结构化数据(Organization、WebSite、BreadcrumbList与自定义ldJson)。 - 开放知识格式(OKF):
okf.yaml中自动包含概念描述,并无缝合并tags与keywords。 - 构建后资源声明 Hook:向插件后置处理 Hook 暴露不可变的深度冻结资源快照(
report.resolvedAssets)。 - AI 助手多轮流式替换:实时流式替换协议(
meta.replace: true)与多级架构兜底合成机制。 - 依赖安全加固:彻底修复
sharp、adm-zip、protobufjs等上游漏洞,并整合自动化构建流水线安全审计。 - 预检批量自动安装运行时依赖:统一实现模板、插件及语义搜索依赖包的零配置批量自动安装,无需用户在
package.json中手动声明,彻底杜绝 npm 依赖树剪枝误删问题。 - 解析器与 Live 编辑器优化:
::: details别名支持open展开标记、扩展容器属性支持,以及 Live 编辑器一键返回 docmd.io 首页。
专注模式与打印控制 (@docmd/ui & @docmd/template-summer)
- 无干扰沉浸式阅读:只需在选项菜单中一次点击或使用键盘快捷键(
Alt+F/Option+F),所有导航侧边栏、标头、目录、面包屑、页脚和悬浮工具均会平滑隐退。正文居中呈现并提供符合人机工程学的理想排版行宽,助力技术文档的深度阅读。 - 右上角专属控制栏:在专注模式下,右上角浮动工具栏仅保留三项最核心的操作控制:
- 打印页面(
printer图标,调用window.print()并应用专为纸张与 PDF 导出量身定制的无杂质打印样式表)。 - 浅色 / 深色模式切换(在专注阅读时依然能够随时无缝切换全局主题)。
- 退出专注模式(
minimize-2图标,或按下Esc/Alt+F键即可瞬间恢复常规布局)。
- 打印页面(
- 文档复制组件中的打印按钮:当启用打印时(
layout.print: true、layout.optionsMenu.components.print: true或layout.copyWidgets.print: true),文档标头处将直接在“复制 Markdown”和“复制上下文”按钮旁呈现专属的“打印”按钮。 - 专业级打印样式表:内置
@media print规则,确保打印文档或导出为 PDF 时自动剥离所有网页导航与界面杂物,生成排版整洁、清晰美观的纸质文档。 - 跨模板原生支持:在默认
@docmd/ui模板与@docmd/template-summer现代布局中均开箱即用。 - 灵活的选项菜单配置:
optionsMenu.components.focusMode与optionsMenu.components.print可直接在docmd.config.json的layout.optionsMenu.components中轻松配置。
多位置横幅系统与继承机制 (layout.banners)
- 7 大专属显示位置:支持在
top(顶通)、header(标头)、sidebar-top(侧栏顶部)、sidebar-bottom(侧栏底部)、toc-top(大纲顶部)、toc-bottom(大纲底部)和footer(页脚)布置站点通告或上下文指引。 - 卡片横幅默认常驻展示:侧边栏与目录栏卡片横幅(
sidebar-top、sidebar-bottom、toc-top、toc-bottom)现在默认保持常驻(dismissible: false),不会在页面跳转时消失。如需支持关闭可显式指定dismissible: true或dismissable: true。 - 拼写别名兼容:全面兼容
dismissable与closable作为dismissible的属性别名。 - 层级继承与个性化覆盖:多版本文档既可直接继承工作区或项目级通告,又允许特定版本(如
v09)独立覆盖顶部横幅,同时完好保留侧栏与页脚通告。 - 丰富内容与会话持久化:横幅支持 Markdown 语法、自定义 Lucide 图标、跳转超链接、视觉配色变体(
info、tip、warning、announcement),并支持 sessionStorage 记住关闭状态。
UI、链接与导航体验升级
- 一键复制小节标题锚点:点击任意小节标题旁的锚点符号(
#)即可将包含 hash 的完整页面 URL 复制至剪贴板,并触发平滑的绿色对勾反馈动效。 - 图片灯箱重绑与现代视觉体验:统一采用事件委托,在单页应用(SPA)路由跳转后自动重新绑定(
docmd:page-mounted)。灯箱模态窗口采用毛玻璃(backdrop-filter)文字说明栏及精致的圆形关闭控制。 - 阅读时长计算校准:优化针对包含复杂代码块和多媒体文档的阅读时间计算与字数统计。
- 强化客户端路由器:自动剔除
href中包裹的多余引号,精准识别外部新窗口打开及安全标签,完好保留根目录访问。 - 非转义导航属性:修复模板中的属性转义(
<%-),支持正确渲染自定义属性与链接。 - 实时重载实例同步:解决开发模式下重载插件未更新
rawModule的问题,确保配置修改即时生效。
标题、导航与 SEO 架构 (@docmd/plugin-seo & @docmd/core)
- 可配置标题分隔符:可通过
layout.titleSeparator(例如" - "、" | "、" / ")自定义页面标题与站点名称之间的连接符号,并支持单页 frontmatter 覆盖。 - 站点名称追加控制:在页面 frontmatter 中设置
titleAppend: false或在布局中设置layout.titleAppend: false,可完全阻止追加站点名称,为营销页与独立文档生成干净精准的<title>。 - Google 推荐标准 JSON-LD 结构化数据:
- 根主页自动注入合规的
Organization组织架构数据。 - 自动生成包含搜索交互规范的
WebSite架构。 - 为多层级文档自动构建
BreadcrumbList面包屑数据。 - 支持通过 frontmatter 中的
ldJson属性注入任意自定义结构化数据。
- 根主页自动注入合规的
- 社交分享图谱一致性:强制保证 HTML
<title>、Open Graphog:title以及 Twitter Cardtwitter:title保持百分之百精准一致。
开放知识格式(OKF)功能增强 (@docmd/plugin-okf)
- 概念描述提取:
okf.yaml中的 concepts 现在会自动提取页面的 frontmatterdescription或正文开篇导言作为描述。 - 灵活标签合并:OKF 构建器现在能无缝整合并归一化
tags与keywords属性(不论是数组还是逗号分隔的字符串)。
构建后资源声明 Hook (@docmd/api & @docmd/core)
- 不可变资源快照:插件体系后置 Hook 现可直接获取已解析全部模板与插件静态资源的只读快照(
report.resolvedAssets),确保下游部署工具安全读取,杜绝意外篡改构建清单。
AI 助手多轮流式替换与消息操作 (@docmd/plugin-ai & docmd-assistant)
- 扩展多轮推理预算:内部对话推理轮数上限扩展至 6 轮,确保多步工具检索在最终合成前充分执行。
- 实时流式替换协议:实现
meta.replace: true流式替换协议,在多轮思考中即时流式输出 SSE Token,告别残留工具标记。 - 架构级兜底合成机制:针对非导航直接收录的概念提供全局架构兜底合成。
- 可配置消息操作:复制回答、重试、编辑问题等交互按钮可通过
config.plugins.ai.messageActions: true自由开启。
文件排除与 Git Ignore 过滤
- 项目级排除规则:支持
config.excludeGlob 匹配,轻松排除草稿和私有笔记。 - 自动遵循
.gitignore:内置树遍历解析器,自动从 HTML 编译与语义向量中排除.gitignore命中文件。
Markdown 解析器与容器增强 (@docmd/parser)
- Details 折叠块展开标记:
::: details别名现支持open标记,与::: collapsible open体验一致。 - 容器属性支持扩展:标签、按钮、提示框与变更日志容器全面支持
title、text和label属性。 - 图标集版本升级:
lucide-static图标库升级至^1.47.0。
Live 浏览器在线编辑器 (@docmd/live)
- 全生态无缝流转:顶栏返回按钮与 docmd 标志现均无缝链接回
https://docmd.io官网。 - KaTeX 预设公式修复:修复了字符串替换意外破坏行间数学公式双美元符号(
$$)的问题。
安全审计与依赖 CVE 深度加固
- 关键依赖漏洞修复:
sharp(^0.35.4):修复libheif严重安全漏洞(GHSA-rgj7-g3m4-5g8c)。adm-zip(>=0.6.0):修复路径遍历与覆盖漏洞(GHSA-955c-w567-g4pw)。protobufjs(^7.6.5):修复原型污染漏洞(CVE-2023-36665)。onnxruntime-node(^1.27.0):支持 Apple Silicon 与主流 Linux 原生预编译。
- 流水线自动化审计:
tools/prep.js强制执行pnpm audit --audit-level=high,严禁带病打包。
Summer 模板与移动端体验优化 (@docmd/template-summer & @docmd/plugin-ai)
- Summer 配色变量全面桥接:将核心与插件的 CSS 变量(
--docmd-*、--bg-color、--sidebar-bg等)无缝映射到 Summer 自身的设计令牌上,使 AI 助手、Git 提交记录、OpenAPI 及公共组件在 Summer 模板下颜色协调一致。 - 移动端顶栏搜索入口:在 900px 以下屏幕顶栏新增自适应搜索按钮,配合
Cmd/Ctrl+K和/快捷键(Escape关闭),使移动端读者能够轻松调出全宽搜索框。 - 响应式 Git 弹出层:900px 以下将提交记录弹出卡片底部贴合重构,避免小屏幕视口产生横向溢出滚动条。
- 移动端 AI 输入框自适应:为 AI 助手的提问输入框添加
min-width: 0,确保其在极窄视口下弹性自适应,不再横向撑破提问栏。
预检批量自动安装运行时依赖 (@docmd/api & @docmd/core)
- 模板、插件与语义搜索免手动安装:文档项目现在可直接在配置中指定官方模板(如
theme.template: 'summer')、扩展插件(如plugins: ['math', 'mermaid'])、搜索引擎(plugins.search.semantic: true)或渲染引擎(engine: 'rust'),无需在项目的package.json中手动声明或安装。 - 预检发现与单次原子级批量安装:在多项目工作区(
buildWorkspace)和单项目站点(buildSite)开始编译前,docmd 会自动进行预检扫描。一旦检测到node_modules中缺失所需运行时依赖或 Peer 依赖(docmd-search、@huggingface/transformers、onnxruntime-node、sharp),docmd 会动态解析其版本,并以--no-save参数在单个原子批处理命令中完成全部安装。 - 杜绝 npm 依赖树调和剪枝问题:此前在不同构建阶段分步执行
npm install --no-save时,现代 npm (v7+) 会将此前自动安装且未记录在package.json中的包视为多余依赖并直接从node_modules中删除(例如在安装docmd-search时误删@docmd/template-summer)。统一批量安装彻底解决了依赖互删问题,确保所有模板布局与资源文件完整留存。 - 动态注册表版本感知:运行时安装会自动查询 npm 官方注册表获取最新已发布版本,有效规避预发布阶段的
ETARGET版本不匹配错误,并在正式版本发布后自动无缝平滑拉取匹配版本。 - 严格的安全范围与官方目录校验:对非
@docmd/*命名空间或未收录在官方插件目录中的未知包进行强制拦截,输出清晰告警,防止自动化安装器被滥用。
社区贡献者致谢
衷心感谢开源社区成员在本次版本中提交的 Pull Request 与修复: