Files
cc-web/.trellis/tasks/07-17-gilded-wasteland-theme/info.md
2026-07-18 10:14:38 +08:00

71 lines
4.6 KiB
Markdown
Raw 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.

# 暗金荒野主题技术设计
## 实施结论
沿用现有纯前端 `THEME_OPTIONS + html[data-theme] + CSS 变量` 架构,不新增依赖、不改服务端。原 Warframe 主题 `gilded` 恢复为可见选项;新主题使用独立 ID `wasteland`,以用户背景图作为全画布主视觉,并用半透明黑铁面板和旧金描边覆盖现有工作台。
## 主题契约
- 默认主题仍为 `washi`。
- `gilded`:保留现有 Warframe Wasteland 注册、四图 welcome 舞台和样式;删除 `hidden: true`。
- `wasteland`:新增可见注册,label 为“暗金荒野”,swatches 为 `#050707/#171511/#c49a5a/#6f783f`。
- 删除 `public/index.html` 中 `gilded -> washi` 的首屏迁移;不新增任何主题迁移。
- `normalizeTheme()` 与 picker 保留现有统一逻辑,两个主题都应正常持久化和选择。
- cache bust 更新为 `20260717-wasteland-theme`。
## 资产方案
- 将 `sessions/_attachments/094d7907-875d-41f4-9985-992c87c9b9cc.webp` 原样复制到 `public/assets/themes/wasteland/background.webp`。
- 从 `sessions/_attachments/43bd9ed6-2ba6-4c9d-bd9d-25b068cb4711.webp` 的 32px 档裁切 17 个常用图标,生成 `public/assets/themes/wasteland/icons/*.png`。
- 图标输出统一使用 64×64 透明 PNG 画布;源主体先按研究文档给出的 bbox 裁剪,再用亮度/色相 mask 去掉暗色背景,保留旧金高光和 status 的绿色中心,边缘做 1px 以内羽化。
- 创建 `public/assets/themes/wasteland/icons/manifest.json`,每项记录 `source`、`card`、`variant`、`bbox`、`output`。
- 至少在新主题的 new chat、search、attachment、send、stop、settings 等可见控件中实际使用切分图标;其余图标作为主题资产集供弹层和后续控件复用。
## CSS 设计
### 变量层
新增 `html[data-theme='wasteland']`:
- 页面:`#070807`、黑铁半透明面板 `rgba(13,15,14,.82)`。
- 文字:主文字 `#efe8d8`、次文字 `#cfc3aa`、弱文字 `#9e927d`。
- 强调:旧金 `#c49a5a`,状态绿 `#6f783f`,危险余烬 `#a65b3d`。
- 角切:复用单一 `--wasteland-cut`,不要给所有容器叠加厚边框。
### 主视觉与层级
- `body` 使用多层遮罩 + `background.webp`,`background-size: cover`、桌面 `background-position: center`;人物保持在右半区。
- `.app`、`.chat-main`、`.messages-wrap` 允许背景透出;侧栏、顶栏、消息、输入区使用不同透明度的不透明化玻璃面板,正文区域对比度优先。
- 左侧遮罩更深,人物核心区域只叠轻微暖金径向光;移动端提高整体遮罩并使用 `background-position: 70% 50%`。
- 现有 `.welcome-visual` 仍只属于 `gilded`,`wasteland` 不复用 Warframe 四图舞台。
### 组件与交互
- 侧栏/顶栏/输入区使用细旧金分隔线,不做大面积亮金渐变。
- 用户消息使用暗棕黑,助手消息使用黑铁;工具调用块用左侧旧金标记强化层级。
- 主按钮仅在 hover/focus 时出现短促微光;列表 hover 位移不超过 2px。
- 主题切入使用 320–420ms 淡入,按钮/边框反馈 140–180ms。
- `prefers-reduced-motion: reduce` 下禁用 `wasteland` 的动画与过渡。
- 不改现有布局结构、不新增营销 hero、卡片只用于实际交互对象。
## 业务文件最小改动
- `public/app.js`:只在 `THEME_OPTIONS` 附近移除 `gilded.hidden` 并新增 `wasteland`;不要触碰后半文件的子代理卡片改动。
- `public/index.html`:删除 3 行 `gilded` 迁移,更新 cache bust;必要时只给现有静态控件增加主题图标所需的无障碍钩子。
- `public/style.css`:在变量区新增 `wasteland` 变量并加入共享暗色 selector;在文件尾追加独立 `wasteland` 组件层,不重写 `gilded` 区块。
- `scripts/regression.js`:保留现有 Warframe 资产检查,改写“隐藏/迁移”断言;新增 Wasteland 资产清单、ID/选择器/背景/图标/对比度/reduced-motion/cache bust 契约和 `wasteland-theme` target。
- `server.js`:不修改,现有 WebP/PNG MIME 已满足。
## 验证
1. `git diff --check`
2. `npm run regression -- --target gilded-theme`
3. `npm run regression -- --target wasteland-theme`
4. `npm run regression`
5. 浏览器桌面视口 1672×941、1440×900,以及窄屏 390×844;验证两个主题均可选择、刷新持久化、背景/图标加载、文本可读、无横向溢出。
## 研究引用
- `research/theme-architecture.md`:主题注册、持久化、CSS 分层、回归入口和脏文件边界。
- `research/asset-slicing.md`:背景构图、图标网格、17 个 bbox、透明化算法和输出格式。