J.A.R.V.I.S-rust/crates/jarvis-gui/src/tauri_commands
Bossiara13 4e21024509 feat: Wave 3 — plugin system + custom wake-word trainer
#29 Plugin system:
- New jarvis-core::plugins module: discovers user packs in
  %APPDATA%\com.priler.jarvis\plugins\<name>\command.toml so authors can
  ship voice commands without rebuilding. Sandbox capped at "standard" —
  plugins cannot escalate to "full" (which would expose `os`). Disabled
  via a `disabled` flag file. Malformed packs warn and skip; never poison
  the rest of the list. 8 unit tests.
- commands::parse_commands() merges plugins into the loaded list.
- New /plugins GUI page with enable/disable switches, error reporting,
  "Open folder" button. Tauri commands plugins_list / plugins_set_enabled
  / plugins_open_folder. Header gets a "Плагины" button. i18n keys added
  for ru/en/ua.

#8 Custom wake-word trainer wizard:
- New jarvis-core::wake_trainer module: opens its own pv_recorder
  instance, records N short PCM clips, WAV-encodes them in memory, then
  calls rustpotter's WakewordRef::new_from_sample_buffers to train and
  persist a .rpw model under %APPDATA%/com.priler.jarvis/wake_words/.
  Keepsake WAVs are also dumped for retraining later. Sanitises names to
  block path traversal. 5 unit tests.
- Settings gain `custom_wake_word: String`; listener/rustpotter.rs now
  loads the user's selected model first and always falls back to the
  bundled default so the assistant keeps working even if the custom
  file is missing.
- New /wake-trainer GUI page: stepper UI for record-sample → train,
  shows recorded count, threshold slider, refuses to start while
  jarvis-app is running (mic exclusivity). Lists existing trained
  models with size + delete button.
- 8 Tauri commands wired through (status/defaults/start/record_sample/
  finish/cancel/list_models/delete_model).

Tests: 115 → 128 (+8 plugins +5 wake_trainer). Release builds green for
all three binaries (jarvis-app / jarvis-cli / jarvis-gui).
2026-05-16 13:26:42 +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 feat: Tauri backend commands + wikipedia rewrite + github PR review pack 2026-05-15 16:31:54 +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