mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-09-16 13:20:39 -07:00
- Added a new UpdateNotification component to inform users about available updates and facilitate installation. - Integrated useAutoUpdater hook for managing update checks and installations. - Updated package.json with new build and generate scripts for release preparation and key generation. - Enhanced tauri configuration to support autoupdater with signing keys and endpoints. - Created scripts for preparing signed releases and updating icons, ensuring a streamlined workflow for asset management. - Added detailed documentation for autoupdater setup and icon update workflow.
151 lines
4.2 KiB
Markdown
151 lines
4.2 KiB
Markdown
# Icon Update Workflow for voicebox
|
|
|
|
## Prerequisites
|
|
- Xcode Command Line Tools installed (`xcode-select --install`)
|
|
- Your icon designed in Icon Composer and saved as `voicebox.icon` in the project root
|
|
|
|
## Directory Structure
|
|
```
|
|
voicebox/
|
|
├── voicebox.icon/ # macOS 26 Liquid Glass icon bundle
|
|
│ ├── icon.json
|
|
│ └── Assets/
|
|
│ └── Voicebox.png # Your source image
|
|
├── tauri/
|
|
│ ├── assets/
|
|
│ │ └── voicebox_exports/ # Your 1024x1024 exports
|
|
│ └── src-tauri/
|
|
│ ├── gen/ # Auto-generated at build time
|
|
│ │ ├── Assets.car # Liquid Glass assets
|
|
│ │ ├── voicebox.icns # Generated fallback icon
|
|
│ │ └── partial.plist
|
|
│ └── icons/ # Tauri fallback icons (all platforms)
|
|
│ ├── icon.icns
|
|
│ ├── icon.ico
|
|
│ ├── 32x32.png
|
|
│ ├── 128x128.png
|
|
│ └── ...
|
|
```
|
|
|
|
## Step 1: Update the Liquid Glass Icon
|
|
|
|
Edit `voicebox.icon/` in Icon Composer (or manually update `icon.json` and `Assets/`).
|
|
|
|
The build script (`build.rs`) automatically compiles this during `cargo build`.
|
|
|
|
## Step 2: Regenerate Fallback Icons
|
|
|
|
After updating the `.icon` bundle, regenerate the fallback icons:
|
|
|
|
```bash
|
|
cd tauri/src-tauri
|
|
|
|
# Trigger rebuild to generate new icns
|
|
cargo build
|
|
|
|
# Copy the generated icns to icons folder
|
|
cp gen/voicebox.icns icons/icon.icns
|
|
|
|
# Generate PNGs from the icns
|
|
sips -s format png -z 32 32 gen/voicebox.icns --out icons/32x32.png
|
|
sips -s format png -z 64 64 gen/voicebox.icns --out icons/64x64.png
|
|
sips -s format png -z 128 128 gen/voicebox.icns --out icons/128x128.png
|
|
sips -s format png -z 256 256 gen/voicebox.icns --out icons/[email protected]
|
|
sips -s format png -z 512 512 gen/voicebox.icns --out icons/icon.png
|
|
|
|
# Windows Square logos
|
|
for size in 30 44 71 89 107 142 150 284 310; do
|
|
sips -s format png -z $size $size gen/voicebox.icns --out "icons/Square${size}x${size}Logo.png"
|
|
done
|
|
```
|
|
|
|
## Step 3: Rebuild the App
|
|
|
|
```bash
|
|
cd tauri && bun run tauri build
|
|
```
|
|
|
|
## Step 4: Clear Icon Cache (if icons don't update)
|
|
|
|
```bash
|
|
sudo rm -rf /Library/Caches/com.apple.iconservices.store
|
|
sudo killall Finder
|
|
sudo killall Dock
|
|
```
|
|
|
|
---
|
|
|
|
## How It Works
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `voicebox.icon/` | Source for macOS 26 Liquid Glass icon |
|
|
| `build.rs` | Compiles `.icon` → `Assets.car` + `voicebox.icns` at build time |
|
|
| `gen/Assets.car` | Liquid Glass assets (macOS 26+) |
|
|
| `gen/voicebox.icns` | Auto-generated fallback icon |
|
|
| `icons/icon.icns` | Tauri's fallback for older macOS |
|
|
| `icons/*.png` | Tauri's fallback for other platforms |
|
|
| `Info.plist` | Points to `voicebox` as icon name |
|
|
| `tauri.conf.json` | Bundles `gen/*` to Resources root |
|
|
|
|
## Key Config Files
|
|
|
|
### `build.rs` — Compiles the icon
|
|
|
|
```rust
|
|
xcrun actool --app-icon voicebox ... voicebox.icon
|
|
```
|
|
|
|
### `tauri.conf.json` — Bundles generated assets to Resources root
|
|
|
|
```json
|
|
"resources": {
|
|
"gen/Assets.car": "./",
|
|
"gen/voicebox.icns": "./",
|
|
"gen/partial.plist": "./"
|
|
}
|
|
```
|
|
|
|
### `Info.plist` — Tells macOS which icon to use
|
|
|
|
```xml
|
|
<key>CFBundleIconFile</key>
|
|
<string>voicebox</string>
|
|
<key>CFBundleIconName</key>
|
|
<string>voicebox</string>
|
|
```
|
|
|
|
## Quick Reference Script
|
|
|
|
Save this as `scripts/update-icons.sh`:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
set -e
|
|
|
|
cd "$(dirname "$0")/../tauri/src-tauri"
|
|
|
|
echo "Building to generate new icons..."
|
|
cargo build
|
|
|
|
echo "Copying icns to icons folder..."
|
|
cp gen/voicebox.icns icons/icon.icns
|
|
|
|
echo "Generating PNG icons..."
|
|
sips -s format png -z 32 32 gen/voicebox.icns --out icons/32x32.png
|
|
sips -s format png -z 64 64 gen/voicebox.icns --out icons/64x64.png
|
|
sips -s format png -z 128 128 gen/voicebox.icns --out icons/128x128.png
|
|
sips -s format png -z 256 256 gen/voicebox.icns --out icons/[email protected]
|
|
sips -s format png -z 512 512 gen/voicebox.icns --out icons/icon.png
|
|
|
|
echo "Generating Windows Square logos..."
|
|
for size in 30 44 71 89 107 142 150 284 310; do
|
|
sips -s format png -z $size $size gen/voicebox.icns --out "icons/Square${size}x${size}Logo.png"
|
|
done
|
|
|
|
echo "Done! Icons updated."
|
|
echo "Run 'bun run tauri build' to rebuild the app."
|
|
```
|
|
|
|
Make it executable: `chmod +x scripts/update-icons.sh`
|