docmd v0.8.3 - 工作区与增强安全性
docmd v0.8.3 是一个重大架构更新,引入了工作区,支持从单个根配置集中管理多个文档项目。此版本还优先考虑安全性和稳定性,在整个生态系统中加固了渲染,并提高了路由可靠性。
✨ 亮点
🚀 工作区架构
多项目系统已完全重新设计为工作区。你现在可以从单个根配置管理多个独立的文档项目,具有强大的新功能:
- 全局配置级联:在根目录定义
theme、menubar、navigation和logo,自动应用于所有项目。 - 高级项目切换器:一个新的纤细 UI 组件,用于在项目之间无缝导航,支持多个位置(
sidebar-top、sidebar-bottom和options-menu)。 - 灵活覆盖:项目可以在其本地配置中有选择地覆盖全局默认值。
- 向后兼容:现有的多项目配置会自动规范化到新的工作区架构。
🛡️ 增强的安全性和稳定性
此版本引入了一系列内部改进,以加固文档引擎及其插件,防止边缘情况下的渲染问题:
- 加固渲染:系统地将核心和插件中的
innerHTML使用替换为安全的 DOM API(createElement、DOMParser)。 - 通用安全审计:monorepo 故障保护流水线现在包括一个专门的、基于 AST 的安全审计,以在任何发布之前检测和阻止不安全的 DOM 模式(
innerHTML、outerHTML、document.write)。 - 改进的搜索安全性:搜索结果现在使用更可靠的渲染流水线,以确保内容始终被安全处理。
- 开发服务器隔离:增强了本地开发服务器中的目录遍历保护,以改善环境隔离。
🛠 改进和修复
自动指定索引规范化
修复了零配置自动路由器中的一个 bug:当没有 index.md 时,被指定为目录索引的文件由于尾部斜杠不匹配而无法正确渲染。引擎现在正确规范化这些路径,确保所有自动索引目录的稳定路由和正确的 index.html 生成。
路由稳定性
改进了自动路由器中的路径可预测性,以解决没有专用索引文件的目录中尾部斜杠不一致的问题。
TUI 流水线和工作区构建清晰度
改进了多项目工作区构建的终端输出(TUI)。构建日志现在在独立构建和工作区构建中都一致地结构化为严格的部分(Data Indexing、Publishing 等),防止文本重叠、循环加载动画和断开的状态消息。
UI 侧边栏调整
修复了一个布局 bug:侧边栏内的下拉菜单(版本、语言和项目切换器)会被侧边栏的边界框裁剪。这些菜单现在安全地在主内容区域上方渲染,并动态对齐到侧边栏宽度,防止它们溢出浏览器视口。
📦 包更新
- Node.js 类型:将
@types/node更新到v25.8.0。 - GitHub Actions:将 CI/CD 工作流更新到最新稳定版本,以提高可靠性。
📝 完整更新日志
🚀 新功能
- 核心引擎:引入了用于集中项目管理的
workspace架构。 - UI 组件:添加了
project-switcher局部模板和事件委托逻辑。 - 配置加载器:实现了全局默认合并和
menubar项目别名(title/path)。 - 流水线:将静态分析安全审计集成到通用故障保护 V5.0 中,以在所有包中强制执行严格的 DOM 安全标准。
🐛 Bug 修复
- Threads 插件:通过移至 DOMParser,加固了评论渲染和元数据转义。
- 搜索插件:改进了结果渲染和数据属性安全性,替换了 innerHTML。
- 图标渲染器:加固了 SVG 图标的图标属性渲染。
- 标签页组件:改进了标签导航项中的属性安全性。
- 核心引擎:修复了生成器中自动指定索引文件的路径规范化。
- 路由:从自动路由器中删除了隐式索引指定,以提高路径可预测性。
- 开发服务器:增强了静态文件服务的路径验证。
- UI 资源:从侧边栏中删除了
overflow: hidden,并重构了定位上下文以防止下拉菜单被裁剪。 - CLI / TUI:修复了工作区和开发构建期间悬挂的状态消息和未关闭的 UI 部分。
🚀 基础设施
- 重构:将工作区引擎重命名为
workspace.ts,并在整个 monorepo 中重构了术语。 - 依赖:将
@types/node从 25.7.0 升级到 25.8.0。 - 工作流:将 GitHub Actions 组更新到最新版本。