Python parity for the 5 personality voice commands shipped on the
Rust side:
- New `personality_handlers.py` (~150 lines): do_personality_{greet,
thanks, compliment, how_are_you, tony_quote}. Each picks one of
7-10 phrases per language (RU/EN) at random; greet additionally
buckets by time-of-day (morning/midday/evening/night).
- `extensions.py`: imports + 5 proxy `do_personality_*` functions
pointing at the new module, plus set_speak wiring so handlers can
TTS via the runtime's voice.
- `main.py`: 5 new dispatch elifs feeding the new action types.
- `commands.yaml`: 5 new entries (`personality_*`) mapping voice
phrases to action types.
- `tests/test_personality_handlers.py`: 6 unit tests confirming
each handler returns a non-empty string from the expected pool.
- `.gitignore`: stop tracking runtime state generated by tests
(profiles/, long_term_memory.json, schedule.json, macros.json,
llm_backend.txt, llm_history.json) — these are user data, not
source.
Tests: 54 → 60 (+6).
Plugin loader (mirrors Rust #29):
- plugins_store.py walks %APPDATA%\com.priler.jarvis\plugins\<name>\
for commands.yaml fragments and merges them into VA_CMD_LIST at
startup. Same schema as the project root commands.yaml. Per-pack
`disabled` flag file skips a pack without deletion. Built-in ids
win conflicts so a malicious pack can't silently override
open_browser. 9 unit tests (parity with the Rust tests).
- main.py: plugin merge runs after the root yaml load; logs the
number of extra commands picked up.
Flet GUI (#27 — first parity with the Rust Tauri GUI):
- New gui/ package: __main__.py launches via `python -m gui` (or
gui.bat). app.py routes between 7 pages (Главная / Команды /
Макросы / Расписание / Память / Плагины / Настройки) via
NavigationRail; dark theme matching the Tauri look.
- gui/services.py centralises every store-module call the pages
share — single place to swap implementations later.
- One file per page in gui/pages/, all expose `build(page)` and use
the same card layout idiom. Pages mirror the Tauri ones feature-
for-feature: home (status + counters + launcher), commands
(filterable list of all VA_CMD_LIST entries), macros (list +
delete + recording banner), scheduler (list + remove), memory
(add/forget/search), plugins (toggle/open folder), settings
(profile + LLM hot-swap).
- requirements.txt: flet>=0.85 (optional; assistant runs without).
- 3 smoke tests verify imports + build callables; skip cleanly when
Flet isn't installed.
README: documents both the GUI and the plugin layout in user-facing
terms. Tests: 42 → 54 (+9 plugins +3 GUI smoke).