theme: 启动日志暴露未登记的主题

新增主题后忘了写进 [theme] available,表现只是"设置页里找不到",
日志里没有任何痕迹。现在启动时会打:
- info  主题注册表已加载 enabled=...
- warn  [theme] available 未登记以下主题 themes=shiroko available=...

discover() 用 fs.Glob 扫内嵌 css/themes/*.css,按 slug 规则过滤掉 _scaffold.css。
示例配置补上 shiroko,文档补「部署后看不到主题」的两步排查。
This commit is contained in:
tamakyi
2026-10-19 21:05:46 +08:00
parent 1a8938f0e1
commit a6059bec1b
5 changed files with 98 additions and 0 deletions
+32
View File
@@ -93,3 +93,35 @@ available = default,sakura,shiroko
3. 换配色:改 `shiroko.css` 的令牌即可,插画是位图,换色需重新生成。
4. 新增素材不需要改 `static/fs.go`(已嵌整个 `images/themes` 目录);但改了 CSS 必须把
`conf.StaticVersion` +1,否则老访客吃缓存看不到变化。
## 部署后设置页看不到这个主题?
先分两步确认,不要一上来就怀疑缓存:
1. **文件是否随二进制发布了** —— 直接取一次静态资源:
```bash
curl -o /dev/null -w "%{http_code}\n" \
https://<你的域名>/static/css/themes/shiroko.css?v=<StaticVersion>
```
返回 200 说明 css 已经嵌进去了;返回 404 说明部署的是旧二进制。
2. **是否登记进 `[theme] available`** —— 主题列表是启动时按白名单构建的,
css 在但没登记,设置页就看不到它。检查 `conf/app.ini`:
```ini
[theme]
default = default
available = default,sakura,shiroko
```
改完**重启**进程(`[theme]` 只在启动时读)。
启动日志会直接告诉你缺哪一行:
```
level=info msg="主题注册表已加载" enabled="default,sakura"
level=warning msg="[theme] available 未登记以下主题,它们不会出现在设置页"
available="default,sakura,shiroko" themes=shiroko
```