build(packaging): set up multi-platform packaging and CI/CD

- Add GitHub Actions workflows for CI and releases
- Create icon generation script and SVG source
- Configure electron-builder for macOS, Windows, Linux
- Add macOS entitlements for code signing
- Add Linux post-install/remove scripts
- Enhance package.json with publishing scripts
- Add artifact naming convention
This commit is contained in:
Haze
2026-02-05 23:39:55 +08:00
Unverified
parent e02cf05baf
commit bad94e7e76
12 changed files with 815 additions and 4 deletions

68
resources/icons/README.md Normal file
View File

@@ -0,0 +1,68 @@
# ClawX Application Icons
This directory contains the application icons for all supported platforms.
## Required Files
| File | Platform | Description |
|------|----------|-------------|
| `icon.svg` | Source | Vector source for all icons |
| `icon.icns` | macOS | Apple Icon Image format |
| `icon.ico` | Windows | Windows ICO format |
| `icon.png` | All | 512x512 PNG fallback |
| `16x16.png` - `512x512.png` | Linux | PNG set for Linux |
## Generating Icons
### Using the Script
```bash
# Make the script executable
chmod +x scripts/generate-icons.sh
# Run icon generation
./scripts/generate-icons.sh
```
### Prerequisites
**macOS:**
```bash
brew install imagemagick librsvg
```
**Linux:**
```bash
apt install imagemagick librsvg2-bin
```
**Windows:**
Install ImageMagick from https://imagemagick.org/
### Manual Generation
If you prefer to generate icons manually:
1. **macOS (.icns)**
- Create a `.iconset` folder with properly named PNGs
- Run: `iconutil -c icns -o icon.icns ClawX.iconset`
2. **Windows (.ico)**
- Use ImageMagick: `convert icon_16.png icon_32.png icon_64.png icon_128.png icon_256.png icon.ico`
3. **Linux (PNGs)**
- Generate PNGs at: 16, 32, 48, 64, 128, 256, 512 pixels
## Design Guidelines
- **Background**: Gradient from #6366f1 to #8b5cf6 (Indigo to Violet)
- **Corner Radius**: ~20% of width (200px on 1024px canvas)
- **Foreground**: White claw symbol with "X" accent
- **Safe Area**: Keep 10% margin from edges
## 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

35
resources/icons/icon.svg Normal file
View File

@@ -0,0 +1,35 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<defs>
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#6366f1;stop-opacity:1" />
<stop offset="100%" style="stop-color:#8b5cf6;stop-opacity:1" />
</linearGradient>
<linearGradient id="clawGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#ffffff;stop-opacity:1" />
<stop offset="100%" style="stop-color:#e0e7ff;stop-opacity:1" />
</linearGradient>
</defs>
<!-- Background -->
<rect x="0" y="0" width="1024" height="1024" rx="200" fill="url(#bgGrad)"/>
<!-- Claw shape -->
<g transform="translate(512, 512)" fill="url(#clawGrad)">
<!-- Center circle -->
<circle cx="0" cy="0" r="100"/>
<!-- Claw fingers -->
<path d="M -50 -80 Q -80 -200 -150 -280 Q -180 -320 -150 -350 Q -120 -380 -80 -350 Q -20 -300 40 -150 Z" />
<path d="M 50 -80 Q 80 -200 150 -280 Q 180 -320 150 -350 Q 120 -380 80 -350 Q 20 -300 -40 -150 Z" />
<path d="M -100 20 Q -220 0 -320 -40 Q -370 -60 -390 -20 Q -410 20 -370 50 Q -300 100 -150 80 Z" />
<path d="M 100 20 Q 220 0 320 -40 Q 370 -60 390 -20 Q 410 20 370 50 Q 300 100 150 80 Z" />
<path d="M 0 120 Q 0 250 0 350 Q 0 400 40 420 Q 80 400 80 350 L 80 250 Q 60 150 0 120 Z" />
<path d="M 0 120 Q 0 250 0 350 Q 0 400 -40 420 Q -80 400 -80 350 L -80 250 Q -60 150 0 120 Z" />
</g>
<!-- X mark -->
<g transform="translate(750, 750)" fill="#ffffff" opacity="0.9">
<rect x="-60" y="-15" width="120" height="30" rx="15" transform="rotate(45)"/>
<rect x="-60" y="-15" width="120" height="30" rx="15" transform="rotate(-45)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB