Skip to content

v0.7.4 — Voice commands directes

Choose a tag to compare

@Gheop Gheop released this 11 Apr 20:23
· 59 commits to main since this release
5c530f2

🗣️ Pilote tes chats à la voix

Extension du wake word de v0.7.1 : au lieu d'ouvrir un chat à chaque fois que tu appelles un chat par son prénom, tu peux maintenant lui chaîner un verbe pour le piloter directement, sans bulle de chat ni écoute push-to-talk.

Les 6 verbes disponibles

Phrase Action
« Mandarine » (legacy) ouvre le chat + écoute push-to-talk 6 s
« Mandarine dors » Le chat se met en SLEEPING_BALL immédiatement
« Tabby viens » Le chat marche jusqu'au curseur de la souris
« Ombre raconte » Ouvre le chat + injecte un prompt « raconte-moi une anecdote » à l'IA (FR/EN/ES selon ta langue)
« Noisette danse » Mini-disco loop sur ce chat (5 s, alternance LOVE/ROLLING/GROOMING/FLAT)
« Mandarine saute » Animation JUMPING
« Tabby roule » Animation ROLLING

Détails

  • Grammaire Vosk étendue — les verbes sont ajoutés à la grammaire fermée du recognizer aux côtés des prénoms. Vosk compose librement, donc « Mandarine dors » est transcrit en un seul résultat.
  • Look-ahead 2 tokens — le parser tolère les hésitations (« euh Mandarine, dors ») mais ignore les verbes très éloignés (« Mandarine bla bla bla dors » fait juste l'action par défaut).
  • `viens` utilise XQueryPointer — nouveau helper Xlib ctypes qui lit la position absolue du curseur sans fork. Fallback à un point random sur monitor 0 si la query échoue.
  • `raconte` localisé — le prompt envoyé au LLM est traduit en français/anglais/espagnol selon `L10n.lang`.
  • `danse` scopé — réutilise la liste d'états célébratoires de l'easter egg `eg_disco` mais ne met que le chat appelé en mode danse, les autres continuent leur vie. Auto-cleanup après 5 s.
  • Backward compat — les anciens callers de `on_wake(cat_id)` continuent de marcher via un fallback `TypeError` dans `_fire`.

Quoi de neuf côté tests

  • 23 nouveaux unit tests : COMMAND_VERBS, parsing, look-ahead, callback dispatch, legacy compat, get_mouse_position safety
  • Total 348 passed / 0 failed
  • Aucune nouvelle dépendance — Vosk était déjà dans `[voice]`

Ajouter un nouveau verbe (pour les contribs)

C'est deux lignes de code : une entrée dans `COMMAND_VERBS` (`wake_word.py`) + une branche dans le dispatcher (`app.py:_on_wake_word_heard`). Chaque handler est isolé. PRs welcome pour : miaule, peur, colère, sieste, etc.

L'auto-update va attraper cette version au prochain lancement.

🤖 Generated with Claude Code