J.A.R.V.I.S-rust/crates/jarvis-gui/src/tauri_commands
Bossiara13 6729e53be6
Some checks are pending
Rust CI / cargo test (jarvis-core) (push) Waiting to run
Rust CI / cargo clippy (push) Waiting to run
Rust CI / cargo check (workspace) (push) Waiting to run
fix: TTS hot-swap actually works + GUI max-width + Python builder discoverable
ROOT CAUSE ANALYSIS

User reported: (a) TTS dropdown doesn't apply, (b) GUI feels stretched,
(c) no link to command builder, (d) Python doesn't even start.

Issues (a), (b), (c) addressed here. (d) addressed in python repo.

=== Fix A: TTS hot-swap (was completely broken) ===

Two distinct bugs:
1. `tts::init_backend()` only read JARVIS_TTS env var, NEVER consulted
   `Settings.tts_backend` in the DB. So saving "Silero" in the GUI
   dropdown changed nothing — not even on restart.
2. `BACKEND: OnceCell<...>` couldn't be replaced at runtime, so even
   if init had picked the right backend, the dropdown was useless
   mid-session.

Fixed:
- `tts::BACKEND` is now `Lazy<RwLock<Option<Arc<dyn TtsBackend>>>>`.
- `choose_backend_name()` resolves from DB → env → auto-detect.
- New `swap_to(name)` replaces the live backend atomically.
- IPC: new `IpcAction::SwitchTts { backend }`. jarvis-app reacts to
  it the same way it reacts to SwitchLlm.
- GUI's `set_tts_backend` now persists + hot-swaps GUI's TTS + Svelte
  page also fires `switchDaemonTts()` over WS so the running daemon
  installs the new backend.
- Removed "Применится при следующем запуске" hint — now applies
  immediately. RU + EN locale strings updated.

=== Fix B: GUI max-width ===

main + #header had no max-width, so on a 1920px monitor the labels
sprawled across 1860px of space, which felt stretched. Added
max-width: 1280px + margin: 0 auto + box-sizing: border-box. Smaller
windows are unaffected.

Also added the same cap on .app-container.assist-page so the home
screen arc reactor centres properly.

=== Fix C: Command builder discoverable ===

The Python fork ships a separate yaml-editing tool at
`python/tools/command_builder/` (pywebview GUI). No way to find it
from the main Rust GUI. Fixed:

- New tauri command `open_command_builder` (crates/jarvis-gui/src/
  tauri_commands/builder.rs). Locates the Python fork via
  $JARVIS_PYTHON_DIR → sibling python/ → C:\Jarvis\python, prefers
  the project's .venv, spawns `python -m tools.command_builder`.
- New blue "Конструктор команд (Python)" button on /settings page
  near the Save / Back buttons.

Tests: 140 rust + 104 python all pass. Release builds of jarvis-app
and jarvis-gui both green.
2026-05-24 22:12:04 +03:00
..
_listener.rs frontend fixes & db rewrite with serde 2026-01-04 09:00:51 +05:00
audio.rs frontend fixes & db rewrite with serde 2026-01-04 09:00:51 +05:00
backends.rs fix: TTS hot-swap actually works + GUI max-width + Python builder discoverable 2026-05-24 22:12:04 +03:00
builder.rs fix: TTS hot-swap actually works + GUI max-width + Python builder discoverable 2026-05-24 22:12:04 +03:00
commands.rs Tray options implementation + Voice system rewrite + build fixes 2026-01-07 23:29:46 +05:00
db.rs AI models shared registry + Code cleanup + Better async handling + Some fixes, etc 2026-02-18 21:08:48 +05:00
etc.rs chore(gui): rebrand — strip TG/Boosty/Patreon/feedback-bot, keep CC BY-NC-SA attribution 2026-05-15 01:09:14 +03:00
fs.rs frontend fixes & db rewrite with serde 2026-01-04 09:00:51 +05:00
i18n.rs AI models shared registry + Code cleanup + Better async handling + Some fixes, etc 2026-02-18 21:08:48 +05:00
macros.rs feat(gui): /macros + /scheduler pages + README rewrite 2026-05-15 17:28:22 +03:00
memory.rs feat: GUI /memory page + disk/date_math/sleep_timer packs (10 new commands) 2026-05-15 23:35:23 +03:00
plugins.rs feat: Wave 3 — plugin system + custom wake-word trainer 2026-05-16 13:26:42 +03:00
profile.rs feat(gui): profile switcher chip in header 2026-05-16 00:48:23 +03:00
scheduler.rs feat(gui): /macros + /scheduler pages + README rewrite 2026-05-15 17:28:22 +03:00
stt.rs some fixes + gliner first implementation 2026-02-11 07:21:50 +05:00
sys.rs noise suppression added via nnnoiseless + vad + gain-normalizer + few frontend changes 2026-01-06 23:32:58 +05:00
voices.rs basic Lua 5.4 implementation with few example commands 2026-01-17 05:46:38 +05:00
wake_trainer.rs feat: Wave 3 — plugin system + custom wake-word trainer 2026-05-16 13:26:42 +03:00