import { useState, useEffect } from 'react' import { invoke } from '@tauri-apps/api/tauri' import { Settings, MessageSquare, Info } from 'lucide-react' import { ChatInterface } from './components/ChatInterface' import { ModelSelector } from './components/ModelSelector' import { CharacterSelector } from './components/CharacterSelector' import { SettingsPanel } from './components/SettingsPanel' import { WindowControls } from './components/WindowControls' import { useSettingsStore } from './stores/settingsStore' import { getThemeManager } from './lib/theme' import './App.css' interface Keys { openrouter_api_key: string | null elevenlabs_api_key: string | null } function App() { const [showSettings, setShowSettings] = useState(false) const { openrouterApiKey, theme, setOpenRouterApiKey, setElevenLabsApiKey } = useSettingsStore() // Initialize theme on mount useEffect(() => { const themeManager = getThemeManager() themeManager.setTheme(theme) }, [theme]) useEffect(() => { // Fetch API keys from the backend on app load async function fetchEnvKeys() { try { console.log('🔑 Fetching API keys from backend...') const keys = await invoke('get_env_keys') console.log('🔑 Keys received from backend:', { hasOpenRouter: !!keys.openrouter_api_key, hasElevenLabs: !!keys.elevenlabs_api_key, openRouterLength: keys.openrouter_api_key?.length || 0, elevenLabsLength: keys.elevenlabs_api_key?.length || 0, }) if (keys.openrouter_api_key) { console.log('✅ Setting OpenRouter API key') setOpenRouterApiKey(keys.openrouter_api_key) } else { console.warn('⚠️ No OpenRouter API key found in .env') } if (keys.elevenlabs_api_key) { console.log('✅ Setting ElevenLabs API key') setElevenLabsApiKey(keys.elevenlabs_api_key) } else { console.warn('⚠️ No ElevenLabs API key found in .env') } } catch (error) { console.error('❌ Failed to fetch env keys from backend:', error) } } fetchEnvKeys() }, [setOpenRouterApiKey, setElevenLabsApiKey]) return (
{/* Window Controls (invisible, handles minimize to tray) */} {/* Header */}

EVE

Personal AI Assistant

{/* Main Content */}
{!openrouterApiKey ? (

Welcome to EVE!

To get started, you'll need to set up your OpenRouter API key. OpenRouter gives you access to GPT-4, Claude, Llama, and many other AI models.

Don't have an API key?{' '} Get one here →

) : ( )}
{/* Settings Panel */} {showSettings && setShowSettings(false)} />}
) } export default App