diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cce4670b..648e1c36 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,13 +28,21 @@ jobs: provider: "pytorch-cuda" python-version: "3.12" # PyTorch CPU provider (Linux) - # - platform: "ubuntu-22.04" - # provider: "pytorch-cpu" - # python-version: "3.12" + - platform: "ubuntu-22.04" + provider: "pytorch-cpu" + python-version: "3.12" # PyTorch CUDA provider (Linux) - large binary, uploaded to R2 - platform: "ubuntu-22.04" provider: "pytorch-cuda" python-version: "3.12" + # PyTorch CPU provider (macOS Apple Silicon) + - platform: "macos-latest" + provider: "pytorch-cpu" + python-version: "3.12" + # PyTorch CPU provider (macOS Intel) + - platform: "macos-15-intel" + provider: "pytorch-cpu" + python-version: "3.12" steps: - uses: actions/checkout@v4 @@ -101,6 +109,10 @@ jobs: # Add platform suffix for clarity if [ "${{ matrix.platform }}" == "windows-latest" ]; then UPLOAD_NAME="tts-provider-${{ matrix.provider }}-windows.exe" + elif [ "${{ matrix.platform }}" == "macos-latest" ]; then + UPLOAD_NAME="tts-provider-${{ matrix.provider }}-macos-arm64" + elif [ "${{ matrix.platform }}" == "macos-15-intel" ]; then + UPLOAD_NAME="tts-provider-${{ matrix.provider }}-macos-x64" else UPLOAD_NAME="tts-provider-${{ matrix.provider }}-linux" fi diff --git a/app/src/components/ServerSettings/ProviderSettings.tsx b/app/src/components/ServerSettings/ProviderSettings.tsx index 7ae237aa..16af4a34 100644 --- a/app/src/components/ServerSettings/ProviderSettings.tsx +++ b/app/src/components/ServerSettings/ProviderSettings.tsx @@ -1,6 +1,6 @@ -import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; +import { Delete01Icon, Download01Icon, Loading01Icon } from '@hugeicons/core-free-icons'; import { HugeiconsIcon } from '@hugeicons/react'; -import { Download01Icon, Loading01Icon, Delete01Icon } from '@hugeicons/core-free-icons'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { useCallback, useState } from 'react'; import { AlertDialog, @@ -23,12 +23,18 @@ import { useModelDownloadToast } from '@/lib/hooks/useModelDownloadToast'; const isMacOS = () => navigator.platform.toLowerCase().includes('mac'); -type ProviderType = 'auto' | 'bundled-mlx' | 'bundled-pytorch' | 'pytorch-cpu' | 'pytorch-cuda' | 'remote' | 'openai'; +type ProviderType = + | 'auto' + | 'bundled-mlx' + | 'bundled-pytorch' + | 'pytorch-cpu' + | 'pytorch-cuda' + | 'remote' + | 'openai'; export function ProviderSettings() { const { toast } = useToast(); const queryClient = useQueryClient(); - const [selectedProvider, setSelectedProvider] = useState('auto'); const [downloadingProvider, setDownloadingProvider] = useState(null); const { data: providersData, isLoading } = useQuery({ @@ -167,6 +173,7 @@ export function ProviderSettings() { // Determine current active provider const currentProvider = activeProvider?.provider || 'auto'; + const selectedProvider = currentProvider as ProviderType; return ( <> @@ -176,41 +183,25 @@ export function ProviderSettings() { Choose how Voicebox generates speech - setSelectedProvider(value as ProviderType)} - > - {/* Auto-detect */} -
- - - {currentProvider === 'auto' && ( - - Active - - )} -
- + handleStart(value)}> {/* PyTorch CUDA */} -
-
- -
- {/* MLX bundled (macOS only) */} + {/* MLX bundled (macOS Apple Silicon only) */} {isMacOS() && ( -
-
-
- MLX (Apple Silicon) - {currentProvider === 'bundled-mlx' && ( - Active - )} +
+ +
+ + {currentProvider === 'bundled-mlx' && ( + + Active + + )}
)} {/* Remote */} -
-
- -