Files
MorphDoc/docs/RELEASE.md
T
SkyJourney 01b06abc2c release: 发布字体直接内置版 v0.6.1
新增能力:14 套主题按纵横方向与五组页边距组成的 140 场景视觉矩阵全部通过,封面执行整页严格门禁,正文执行分页无关的语义块门禁。

问题修复:统一 CSS 到 WordprocessingML 的通用翻译,修复字体嵌入、中文标点字距、精确行距、打印媒体与行内代码连续性,不包含按主题 ID 的特调。

发行变化:Desktop 安装器与免安装 ZIP 直接内置 Serif、Sans、Mono 三套字体包;NSIS 移除字体选择和伴随安装逻辑,不再发布独立字体安装器或字体 ZIP。正式附件收敛为 Desktop 安装器、Desktop ZIP、Docker 离线镜像、Web 部署包和发行说明。

部署兼容:Docker 镜像 md-to-pdf:v0.6.1 使用完整无缓存路径构建,固定 Chromium、Pandoc 3.9.0.2 和三套内置字体包;支持覆盖安装 v0.6.0,Windows 安装器保持未签名的内部发布状态。

验证结果:116 个测试文件、616 项测试、全项目类型检查、生产构建和 git diff --check 全部通过;140/140 视觉矩阵阻断失败和诊断失败均为 0;源码服务、Docker Web API 与实际安装 Desktop 的 DOCX 字体嵌入链路均通过。
2026-08-04 12:25:02 +08:00

71 lines
2.4 KiB
Markdown

# 发版规则
## 唯一产物目录
所有正式分发文件必须统一归集到仓库根目录下的:
```text
release/v<semver>/
```
`release/``output/``apps/desktop/out/``apps/desktop/.runtime/`
`tmp/` 以及门禁报告均是本地中间产物或发布产物,必须保持 Git 忽略。
大型二进制不得直接提交到普通 Git 历史。
正式目录只能由 `npm run release:stage` 生成。脚本先写入同一文件系统中的
`.stage-*` 临时目录,完成镜像封包、清单和校验和后再原子改名;目标版本
目录已经存在时必须拒绝覆盖。
## 标准目录内容
每个版本至少包含:
```text
release/v<version>/
├── MorphDoc-<version>-x86_64-Setup.exe
├── MorphDoc-<version>-x86_64.zip
├── MorphDoc-Web-<version>-image.tar.gz
├── MorphDoc-Web-<version>-deploy.zip
├── manifest.json
├── SHA256SUMS.txt
└── RELEASE-NOTES.md
```
Docker 镜像必须通过 `docker save` 导出并使用 gzip 压缩。Web 部署 ZIP 必须
包含 Compose、Nginx、环境变量示例和离线加载说明。`manifest.json` 记录
版本、Git 提交、镜像 ID、文件大小和 SHA-256;`SHA256SUMS.txt` 用于分发后
独立校验。
## 正式字体资产
正式字体固定存放于:
```text
font-packs/assets/<font-pack-id>/<semver>/
```
TTF、OTF、WOFF 和 WOFF2 必须由 Git LFS 跟踪。新增或升级字体前必须完成
许可证、来源、内部字族名、文档嵌入权限、字节数和 SHA-256 审查;任何内容
变化都必须提升字体包 SemVer。克隆后需要先执行 `git lfs pull`,构建器不会
下载或使用系统字体代替缺失资产。
## 发版步骤
1. 完成全量测试、类型检查、生产构建和视觉门禁。
2. 构建字体直接内置的 Desktop 安装包和便携 ZIP。
3. 构建并验证版本化 Docker 镜像。
4. 准备 `docs/releases/v<version>.md`
5. 执行:
```powershell
npm run release:stage -- --version <version> --image md-to-pdf:v<version>
```
6. 逐项核验 `SHA256SUMS.txt`,并从离线归档重新加载 Docker 镜像。
7. 创建内容完整的 `release:` 提交。
8. 重新生成 release 清单,确保 `gitCommit` 指向该发布提交。
9. 创建 annotated `v<version>` 标签,标签说明与发布提交正文一致。
安装器公开分发前应完成 Authenticode 签名;未签名产物只能按内部发布风险
规则分发。