diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0b94e48ec..a8f0d2e7e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -350,8 +350,8 @@ jobs: echo "" echo "=== Verify release-info.json ===" - echo "Reading release-info.json directly from OSS..." - ossutil cat oss://valuecell-clawx/latest/release-info.json | jq . + ossutil cp oss://valuecell-clawx/latest/release-info.json /tmp/release-info.json -f + jq . /tmp/release-info.json echo "" echo "āœ… All files uploaded and verified successfully!" diff --git a/electron/main/tray.ts b/electron/main/tray.ts index a1b975780..488309263 100644 --- a/electron/main/tray.ts +++ b/electron/main/tray.ts @@ -29,8 +29,9 @@ export function createTray(mainWindow: BrowserWindow): Tray { // Windows: use .ico for best quality in system tray iconPath = join(iconsDir, 'icon.ico'); } else if (process.platform === 'darwin') { - // macOS: use 16x16 PNG as template image - iconPath = join(iconsDir, '16x16.png'); + // macOS: use Template.png for proper status bar icon + // The "Template" suffix tells macOS to treat it as a template image + iconPath = join(iconsDir, 'tray-icon-Template.png'); } else { // Linux: use 32x32 PNG iconPath = join(iconsDir, '32x32.png'); @@ -41,9 +42,14 @@ export function createTray(mainWindow: BrowserWindow): Tray { // Fallback to icon.png if platform-specific icon not found if (icon.isEmpty()) { icon = nativeImage.createFromPath(join(iconsDir, 'icon.png')); + // Still try to set as template for macOS + if (process.platform === 'darwin') { + icon.setTemplateImage(true); + } } - // On macOS, set as template image for proper dark/light mode support + // Note: Using "Template" suffix in filename automatically marks it as template image + // But we can also explicitly set it for safety if (process.platform === 'darwin') { icon.setTemplateImage(true); } diff --git a/resources/icons/128x128.png b/resources/icons/128x128.png index a24ea1460..0ff0d5542 100644 Binary files a/resources/icons/128x128.png and b/resources/icons/128x128.png differ diff --git a/resources/icons/16x16.png b/resources/icons/16x16.png index 1f966fa7d..dfcbb74e6 100644 Binary files a/resources/icons/16x16.png and b/resources/icons/16x16.png differ diff --git a/resources/icons/256x256.png b/resources/icons/256x256.png index c0da2af93..82fee18d0 100644 Binary files a/resources/icons/256x256.png and b/resources/icons/256x256.png differ diff --git a/resources/icons/32x32.png b/resources/icons/32x32.png index 8c1712923..31a4351f6 100644 Binary files a/resources/icons/32x32.png and b/resources/icons/32x32.png differ diff --git a/resources/icons/48x48.png b/resources/icons/48x48.png index 3483fb5a0..97ce80c00 100644 Binary files a/resources/icons/48x48.png and b/resources/icons/48x48.png differ diff --git a/resources/icons/512x512.png b/resources/icons/512x512.png index f4142bdb1..cdd2f22f1 100644 Binary files a/resources/icons/512x512.png and b/resources/icons/512x512.png differ diff --git a/resources/icons/64x64.png b/resources/icons/64x64.png index 08bfe213a..5443a394b 100644 Binary files a/resources/icons/64x64.png and b/resources/icons/64x64.png differ diff --git a/resources/icons/README.md b/resources/icons/README.md index 1cca87307..91119eae8 100644 --- a/resources/icons/README.md +++ b/resources/icons/README.md @@ -11,6 +11,8 @@ This directory contains the application icons for all supported platforms. | `icon.ico` | Windows | Windows ICO format | | `icon.png` | All | 512x512 PNG fallback | | `16x16.png` - `512x512.png` | Linux | PNG set for Linux | +| `tray-icon-template.svg` | Source | macOS tray icon template source | +| `tray-icon-Template.png` | macOS | 22x22 status bar icon (note: "Template" suffix required) | ## Generating Icons @@ -55,14 +57,23 @@ If you prefer to generate icons manually: ## Design Guidelines -- **Background**: Gradient from #6366f1 to #8b5cf6 (Indigo to Violet) +### Application Icon - **Corner Radius**: ~20% of width (200px on 1024px canvas) - **Foreground**: White claw symbol with "X" accent - **Safe Area**: Keep 10% margin from edges +### macOS Tray Icon +- **Format**: Single-color (black) on transparent background +- **Size**: 22x22 pixels (system automatically handles @2x retina) +- **Naming**: Must end with "Template.png" for automatic template mode +- **Design**: Simplified monochrome version of main icon (ClawX logo) +- **Source**: Use `tray-icon-template.svg` as the source +- **Important**: Must be pure black (#000000) on transparent background - no gradients or colors + ## Updating the Icon 1. Edit `icon.svg` with your vector editor (Figma, Illustrator, Inkscape) -2. Run `./scripts/generate-icons.sh` -3. Verify generated icons look correct -4. Commit all generated files +2. For macOS tray icon, edit `tray-icon-template.svg` (must be single-color black on transparent) +3. Run `node scripts/generate-icons.mjs` +4. Verify generated icons look correct +5. Commit all generated files diff --git a/resources/icons/icon.icns b/resources/icons/icon.icns index 9ab81145c..fb4c95975 100644 Binary files a/resources/icons/icon.icns and b/resources/icons/icon.icns differ diff --git a/resources/icons/icon.ico b/resources/icons/icon.ico index b1d1974a5..2579a5615 100644 Binary files a/resources/icons/icon.ico and b/resources/icons/icon.ico differ diff --git a/resources/icons/icon.png b/resources/icons/icon.png index f4142bdb1..cdd2f22f1 100644 Binary files a/resources/icons/icon.png and b/resources/icons/icon.png differ diff --git a/resources/icons/icon.svg b/resources/icons/icon.svg index a6e2a48d5..c1c979faa 100644 --- a/resources/icons/icon.svg +++ b/resources/icons/icon.svg @@ -1,4 +1,22 @@ - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/icons/tray-icon-Template.png b/resources/icons/tray-icon-Template.png new file mode 100644 index 000000000..2f23da465 Binary files /dev/null and b/resources/icons/tray-icon-Template.png differ diff --git a/resources/icons/tray-icon-template.svg b/resources/icons/tray-icon-template.svg new file mode 100644 index 000000000..1fbdea08d --- /dev/null +++ b/resources/icons/tray-icon-template.svg @@ -0,0 +1,3 @@ + + + diff --git a/scripts/generate-icons.mjs b/scripts/generate-icons.mjs index f88e06664..ba601250c 100644 --- a/scripts/generate-icons.mjs +++ b/scripts/generate-icons.mjs @@ -77,6 +77,20 @@ try { } echo` āœ… Created ${generatedCount} Linux PNG icons`; + // 5. Generate macOS Tray Icon Template + echo`šŸ“ Generating macOS tray icon template...`; + const TRAY_SVG_SOURCE = path.join(ICONS_DIR, 'tray-icon-template.svg'); + + if (fs.existsSync(TRAY_SVG_SOURCE)) { + await sharp(TRAY_SVG_SOURCE) + .resize(22, 22) + .png() + .toFile(path.join(ICONS_DIR, 'tray-icon-Template.png')); + echo` āœ… Created tray-icon-Template.png (22x22)`; + } else { + echo` āš ļø tray-icon-template.svg not found, skipping tray icon generation`; + } + echo`\n✨ Icon generation complete! Files located in: ${ICONS_DIR}`; } catch (error) {