macOS companion app
Icône de la barre de menus
États de l’icône de la barre des menus
Périmètre : application macOS (apps/macos). Rendu : CritterIconRenderer.makeIcon(...). Gestion de l’animation et de l’état : CritterStatusLabel + CritterStatusLabel+Behavior.swift.
États
| État | Déclencheur | Apparence |
|---|---|---|
| Inactif | Par défaut | Animation normale de clignement/oscillation ; les yeux ouverts conservent un reflet brillant |
| En pause | isPaused=true |
Les antennes retombent (« hors service ») avec les yeux ouverts ; aucun mouvement |
| Endormi | Gateway déconnecté/non configuré | Les antennes retombent et les yeux se ferment en paupières ⌣ ⌣ ; aucun mouvement |
| Célébration | Message envoyé (sendCelebrationTick) |
Les yeux affichent brièvement des arcs joyeux ∩ ∩ pendant ~0.9s, accompagnés d’un coup de patte |
| Réveil vocal (grandes oreilles) | Mot de réveil entendu | Les antennes se redressent et s’allongent (earScale=1.9) ; elles reprennent leur état normal après un silence |
| En cours de travail | isWorking=true ou IconState actif |
Oscillation plus rapide des pattes (legWiggle jusqu’à 1.0) avec un léger décalage horizontal, ajoutée à l’oscillation au repos |
Un badge d’activité d’outil (pastille avec un symbole SF, par exemple chevron.left.slash.chevron.right pour l’exécution) peut s’afficher par-dessus la même icône de créature lorsqu’une session comporte une tâche ou un outil actif. Ce badge provient de IconState/ActivityKind ; consultez Barre des menus pour le modèle d’état complet.
Oreilles de réveil vocal
- Déclencheur :
AppStateStore.shared.triggerVoiceEars(ttl: nil), appelé depuis le pipeline de capture du réveil vocal (VoiceWakeRuntime) et depuis les outils de débogage/test du réveil vocal (VoiceWakeTester,VoiceWakeOverlayController). - Arrêt :
stopVoiceEars(), appelé lorsque la capture se termine. - Fenêtre de silence avant la finalisation :
2.0snormalement,5.0ssi seul le mot déclencheur a été entendu sans aucune parole supplémentaire (VoiceWakeRuntime.silenceWindow/triggerOnlySilenceWindow). - Pendant l’amplification, les minuteurs de clignement, d’oscillation, des pattes et des oreilles au repos sont suspendus (
earBoostActivecontrôle la tâche d’animation dansCritterStatusLabel+Behavior).
Formes et dimensions
- Canevas : image modèle de 18x18pt, rendue dans un tampon bitmap de 36x36px (2x) afin que l’icône reste nette sur les écrans Retina.
- L’échelle des oreilles vaut
1.0par défaut ; l’amplification vocale définitearScale=1.9sans modifier le cadre global. antennaDroop(0-1) rabat les antennes pour les poses en pause et endormie.- Le mouvement précipité des pattes utilise
legWigglejusqu’à1.0, avec une légère oscillation horizontale.
Remarques comportementales
- Aucun commutateur CLI/courtier externe ne contrôle les oreilles ni l’état de travail ; tous deux sont pilotés en interne par les signaux de l’application (
AppState.setWorking,AppState.triggerVoiceEars) afin d’éviter des basculements intempestifs. - Toute nouvelle TTL doit rester courte (bien inférieure à 10s) afin que l’icône revienne rapidement à son état de référence si une tâche se bloque.
Pages associées
Was this useful?