mdPress 产品路线图(Roadmap)

July 24, 2026 · View on GitHub

English

最后更新:2026-07-23 维护者:mdPress 产品团队


版本规划总览

v0.1.0 ██████████████████████████████████████████ 已发布
v0.2.0 ██████████████████████████████████████████ 已发布(2026-03-19)
v0.3.0 ██████████████████████████████████████████ 已发布(2026-03-19)
v0.3.1 ██████████████████████████████████████████ 已发布(2026-03-19)
v0.4.0 ██████████████████████████████████████████ 已发布(2026-03-19)
v0.4.1 ██████████████████████████████████████████ 已发布(2026-03-19)
v0.4.2 ██████████████████████████████████████████ 已发布(2026-03-19)
v0.4.3 ██████████████████████████████████████████ 已发布(2026-03-19)
v0.5.0 ██████████████████████████████████████████ 已发布(2026-03-20)
v0.5.1 ██████████████████████████████████████████ 已发布(2026-03-21)
v0.5.2 ██████████████████████████████████████████ 已发布(2026-03-22)
v0.5.3 ██████████████████████████████████████████ 已发布(2026-03-23)
v0.5.4 ██████████████████████████████████████████ 已发布(2026-03-23)
v0.6.0 ██████████████████████████████████████████ 已发布(2026-03-23)
v0.6.1 ██████████████████████████████████████████ 已发布(2026-03-24)
v0.6.2 ██████████████████████████████████████████ 已发布(2026-03-25)
v0.6.3 ██████████████████████████████████████████ 已发布(2026-03-25)
v0.6.4 ██████████████████████████████████████████ 已发布(2026-03-26)
v0.6.5 ██████████████████████████████████████████ 已发布(2026-03-27)
v0.6.6 ██████████████████████████████████████████ 已发布(2026-03-27)
v0.6.7 ██████████████████████████████████████████ 已发布(2026-03-27)
v0.6.8 ██████████████████████████████████████████ 已发布(2026-03-28)
v0.6.9 ██████████████████████████████████████████ 已发布(2026-03-28)
v0.7.0 ██████████████████████████████████████████ 已发布(2026-03-28)
v0.7.1 ██████████████████████████████████████████ 已发布(2026-03-29)
v0.7.2 ██████████████████████████████████████████ 已发布(2026-03-30)
v0.7.3 ██████████████████████████████████████████ 已发布(2026-04-01)
v0.7.4 ██████████████████████████████████████████ 已发布(2026-04-04)
v0.7.5 ██████████████████████████████████████████ 已发布(2026-04-06)
v0.7.6 ██████████████████████████████████████████ 已发布(2026-04-13)
v0.7.7 ██████████████████████████████████████████ 已发布(2026-04-15)
v0.7.8 ██████████████████████████████████████████ 已发布(2026-04-18)
v0.7.9 ██████████████████████████████████████████ 已发布(2026-04-19)
v0.7.10 ██████████████████████████████████████████ 已发布(2026-05-08)
v0.7.11 ██████████████████████████████████████████ 已发布(2026-06-17)
v0.7.12 ██████████████████████████████████████████ 已发布(2026-07-05)
v0.7.13 ██████████████████████████████████████████ 已发布(2026-07-05)
v0.7.14 ██████████████████████████████████████████ 已发布(2026-07-10)
v0.7.15 ██████████████████████████████████████████ 已发布(2026-07-22)
v0.8.0 ██████████████████████████████████████████ 已发布(2026-07-23)
v0.8.1 ██████████████████████████████████████████ 已发布(2026-07-23)
v0.8.2 ██████████████████████████████████████████ 已发布(2026-07-24)
v1.0.0 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 规划中(目标 2027-Q1)

v0.1.0 — 基础 Markdown → PDF(已发布)

发布日期:2026-03 主题:核心构建管线

v0.1.0 确立了 mdPress 的基础架构,实现了从 Markdown 到 PDF 的完整转换流程。

已完成功能

功能说明
Markdown → PDF 转换基于 Chromium 渲染引擎,输出质量媲美专业排版
GFM 全语法支持表格、任务列表、脚注、删除线、自动链接
book.yaml 配置系统书籍元数据、章节列表、样式配置、输出选项
自动目录生成(TOC)从标题层级构建,支持页码和超链接
封面页生成书名、作者、版本、日期、封面图片、背景色
代码语法高亮基于 chroma,100+ 编程语言,多种配色方案
多章节合并配置文件定义章节顺序,支持嵌套子章节
主题系统内置 technical、elegant、minimal 三套主题
图片处理本地和远程图片自动 base64 嵌入
交叉引用图表编号 {#fig:id} 和引用 {{ref:id}}
页眉页脚支持模板变量(页码、章节标题、书名)
mdpress init项目初始化,生成示例配置和 Markdown 文件
mdpress themes主题列表和管理
多页面尺寸A4、A5、Letter、Legal、B5
自定义 CSS支持外部 CSS 文件覆盖样式
GLOSSARY.md术语表支持,自动高亮术语并生成附录
CI/CD 集成GitHub Actions 工作流配置

v0.2.0 — 多格式输出与易用性(已发布)

发布日期:2026-03-19 主题:降低使用门槛,扩展输出能力

v0.2.0 将 mdPress 从"PDF 生成工具"升级为"多格式图书构建平台",重点提升易用性和生态兼容性。

已完成功能

功能优先级说明
HTML 单页输出P0--format html 生成自包含单页 HTML,作为最稳定的 HTML 构建路径
GitHub 仓库源支持P0直接从 GitHub 仓库 URL 拉取内容并构建,无需本地 clone
SUMMARY.md 兼容P0支持 GitBook 风格章节结构,并持续收敛真实项目迁移兼容性
零配置自动发现P0无 book.yaml 时自动扫描 .md 文件,按约定规则排序构建
serve 实时预览P0本地 HTTP 服务器 + 文件监听 + WebSocket 自动刷新
site 输出收口P0明确 htmlservesite 三条路径的职责,并补齐主流程能力
doctor 命令P1提供环境和项目可构建性的快速检查

改进

改进项说明
--format 参数支持 pdfhtml 及逗号分隔的多格式同时输出
--output 参数build 提供统一的输出路径或前缀控制
错误信息优化所有错误附带修复建议
CI/CD 模板提供 GitHub Actions 和 GitLab CI 的构建模板

里程碑

2026-03-19  正式发布 v0.2.0 ✓

v0.3.0 — ePub 输出与插件系统(已发布)

发布日期:2026-03-19 主题:扩展输出格式,开放扩展能力

v0.3.0 将 mdPress 扩展为真正的多格式出版平台,引入了插件架构和对数学公式、图表的一等支持。

已完成功能

功能优先级说明
ePub 3 输出P0标准 ePub 3 电子书,支持封面、目录、元数据
插件系统P0完整插件生命周期,支持外部进程加载和钩子注册
KaTeX 数学公式P1行内 ($...$) 和块级 ($$...$$) LaTeX 数学公式,基于 KaTeX 渲染
Mermaid 图表P1所有 HTML 输出中原生 Mermaid 渲染;validate 自动进行 Mermaid 语法检查
GitBook 迁移工具P1mdpress migrate 将 GitBook 项目转换为 mdPress 格式
多格式 all 快捷方式P1--format all 一条命令构建 PDF、HTML、站点和 ePub
GitHub Actions 模板P2预构建的 CI 自动化构建工作流

v0.3.1 补丁(2026-03-19)

修复说明
CJK PDF 字体嵌入注入 @font-face + file:// URL 规则,解决 Chrome 无法嵌入 CJK 字形的问题
TOC 深度控制新增 output.toc_max_depth 配置项,控制目录标题层级
智能输出文件名根据书籍标题自动生成输出文件名,不再默认 output.pdf
正则表达式性能将 crossref、glossary、markdown、image 中的正则提升为包级变量
Git 作者回退未指定作者时自动读取 git config user.name

v0.4.0 — Typst 后端与增量编译(已发布)

发布日期:2026-03-19 主题:性能优化,零依赖 PDF

已完成功能

功能优先级说明
Typst 后端P2用 Typst 替代 Chromium 生成 PDF,实现真正的零外部依赖
增量编译P2缓存已编译章节,仅重新编译修改过的文件
并行构建P2多章节并行解析和渲染,利用多核 CPU
PDF 水印P2支持文字水印,支持透明度控制
自定义页边距P2支持四边独立设置,多单位支持
PDF 书签P2从标题层级自动生成书签,增强导航体验
构建缓存P2基于文件 hash 的缓存系统,避免重复构建
PlantUML 支持P2自动检测和渲染代码块中的 PlantUML 图表

Typst 后端技术方案

Typst 是用 Rust 编写的新一代排版系统,与 Chromium 方案对比如下:

维度Chromium 方案(现有)Typst 方案(v0.4.0)
外部依赖需要 Chrome/Chromium无(内嵌或调用 typst CLI)
排版质量优秀(Web 标准)优秀(专业排版)
中文支持优秀优秀
构建速度中等(启动浏览器有开销)快(原生编译)
二进制大小小(不含 Chromium)可能增大(含 Typst 库)
CSS 兼容完整需要适配 Typst 样式语法

CLI 方向(已实现):--format pdf 使用 Chromium(默认 PDF 后端),--format typst 使用 Typst 作为替代 PDF 后端。

增量编译方案

.mdpress-cache/
├── manifest.json    # 文件 hash → 编译产物映射
├── ch01.html        # 缓存的章节 HTML
├── ch02.html
└── ...

增量编译流程:

  1. 计算每个章节文件的 SHA-256 hash
  2. 对比 manifest.json 中的缓存记录
  3. 仅重新编译 hash 变化的章节
  4. 合并缓存和新编译的章节
  5. 生成最终输出

预期效果:500 页图书修改单个章节后,重建时间从 120 秒降至 10 秒以内。


v0.5.0 — PlantUML 本地渲染与测试体系建设(已发布)

发布日期:2026-03-20 主题:离线能力与测试覆盖基础

v0.5.0 修复了企业用户最关键的痛点(离线 PlantUML 渲染),修复了 Release CI 流水线,并建立了 golden test 框架以防止后端回归。

已交付功能

功能优先级说明
PlantUML 本地渲染P1renderLocal() 调用本地 plantuml CLI 或 plantuml.jar;通过 plantuml.use_local: true 启用
Golden test 框架P2tests/golden/ 快照回归测试;通过 -update 参数重新生成基准文件
doctor 检测 PlantUMLP1mdpress doctor 检测本地 PlantUML 可用性并输出安装提示
CI Node.js 24 升级P0goreleaser-action@v7codecov-action@v5,赶在 2026-06-02 强制截止日前完成
Release CI Docker 修复P0删除残留的 Docker Hub 登录步骤;镜像仅发布至 GHCR

测试覆盖里程碑

v0.4.3v0.5.0提升
internal/plantuml54.8%75%++20 pp
internal/source41.2%62%++21 pp
cmd47.7%60%++12 pp
整体62.3%≥ 68%+6 pp

v0.5.1 — 侧边栏导航与上下文修复(已发布)

发布日期:2026-03-21 主题:UI 优化和 bug 修复

v0.5.1 提供了手风琴式侧边栏导航改进,并修复了影响 PlantUML 渲染、SUMMARY.md 标题处理和迁移工作流的关键上下文传播问题。

已完成功能

功能优先级说明
手风琴式侧边栏导航P1展开章节时自动收起同级兄弟节点,提供更清爽的 GitBook 式导航体验
平滑的侧边栏过渡效果P2CSS 过渡升级至 Material Design 缓动曲线,展开/收起动画体验更佳

修复项

修复优先级说明
PlantUML 上下文传播P0使用调用者提供的 context 替代 context.Background(),确保构建超时和取消信号正确传播
通用 SUMMARY.md 标题过滤P0现已正确识别"在线阅读"、"Read Online"、"Contents" 等通用导航标题并跳过
book.json 标题优先级P1book.json 提供标题时,在自动发现时不再被 README.md 推理覆盖
README 中缺失 migrate 命令P1migrate 命令添加到中英文 README 的"All Commands"表格中
GitLab CI lint 版本不匹配P2将 golangci-lint 从 v2.1 升级至 v2.11.3 以匹配 GitHub Actions
完成命令中的拼写错误P2修正注释中 behaviourbehavior

v0.5.2 — Windows 兼容性与 CI 修复(已发布)

发布日期:2026-03-22 主题:跨平台稳定性和 CI 可靠性

v0.5.2 通过 PATHEXT 插件可执行文件解析改进 Windows 支持,修复跨平台测试失败问题,并将所有 GitHub Actions 升级至最新主版本以加固 CI 供应链。

已完成功能

功能优先级说明
Windows 插件可执行文件解析P1无扩展名的插件路径自动按 PATHEXT 尝试 .exe.bat.cmd
搜索焦点样式和无障碍焦点陷阱P2改进键盘无障碍体验,增加可见焦点指示器

修复项

修复优先级说明
跨平台测试路径P0t.TempDir() 替换硬编码 Unix 路径,修复 Windows CI 失败
Codecov action 参数名P1file 修正为 files 以兼容 codecov-action@v5
Dependabot 配置语法P1将无效的 pull-requests.max-number 修正为 open-pull-requests-limit
ePub 测试资源泄漏P2补充缺失的 reader.Close()

v0.5.3 — 代码块修复与文档更新(已发布)

发布日期:2026-03-23 主题:bug 修复和文档对齐

v0.5.3 修复了站点输出中关键的代码块渲染问题,并更新了项目文档。

修复项

修复优先级说明
代码块文本不可见P0Chroma 语法高亮器在 <pre> 标签上注入了内联 style="background-color:#fff",导致代码块不可读。修复移除了 Chroma 在后处理中的内联样式
站点代码块配色方案P1将站点输出的代码块从深色主题改为浅色主题(#f6f8fa 背景、#24292e 文本),与 Chroma 的"github"调色板匹配

变更

变更说明
文档更新更新 ARCHITECTURE 文档版本,修复 ROADMAP 版本顺序,在 README 表格中添加 Typst 格式
删除过时文档删除了引用 v0.4.3 的过时 NEXT-STEPS.md 规划文档

v0.5.4 — 站点增强与 Bug 修复(已发布)

发布日期:2026-03-23 主题:丰富站点功能,安全加固

v0.5.4 是站点输出格式的重大功能更新,新增客户端全文搜索、暗色模式、面包屑导航、页面目录、代码复制按钮和 SEO 优化。同时修复了 ePub 资源泄漏、UTF-8 截断和开发服务器 symlink 路径穿越漏洞等问题。

新增功能

功能优先级说明
全文搜索P0客户端搜索,支持 Cmd/Ctrl+K 快捷键、键盘导航和结果高亮
暗色模式P0三态主题切换器(亮色/暗色/跟随系统),状态持久化
SEO meta 标签P1自动生成描述和 Open Graph 标签
Sitemap 生成P1sitemap.xml 支持搜索引擎索引
面包屑导航P1页面层级路径显示
页面目录侧栏P1"本页内容"侧栏,基于 IntersectionObserver 滚动高亮
代码复制按钮P1悬停显示复制按钮,集成剪贴板 API
侧边栏折叠P2桌面端侧边栏可折叠,状态持久化
图片懒加载P2自动为所有 <img> 标签添加 loading="lazy"
CJK 标题 IDP1自定义标题 ID 生成器,保留 Unicode 字符

修复项

修复优先级说明
ePub zip writer 资源泄漏P1所有错误路径添加 defer w.Close()
SVG 封面 UTF-8 截断P1用 rune 截断替代字节截断
SVG XML 属性转义P2补充 "' 实体转义
Symlink 路径穿越P1serve 路径检查添加 filepath.EvalSymlinks()
滚动行为回归P2修复三元表达式始终返回 'auto' 而非 'smooth'
描述 meta 截断P2使用 rune 截断保护多字节字符

v0.6.0 — 自升级、Doctor 增强与用户手册

发布日期:2026-03-23 主题:生产就绪基础

v0.6.0 是从功能驱动开发(v0.1–v0.5)向生产就绪 v1.0.0 过渡的关键版本。

交付功能

功能优先级说明
mdpress upgrade 命令P0从 GitHub 发布自动升级,支持平台检测、SHA-256 校验和验证、--check 检查模式
mdpress doctor 增强P0新增六项环境检查:Go 版本(≥1.26)、Git 可用性、网络连接、磁盘空间、CJK 字体检测、插件健康检查;新增 --verbose 标志
中英双语用户手册P0完整的中英双语用户手册(60+ Markdown 文件),使用 mdPress 自身构建
ParseVersionPart 工具函数P2可复用的版本字符串解析器,供 doctorupgrade 命令使用

改进项

改进优先级说明
路径穿越防护加固P1LocalSource.Prepare() 现在验证子目录路径以防止穿越攻击
跨平台路径处理P1HasLangsFile 中用 filepath.Join 替代字符串拼接,修复 Windows 兼容性
文档更新P2README 命令表(中英文)和 COMMANDS 文档中添加 upgrade 命令

修复项

修复优先级说明
Lint 清理P2移除 cmd/*_test.go 中重复的测试辅助函数和未使用的导入
中文截断测试修复P2增大输入长度以正确覆盖 ≥160 字符的截断路径

测试

  • 新增 1,500+ 行测试代码,涵盖 12 个文件
  • upgrade 命令完整覆盖:版本比较、资源选择、下载和二进制替换
  • 扩展 doctorcmdthemesquickstartvalidate 测试
  • filecjkimage 包的综合工具函数测试
  • 扩展插件生命周期和错误路径测试

v0.6.1 — Bug 修复与文档完善

发布日期:2026-03-24 主题:质量与一致性

v0.6.1 是补丁版本,修复了 v0.6.0 中发现的 Bug 并完善了文档覆盖。

修复项

修复优先级说明
Typst 超时配置P0compileToPDF() 现在使用配置的 g.timeout 而非硬编码 120 秒
Typst 格式验证P0validFormats 中添加 typst,使 book.yaml 可接受 typst 输出格式
Git 分支名验证P1分支名正则要求首字符为字母或数字,防止 CLI 标志注入
ePub 清理错误处理P1构建失败时 os.Remove 错误现在记录日志而非静默忽略
错误信息一致性P2parser.gocrossref.go 中残余中文错误信息替换为英文
GoReleaser Homebrew URL 大小写P2将 Homebrew Cask 中的 mdPress 更正为 mdpress
Gosec 规则排序P2.golangci.yml 中 gosec 规则排除项按数字升序排列

文档

变更说明
Doctor 命令文档更新 doctor.mddoctor_zh.md,补充所有 v0.6.0 环境检查项
README 添加用户手册链接在中英文 README 中添加双语用户手册链接
COMMANDS 添加 version 命令在命令矩阵和层级图中补充 version 命令
ROADMAP 更新补充 v0.6.0 和 v0.6.1 发布说明
.gitignore 增强添加 .agent/.env 和凭证文件忽略规则

v0.6.2 — 安全加固与 Bug 修复

发布日期:2026-03-25 主题:安全与正确性

v0.6.2 是安全加固版本,对预览服务器、升级命令、图片处理和主题 CSS 进行了注入和穿越攻击防护,同时修复了大量解析器、缓存和渲染 Bug。

安全修复

修复优先级说明
WebSocket Origin 验证P0预览服务器验证 Origin 头与 Host 匹配,防止跨域 WebSocket 劫持
升级 URL 域名验证P0二进制下载时验证 URL 指向 github.com*.githubusercontent.com
绝对图片路径拒绝P1resolveLocalImagePath 拒绝绝对路径,防止读取任意本地文件
主题 CSS 注入防护P1主题颜色和字体值在 CSS 输出前验证是否包含不安全字符
CSS 颜色模式收紧P1rgb()/hsl() 模式限制括号内容为安全字符
安全响应头P2预览服务器设置 X-Content-Type-Options: nosniffX-Frame-Options: DENY

修复项

修复优先级说明
章节缓存键不匹配P0缓存键使用与解析器相同的回退逻辑,防止过期缓存命中
PlantUML 编码P0使用正确的原始 deflate 和 PlantUML 自定义 6 位编码字母表
标题 ID 竞态条件P0每次 Transform 调用使用本地 usedIDs map 而非共享状态
book.json 路径穿越P1safeJoin() 拒绝绝对路径和逃逸路径
Typst 字体大小回退P1解析失败时回退为 12pt 而非不可见的 0.0pt
术语表双重包装P1重叠术语不再生成嵌套 <span> 标签
UTF-8 标题大写P1使用 []rune + unicode.ToUpper 处理多字节首字符
Typst 模板注入P1包含 {{ }} 的用户内容不再 panic 或注入代码

变更

变更说明
消除三次配置加载doctor 命令一次加载配置后传递使用
移除死代码删除未使用的 CacheStatistics、空操作 convertCodeSpans 和重复 fileExists
术语表正则提升skipPattern 在包级别编译一次
搜索索引优化utf8.RuneCountInString() 替换 len([]rune(...))

文档

变更说明
validate 命令补充 --report 标志文档
completion 命令--no-descriptions 支持从 bash/zsh 更正为 bash/fish
build 命令补充 --format all 展开为 pdf,html,site,epub,typst 的说明
upgrade 命令移除虚构的退出码章节

v0.6.3 — 安全加固与搜索重设计

发布日期:2026-03-25 主题:安全性与搜索用户体验

v0.6.3 针对 SSRF、XSS、路径遍历和模板注入进行安全加固,同时将搜索 UI 重新设计为右侧面板。

安全修复

修复优先级说明
PlantUML SSRF 防护P0通过 DNS 解析验证 PlantUML 服务器 URL 是否指向私有/回环地址
Mermaid XSS 修复P1在 Mermaid 代码块中反转义后重新转义 HTML 实体
EPUB 路径遍历防护P1拒绝绝对路径并验证相对路径不会逃逸源目录
Tar 路径遍历防护P1升级解压时跳过包含 .. 的条目
模板注入防护P1清除 Typst 元数据和尺寸字段中的 {{}}
配置字段验证P1验证 font_familyfont_sizecode_theme 防止注入
自定义 CSS 大小限制P2限制自定义 CSS 文件读取上限为 1 MB
URL 方案验证P2openBrowser 仅允许 httphttps 方案

问题修复

修复优先级说明
子页面搜索失效P0搜索索引改用绝对路径获取
搜索结果链接错误P0搜索结果链接使用绝对路径
边界检查差一错误P1修复 EPUB 和图片正则的子匹配访问
未检查的类型断言P1PlantUML 缓存使用 comma-ok 模式
GitHub 临时目录泄漏P1验证失败时清理临时目录

变更

变更说明
搜索重设计为右侧面板搜索以 GitBook 风格的右侧面板打开
防御性切片复制Plugins() 返回副本防止外部修改
协程 panic 恢复图片预取协程添加 panic 恢复

v0.6.4 — PDF 渲染修复

发布日期:2026-03-26 主题:PDF 图片和图表渲染

v0.6.4 修复了 PDF 渲染中的关键问题,包括图片缺失、Mermaid 图表文字丢失、SVG 徽章文字不可见和布局问题。

问题修复

修复优先级说明
PDF 图片未渲染P0PDF 生成前移除 loading="lazy" 属性
Mermaid 图表文字缺失P0移除破坏箭头和标签的 HTML 重转义
PDF 中 Mermaid 数字/拉丁字符缺失P1在 Mermaid SVG CSS 规则中将拉丁字体置于 CJK 字体之前
PDF 中 SVG 徽章 CJK 文字缺失P1内联包含 CJK 字符的 SVG 并嵌入字体
徽章图片纵向堆叠P1block display 仅应用于独立图片
mdPress 文档被注入 PDFP1自动发现时过滤 CHANGELOG.md 等文件
封面版本号默认为 1.0.0P1从 book.json 读取版本号,以 git describe 作为后备
封面重复品牌标识P2移除封面内联品牌页脚

v0.6.5 — 安全加固与问题修复

发布日期:2026-03-27 主题:纵深安全防御与正确性

v0.6.5 在插件系统、Mermaid 渲染、Typst 后端、升级管道和 git 集成中新增五项安全加固措施,并修复了 GitBook 迁移错误和搜索索引性能问题。

安全修复

修复优先级说明
插件路径遍历防护P0解析到项目目录外的相对插件路径现已被拒绝
Mermaid XSS 纵深防御P1HTML 反转义后清除 Mermaid 图表中的 <script> 标签和事件处理属性
Typst 输出捕获限制P1typst compile 的标准输出/错误限制为 1 MB,防止恶意文档导致 OOM
升级重定向 SSRF 防护P1在升级下载期间验证 HTTP 重定向目标,防止 DNS 投毒导致 SSRF
Git 命令超时P1为自动发现中的 git describegit config 调用添加 5 秒超时

问题修复

修复优先级说明
GitBook 插件迁移错误P1迁移 book.json 时跳过 GitBook npm 插件,避免生成路径缺失的无效配置
搜索索引标题片段P1每个章节只计算一次 rune 切片,修复多标题章节的 O(N*M) 分配问题
内联 SVG 徽章高度P2修复内联 SVG 与 <img> 渲染之间的徽章高度不一致

变更

变更说明
移除同义反复测试移除产生虚假覆盖率的测试

v0.6.6 — 章节标题去重与 SUMMARY 解析

发布日期:2026-03-27 主题:渲染正确性

v0.6.6 修复了 PDF 输出中章节标题重复的问题,并改进 SUMMARY.md 解析以正确处理内联链接。

问题修复

修复优先级说明
PDF 章节标题重复P0使用 h2-h6 的子章节标题被重复,因去重逻辑仅匹配 h1;现已匹配所有标题级别
SUMMARY.md 解析拾取内联链接P0导航文本行被错误解析为章节条目;现仅接受包含直接链接的列表项

已交付功能

功能优先级说明
标题不匹配警告P1当 SUMMARY.md 标题与文件首标题不同时发出 book-title-mismatch 警告;渲染输出以 SUMMARY 标题为准

v0.6.7 — PDF 书签与 Mermaid 渲染修复

发布日期:2026-03-27 主题:PDF 渲染正确性与安全

v0.6.7 修复了封面标题导致的 PDF 重复书签、居中布局下 README 标题去重,并确保 Mermaid 图表在 PDF 生成前完全渲染。

问题修复

修复优先级说明
封面标题重复 PDF 书签P0封面标题从 <h1> 改为样式化 <div>,防止 Chrome 大纲生成器创建与首章重复的书签
README 标题去重处理包裹标题P0stripDuplicateLeadingH1 现可在标题前有非标题 HTML 时找到首标题
PDF 中 Mermaid 图表完全渲染P0在 Chrome 打印 PDF 前添加最多 15 秒的等待步骤

安全修复

修复优先级说明
Chrome CLI 输出捕获限制P1Chrome CLI 后备方案通过 chromeLimitedWriter 将输出限制为 10 MB
符号链接感知的图片路径检查P1resolveLocalImagePath 和 EPUB 在检查前通过 filepath.EvalSymlinks 解析符号链接
Git 参数注入加固P1discover.go 中的 git 命令已验证防止参数注入

v0.6.8 — 线程安全与测试覆盖

发布日期:2026-03-28 主题:正确性与测试覆盖

v0.6.8 改进了 Markdown 解析器线程安全、升级管道的错误包装和 GitHub 源加固,并新增校验和验证与 SSRF 重定向验证的全面测试套件。

改进

改进优先级说明
Markdown 解析器线程安全P1移除不必要的 sync.RWMutex;标题通过局部状态收集,使并发 Parse 调用无需加锁
升级错误包装P2内部错误使用 %w 替代 %v,支持调用者解包
GitHub 源加固P1读取 .gitattributes 前检查 stat + 大小,避免读取超大文件

测试

测试说明
校验和验证测试升级二进制校验和验证的全面测试套件
SSRF 重定向验证测试PlantUML 重定向目标验证的测试覆盖

v0.6.9 — 重复书签修复

发布日期:2026-03-28 主题:PDF 渲染正确性

v0.6.9 通过无条件剥离章节内容中的前导 <h1> 消除 PDF 输出中的重复 H1 书签,因为模板已将 SUMMARY 标题渲染为章节标题。

问题修复

修复优先级说明
消除 PDF 中的重复 H1 书签P0无条件剥离章节内容中的前导 <h1>,因模板已将 SUMMARY 标题渲染为 <h1 class="chapter-title">。此前仅在文本完全匹配时移除

v0.7.0 — 站点体验增强(已发布 2026-03-28)

主题:站点输出用户体验改进

已交付功能

功能优先级说明
上一页/下一页导航P0页面底部添加前后章节导航按钮,方便连续阅读
"使用 mdPress 构建" 品牌标识P1站点输出底部添加低调的品牌链接;英文书籍显示 "Built with mdPress"
可折叠侧边栏P2侧边栏中含子页面的章节可展开/折叠

延期至后续版本

功能优先级说明
侧边栏章节分组P2支持在 book.yaml 中用 parts 将章节分组显示(如"第一部分:入门篇"),支持折叠

v0.7.1 — 问题修复、安全与 Typst 提升

发布日期:2026-03-29 主题:正确性、安全与格式提升

v0.7.1 修复了标题正则匹配、Typst 代码跨度转换和 SVG 内联的渲染错误,加固了 PlantUML 指令解析,移除了 serve 调试面板中的内部路径,并将 Typst 提升为一级输出格式。

已交付功能

功能优先级说明
Typst 提升为一级输出格式P0Typst PDF 生成可通过 --format typst 使用
migrate 命令 force 标志P1添加 --force 标志在迁移时覆盖已有文件
init 命令文件名清理P1项目初始化时对文件名进行清理
升级后安装验证P1升级安装后验证二进制完整性
站点 UX 功能P1添加选中高亮、待处理导航和改进的客户端导航

安全修复

修复优先级说明
PlantUML 指令和 SVG 清理加固P0加强 PlantUML 指令解析和 SVG 内容清理
serve 调试面板移除内部路径P1移除 serve 调试面板输出中的内部文件系统路径

问题修复

修复优先级说明
标题正则正确匹配标签P0修复标题正则以匹配正确的标题级别标签
Typst 转换器跳过代码跨度P0防止内联代码跨度中进行 Typst 标记转换
嵌套 SVG 内联P1修复包含嵌套 SVG 元素的 SVG 内联
Typst 构建器使用原始 MarkdownP1修复 Typst 构建器传递原始 Markdown 而非 HTML
Windows 测试路径分隔符P2修复 Windows 兼容性的路径分隔符处理

改进

改进说明
Doctor 上下文和符号链接处理改进 doctor 命令的上下文报告和符号链接感知检查
PDF 生成器错误处理检查 PDF 生成器中 tmpFile.Close 的错误

v0.7.2 — Go 惯用法现代化与 CI 修复

发布日期:2026-03-30 主题:代码现代化与跨平台可靠性

v0.7.2 在整个代码库中现代化 Go 惯用法,从已弃用的 API 迁移到现代等价物,并修复了 Windows CI 测试失败。

变更

变更说明
现代化 Go 惯用法os.IsNotExist 迁移为 errors.Is(err, fs.ErrNotExist)sort 迁移为 slices 包,== io.EOF 迁移为 errors.Is
移除冗余辅助函数slices.Equal 替换自定义 equalIntSlices

问题修复

修复优先级说明
PDF 生成器过时错误消息P1修复引用旧函数名的错误消息
Windows CI 测试失败P0修复测试中 Windows 兼容性的路径处理

改进

改进说明
测试断言加强为 server 和 plugin 测试中的返回值添加缺失的断言
文档同步更新 ARCHITECTURE、ROADMAP、命令文档和手册版本

v0.7.3 — 安全加固与 Go 1.26 升级(已发布)

发布日期:2026-04-01 主题:安全加固与依赖更新

v0.7.3 修复了 SSRF 绕过向量,将 Go 工具链升级至 1.26.1,并在整个代码库中现代化了八进制字面量和结构化日志。

安全修复

修复优先级说明
阻止 0.0.0.0/8 范围的 SSRFP0防止对 Linux 上可达 localhost 的"本网络"地址发起服务端请求
防护 SUMMARY.md 解析 TOCTOUP1检测文件在 stat 和读取之间增长导致的静默截断

变更

变更说明
升级 Go 至 1.26.1更新最低 Go 版本和所有依赖
使用显式八进制字面量0644/0755 迁移为 0o644/0o755
使用 slog.Any 记录错误在结构化日志中保留错误类型信息
更新 CI 至 Go 1.26升级 GitHub Actions、GitLab CI 和 Docker 至 Go 1.26
更新 Dockerfile 至 Alpine 3.23使用最新 Alpine 基础镜像

问题修复

修复优先级说明
处理延迟清理错误P2正确确认延迟清理调用中被丢弃的错误返回值
修复 CI 缓存路径一致性P2在 CI 文档示例中添加 MDPRESS_CACHE_DIR 环境变量
修复过时的插件注册表引用P2删除迁移文档中不存在的"插件注册表"链接

v0.7.4 — 安全加固与依赖更新(已发布)

发布日期:2026-04-04 主题:纵深防御安全加固、依赖升级、样式一致性

v0.7.4 加固了 HTML/CSS 清理器以防御高级 XSS 向量,消除了文件操作中的 TOCTOU 竞争条件,升级了 KaTeX 和 chroma,并为 standalone 和 EPUB 输出补齐了 figure/figcaption 样式。

安全修复

修复优先级说明
加固 Mermaid 清理器正则P0修复 dangerousTagPattern 处理引号属性中的 >;扩展 jsURIPattern 替换整个 href/src 属性
阻止 CSS 中的 vbscript/协议相对 URLP1在 CSS URL 拦截器中添加 vbscript:;检测 //evil.com 协议相对 URL
修复构建清单 TOCTOUP1io.LimitReader 替换 loadManifestcomputeChapterHash 中的 stat+read
CopyFile 添加 LimitReaderP1用有界读取防御 stat 和 copy 之间的文件增长
所有 HTTP 客户端使用 SSRF 安全传输P1为 doctor 和 upgrade 命令应用 SSRFSafeTransport
SVG2 href 清理P2在 PlantUML SVG 输出中剥离裸 href 和单引号外部 URL

变更

变更说明
升级 KaTeX 至 0.16.44从 0.16.11 更新所有 CDN URL
升级 chroma 至 v2.23.1最新语法高亮器,改进语言支持
升级 codecov-action 至 v6更新 CI 覆盖率上传 action
standalone HTML 中限定 KaTeX 作用范围目标改为 #main-content,避免将侧边栏文本当作数学公式处理
导出 SSRFSafeTransport通过 utils.SSRFSafeTransport() 使 SSRF 安全传输可跨包复用

修复

修复说明
standalone HTML 添加 figure/figcaption 样式居中图片和标题,通过 CSS 变量支持暗色模式
EPUB 添加 figure/figcaption 基础样式为图片、图表和标题提供内联兜底样式
PlantUML 添加本地执行超时防止使用无限上下文时出现无限挂起

v0.7.5 — 国际化、标题样式与问题修复

发布日期:2026-04-06 主题:国际化、渲染改进与正确性

v0.7.5 为封面标签添加国际化支持(中文、日文、韩文),自动检测图表标题并应用 CSS 样式,允许字体族名使用 Unicode 字符,改进从 git 远端发现作者信息,并修复章节 HTML 生成中的 slug 冲突问题。

已交付功能

功能优先级说明
封面标签国际化P1封面为 zh、ja、ko 语言显示本地化的作者/版本/日期标签
图表标题样式P1以"Figure N"或"图 N"等开头的段落自动添加 class="caption" 进行居中样式
Unicode 字体族验证P1包含 CJK 字符的字体族名(如 思源黑体)现已被接受
Git 远端所有者用于作者P2自动发现优先使用 git 远端所有者,而非 README 中的 GitHub URL

问题修复

修复优先级说明
章节 HTML slug 冲突P1三方 slug 冲突(如两个章节 slug 化为"intro"加上自然的"intro-2")不再覆盖文件
图片下载重试路径上下文泄漏P1重试路径不再在读取响应体前取消上下文
升级后可执行权限P1显式 os.Chmod 确保升级写入后二进制可执行

改进

改进说明
移动测试专用辅助函数到测试文件从生产代码中移除 expandString
标题单元测试为标题模式匹配添加表驱动测试
Slug 冲突三方测试N 方 slug 去重的测试覆盖

文档

变更说明
同步中文 ROADMAP在 ROADMAP_zh.md 中添加缺失的 v0.6.5-v0.6.9、v0.7.1-v0.7.2 章节
文档化 migrate 标志在 CLI 参考中添加 --dry-run--force 标志

v0.7.6 — 安全加固与问题修复

发布日期:2026-04-13 主题:安全加固、正确性与文档同步

v0.7.6 加固配置文件加载以防止 TOCTOU 竞争条件,添加 WebSocket 预检查,防止 git 参数注入,修复站点章节树 slug 冲突,并同步架构文档与代码库。

已交付功能

功能优先级说明
配置文件 TOCTOU 加固P1使用 Open+Fstat+LimitReader 防止配置加载时的竞争条件
WebSocket 升级前预检查P1达到连接限制时在升级前返回 HTTP 503
Git 参数注入防护P1为目录参数添加 ./ 前缀,防止以 - 开头的目录被解析为标志
CSS behavior 属性清理P2阻止旧版 IE behavior:-moz-binding: CSS 注入向量
Serve 网络绑定警告P2绑定到非回环地址时发出警告

问题修复

修复优先级说明
站点章节树 slug 冲突P1使用对齐的 chapterFiles 切片,在跳过章节时确保正确映射
PDF 回退路径临时文件泄漏P1rename 失败时清理临时文件
GITHUB_TOKEN 重复读取P1仅读取一次 token,防止 URL 嵌入和日志脱敏之间的不一致
KaTeX 作用域限制到章节内容P2目标从 document.body 改为 .chapter-content
构建失败时插件清理P1确保构建中途失败时也释放插件资源

改进

改进说明
重构 GitHub 源清理逻辑提取 cleanupOnError()validateSubDir() 方法以减少重复
改进链接重写规范化将扩展名小写化移入 NormalizePath 以确保查找一致性
同步架构文档修复 HeadingInfo 字段、LocalSource 字段名、构建清单大小写等文档与代码不一致

v0.7.7 — 安全与正确性修复

发布日期:2026-04-15 主题:补充安全加固、正确性修复与测试改进

v0.7.7 拦截封面图片中的危险 URI 协议,防止实时重载中的脚本注入,修复书签选项和水印透明度验证,并加强测试断言。

已交付功能

功能优先级说明
封面图片 URI 协议拦截P1拦截 CSS url() 中的 javascript:、vbscript: 和 data: URI
实时重载脚本注入修复P1转义内联 JSON 中的 </ 以防止 </script> 注入

问题修复

修复优先级说明
generate_bookmarks: false 被忽略P1始终传递文档大纲选项以确保禁用书签生效
水印透明度超出范围P2将 [0.0, 1.0] 范围外的透明度值进行钳位处理
Serve 模式插件清理P2确保 serve 构建完成时释放插件资源

改进

改进说明
加强测试断言在 CJK 测试中使用 t.Fatal/t.Skip,添加 warnRecorder 模拟,添加边界和空白边缘用例
同步架构文档修复 source 模块作用域和监听文件扩展名

v0.7.8 — 正确性与跨平台修复

发布日期:2026-04-18 主题:正确性修复、跨平台健壮性与文档同步

v0.7.8 修复 Typst 粗斜体转换、大小写不敏感的 body 标签搜索、URL 编码图片路径验证、符号链接感知的路径遍历检查,以及搜索索引和元描述中的 HTML 实体处理。

问题修复

修复优先级说明
大小写不敏感的 body 标签搜索P2使用 EqualFold 逐字节扫描避免多字节字符小写化后的索引偏移
URL 编码图片路径解码P2验证前解码百分号编码路径
Typst 粗斜体转换P2***text*** 现在正确生成 *_text_* 而非错误输出
符号链接感知的路径验证P2对最近存在的祖先目录解析符号链接进行包含检查
搜索索引中的 HTML 实体处理P2反转义纯文本中的实体以确保标题查找和描述正确渲染
Windows 路径验证测试P1使绝对路径测试用例具有平台感知能力

改进

改进说明
添加 Mermaid 括号诊断测试全面覆盖括号匹配、嵌套、引号和注释
同步文档修复变更日志链接、架构版本号和路线图排序

v0.7.9 — Windows 多语言构建修复

发布日期:2026-04-19 主题:跨平台可靠性

v0.7.9 修复了 Windows 平台多语言构建模式中的一个回归问题,该问题由非绝对路径导致 filepath.Rel 调用失败引起。

修复问题

修复优先级说明
Windows 多语言切换器注入修复P1在生成引导页和语言切换链接前将多语言根目录规范化为绝对路径

改进

改进说明
Windows 多语言回归测试覆盖覆盖绝对路径规范化和斜杠标准化的语言切换链接测试(Windows 特定)

v0.7.10 — 安全加固与稳定性

发布日期:2026-05-08 主题:防御性编码、XSS 加固与缺陷修复

v0.7.10 是一次安全与稳定性发布。本版本加固了输出站点的 HTML/CSS 转义,预防了构建管线中的 symlink 逃逸与 TOCTOU 漏洞,并修复了多个用户可见的缺陷(配置优先级、slug 冲突、KaTeX 渲染等)。

安全修复

修复优先级描述
搜索结果摘要 XSSP0innerHTML 注入前对 &>"< 一并编码
标题 HTML 实体转义P1增加单引号 &#39; 编码,提升单引号属性上下文安全性
CSS 转义回退扩展P2让 polyfill 匹配 CSS.escape() 在所有 CSS 特殊字符上的行为
symlink 逃逸防护P1校验解析后的子目录路径仍在源目录根之内
主题/服务文件读取 TOCTOUP1原子读取替换 stat-then-read 模式
Banner 注入大小限制P2注入前拒绝过大的 banner 负载
插件元数据输出限制P2限制插件元数据返回大小,防止失控输出
Go 标准库安全更新P1将 Dockerfile 与工具链升级至 Go 1.26.2

缺陷修复

修复描述
保留 book.json 版本号显式的 book.json 版本不再被 README 提取的版本覆盖
WebSocket nil 连接 panicsentinel 写入前对 nil 连接进行保护
多语言构建根目录在不同语言变体之间正确解析构建根
Slug 去重冲突避免不同标题生成相同的 slug
多章 KaTeX 渲染章节切换时正确初始化 KaTeX
Typst 管线清理失败时移除部分 PDF,处理嵌入换行
PlantUML 错误链%w 包装原始错误,保留错误链
剪贴板/CDN 回退浏览器 API 或 CDN 不可用时优雅降级

改进

改进描述
SA5011 lint 合规t.Fatal 后添加 return 并删除多余的 nil 检查
测试断言增强用真实断言替换跨包的 no-op 测试
死代码清理移除未使用的 CJK 回退、manifest 辅助函数、搜索变量
依赖更新fsnotify v1.10.1、chromedp/cdproto 刷新
文档完善编写 ResolvePath 安全契约,合并 EvalSymlinksAncestor

v0.7.11 — 浏览器修复与工具链升级

发布日期:2026-06-17 主题:正确性修复、macOS 安装体验改进、依赖刷新

修复问题

修复说明
弃用的 navigator.platformMac 检测改用 navigator.userAgent,快捷键徽标在现代浏览器中正确显示
SPA 搜索范围与 Escape 冲突搜索辅助函数通过 window 全局暴露,SPA 导航后依然可用;搜索面板打开时侧边栏 Escape 处理加保护
灯箱焦点恢复恢复焦点后清空过期引用
文件读取 TOCTOU 缺口EPUB 图片加载等 stat-then-read 模式改为原子读取
git clone 超时与凭据挂起GIT_TERMINAL_PROMPT=0WaitDelay 防止无限阻塞;克隆超时可配置
根目录 SubDir 包含性检查与源根目录相同的子目录不再被误判为路径逃逸

改进

改进说明
Homebrew cask 自动去隔离post-install 钩子自动移除 macOS Gatekeeper 隔离属性
Go 1.26.3 与依赖升级标准库安全修复,以及 chroma、pflag、x/sys 等依赖刷新
CI 升级 golangci-lint v2.12.2GitHub Actions 与 GitLab CI 对齐最新 linter
扩充英文 CLI 手册命令文档补充详细参数说明

v0.7.12 — 全项目加固与 CLI 打磨

发布日期:2026-07-05 主题:全项目审计 —— 安全、管线正确性、更安全的自升级

安全修复

修复优先级说明
远程插件执行门禁P0远程项目的插件仅在传入新的 --allow-plugins 时才执行;本地项目不受影响
GITHUB_TOKEN 泄露P0token 不再嵌入克隆 URL,也不会残留在临时克隆的 git 配置中
服务页面安全头P1实时预览的 HTML 响应带上 X-Content-Type-OptionsX-Frame-Options、CSP 等
插件信任模型文档化P2手册明确说明 book.yaml 插件是任意可执行程序

缺陷修复

修复说明
数学预处理破坏代码块$/$$ 替换跳过围栏代码与行内代码,shell/awk/PHP 示例不再被破坏
Typst 后端正确性合法的 font: 数组、通过 --root 解析图片路径、正文转义 $ # @ < > 与不成对的 */_
EPUB 图片处理共享的 ../images/... 资源可打包;非 base64 data URI 仅警告不再中止
实时服务健壮性监听新建目录、串行化重建、WebSocket 保活、优雅退出 panic 修复
serve --branch/--subdir两个参数注册到 serve,支持远程分支/子目录预览
doctor 增强新增 Typst 可用性检查;--strict 在错误级检查失败时非零退出
quickstart 目标处理目标为文件时给出友好错误;--force 支持非空目录
版本上报源码构建回退到 runtime/debug.ReadBuildInfo()

改进

改进说明
更安全的 upgrade尊重 Homebrew/go install 安装方式(--force 可覆盖);校验和缺失直接失败(--skip-checksum 显式跳过)
新 CLI 参数/缩写--allow-plugins(build/serve)、-o/-f 缩写、--strict(doctor)、--force/--skip-checksum(upgrade)、--force(quickstart)
Linux 安装包与源码归档Releases 新增 .deb/.rpm/.apk 安装包和带校验和的源码 tarball
更快的 Docker 构建构建阶段通过 $BUILDPLATFORM 交叉编译,无需 QEMU 模拟
文档准确性移除不存在的参数示例、修正输出路径、恢复中英文手册对齐

v0.7.13 — 精美的默认样式

发布日期:2026-07-05 主题:出版级默认外观与一致的站点输出目录

变更

变更说明
重调 technical 主题默认深海军蓝整版封面、精调的海军蓝墨色、层级化书籍目录、发丝级表格边框加着色表头与斑马纹、图片描边、行内代码浅色底、强调条引用块;标注块不再跨 PDF 分页
站点阅读栏居中阅读栏居中显示,右侧页面目录为空时自动收起
build --format site 默认输出 _book/mdpress serve 及部署示例保持一致;--output <dir> 可另行指定;多语言构建保留按语言的 <lang>_site/ 布局

v0.7.14 — 输出体验、自定义主题与格式质量

发布日期:2026-07-10 主题:可预期的输出路径、真正的自定义主题机制、各格式渲染质量

变更

变更说明
可预期的 --output 语义目录目标接收文件并就地写入站点页面;文件基名目标生成 <base>.pdf/<base>_site/;默认站点先构建到临时目录再原子替换 _book/,带旧页面清理和对非生成目录的安全检查
远程构建输出不带 --output 的远程 GitHub 构建把产物写入当前工作目录,而非临时目录
构建结果汇总每种格式打印一行 ✓ Generated <format> → <path>--quiet 下也会输出
PDF 默认样式居中页码页脚取代强制的 "Built with mdPress" 页脚;style.header/style.footer 生效并支持 {page}/{pages}/{title} 占位符;新增 output.tagged_pdf 开关,可换取更小的 PDF
真正的自定义主题style.theme: mytheme.yaml 加载 YAML 主题文件;项目内 themes/<name>.yaml 覆盖或定义主题;themes list/show/preview 基于实际调色板输出
主题重调与主题感知封面elegant(暖色衬线、青铜强调色)与 minimal(安静单色)重调;未配置封面时默认封面跟随主题
站点改进全相对链接(支持 GitHub Pages 项目站点和 file://)、output.site_url 生成 sitemap.xml、output.edit_base 生成逐章“编辑此页”链接、生成 404.html、修复深色模式表格与代码块
独立 HTML新增封面横幅区,修复深色模式
EPUB 质量章节标题作为 <h1> 呈现、主题派生的阅读器友好样式表、含数学章节声明 scripted remote-resources
Serve 监听修复通过忽略生成产物目录,修复首次编辑后的无限重建循环
脚手架清理quickstart/init 不再硬编码封面背景色,也不再生成占位 cover.svg;自动生成 .gitignore;修正 shell 补全指引

v0.7.15 — 审计跟进:数据丢失与从未生效的路径

发布日期:2026-07-22 主题:修复第二轮完整审计确认的问题,并为反复产生这些问题的模式补上守卫测试

变更

变更说明
serve --output <dir> 不再具有破坏性每次重建的目录替换会清空既有目录内容;serve 现在与 build --format site 一样,提前拒绝非生成目录
站点根目录权限原子替换把 0700 的临时目录发布为站点根目录,在 nginx/httpd 下整站 403;现已改为所有人可读
EPUB 正确性布尔属性展开不再改写正文;同名章节不再互相覆盖;跨章 .md 链接会被重写;package/NCX/nav 中的引用做百分号编码
--format typst 能构建脚手架项目book.language 被原样传给 Typst 的 lang:(只接受 ISO 639 码),导致所有生成的项目都失败;现在会归一化
--format epub -o <newdir>/book.epubEPUB 是唯一不会创建输出目录的后端
排版配置生效style.font_family / font_size / line_height 此前只有 Typst 后端读取;PDF、HTML 与站点现在同样生效
站点搜索排序结果在排序之前就被截断为 20 条,标题命中的页面可能完全不出现;统计数也是截断后的
监听器处理删除与重命名被删除的章节会一直继续提供,直到一次无关编辑触发重建
零配置语言检测DefaultConfig 硬编码 zh-CN,英文文档目录会构建出中文界面与封面
--format all 不再包含 typst在没有可选 Typst CLI 的机器上 all 会失败;如需备用 PDF 后端请显式使用 --format typst
排版默认值下沉到主题未设置的 style.* 现在表示「继承主题」。破坏性变更:未写 language:book.yaml,除非内容以 CJK 为主,否则解析为 en-US
守卫测试跨格式矩阵 fixture、驱动真实 CLI 的样式串联测试,以及把 docs/ 中每条 mdpress … 调用解析到真实命令树的测试

v0.8.0 — 审计跟进:内容的静默丢失

发布日期: 2026-07-23 主题: 构建成功、输出看起来合理、作者却无从排查的那一类缺陷

变更

变更说明
共享图片目录![](../assets/logo.png) 在站点、单文件 HTML 和 PDF 中被丢弃且无任何提示;包含性检查针对章节所在目录而非书籍根目录
Front matter、BOM 与多余的 <h1>YAML front matter 被当作正文渲染,UTF-8 BOM 使首个标题不再被识别为标题,第二个 <h1> 会导致页面标题消失
migrate 不再破坏文档在已有围栏代码块外又加了一层围栏,就地吞掉文件其余内容,且没有备份
validate 可用作 CI 门禁围栏代码块内的 Markdown 被当作真实引用(mdPress 自己的手册报出 92 个假错误);新增 --strict、锚点检查、孤儿文件与重复章节检查
--config 生效只要同时给出源目录,该参数就会被丢弃
未知的 book.yaml报错并给出"是否想输入"建议,而不是静默丢弃
PDF 输出output.margin_* 真正作用于 @page;目录有标题并通过两遍渲染填入真实页码;page-break-inside: avoid 不再制造大量近空白页
ePub 输出打包前解析每个文档,保留层级与代码高亮,并生成封面图
站点体积图片以文件形式发布而非在每页内联 base64:含一张截图的 3 页书从 3.5 MB 降到 1.0 MB
多语言布局破坏性变更--output 的各种写法现在都解析为同一棵可部署目录树,语言切换页位于其 index.html
--format site --output ./dist破坏性变更:输出到 ./dist,不再在路径不存在时追加 _site
Ctrl+C 能中断构建SIGINT 被捕获却从未被响应,中断后仍留下看似正常的产物
CDN 资源锁版本并校验完整性CDN 被屏蔽或被篡改时,向读者展示说明与图表源码,而不是一片空白
PlantUML 文档回归事实mdPress 并不渲染它,但手册宣称自动渲染且 doctor 建议用户安装
新增命令config showcache info/clearvalidate --strictversion --jsonstatic/ 透传、站点品牌、variables:section:

v0.8.1 — 发布流程暴露的问题

发布日期: 2026-07-23 主题: v0.8.0 自身的发布流程暴露出的两个缺陷

变更

变更说明
已发布二进制报告自己的标签mdpress version 输出 0.8.0+dirty,之前的 0.7.15 同样如此:注入的标签只要与编译进去的默认值相同就会被丢弃,而每次规范发布这两者本来就相同,于是回退到 Go 的模块版本,该版本被 goreleaser 自己的构建前钩子标记为 dirty
Windows 章节路径零配置发现写出 guide\README.md,而 init 与所有手写 book.yaml 写的都是 guide/README.md
Windows 测试覆盖测试用的 CLI 二进制没有 .exe 后缀;图片包含性用例把 /etc/passwd 当作绝对路径 —— 在 Unix 上成立,在 Windows 上只是 rooted

v0.8.2 — 第三次审计的修复与真正可用的 upgrade

发布日期: 2026-07-24 主题: 第三次完整审计 —— 每个配置键都对着真实输出暴力验证、文档对着二进制做变异检查、PDF/ePub/站点逐字节检查 —— 外加对这批修复的复审

变更

变更说明
mdpress upgrade 在 Linux 上可用它下载了 .apk 包而非归档并装不上 —— 自 v0.7.12 起就不可用;现在选归档,并拒绝任何非目标平台可执行文件的载荷
build --format site 不再删 <output>.old原子替换拿这个同级名当暂存并提前删除 —— 正是用户的手动备份名;serve 甚至在安全检查前就删了
PDF 目录跨章节的重复标题互相拿错页码;两遍渲染现在像单文件 HTML 一样对锚点做命名空间隔离
build --format typst含代码块或跨行 emphasis 的书完全不出文件 —— 包括项目自己的手册,现在出 214 页 PDF
数据丢失类修复CR-only 换行的章节整段静默丢失;含空格/查询串的链接与含 %20 的图片路径能解析;无法内嵌的图片会报告
Ctrl+C 中断 PDF 构建整个 40–90 秒渲染期间被忽略;退出时间从约 55 秒(且杀不掉)降到 0.1 秒,不留孤儿 Chrome
页眉页脚不上封面Chrome 从打印参数逐页绘制,CSS 够不到第 1 页;现在删掉封面那行运行头,保留大纲与标签结构
ePub空父级下仍保留目录;标题为 "Cover"/"Nav"/"Glossary" 的章节不再覆盖生成文件;术语链接指向 glossary.xhtml;id 合法
配置照写生效而非猜测defaults-as-sentinel 缺陷又查出五处(主题页面尺寸/边距、语言目录的 language、book.json 的 language/version、--config 路径写法);加载现在记录用户实际写了哪些键
Windows 上找得到 Chrome搜索列表是 Unix-only,PDF 在原装 Windows 上从来无法工作
站点深层嵌套章节被链接;引号短语与 CJK 搜索可用;暗色 h5/h6 对比度;共享 CSS/JS 把每页体积从约 110 KB 降到约 9 KB
mdpress migrate解析 GitBook 的 {{ book.x }} 变量而非输出字面文本,并在报告中说明
发布安全make bump VERSION=x.y.z 替代九个手改文件;流水线现在下载已发布产物并断言其版本号等于 tag —— 连续两版漏掉 <tag>+dirty 的那个洞
文档与二进制一致删掉不存在的键,修正过期默认值,并把 0.8.0 引入却从未在手册出现的功能补齐(双语)

v1.0.0 — 稳定版发布(规划中)

目标发布日期:2027-Q1 主题:生产就绪,长期支持

稳定化目标

目标说明
API 稳定性CLI 参数和 book.yaml 配置格式冻结,遵循语义化版本
测试覆盖率核心包测试覆盖率 ≥ 90%
文档完备完整的用户手册(中英双语)、API 文档、迁移指南
性能基准建立性能基准测试套件,确保版本间无性能退化
平台验证macOS、Linux、Windows 全平台 CI 验证
安全审计依赖安全扫描,确保无已知漏洞

计划功能

功能说明
官方主题仓库社区可贡献和分发主题
官方插件仓库社区可贡献和分发插件
迁移工具从 mdBook 的自动迁移脚本(GitBook/HonKit 迁移已通过 mdpress migrate 提供)

长期支持(LTS)策略

v1.0.0 将作为第一个 LTS 版本,承诺:

  • 至少 12 个月的 bug 修复支持
  • 至少 18 个月的安全补丁支持
  • 配置文件格式向后兼容
  • CLI 参数向后兼容

未来展望(v1.x+)

以下功能在 v1.0.0 之后根据社区反馈优先级排列:

功能说明
GUI 编辑器基于 Web 的可视化编辑器,所见即所得
云端构建服务SaaS 版本,推送 Git 仓库自动构建
协作编辑多人实时协作编辑(类 Google Docs)
PDF/A 归档格式支持 PDF/A 标准,适合长期存档
印刷输出优化出血线、色彩管理、ICC profile 支持
DOCX 输出生成 Word 文档格式
模板市场书籍模板市场,提供预设的设计和排版方案

如何参与

mdpress 是开源项目,欢迎社区贡献:

  • 报告问题:在 GitHub Issues 中提交 bug 报告
  • 功能建议:在 Issues 中提交 Feature Request,标注希望的版本
  • 代码贡献:Fork 仓库,提交 Pull Request(请先阅读 CONTRIBUTING.md)
  • 文档改进:帮助完善文档和翻译
  • 主题贡献:设计和分享自定义主题

路线图会根据社区反馈和实际进展持续调整。最新版本请查看本文档。