Files
2026-07-18 10:14:38 +08:00

87 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Warframe 主题美术重构计划
## 目标
把 gilded 从“暗色换色皮肤”重构为完整 Warframe 主题:保留原始荒野画作作为主视觉,
将用户提供的三张画作作为真实可见的次级画面,通过切片、遮罩、景深和界面骨架融合成
一套连续构图;导航、按钮、输入框、选中态和动效统一采用 Orokin/星际战甲视觉语言,
同时保持正文阅读表面的高对比度。
## 视觉策略
- **视觉论点:** 黑曜石舰舱中展开的 Orokin 档案界面,暗金骨架承载冷青能量与赤红战场,
四张画面组成一个连续视觉场,而不是四张并排海报。
- **内容规划:** 欢迎态负责完整主题表达;导航负责定位;聊天区负责阅读;输入区负责行动。
- **交互论点:** 主视觉分层进场;画面切片在 hover/focus 时产生克制景深;按钮和会话选中态
使用切角、能量线和短距离位移;减少动态模式下全部取消。
## 执行步骤
1. [complete] 建立四图主题构图与素材契约
2. [complete] 保存并校验三张参考画作资源
3. [complete] 重构欢迎态为连续多图主视觉
4. [complete] 统一导航输入按钮的 Warframe 组件语言
5. [complete] 完成桌面移动响应式和加载降级
6. [complete] 更新回归契约与缓存版本
7. [in_progress] 运行专项全量回归并检查实际资源加载
## 完成标准
- 原始 1000×1500 画作继续作为主视觉;三张用户提供的 Displate 画作保存为本地静态资源,
不依赖远程热链,四张图在欢迎态真实可见并有明确主次。
- 不是相册、卡片墙或简单并排:桌面端通过不规则切片、层叠深度和统一骨架线组成一个连续
视觉场;移动端重排成主画面加叙事切片,不能横向溢出。
- 导航、标题栏、会话项、按钮、输入框、菜单与焦点态共享切角、暗金骨架、冷青能量高光;
不能只改颜色,也不能用图案牺牲文字可读性。
- 普通聊天正文仍使用不透明表面;主/次/弱文字最低对比度保持 7:1 / 5.5:1 / 4.5:1。
- 所有图片由真实 `<img>` 或稳定本地资源加载;单图失败时保留结构和可读界面,不出现空白块。
- `scripts/regression.js` 必须移除旧的“原图只引用 2 次 / 只有 `.welcome-art`”单图契约,
改为断言四个本地资源存在且 hash/尺寸固定、动态与静态欢迎态均含四个 `<img>`、连续构图
容器和四种图层类存在、UI 不含远程热链、聊天正文不使用图片背景、移动端有明确重排。
- `npm run regression -- --target gilded-theme``npm run regression``git diff --check`
四张图片的本地 HTTP 200 / 正确 Content-Type 检查全部通过。
## 素材契约
1. 主图:`public/assets/themes/gilded-wasteland.png` → 保持原路径1000×1500 PNG
SHA-256 `11bf3ffed4422c08f6be217c63060ba68d63367e747a3604fc2d7b877e9c5955`
用途为最大荒野主画面,不能被替换。
2. 赤红群像:用户 URL `ce5c50d5-7712-494e-9605-0cf6fa28118a.jpg?speedsize=w_480`
当前 `/tmp/warframe-candidate-1.jpg` → 目标
`public/assets/themes/warframe-ember-squad.jpg`480×673 JPEGSHA-256
`a9c89c5ec1f94445fbdce6b24d7a0a54e492d003cfbee395601fbaba405c6d65`
用途为带太阳与中央角色的横向战场切片。
3. 冷蓝近景:用户 URL `fc78630c-3914-4140-b64a-8e181f41c62f.jpg?speedsize=w_480`
当前 `/tmp/warframe-candidate-2.jpg` → 目标
`public/assets/themes/warframe-orokin-figure.jpg`480×672 JPEGSHA-256
`80c2dec24353ddc38629ae25568802cf3201d9da67b4b948047201952e5fc95b`
用途为保留头肩轮廓的冷青窄幅前景。
4. The Sacrifice用户 URL `ddd18c99-c3ba-466b-bcbe-690276d29aea.jpg?speedsize=w_480`
当前 `/tmp/warframe-candidate-3.jpg` → 目标
`public/assets/themes/warframe-sacrifice.jpg`480×672 JPEGSHA-256
`792ab3eb2bd0b491f24676c2c42273a2b5167b4450aeb7edd579338f0b777b76`
用途为暗青深景、纵向金色中轴和底部标题层。
## 约束
- 保留现有无关未提交改动尤其子代理卡片逻辑、Trellis 任务和发布包。
- 不重启 cc-web静态文件由当前服务直接提供。
- 不伪造浏览器截图;若仍没有可用浏览器运行时,明确记录视觉验证边界。
## 错误记录
- 首次在 `/tmp` 全目录检索候选图时命中 systemd 私有目录权限错误;候选文件仍成功定位,
后续只读取四个精确路径,不再扫描受限目录。
- codebase-memory MCP 的 `list_projects``index_status` 均返回 `Transport closed`;按项目
约定降级为 `rg`/`sed` 精确定位,并保留最终行号交叉验证。
- 当前环境没有 ImageMagick 的 `identify`/`convert`;图片尺寸改用 `file` 和已有 JPG/PNG
元数据核验,色彩与裁切根据已查看的原始像素图判断,不重复调用缺失命令。
- `/usr/bin/firefox` 的 Snap 包装层因 mount namespace 限制超时;改用
`/snap/firefox/current/usr/lib/firefox/firefox` 直接运行后截图成功,不重复调用包装层。
- 首次修正四图 BEM 类名的组合补丁因 `app.js` 实际为多行模板而未匹配;读取精确上下文后
改用逐行小补丁成功,未产生部分修改。
- 四图专项回归首次命中按钮金色渐变暗端对比度仅 6.85:1将暗端由 `#b9995c` 提亮为
`#c2a566`7.81:1保留渐变层次而不降低 7:1 验收标准。
- 首次全量回归在既有 Codex App steer mock 时序处返回 `no active turn to steer`,主题专项
断言此前已通过;先检查遗留 mock 进程,再以 60 秒上限复跑,不把该非主题错误算作通过。