Skip to content

feat: support tray icon spritesheets#15

Draft
wangrongding wants to merge 1 commit into
mainfrom
codex/implement-dynamic-sprite-replacement-for-tray-icons
Draft

feat: support tray icon spritesheets#15
wangrongding wants to merge 1 commit into
mainfrom
codex/implement-dynamic-sprite-replacement-for-tray-icons

Conversation

@wangrongding

Copy link
Copy Markdown
Owner

Motivation

  • 支持 Codex Pet 风格的整图精灵图(spritesheet)作为托盘动态图标来源,方便直接使用一张整图而不是切好的帧。
  • 保留并兼容现有按文件名顺序播放的切割帧目录方案。

Description

  • electron/tray-list.ts 中新增 spritesheet 支持:查找 pet.json/tray-icon.json/sprite.json manifest、解析配置、按 manifest 或默认网格(默认 8×9)计算格子并用 nativeImage.crop() 生成每帧 NativeImage
  • 在同一文件中新增 spritesheet 探测与构建逻辑,并在 getTrayIconSetsFromDirectory 中优先返回精灵图集(否则回退到原有多文件帧逻辑)。
  • importTrayIconSet 中加入单张精灵图导入辅助:当只选择一张图且尺寸符合默认网格时会复制图片并生成本地 pet.json(方便用户直接导入整张精灵图)。
  • 在设置面板 src/pages/Setting/TrayIconPanel.tsx 中展示精灵图信息并增加预览:若为精灵图则用 background-image + background-position/background-size 做 CSS 定位预览,保留原有切割帧的 <img> 预览路径和交互。

Testing

  • 已在仓库运行构建:pnpm build:electron && pnpm build:web,两端构建均成功。
  • 运行静态检查:pnpm lint,通过(仓库已有若干 warnings,但无新增错误)。

Codex Task

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant