feat(gui): footer backend chips + Settings 'AI Backends' tab + i18n

Surfaces the LLM/TTS hot-swap UX in the GUI so the user doesn't need env vars
or voice commands. Tauri commands for this landed in b243e67; this commit
wires them to Svelte.

Footer (frontend/src/components/Footer.svelte)
  - Poll get_active_backends() every 5 s, show TTS / LLM / Profile chips.
  - Chips have border accents by kind (cyan = TTS, lime = LLM, orange = Profile).
  - Friendly title tooltips with full backend + model names.
  - Silent if jarvis-gui can't reach the command (e.g. cold start) — no UI flicker.

Settings — new "AI Backends" tab (frontend/src/routes/settings/index.svelte)
  - Status banner showing active LLM (with model name) + TTS + Profile.
  - LLM selector: Auto / Groq / Ollama → calls set_llm_backend on change
    (hot-swap, persisted to DB).
  - TTS selector: Auto / SAPI / Piper / Silero → calls set_tts_backend
    (persisted, effective on next jarvis-app restart).
  - "Reset context" button → llm_reset_context Tauri command.
  - Error toast for swap failures (e.g. Groq selected but no GROQ_TOKEN).
  - Tips alert: how to install Ollama / Piper / voice commands.
  - Loads prefs via db_read('llm_backend' / 'tts_backend') on mount.

i18n strings (ru/en/ua, .ftl files)
  - 14 new keys: settings-ai-backends, settings-ai-active, settings-ai-auto,
    settings-ai-applying, settings-ai-error, settings-ai-tips,
    settings-llm-backend{,-desc}, settings-tts-backend{,-desc},
    settings-llm-context{,-desc}, settings-llm-reset, settings-profile.

Build glue (crates/jarvis-gui/Cargo.toml)
  - jarvis-core dep now includes the `llm` feature so backends.rs can resolve
    `jarvis_core::llm::*` (was failing to compile after the global LLM module).

.gitignore
  - tools/piper/*.dll, piper.exe, voices/, espeak-ng-data/ — locally
    installed binaries from tools/piper/install.ps1, not committed.

Build: cargo build --release -p jarvis-gui green (4m, includes npm/Vite).
Test path: rebuild + launch jarvis-gui, /settings → "AI Backends" tab.
This commit is contained in:
Bossiara13 2026-05-15 17:06:46 +03:00
parent b243e67870
commit d63399f4c9
6 changed files with 313 additions and 4 deletions

View file

@ -141,4 +141,20 @@ settings-gliner-models-hint = Модели GLiNER не найдены.
# ETC
search-error-not-running = Ассистент не запущен
search-error-failed = Не удалось выполнить команду
settings-no-voices = Голоса не найдены
settings-no-voices = Голоса не найдены
# AI Backends tab
settings-ai-backends = ИИ-движки
settings-ai-active = Активный движок
settings-ai-auto = Авто
settings-ai-applying = Применяю...
settings-ai-error = Ошибка переключения
settings-ai-tips = Подсказки
settings-llm-backend = LLM движок
settings-llm-backend-desc = Где исполнять LLM-запросы. Hot-swap, без рестарта.
settings-tts-backend = TTS движок
settings-tts-backend-desc = Применится при следующем запуске jarvis-app.
settings-llm-context = Контекст разговора
settings-llm-context-desc = LLM помнит предыдущие реплики. Сбросить, если ответы становятся странными.
settings-llm-reset = Сбросить контекст
settings-profile = Профиль