fix(polish): 上线四缺陷修复——明暗委托/灯箱常开/评论站点名/书评宋体

- 明暗切换:document 级委托(软导航换 DOM 后元素级监听全丢);
  E2E 再抓一坑:SVGElement 非 HTMLElement 实例,守卫用 Element 基类
- 图库:#lb 无条件 display:flex 覆盖 UA 隐藏 → 灯箱"永远打开"盖全页;
  改 #lb:not([open]) 显式 none;时间戳标题清空;灯箱打磨(切换钮
  实底阴影/n/21 计数器/空标题隐藏/原图链接暗底亮蓝)
- 评论:site 'wait4x'→'wait4x.online' 对齐 Artalk 服务端(404 根因)
- 书评字体:文楷→思源宋(@fontsource 预分片);文楷降级金句 --font-kai
- 数据:21 张照片组修正 street→landscape(迁移器收到内部组 id 的坑)
- 新增 tests/e2e.mjs:Playwright 30 项全功能 E2E

验证: node tests/e2e.mjs 30/30 PASS(含软导航后明暗切换回归项)

Spec: 2026-10-25_fix-site-polish

Co-authored-by: GLM-5.3
This commit is contained in:
wait4xandGLM-5.3 committed 2026-10-25 10:46:03 +08:00
1 parent c1085de1a0
commit 7a2880b65d
33 files changed
+367 -56

No files matched your search

@@ -0,0 +1,63 @@
# 上线四缺陷修复 + E2E 全功能测试与视觉复核 - 项目范围
<!-- spec-format: 2 -->
## 1. 问题定义
- **项目目标**:一句话描述项目要解决什么问题
- **目标用户**:谁会使用这个产品或系统
- **核心价值**:完成后能持续提供什么价值
## 2. 假设与待确认
### 2.1 已确认事实
- 事实 A
### 2.2 关键假设
- 假设 A
### 2.3 待确认问题
- [ ] 问题 A
### 2.4 可选解释与取舍
- 当前选择:xxx -> 理由
### 2.5 已证伪路径
- 无(暂无证伪记录;条目写:方案概述 + 证伪依据出处 + 日期)
## 3. 功能范围
### 3.1 核心功能(MVP)
- [ ] 功能 A:描述
### 3.2 扩展功能
- 无
### 3.3 不在范围内
- 明确列出本轮不做的内容
## 4. 最小实现路径
- 最简单可行方案:xxx
- 暂不引入:xxx
- 不做的抽象/配置化:xxx
## 5. 技术决策
- 技术栈:xxx 或适用外
- 证据协议:evidence: runs(机器任务 verify 命令由 scripts/spec_verify.py run 真实执行并记录 runs.jsonl;无命令任务写 `verify: manual: <理由>`;verify 命令不得自引用本包 check 门禁)
- 本轮允许改动:xxx
- 本轮不应触碰:xxx
- Git integration branch:`spec/2026-10-25_fix-site-polish`
### 5.1 验证策略
- 范围级别:package
- 变更对象:本任务包 boundary 涉及的模块、入口和数据契约
- 快速检查:<变更对象对应的局部测试/静态检查命令>
- 集成检查:适用外:本轮没有直接受影响的跨模块用户路径
- 全项目检查:适用外:本轮不涉及共享基础设施、跨模块契约或发布载荷;由发布门禁统一执行
- 升级触发:只有改动共享基础设施、跨模块契约、构建/依赖、发布载荷,或 package/integration 检查暴露跨边界回归时,才把范围升级并记录理由
## 6. 成功标准与验证方式
- [ ] 标准 A 达成 -> verify: task_0001
- [ ] 标准 B 达成 -> verify: task_0002
## 7. 风险与约束
- 风险点:xxx -> 缓解措施
@@ -0,0 +1,26 @@
# 上线四缺陷修复 + E2E 全功能测试与视觉复核 - 任务拆解
## 使用规则
- 每个任务都要写清楚 `boundary` 和 `verify`;机器任务的 verify 以首个反引号 span 为执行的命令
- 如果一个任务没有验证方式,就不能开始;确无命令可执行的任务写 `verify: manual: <理由>`
- 发现的可执行问题必须回写本包,并在本轮做完
- 新任务包使用 `YYYY-MM-DD_<verb>-<object>`,详见 `references/naming-and-commits.md`
- verify 命令不得自引用本包 check 门禁(自指命令在「最近一条」语义下不可满足)
- 多会话/多 agent 共享时,任务可选加一行 `claim: <认领者> <ISO 时间>` 声明在做者;纯信息约定,非锁、无机器键、不进门禁,勾选即失效,归档保留
## 阶段一:实现
- [ ] 初始化最小项目骨架
- boundary: 只创建必须目录、依赖和启动骨架
- verify: `python3 -m pytest -q tests/test_skeleton.py`(替换为本项目真实初始化验证命令)
- [ ] 实现核心功能 A 的最小闭环
- depends-on: task_0001
- boundary: 只改该功能主链路所需模块
- verify: `python3 -m pytest -q tests/test_core_feature_a.py`(替换为本项目真实测试命令)
- [ ] 打通关键链路
- depends-on: task_0002
- boundary: 只补集成所需粘合代码,不顺手重构
- verify: `python3 -m pytest -q tests/test_critical_path.py`(替换为本项目真实集成验证命令)
---
**当前进度**:由脚本计算,无需手动维护