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

58 lines
3.3 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.

# 新增暗金荒野主题
## Goal
为 cc-web 新增一个独立的“暗金荒野”视觉主题,忠实吸收用户参考图中的黑铁、旧金、余烬、切角边框和暗黑骑士主视觉,同时保留现有 Warframe 主题供即时切换对比。
## What I already know
- 用户明确要求新建主题,不直接覆盖当前 Warframe。
- 用户提供一张完整界面参考、一张 1672×941 背景图和一张 1672×941 图标板,并授权自行切图。
- 主题必须覆盖现有 cc-web 工作台,而不是单独制作静态展示页。
- 工作区有其他未提交改动,实施必须精确合并。
## Assumptions
- 本轮保持现有默认主题不变,仅在主题选择器中新增选项。
- 原 Warframe 主题保留内部标识 `gilded`;新主题显示名“暗金荒野”,内部标识固定为 `wasteland`。
- 主题保持现有信息结构与业务交互,不新增功能入口。
## Requirements
- 新主题可在现有设置/主题选择入口中选择并持久化。
- 现有 `gilded`(Warframe Wasteland)主题移除隐藏限制和启动迁移,继续可选;用户可在它与 `wasteland`(暗金荒野)之间来回切换对比。
- 使用用户提供的暗黑骑士图作为全局主背景,并保证聊天文本、导航和弹层可读。
- 从图标板切出主题所需的代表性图标,作为本地资产接入。
- 侧栏、顶栏、消息、工具调用块、输入区、按钮、表单、弹层和滚动条使用统一暗金设计语言。
- 桌面与窄屏布局均不得退化;动效遵守 `prefers-reduced-motion`。
## Acceptance Criteria
- [ ] 主题选择器中可看到“暗金荒野”和原 Warframe 两个独立选项。
- [ ] 切换至暗金荒野后刷新页面,主题仍保持。
- [ ] 用户提供的背景和切分图标均由项目本地静态资源加载。
- [ ] 主题在常见桌面与移动视口无明显遮挡、溢出或不可读文本。
- [ ] 主题切换、关键悬停和聚焦有一致且克制的视觉反馈。
- [ ] 现有自动化回归通过,并补充新主题注册/资源相关断言。
## Definition of Done
- 静态检查和相关回归测试通过。
- 至少完成桌面和窄屏两种视口的浏览器视觉验收。
- 不覆盖用户现有未提交改动,不引入额外前端依赖。
- 临时 TODO CSV 清理,Trellis 与持久化计划记录收口。
## Out of Scope
- 重构现有应用信息架构或业务功能。
- 删除、重命名或替换原 Warframe 主题。
- 生成新的 AI 背景图或建立通用图标编辑器。
## Technical Notes
- 优先使用 codebase-memory-mcp 定位主题注册、持久化和测试调用链,再用 `rg`/`sed` 核验行号与未索引静态内容。
- 前端视觉遵循 `frontend-skill`:以强主视觉为锚点,避免卡片堆叠与无意义装饰,最多一个主强调色。
- 主题 ID 契约:`gilded` 只对应旧 Warframe,`wasteland` 只对应新暗金荒野,默认 `washi` 不变。
- 源资产路径:`sessions/_attachments/094d7907-875d-41f4-9985-992c87c9b9cc.webp`(背景)、`sessions/_attachments/43bd9ed6-2ba6-4c9d-bd9d-25b068cb4711.webp`(图标板)、`sessions/_attachments/f01c1388-b603-434a-b226-2ff5771d4925.webp`(完整参考)。
- 目标资产路径:`public/assets/themes/wasteland/background.webp` 与 `public/assets/themes/wasteland/icons/*.png`。