diff --git a/landing/public/favicon.ico b/landing/public/favicon.ico index 00e2309e..d96121e0 100644 Binary files a/landing/public/favicon.ico and b/landing/public/favicon.ico differ diff --git a/landing/src/app/layout.tsx b/landing/src/app/layout.tsx index 36cd6ab4..fb9e625a 100644 --- a/landing/src/app/layout.tsx +++ b/landing/src/app/layout.tsx @@ -1,24 +1,22 @@ import type { Metadata } from 'next'; import { Inter } from 'next/font/google'; import './globals.css'; -import { Header } from '@/components/Header'; import { Footer } from '@/components/Footer'; +import { Header } from '@/components/Header'; const inter = Inter({ subsets: ['latin'], variable: '--font-sans' }); export const metadata: Metadata = { - title: 'voicebox - Professional Voice Cloning Desktop App', + title: 'Voicebox - Open Source Voice Cloning Desktop App Powered by Qwen3-TTS', description: 'Near-perfect voice cloning powered by Qwen3-TTS. Desktop app for Mac, Windows, and Linux. Multi-sample support, smart caching, local or remote inference.', keywords: ['voice cloning', 'TTS', 'Qwen3', 'desktop app', 'AI voice'], icons: { icon: [ - { url: '/favicon.ico', sizes: 'any' }, { url: '/favicon.png', type: 'image/png' }, + { url: '/favicon.ico', sizes: 'any' }, ], - apple: [ - { url: '/apple-touch-icon.png', sizes: '180x180', type: 'image/png' }, - ], + apple: [{ url: '/apple-touch-icon.png', sizes: '180x180', type: 'image/png' }], }, openGraph: { title: 'voicebox', diff --git a/scripts/update-icons.sh b/scripts/update-icons.sh index 23640d05..10a36339 100755 --- a/scripts/update-icons.sh +++ b/scripts/update-icons.sh @@ -161,14 +161,21 @@ sips -s format png -z 1024 1024 "$SOURCE_ICON" --out "$LANDING_LOGO" 2>/dev/null echo "Generating landing page favicon..." # Generate favicon.png (32x32 is standard for favicons) sips -s format png -z 32 32 "$SOURCE_ICON" --out "$LANDING_PUBLIC/favicon.png" 2>/dev/null -# Generate favicon.ico - try ImageMagick if available, otherwise use PNG (Next.js handles PNG favicons) + +# Generate proper multi-size favicon.ico using ImageMagick if available if command -v convert &> /dev/null; then - convert "$LANDING_PUBLIC/favicon.png" "$LANDING_PUBLIC/favicon.ico" 2>/dev/null || \ - cp "$LANDING_PUBLIC/favicon.png" "$LANDING_PUBLIC/favicon.ico" 2>/dev/null + # Create temporary PNG files at different sizes for ICO + sips -s format png -z 16 16 "$SOURCE_ICON" --out /tmp/favicon-16.png 2>/dev/null + sips -s format png -z 32 32 "$SOURCE_ICON" --out /tmp/favicon-32.png 2>/dev/null + # Combine into proper multi-size ICO file + convert /tmp/favicon-16.png /tmp/favicon-32.png "$LANDING_PUBLIC/favicon.ico" 2>/dev/null + rm -f /tmp/favicon-16.png /tmp/favicon-32.png 2>/dev/null + echo " ✓ Generated proper multi-size favicon.ico" else - # Fallback: copy PNG as ICO (Next.js and modern browsers handle this) - cp "$LANDING_PUBLIC/favicon.png" "$LANDING_PUBLIC/favicon.ico" 2>/dev/null + # Fallback: skip ICO if ImageMagick not available (PNG will be used) + echo " ⚠ ImageMagick not found - skipping favicon.ico (using favicon.png instead)" fi + # Also generate apple-touch-icon (180x180 for iOS) sips -s format png -z 180 180 "$SOURCE_ICON" --out "$LANDING_PUBLIC/apple-touch-icon.png" 2>/dev/null diff --git a/tauri/src-tauri/gen/Assets.car b/tauri/src-tauri/gen/Assets.car index 25aab4df..0efa3de0 100644 Binary files a/tauri/src-tauri/gen/Assets.car and b/tauri/src-tauri/gen/Assets.car differ