> ## Documentation Index
> Fetch the complete documentation index at: https://openclaw.veiseule.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Icône de la barre de menus

# États de l’icône de la barre de menus

Auteur : steipete · Mis à jour : 2025-12-06 · Portée : application macOS (`apps/macos`)

* **Inactif :** Animation normale de l’icône (clignotement, léger dandinement occasionnel).
* **En pause :** L’élément de statut utilise `appearsDisabled` ; aucun mouvement.
* **Déclenchement vocal (grandes oreilles) :** Le détecteur de réveil vocal appelle `AppState.triggerVoiceEars(ttl: nil)` lorsque le mot-clé est entendu, en maintenant `earBoostActive=true` pendant la capture de l’énoncé. Les oreilles s’agrandissent (1,9×), obtiennent des trous d’oreilles circulaires pour la lisibilité, puis retombent via `stopVoiceEars()` après 1 s de silence. Déclenché uniquement depuis le pipeline vocal intégré à l’application.
* **En cours (agent en exécution) :** `AppState.isWorking=true` pilote une micro‑animation de « course de queue/pattes » : dandinement des pattes plus rapide et léger décalage pendant l’exécution du travail. Actuellement activé autour des exécutions de l’agent WebChat ; ajoutez le même basculement autour d’autres tâches longues lorsque vous les raccorderez.

Points de câblage

* Réveil vocal : les appels runtime/tester appellent `AppState.triggerVoiceEars(ttl: nil)` au déclenchement et `stopVoiceEars()` après 1 s de silence pour correspondre à la fenêtre de capture.
* Activité de l’agent : définir `AppStateStore.shared.setWorking(true/false)` autour des plages de travail (déjà fait dans l’appel de l’agent WebChat). Gardez des plages courtes et réinitialisez dans des blocs `defer` pour éviter les animations bloquées.

Formes et tailles

* Icône de base dessinée dans `CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:)`.
* L’échelle des oreilles par défaut est `1.0` ; l’amplification vocale définit `earScale=1.9` et bascule `earHoles=true` sans modifier le cadre global (image modèle 18×18 pt rendue dans un support Retina 36×36 px).
* Scurry utilise des wiggle de jambe jusqu'à \~1.0 avec un petit jiggle horizontal ; il est additif à n'importe quelle wiggle inactive existante.

Notes comportementales

* Aucun basculement CLI/courtier externe pour les oreilles/le travail ; gardez cela interne aux signaux propres de l’application afin d’éviter des battements accidentels.
* Gardez des TTL courts (\<10 s) afin que l’icône revienne rapidement à l’état de base si une tâche se bloque.
