chore: rebuild release package

This commit is contained in:
shiyue
2026-07-18 10:14:38 +08:00
parent fa15b54469
commit a76de06c47
112 changed files with 8858 additions and 399 deletions

View File

@@ -0,0 +1,42 @@
# Warframe 主题美术重构发现
## 用户纠正
- “参考”不等于只提取颜色,也不等于把原图替换掉。
- 用户要的是完整主题:图片必须真实显示并参与空间构图,界面组件也必须继承画作的视觉语言。
- 简单把几张图并排放置同样不合格;需要连续构图、明确主次和组件级主题表达。
## 四张图的可用构图信息
- 原始荒野图:暖灰、焦土橙、黑色角色剪影,主体居中且披风向左展开;适合作为最大主画面,
保留人物完整轮廓,允许轻微裁切上下边框但不能切断头部和武器。
- 红色群像:太阳位于中上部,四个角色集中在中下部,左右有蓝色闪电和青色能量;适合做
横向战场切片,裁切范围以 18%–82% 高度为主,保留太阳和中央角色。
- 冷蓝近景:单角色几乎填满纵向画幅,肩部橙红能量点是天然焦点;适合做窄幅前景切片,
`object-position` 稍偏上,不能裁掉头肩轮廓。
- The Sacrifice:暗青黑背景、群像围绕纵向金色中轴,底部自带标题;适合做深景基底和
暗金骨架来源,完整展示时保留底部标题,窄切片时只取金色中轴和上半群像。
## 设计方向
- 欢迎态建立一个连续的 `welcome-visual` 舞台,四张图用不规则网格、遮罩和层级共同组成
视觉锚点,不使用四张独立卡片的相册布局。
- 文案放在独立黑曜石表面,利用暗金竖向骨架与冷青能量短线连接视觉舞台,不直接压在
高细节画面上。
- 组件语言采用细边骨架、切角、双层边缘和克制能量光;正文气泡保持实色,避免重回费眼。
- 使用本地资源避免 Displate 热链失效;图片下载前的临时副本已在 `/tmp` 验证可读。
## 首轮真实浏览器复核
- 当前环境实际存在 Snap 内的 Firefox 二进制;绕过 `/usr/bin/firefox` 的 Snap 包装层后,
可以对本地临时预览页执行 1440×900、1024×768、390×844 的真实截图,不再只做静态推算。
- 首次集成暴露出确定性 DOM/CSS 契约错误:HTML 使用孤立 `--wasteland` 等类,CSS 使用
`.warframe-shard--wasteland`,导致图层没有尺寸和位置;已修正为完整 BEM 类名。
- 1440×900 最终构图显示四张图、侧栏、文本板和输入区,已经形成暗金骨架、冷青能量与
赤红战场的连续视觉场,不再是单图或纯换色。
- 原 980px 断点在 1024px 扣除 280px 侧栏和消息 padding 后会导致两列最小宽度溢出;
已将堆叠断点提前到 1060px。
- 1024/390 首帧截图处于 `warframeShardReveal` 的 opacity=0 阶段,说明首屏约 0.6 秒会先显示
黑色骨架再显示图片;需要用禁用动画的临时预览再次检查最终响应式状态,并评估是否缩短首屏延迟。
- 本地服务对 PNG 返回 `image/png`,但三张新增 JPEG 初次返回 `application/octet-stream`;
浏览器截图证明仍能解码,但为避免严格客户端/代理不稳定,静态 MIME 映射需补 `.jpg/.jpeg`。

View File

@@ -0,0 +1,33 @@
# Warframe 主题美术重构进展
## 2026-07-17
- 已接收用户纠正:问题不只是图片没显示,而是当前实现没有形成完整主题语言。
- 已重新读取 `frontend-skill`、`planning-with-files`、`todo-list-csv`。
- 已查看原始荒野图和三张用户提供画作,记录各自焦点、可裁切范围和构图职责。
- 已建立四图连续视觉场、Orokin 组件语言和高对比阅读层的返工计划。
- codebase-memory MCP 仍因 `Transport closed` 不可用,已按项目规则降级为本地精确检索。
- ImageMagick 未安装,不将其作为实现前置条件;继续使用已查看原图和 `file` 元数据判断裁切。
- 计划审查第 1 轮指出素材来源/目标路径与四图回归契约不够可执行;已补齐四张素材的
精确路径、URL 标识、尺寸、SHA-256、构图职责,以及专项/完整回归必须覆盖的新断言。
- 计划审查第 2 轮通过;四张素材路径、尺寸和 SHA-256 均由审查者独立核对无误,进入
本地静态资源保存阶段。
- 三张参考画作已按素材契约保存为本地静态资源,四图 hash、尺寸和格式再次核验通过;
原始荒野图保持字节不变。动态与静态欢迎态均已加入四个真实 `<img>` 图层。
- 四图 CSS 与组件级 Orokin 主题层已完成;主线程复核修正了修饰类不匹配导致图片无尺寸的
故障,并把响应式堆叠断点从 980px 提前到 1060px。
- 已通过 Firefox 获取 1440×900 真实截图;四图与完整界面均显示。1024/390 截图命中进场
动画首帧,正在禁用动画复核最终响应式构图。
- 禁用动画后的 1024×768 与 390×844 Firefox 最终态截图确认:四张图均清晰可见,原图
保持最大主画面,三张参考图分别承担深景、冷青前景和赤红战场切片,整体不是卡片墙。
- 导航、标题栏、会话项、主次按钮、输入框、消息气泡和菜单已统一为切角暗金骨架、冷青
能量短线与不透明黑曜石表面;1440 截图确认组件与主视觉属于同一套主题语言。
- 响应式已在 1060px 提前堆叠,1024 与 390 最终态均无横向溢出;figure 自带暗色骨架
fallback。首屏图片动画改为始终保持 opacity=1,只做位移/缩放,避免任何“图片没显示”瞬间。
- 新四图专项回归首次运行拦截主按钮暗金端点 6.85:1 的对比度回退,已提亮到 7.81:1。
- 回归契约已从旧单图规则替换为四图本地资产 hash/尺寸、动态静态四图 DOM、连续构图、
正文无图、组件主题、1060/560 响应式和首帧可见性断言;缓存版本更新为 Warframe Orokin。
- 更新后的 `gilded-theme` 专项回归通过,进入全量回归和实际 HTTP 资源验证。
- 全量回归首次命中既有 Codex App steer mock 时序失败,正在检查遗留进程并执行有上限复跑。
- 全量回归有上限复跑通过;HTTP 检查发现 JPEG Content-Type 为 octet-stream,已补静态服务
`.jpg/.jpeg → image/jpeg` 映射和主题专项断言,等待按会话运行状态决定是否重启生效。

View File

@@ -0,0 +1,86 @@
# 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 JPEG;SHA-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 JPEG;SHA-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 JPEG;SHA-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 秒上限复跑,不把该非主题错误算作通过。