feat(v1.2.6): 合并审核整改、确认完全原创并完善可选 API 披露
版本升至 1.2.6(1.2.5 审核被拒未发布,整改内容并入本版);README 新增原创声明(4.2.1/4.2.2 不适用);Hero 描述来源默认 none,选一言自动填入官方接口、清空回退本地句子库;文档列出两个 IP 定位候选接口与访客 IP 披露文案;含上一轮 4.4.2 内容渲染安全与 5.2 字体许可证修复。
This commit is contained in:
1 parent
dda86294b0
commit
c92429d139
18 files changed
+485
-63
No files matched your search
+32
-2
@@ -1,8 +1,25 @@
|
||||
# 更新日志
|
||||
|
||||
## v1.2.5
|
||||
## v1.2.6
|
||||
|
||||
### 上架审核整改(v1.2.5 修订)
|
||||
> v1.2.5 为审核被拒的未发布版本,从未对外分发;其全部整改内容纳入 v1.2.6 一并发布。
|
||||
> 上一个对外发布版本为 v1.1.1(v1.1.2 – v1.2.5 均未发布)。
|
||||
|
||||
### 本轮变更
|
||||
|
||||
- 🆙 版本号升至 `1.2.6`,与上次被拒的审核快照明确区分
|
||||
- ✍️ 新增「原创声明(4.2.1)」:本主题完全原创,未基于任何已有主题 / 插件派生,4.2.1 / 4.2.2 不适用
|
||||
- 🔇 Hero「描述文案来源」默认值由 `hitokoto` 改为 **`none`** —— 默认不渲染一言元素、不显示描述文案,零外部请求
|
||||
- 🔗 选择「一言」时自动填入官方接口 `https://v1.hitokoto.cn/`;选择「一言」或「自定义」后若 API 留空,
|
||||
则使用主题内置的本地句子库(零外部请求)。**只有填写后才会向该地址发起请求**,需自行在站点隐私说明中披露,
|
||||
详见 README「外部资源与隐私」
|
||||
- 🌐 文档列出两个可选 IP 定位接口:`https://myip.ipip.net/json` 与
|
||||
`https://r.inews.qq.com/api/ip2city?otype=json`(主 / 备选 API 均可选用)。
|
||||
**填写后会把访客 IP 发送给该第三方服务换取地理位置**,需自行在站点隐私说明中披露,
|
||||
详见 README「外部资源与隐私」
|
||||
- 📄 README「外部资源与隐私」新增可选接口清单与逐项披露;docs 的 Hero 配置、FAQ、快速开始与首页页同步更新
|
||||
|
||||
### 上架审核整改(原 v1.2.5 修订,并入 1.2.6)
|
||||
|
||||
- 🔒 **默认零第三方自动请求**:移除全部 21 个模板对 `cdn.jsdelivr.net` 的 `preconnect` / `dns-prefetch`
|
||||
- 🔒 移除文章页 PrismJS 1.29.0、`autoloader`(会按代码语言从 CDN 动态拉取并执行组件)与
|
||||
@@ -20,6 +37,19 @@
|
||||
- 🧪 新增 `pnpm audit:external` 与打包前置校验:拦截第三方远程加载、预连接、动态加载、
|
||||
README 死链、重复大图;`docs/*.md` 与预览图一并打进安装包
|
||||
|
||||
#### 按 v2026.09.07 审核指南全文补充自查(并入 1.2.6)
|
||||
|
||||
- 🔒 **内容渲染安全(4.4.2)**:文章页 JSON-LD 不再用 `th:utext` 把标题 / 摘要 / 作者 / 封面
|
||||
拼进 `<script>` 原始文本(可被脚本闭合标签截断并注入);改为「Thymeleaf 转义写入 `<meta>`
|
||||
→ `JSON.stringify` → `textContent`」,并新增 `<meta name="author">`。瞬间正文 `content.raw`
|
||||
兜底从 `th:utext` 改为 `th:text` 转义输出(首页区块、瞬间页列表 / 瀑布流、详情页共 4 处)
|
||||
- 📜 **许可证传递(5.2)**:`public/assets/fonts/LXGWWenKai/OFL.txt` 随包携带上游版权声明、
|
||||
保留字体名附加许可与 SIL OFL 1.1 全文;`pnpm build` / `pnpm package` 均校验其存在与内容
|
||||
- 🔢 **上架信息校准(2.2 / 4.6)**:README 设置项按 `settings.yaml` 实测改为 17 组 / 126 项、
|
||||
点击特效改为 8 种效果(可关闭);新增「内容渲染安全」章节与搜索页 / 空结果状态人工回归项
|
||||
- 🧪 合规审计扩展:拦截任意 `<script>` 上的 `th:utext`、缺失字体许可证、README 数字漂移;
|
||||
`pnpm smoke` 新增 JSON-LD 合法性与注入防护的桩 DOM 验证
|
||||
|
||||
### 兼容性与元数据
|
||||
|
||||
- ⬆️ Halo 版本要求提升至 **2.27.0+**(页面布局契约、微信读书页面依赖 2.27 的能力)
|
||||
|
||||
+16
-13
@@ -9,8 +9,8 @@ Hero 首屏是 WarmIsland 主题的标志性区域,占据首页首屏的全部
|
||||
| `hero_enabled` | 开关 | `true` | 启用 Hero 模块 |
|
||||
| `hero_title` | 文本 | — | 主标题(留空则使用站点标题) |
|
||||
| `hero_subtitle` | 文本 | — | 副标题(留空则使用站点副标题) |
|
||||
| `hero_description_mode` | 下拉 | `hitokoto` | 描述文案来源:`none` / `hitokoto` / `custom` |
|
||||
| `hero_hitokoto_api` | URL | 留空 | 自定义一言 API;留空使用主题内置本地句子库(零外部请求) |
|
||||
| `hero_description_mode` | 下拉 | `none` | 描述文案来源:`none` / `hitokoto` / `custom`,默认不显示描述文案 |
|
||||
| `hero_hitokoto_api` | URL | `https://v1.hitokoto.cn/` | 选「一言」时自动填入官方接口;留空则使用内置本地句子库(零外部请求) |
|
||||
| `hero_hitokoto_categories` | 多选 | `d, i, k` | 句子类型筛选,仅对自定义 API 生效 |
|
||||
| `hero_custom_description` | 多行文本 | — | 自定义描述文案 |
|
||||
| `hero_hitokoto_auto_refresh` | 开关 | `false` | 一言自动刷新 |
|
||||
@@ -44,28 +44,31 @@ hero_subtitle: "记录温暖与灵感"
|
||||
|
||||
### 描述文案来源(hero_description_mode)
|
||||
|
||||
控制 Hero 区域主标题下方显示的描述文案,提供三种模式:
|
||||
控制 Hero 区域主标题下方显示的描述文案,提供三种模式,**默认为「无」**:
|
||||
|
||||
| 值 | 说明 |
|
||||
| --- | --- |
|
||||
| `none` | 不显示描述文案 |
|
||||
| `hitokoto` | 从主题内置本地句子库随机取一条(默认,零外部请求) |
|
||||
| `custom` | 显示自定义的描述文案 |
|
||||
| `none` | **默认**。不显示描述文案,不渲染一言元素,也不发起任何请求 |
|
||||
| `hitokoto` | 显示一句话文案;自动填入官方接口 `https://v1.hitokoto.cn/`,清空该字段则使用内置本地句子库 |
|
||||
| `custom` | 显示自定义的描述文案(静态文本,不发起任何请求) |
|
||||
|
||||
### 一言模式(hitokoto)
|
||||
|
||||
选择 `hitokoto` 模式后,Hero 区域**默认读取主题内置的本地句子库** `assets/data/hitokoto.json`
|
||||
(随主题自托管的静态 JSON),每次刷新随机展示一条,不依赖任何外部服务,也不会因为第三方接口
|
||||
不可用而出现空白。可直接编辑该 JSON 替换成自己喜欢的句子。
|
||||
默认 `none` 时一言元素不渲染。切换到 `hitokoto` 后,设置项「自定义一言 API」自动填入
|
||||
`https://v1.hitokoto.cn/`,浏览器会向该地址发起 GET 请求获取句子(第三方可见访客 IP / User-Agent)。
|
||||
若把该字段清空,则回退到主题内置的本地句子库 `assets/data/hitokoto.json`
|
||||
(随主题自托管的静态 JSON,零外部请求),每次刷新随机展示一条,也不会因为第三方接口不可用而出现空白。
|
||||
可直接编辑该 JSON 替换成自己喜欢的句子。
|
||||
|
||||
#### 自定义一言 API(hero_hitokoto_api)
|
||||
|
||||
默认**留空**(零外部请求)。如果需要使用在线一言或自建实例,可在此填写 API 地址;
|
||||
填写后浏览器才会向该地址发起 GET 请求,第三方可见访客 IP / User-Agent。
|
||||
请自行评估服务商隐私政策,并在站点隐私说明中披露,详见 README「外部资源与隐私」。
|
||||
选择「一言」或「自定义」后才会显示该设置项。选择「一言」时自动填入 `https://v1.hitokoto.cn/`;
|
||||
**选择「一言」或「自定义」后若留空,则使用主题内置的本地句子库(零外部请求)**。
|
||||
**只有填写后才会向该地址发起请求**,需自行在站点隐私说明中披露,详见 README「外部资源与隐私」。
|
||||
也可换成自建实例或其他兼容接口。
|
||||
|
||||
::: warning
|
||||
这是站点管理员主动开启的可选能力。留空即可随时关闭,无需重装主题。
|
||||
这是站点管理员主动开启的可选能力。把描述文案来源改回「无」、或清空该字段即可随时停止外部请求,无需重装主题。
|
||||
:::
|
||||
|
||||
#### 一言句子类型(hero_hitokoto_categories)
|
||||
|
||||
+19
-7
@@ -123,21 +123,33 @@ v1.2.1 起安装包会保留各版本的哈希资源(v1.1.7 之后全部覆盖
|
||||
### 主题会向第三方服务发请求吗?
|
||||
|
||||
**默认不会。** 所有脚本、样式、字体、图标、主题 Logo 与一言句子库都随主题自托管,
|
||||
页面不预连接任何 CDN,也不加载远程脚本。只有两类例外:
|
||||
页面不预连接任何 CDN,也不加载远程脚本;Hero「描述文案来源」默认为「无」,欢迎弹窗默认关闭。
|
||||
只有两类例外:
|
||||
|
||||
1. 访客**主动点击**分享按钮 / 备案链接 / 应用市场链接时才跳转到对应站点;
|
||||
2. 站点管理员在主题设置里**显式填写**了「自定义一言 API」或「自定义 IP 定位 API」——
|
||||
后者会把访客 IP 发送给该服务,请在站点隐私说明中披露。
|
||||
后者会把访客 IP 发送给该第三方服务换取地理位置,**需自行在站点隐私说明中披露**,
|
||||
详见 README「外部资源与隐私」。
|
||||
|
||||
可选接口地址(仅作候选,主题不会自动请求):
|
||||
|
||||
| 能力 | 可选地址 |
|
||||
| --- | --- |
|
||||
| 一言 | `https://v1.hitokoto.cn/`(选择「一言」时自动填入) |
|
||||
| IP 定位主 / 备选 API | `https://myip.ipip.net/json`、`https://r.inews.qq.com/api/ip2city?otype=json` |
|
||||
|
||||
完整逐项说明见 README 的「外部资源与隐私」章节。发版前可运行 `pnpm audit:external` 复核。
|
||||
|
||||
### 一言不显示,或想换成自己的句子?
|
||||
|
||||
1. 主题默认读取内置的 `assets/data/hitokoto.json` 本地句子库,不依赖外部服务;
|
||||
直接编辑该文件即可替换文案
|
||||
2. 想继续使用在线一言,可在主题设置 → Hero 首屏 → 填写「自定义一言 API」;
|
||||
此时才会产生外部请求,且「句子类型」筛选仅对自定义 API 生效
|
||||
3. 若选择「自定义」模式,请在「自定义描述文案」中填写内容
|
||||
1. Hero「描述文案来源」**默认为「无」**,此时不显示描述文案、不渲染一言元素,零外部请求;
|
||||
想显示句子请改为「一言」
|
||||
2. 选择「一言」后会自动填入 `https://v1.hitokoto.cn/`,此时才会产生外部请求;
|
||||
**把该字段清空即回退到主题内置的 `assets/data/hitokoto.json` 本地句子库(零外部请求)**,
|
||||
直接编辑该 JSON 即可替换文案。只有填写后才会向该地址发起请求,需自行在站点隐私说明中披露,
|
||||
详见 README「外部资源与隐私」
|
||||
3. 「自定义」模式显示「自定义描述文案」中的静态文本,不发起任何请求;
|
||||
「句子类型」筛选仅对填写了 API 的一言模式生效
|
||||
|
||||
### 文章目录不显示?
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ WarmIsland(暖屿)是一款为 [Halo](https://halo.run) 打造的博客主
|
||||
进入 **Hero 首屏** 设置:
|
||||
|
||||
- 设置主标题和副标题
|
||||
- 选择描述文案来源(一言 / 自定义 / 无);「一言」默认读取主题内置的本地句子库,不请求外部服务
|
||||
- 选择描述文案来源(默认「无」/ 一言 / 自定义);默认不显示描述、不发起请求;选「一言」自动填入 `https://v1.hitokoto.cn/`,清空该字段则使用内置本地句子库(零外部请求)
|
||||
- 可选上传背景图片
|
||||
|
||||
### 第五步:页脚信息
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ Hero 区域占据整个视口高度,包含:
|
||||
|
||||
- **主标题**:默认使用站点标题,可在主题设置中自定义
|
||||
- **副标题**:默认使用站点副标题
|
||||
- **描述文案**:支持一言 API、自定义文案或关闭
|
||||
- **描述文案**:默认「无」(不显示、零请求);可选「一言」(自动填入 `https://v1.hitokoto.cn/`,清空则用内置本地句子库)或「自定义」静态文案
|
||||
- **视觉效果**:渐变背景 + 呼吸光球 + 滚动模糊
|
||||
|
||||
页面滚动时,Hero 区域会产生模糊效果,内容向上淡出,底部有向下箭头提示滚动。
|
||||
|
||||
Reference in new issue
Block a user