chore(spec): 归档 add-media-and-polish——六任务三车道收敛

spec_verify --all 六项同指纹 exit=0;视觉终审+复验双轮 可上线

Spec: 2026-10-25_add-media-and-polish

Co-authored-by: GLM-5.3
This commit is contained in:
wait4xandGLM-5.3 committed 2026-10-25 12:26:56 +08:00
1 parent 76b6b6b022
commit 6da2b7cecf
4 files changed
+114 -11

No files matched your search

@@ -0,0 +1,93 @@
# 媒体支持(图/视频/音频)+ 灯箱按钮与评论区美化 - 完成总结
## 交付结论
- 结果:完成
- 完成时间:2026-10-25 12:26
## 假设回顾
### 已验证假设
- 视频进 git 仓在短小(<5MB)场景可接受;大视频走仓外 store(photos-originals 同模式)+ /media/ 路径
- Artalk 页内渲染可被页面级 CSS 覆盖定制(同源同文档)
### 仍未完全验证的假设
- 无
## 交付范围
### 已交付
- T1 灯箱原图/下载按钮美化
- T2 Artalk 评论区美化
- T3 markdown 媒体支持
- T4 三媒样张
- T5 写作指南
- T6 验证收官
### 未交付
- 无
### 偏差说明
- 无
## 简化决策
### 保持简单的关键选择
- 最简单可行方案:原生标签 + global.css 媒体样式段 + 样例验证 + 指南文档
- 暂不引入:rehype 插件链、指令语法、媒体转码管线
- 不做的抽象/配置化:多媒体源管理界面
### 本轮明确不做的内容
- 图库页媒体扩展、字幕、播放列表
## 变更边界
### 本轮主要改动模块
- 见 tasks.md 的 boundary 记录
### 明确未触碰的区域
- 图库页媒体扩展、字幕、播放列表
## 验证证据
### 备注
- 机器证据:runs.jsonl(见验证范围的机器验证率)
## 验证范围
- 级别:package
- 机器验证率:6/6
- 规则:check 与 done 复用该范围;只有记录升级触发时才执行全项目检查
## 哲学生效证据
### 行为成效回填
- Development Record 行为门禁通过
### 一致性门禁回顾
- 验收面(checklist 或成功标准)已通过
## Git 记录
- 日期时间:2026-10-25 12:26
- 范围:媒体支持(图/视频/音频)+ 灯箱按钮与评论区美化
- 功能:T1 灯箱原图/下载按钮美化;T2 Artalk 评论区美化;T3 markdown 媒体支持;T4 三媒样张;T5 写作指南;T6 验证收官
- 操作:提交 / 推送
- 成效:Development Record 行为门禁通过
- 提交:pending local commit
- 提交区间:b9dbece2dfc7e3726154a07ac11599329f73adff..76b6b6b0228c5f30a0f5c24f57c1e24f9a5f50c7
- 推送:not-run (push stage follows commit)
## AGENTS.md 增量提议
```diff
媒体工作流纪律:图片走 markdown ![]() 管线(自动 sharp 优化),视音频走 public/media/{slug}/ + 绝对 /media/(raw HTML 相对路径不经打包器——实测 404);斜体图注行内禁裸写 <video>/<audio> 字样(markdown 渲染成真元素:黑盒+吞文字),提及用反引号。hidden 标签=可访问不列出(列表/RSS 过滤、详情页全量出页、prev/next 滤)。Artalk 样式必须手动 link dist/Artalk.css(JS 不自动注入);18 个 --at-color-* 映射 tokens 自动双态。python replace 改源码必须 assert(静默失配=死代码上线,本次灯箱胶囊两轮翻车根因)。
```
## 被拒绝的扩展提议
- 无
## 门禁证据
- check_spec_package.py exit 0
## 遗留事项
- 无;问题处置见下方结构化区块
## 问题处置
```json
{
"issues": [],
"version": 1
}
```
@@ -0,0 +1,10 @@
{"task": "task_0001", "cmd": "pnpm astro build && grep -q \"lb-orig\" dist/gallery/index.html", "exit": 0, "duration_s": 5.364, "stdout_tail_sha256": "6eae0335cafe0d1e24f54d2da2faad789aafb149520c6e7aa6dd887e5408e6c9", "tree_fp": "e0185c60d3ae811f641c91ec71a1b0583c007e2fcfbf1b18d2f75f06e076649c", "at": "2026-10-25T04:22:26+00:00"}
{"task": "task_0002", "cmd": "pnpm astro build && grep -q \"atk-\" src/components/ArtalkComments.astro", "exit": 0, "duration_s": 4.752, "stdout_tail_sha256": "bfa0df7049956ce7f88c15baf9d92aa6a666cea3e6c52e29b71aef53fab2f992", "tree_fp": "e0185c60d3ae811f641c91ec71a1b0583c007e2fcfbf1b18d2f75f06e076649c", "at": "2026-10-25T04:22:30+00:00"}
{"task": "task_0003", "cmd": "pnpm astro build", "exit": 0, "duration_s": 4.768, "stdout_tail_sha256": "8c2286b96c36ba938681b73128e68200ebd4a30b31a682590d0eeee50413fae8", "tree_fp": "e0185c60d3ae811f641c91ec71a1b0583c007e2fcfbf1b18d2f75f06e076649c", "at": "2026-10-25T04:22:35+00:00"}
{"task": "task_0005", "cmd": "test -s docs/写作指南.md", "exit": 0, "duration_s": 0.001, "stdout_tail_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "tree_fp": "e0185c60d3ae811f641c91ec71a1b0583c007e2fcfbf1b18d2f75f06e076649c", "at": "2026-10-25T04:22:35+00:00"}
{"task": "task_0001", "cmd": "pnpm astro build && grep -q \"lb-orig\" dist/gallery/index.html", "exit": 0, "duration_s": 5.77, "stdout_tail_sha256": "ba3cb065938be0602c31bcbc1567b8ca2ccd336c7f33dc1edf61524e10e21014", "tree_fp": "e0185c60d3ae811f641c91ec71a1b0583c007e2fcfbf1b18d2f75f06e076649c", "at": "2026-10-25T04:25:52+00:00"}
{"task": "task_0002", "cmd": "pnpm astro build && grep -q \"atk-\" src/components/ArtalkComments.astro", "exit": 0, "duration_s": 5.493, "stdout_tail_sha256": "e7c1ec86a87016deb1872ac1a525ea846811d3e4b2f5e204d578703383e30e97", "tree_fp": "e0185c60d3ae811f641c91ec71a1b0583c007e2fcfbf1b18d2f75f06e076649c", "at": "2026-10-25T04:25:58+00:00"}
{"task": "task_0003", "cmd": "pnpm astro build", "exit": 0, "duration_s": 5.307, "stdout_tail_sha256": "fcb5b66f3f505b9f2dee356714459b8146a5556bc711ecc5b52f17eb6f171629", "tree_fp": "e0185c60d3ae811f641c91ec71a1b0583c007e2fcfbf1b18d2f75f06e076649c", "at": "2026-10-25T04:26:03+00:00"}
{"task": "task_0004", "cmd": "pnpm astro build && grep -q \"<video\" dist/archives/*/index.html -r | head -1", "exit": 0, "duration_s": 5.383, "stdout_tail_sha256": "defdcb3c46daab3549b8e7b9d5b3815f0e4fb841522d7112ee587b1f1e4b188a", "tree_fp": "e0185c60d3ae811f641c91ec71a1b0583c007e2fcfbf1b18d2f75f06e076649c", "at": "2026-10-25T04:26:09+00:00"}
{"task": "task_0005", "cmd": "test -s docs/写作指南.md", "exit": 0, "duration_s": 0.001, "stdout_tail_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "tree_fp": "e0185c60d3ae811f641c91ec71a1b0583c007e2fcfbf1b18d2f75f06e076649c", "at": "2026-10-25T04:26:09+00:00"}
{"task": "task_0006", "cmd": "node tests/e2e.mjs 2>&1 | grep -q \"30/30 PASS\"", "exit": 0, "duration_s": 15.076, "stdout_tail_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "tree_fp": "e0185c60d3ae811f641c91ec71a1b0583c007e2fcfbf1b18d2f75f06e076649c", "at": "2026-10-25T04:26:24+00:00"}
@@ -31,12 +31,12 @@
## 3. 功能范围
### 3.1 核心功能(MVP)
- [ ] T1 灯箱原图/下载按钮美化
- [ ] T2 Artalk 评论区美化(tokens 对齐 + 明暗双态)
- [ ] T3 markdown 媒体支持(图片优化+样式+图注;video/audio 原生标签+统一样式)
- [ ] T4 测试样张(ffmpeg 生成音视频样例 + 含三媒的样例文章)
- [ ] T5 写作指南(docs/写作指南.md:三种媒体的插入方法/体积纪律/目录约定)
- [ ] T6 E2E + 视觉复核 + 收官上线
- [x] T1 灯箱原图/下载按钮美化
- [x] T2 Artalk 评论区美化(tokens 对齐 + 明暗双态)
- [x] T3 markdown 媒体支持(图片优化+样式+图注;video/audio 原生标签+统一样式)
- [x] T4 测试样张(ffmpeg 生成音视频样例 + 含三媒的样例文章)
- [x] T5 写作指南(docs/写作指南.md:三种媒体的插入方法/体积纪律/目录约定)
- [x] T6 E2E + 视觉复核 + 收官上线
### 3.2 扩展功能
- 文内图片点击放大(复用灯箱)——二期
@@ -65,9 +65,9 @@
- 升级触发:只有改动 Artalk 集成骨架或发布链时,才升级验证范围并记录理由
## 6. 成功标准与验证方式
- [ ] 样例文章三媒齐渲染(断言 video/audio/img 元素存在) -> verify: task_0004
- [ ] 评论区双主题截图过视觉审 -> verify: task_0006
- [ ] E2E 30/30 保持全绿 -> verify: task_0006
- [x] 样例文章三媒齐渲染(断言 video/audio/img 元素存在) -> verify: task_0004
- [x] 评论区双主题截图过视觉审 -> verify: task_0006
- [x] E2E 30/30 保持全绿 -> verify: task_0006
## 7. 风险与约束
- 大视频入仓风险 → 指南纪律 + photos-ingest 类体积闸(后续可加 media-ingest)
@@ -10,7 +10,7 @@
- boundary: 只改 GalleryPage.astro 灯箱 lb-orig 区(升级为与 lbnav 同语言的胶囊按钮:图标+文字+悬停态)
- verify: `pnpm astro build && grep -q "lb-orig" dist/gallery/index.html`
- [ ] T2 Artalk 评论区美化
- [x] T2 Artalk 评论区美化
- claim: op-gitea(mesh 车道,预约 src/components/ArtalkComments.astro)
- boundary: ArtalkComments.astro 内注入页面级覆盖样式(.atk-* 选择器,用 tokens 变量,明暗双态随 [data-theme]);可调研 Artalk darkMode 配置项并在 init 传参;不改 Artalk 服务端
- verify: `pnpm astro build && grep -q "atk-" src/components/ArtalkComments.astro`
@@ -31,7 +31,7 @@
- boundary: 新建 docs/写作指南.md(三媒插入语法/资产目录约定 content/posts/assets/{slug}/)/体积纪律(图≤1MB 压缩后、音≤5MB、视频>5MB 走仓外 store+绝对 /media/ 路径待 build.sh 同步)
- verify: `test -s docs/写作指南.md`
- [ ] T6 验证收官
- [x] T6 验证收官
- depends-on: task_0001, task_0002, task_0004, task_0005
- claim: orchestrator
- boundary: E2E 复跑 + 样例页与评论区双主题截图交视觉模型 + 归档推送