Files
voicebox/docs/ICON_WORKFLOW.md
T
Jamie Pine 7d1ee4c1b9 Implement autoupdater functionality and enhance icon management
- 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.
2026-01-25 15:38:31 -08:00

4.2 KiB

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:

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

cd tauri && bun run tauri build

Step 4: Clear Icon Cache (if icons don't update)

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 .iconAssets.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

xcrun actool --app-icon voicebox ... voicebox.icon

tauri.conf.json — Bundles generated assets to Resources root

"resources": {
  "gen/Assets.car": "./",
  "gen/voicebox.icns": "./",
  "gen/partial.plist": "./"
}

Info.plist — Tells macOS which icon to use

<key>CFBundleIconFile</key>
<string>voicebox</string>
<key>CFBundleIconName</key>
<string>voicebox</string>

Quick Reference Script

Save this as scripts/update-icons.sh:

#!/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