chore: migrate mail themes to shared framework and locked upstream inputs
Release / Validate Templates (push) Canceled after 0s
Release / Package & Release (push) Canceled after 0s
Release / Update Latest Release Documentation (push) Canceled after 0s

This commit is contained in:
KenanZhu committed 2026-10-09 18:34:36 +08:00
1 parent 5c0589f6f6
commit fec3ace600
225 files changed
+4718 -15807

No files matched your search

+33 -18
View File
@@ -13,7 +13,7 @@
大多数自托管 Gitea 实例使用默认的纯文本邮件模板。本项目提供了**开箱即用、视觉精美的替代方案**——每种方案都针对特定社区或受众设计,您可以选择最适合您用户的风格。
`main` 分支中的模板可直接替换 Gitea 内置邮件模板,**无需补丁、插件或 fork**。使用已发布的压缩包前,请先查看[兼容性说明](../COMPATIBILITY.md),了解旧版本的限制。
`main` 分支使用锁定的官方输入及共享控件框架:Gitea 提供邮件值、通知逻辑与翻译,框架负责页头、按钮、备用链接和页脚,主题仅定义样式。官方文件在开发/CI 时下载,不在仓库中维护副本。该重构尚未发布,以 v28.0.0 为基线;源码克隆需先构建安装文件,发行包提供可直接复制的产物。使用已发布版本前,请查看[兼容性说明](../COMPATIBILITY.md)。
---
@@ -26,15 +26,15 @@
| ![Horizon](images/horizon.png) | **Horizon** | 企业/公司 | 蓝色强调色、石板灰排版、居中卡片 |
| ![Terminal](images/terminal.png) | **Terminal** | 开发者/技术 | 暗色模式、等宽字体、绿色命令行风格 |
| ![Ember](images/ember.png) | **Ember** | 社区/开源 | 暖琥珀色、圆角、人文主义、包容 |
| ![Bloom](images/bloom.png) | **Bloom** | 创意/初创 | 磨砂玻璃、柔和蓝色光线、虹彩点缀 |
| ![Heritage](images/heritage.png) | **Heritage** | 教育/研究 | 海军蓝与金色、衬线字体、经典、权威 |
| ![Bloom](images/bloom.png) | **Bloom** | 创意/初创 | 蓝色玻璃卡片、柔和渐变、圆角按钮 |
| ![Heritage](images/heritage.png) | **Heritage** | 教育/研究 | 纸质色调、海军蓝与金色、双线边框、衬线字体 |
| ![Neon](images/neon.png) | **Neon** | 游戏/Web3/创意科技 | 赛博朋克霓虹、粉红与青色、合成波能量 |
| ![Mono](images/mono.png) | **Mono** | 设计工作室/编辑 | 瑞士粗野主义、黑白红强调、零圆角 |
| ![Terra](images/terra.png) | **Terra** | 可持续/健康 | 温暖大地色调、有机质感、人文衬线 |
| ![Ink](images/ink.png) | **Ink** | 出版/新闻/文学 | 编辑印刷、深蓝与金色、报纸排版 |
| ![Terra](images/terra.png) | **Terra** | 可持续/健康 | 大地色、陶土色按钮、自然风格细节、柔和卡片 |
| ![Ink](images/ink.png) | **Ink** | 出版/新闻/文学 | 报刊分栏、海军蓝与金色分隔线、衬线字体及首字下沉 |
| ![Aurora](images/aurora.png) | **Aurora** | 高端SaaS/正念 | 空灵光效渐变、深紫与青绿、大气光晕 |
> 图片为 600px 宽截图,来自[本地预览](../preview/index.html)。截图方法参见 [images/README.md](images/README.md)。
> 画廊展示共享框架的当前源码构建,并非历史发行包。保留原主题的配色、字体、页头及按钮/备用链接控件。查看[本地预览](../preview/index.html)及[截图说明](images/README.md)。
[**本地预览画廊**](../preview/index.html) — 先按下文生成预览数据,再在浏览器中打开。
@@ -42,16 +42,25 @@
## 安装
选择一种风格,将 `mail/` 目录复制到 Gitea 自定义模板路径:
源码克隆需按仓库提交的 `gitea.lock.json` 先构建(Go 1.24+,缓存不存在时首次构建下载锁定输入)。锁文件缺失会报错,不会自动选择最新版 Gitea:
```bash
cp -r themes/horizon/mail/* /var/lib/gitea/custom/templates/mail/
cd tools
go run . build all
cd ..
```
选择一种风格,将生成的 `mail/` 目录复制到 Gitea 自定义模板路径。发行压缩包中的路径为 `themes/<名称>/mail/`,源码构建后的路径为 `build/themes/<名称>/mail/`:
```bash
mkdir -p /var/lib/gitea/custom/templates/mail
cp -r build/themes/horizon/mail/. /var/lib/gitea/custom/templates/mail/
systemctl restart gitea
```
切换风格只需覆盖文件,无需更改配置。
切换前备份当前邮件覆盖文件,根据上一主题的 `build.json` 移除其安装文件,再复制新主题完整输出;保留其他自定义模板。从 `framed` 切换到 `shared` 时,遗留的正文覆盖文件仍会使用旧布局,因此不能仅覆盖两个共享片段。
`GITEA_CUSTOM` 决定自定义目录;常见路径为 Linux 二进制部署的 `/var/lib/gitea/custom`、Docker 的 `/data/gitea`,以及 Windows 的 `C:\gitea\custom`。
请确认实例实际配置的自定义目录再安装;常见部署示例为 Linux 二进制部署的 `/var/lib/gitea/custom`、Docker 的 `/data/gitea`,以及 Windows 的 `C:\gitea\custom`,这些并非所有实例的统一默认路径。
### 确认生效
@@ -63,7 +72,13 @@ systemctl restart gitea
## 预览
从源码克隆时,需先生成被忽略的 `preview/rendered.js`。现有 v28.0.0 及更早的压缩包未包含预览文件和画廊截图;更新后的打包流程会在后续构建中加入两者。
源码克隆需先生成被忽略的 `preview/rendered.js` 清单及逐语言数据包。后续发行包会包含全部官方语言的预览,现有 v28.0.0 及更早压缩包保持原内容。
### 官方输入命令(`upstream`)
在 `tools/` 执行:`go run . upstream prepare` 根据已有锁文件下载尚不存在的缓存;`go run . upstream verify` 离线校验已有缓存;`go run . upstream sync --tag vX.Y.Z` 显式替换版本并生成锁文件。均支持子命令后的 `--root <仓库根目录>`,默认 `..`。
缺少根锁文件时,准备、校验、构建与预览都会失败。普通克隆应恢复受版本控制的锁文件;有意初始化可运行 `go run . upstream sync --tag v28.0.0`。同步须联网,仅接受稳定 Gitea 28+ 标签,不更新文档或发布版本。损坏/版本不匹配的缓存需要检查后恢复,而非自动修复,详见[完整命令与恢复指南](CONTRIBUTING.zh-CN.md#更新官方快照)。
**静态模式:**
@@ -80,16 +95,16 @@ cd ..
```bash
cd tools
go run . dev
# 在浏览器中打开 http://localhost:3456
# 在浏览器中打开 http://127.0.0.1:3456
```
| 功能 | 静态 | Dev |
|-----------|--------|-----|
| Go 模板渲染 | [YES] | [YES] |
| 主题/模板切换 | [YES] | [YES] |
| 主题/模板/语言切换 | [YES] | [YES] |
| 实时重载 | [NO] | [YES] |
预览支持主题与模板切换、Modern/Source 视图、桌面/移动端尺寸以及模板参数面板。`←→` 可切换选择框,`↑↓` 可切换选项,`d`/`m` 可切换视口。
预览支持主题、邮件类型及全部官方语言切换(v28.0.0 快照含 28 种语言),以及 Modern/Source 视图、桌面/移动端尺寸和参数面板。语言数据按需加载,支持直接打开本地文件。`←→` 可切换选择框,`↑↓` 可切换选项,`d`/`m` 可切换视口。
---
@@ -106,15 +121,15 @@ go run . dev
<!-- TRACKER:UPSTREAM -->
- **上游 Gitea 28.1.0:** [PENDING]
<!-- /TRACKER:UPSTREAM -->
- 当前源码使用 Gitea 官方模板的数据路径;各发布版的限制详见 [兼容性说明](../COMPATIBILITY.md)
- 新源码架构支持 Gitea 28+,离线校验官方快照;源码状态及历史发行版限制详见[兼容性说明](../COMPATIBILITY.md)。
## 模板类型
每种风格都提供 11 种邮件类型:账户激活、邮箱验证、注册通知、密码重置、团队邀请、仓库协作者、仓库转移、新版发布、Actions 工作流、议题/合并请求指派及议题/合并请求更新。具体文件路径参见[英文 README](../README.md#template-types)。
邮件类型由官方输入发现,当前为 11 种:账户激活、邮箱验证、注册通知、密码重置、团队邀请、仓库协作者、仓库转移、新版发布、Actions 工作流、议题/合并请求指派及议题/合并请求更新。具体路径参见[英文 README](../README.md#template-types)。`framed` 主题使用同一对齐层与共享控件生成安装文件;可选的 `shared` 模式仅覆盖两个基础片段,不添加框架控件。
## 设计与翻译
模板采用适合邮件客户端的响应式布局,并提供按钮失效时可用的备用链接。通知正文使用 Gitea 的翻译系统;部分主题装饰性标签仍为英文,并非所有可见文字都已本地化。
主题仅维护 CSS 与元数据;共享框架使用官方邮件值及翻译组织可复用控件,保留通知条件、主题行和功能链接目标。官方模板及语言文件下载到忽略的 `build/upstream/`,仅提交工具生成的 `gitea.lock.json`。语言缺键按 Gitea 规则回退英文。v28.0.0 波兰语邀请文案存在官方占位符缺陷,预览报告 `[UPSTREAM-WARN]` 并保留官方行为,详见[贡献指南](CONTRIBUTING.zh-CN.md#更新官方快照)。
## 文档与贡献
@@ -125,4 +140,4 @@ go run . dev
## 许可证
MIT — 详见 [LICENSE](../LICENSE)。
MIT — 详见 [LICENSE](../LICENSE) 和[第三方声明](../THIRD_PARTY_NOTICES.md)。发行包保留官方 Gitea 许可证和快照来源信息。