核心亮点

docmd v0.9.6 带来了全方位的引擎级功能扩展与架构升级:

  • 专注模式(Zen Mode):专属右上角打印浅色/深色模式切换控制,提供极致无干扰的纯粹技术阅读空间。
  • 多位置横幅系统:支持 7 大专属展示位置(topheadersidebar-topsidebar-bottomtoc-toptoc-bottomfooter),具备层级继承覆盖、侧边栏/目录栏卡片默认常驻显示及会话持久化。
  • 标题锚点链接一键复制:点击任意标题的锚点符号(#)即可自动复制完整 URL 到剪贴板,并呈现精致的绿色对勾动效。
  • 图片灯箱重绑与现代磨砂 UI:SPA 页面切换自动重绑事件代理,配备毛玻璃背景(backdrop-filter)说明栏与独立圆形关闭按钮。
  • 标题与 SEO 架构:细粒度 layout.titleSeparator 分隔符定制、titleAppend 站点名称追加控制,以及全自动注入的 Google 标准 JSON-LD 结构化数据(OrganizationWebSiteBreadcrumbList 与自定义 ldJson)。
  • 开放知识格式(OKF)okf.yaml 中自动包含概念描述,并无缝合并 tagskeywords
  • 构建后资源声明 Hook:向插件后置处理 Hook 暴露不可变的深度冻结资源快照(report.resolvedAssets)。
  • AI 助手多轮流式替换:实时流式替换协议(meta.replace: true)与多级架构兜底合成机制。
  • 依赖安全加固:彻底修复 sharpadm-zipprotobufjs 等上游漏洞,并整合自动化构建流水线安全审计。
  • 预检批量自动安装运行时依赖:统一实现模板、插件及语义搜索依赖包的零配置批量自动安装,无需用户在 package.json 中手动声明,彻底杜绝 npm 依赖树剪枝误删问题。
  • 解析器与 Live 编辑器优化::: details 别名支持 open 展开标记、扩展容器属性支持,以及 Live 编辑器一键返回 docmd.io 首页。

专注模式与打印控制 (@docmd/ui & @docmd/template-summer)

  • 无干扰沉浸式阅读:只需在选项菜单中一次点击或使用键盘快捷键(Alt+F / Option+F),所有导航侧边栏、标头、目录、面包屑、页脚和悬浮工具均会平滑隐退。正文居中呈现并提供符合人机工程学的理想排版行宽,助力技术文档的深度阅读。
  • 右上角专属控制栏:在专注模式下,右上角浮动工具栏仅保留三项最核心的操作控制:
    1. 打印页面printer 图标,调用 window.print() 并应用专为纸张与 PDF 导出量身定制的无杂质打印样式表)。
    2. 浅色 / 深色模式切换(在专注阅读时依然能够随时无缝切换全局主题)。
    3. 退出专注模式minimize-2 图标,或按下 Esc / Alt+F 键即可瞬间恢复常规布局)。
  • 文档复制组件中的打印按钮:当启用打印时(layout.print: truelayout.optionsMenu.components.print: truelayout.copyWidgets.print: true),文档标头处将直接在“复制 Markdown”和“复制上下文”按钮旁呈现专属的“打印”按钮。
  • 专业级打印样式表:内置 @media print 规则,确保打印文档或导出为 PDF 时自动剥离所有网页导航与界面杂物,生成排版整洁、清晰美观的纸质文档。
  • 跨模板原生支持:在默认 @docmd/ui 模板与 @docmd/template-summer 现代布局中均开箱即用。
  • 灵活的选项菜单配置optionsMenu.components.focusModeoptionsMenu.components.print 可直接在 docmd.config.jsonlayout.optionsMenu.components 中轻松配置。

多位置横幅系统与继承机制 (layout.banners)

  • 7 大专属显示位置:支持在 top(顶通)、header(标头)、sidebar-top(侧栏顶部)、sidebar-bottom(侧栏底部)、toc-top(大纲顶部)、toc-bottom(大纲底部)和 footer(页脚)布置站点通告或上下文指引。
  • 卡片横幅默认常驻展示:侧边栏与目录栏卡片横幅(sidebar-topsidebar-bottomtoc-toptoc-bottom)现在默认保持常驻(dismissible: false),不会在页面跳转时消失。如需支持关闭可显式指定 dismissible: truedismissable: true
  • 拼写别名兼容:全面兼容 dismissableclosable 作为 dismissible 的属性别名。
  • 层级继承与个性化覆盖:多版本文档既可直接继承工作区或项目级通告,又允许特定版本(如 v09)独立覆盖顶部横幅,同时完好保留侧栏与页脚通告。
  • 丰富内容与会话持久化:横幅支持 Markdown 语法、自定义 Lucide 图标、跳转超链接、视觉配色变体(infotipwarningannouncement),并支持 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 Graph og:title 以及 Twitter Card twitter:title 保持百分之百精准一致。

开放知识格式(OKF)功能增强 (@docmd/plugin-okf)

  • 概念描述提取okf.yaml 中的 concepts 现在会自动提取页面的 frontmatter description 或正文开篇导言作为描述。
  • 灵活标签合并:OKF 构建器现在能无缝整合并归一化 tagskeywords 属性(不论是数组还是逗号分隔的字符串)。

构建后资源声明 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.exclude Glob 匹配,轻松排除草稿和私有笔记。
  • 自动遵循 .gitignore:内置树遍历解析器,自动从 HTML 编译与语义向量中排除 .gitignore 命中文件。

Markdown 解析器与容器增强 (@docmd/parser)

  • Details 折叠块展开标记::: details 别名现支持 open 标记,与 ::: collapsible open 体验一致。
  • 容器属性支持扩展:标签、按钮、提示框与变更日志容器全面支持 titletextlabel 属性。
  • 图标集版本升级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/transformersonnxruntime-nodesharp),docmd 会动态解析其版本,并以 --no-save 参数在单个原子批处理命令中完成全部安装。
  • 杜绝 npm 依赖树调和剪枝问题:此前在不同构建阶段分步执行 npm install --no-save 时,现代 npm (v7+) 会将此前自动安装且未记录在 package.json 中的包视为多余依赖并直接从 node_modules 中删除(例如在安装 docmd-search 时误删 @docmd/template-summer)。统一批量安装彻底解决了依赖互删问题,确保所有模板布局与资源文件完整留存。
  • 动态注册表版本感知:运行时安装会自动查询 npm 官方注册表获取最新已发布版本,有效规避预发布阶段的 ETARGET 版本不匹配错误,并在正式版本发布后自动无缝平滑拉取匹配版本。
  • 严格的安全范围与官方目录校验:对非 @docmd/* 命名空间或未收录在官方插件目录中的未知包进行强制拦截,输出清晰告警,防止自动化安装器被滥用。

社区贡献者致谢

衷心感谢开源社区成员在本次版本中提交的 Pull Request 与修复:

  • @MSOB7YY:Summer 模板移动端搜索适配、Git 弹出层响应式重构、CSS 变量桥接及 AI 输入框溢出修复(#238),以及失效链接与路径斜杠规整(#229)。
  • @w666:SPA 页面切换时图片灯箱重新绑定与 UI 现代磨砂质感优化(#234),以及标题锚点 URL 一键复制(#236)。
  • @justinTM:精确校准文档阅读时间统计算法(#231)。