macOS companion app
Menüleistensymbol
Zustände des Menüleistensymbols
Geltungsbereich: macOS-App (apps/macos). Rendering: CritterIconRenderer.makeIcon(...). Verknüpfung von Animation und Zustand: CritterStatusLabel + CritterStatusLabel+Behavior.swift.
Zustände
| Zustand | Auslöser | Darstellung |
|---|---|---|
| Inaktiv | Standard | Normale Blinzel-/Wackelanimation; geöffnete Augen behalten einen glänzenden Lichtreflex |
| Pausiert | isPaused=true |
Fühler hängen bei geöffneten Augen herab („außer Dienst“); keine Bewegung |
| Schlafend | Gateway getrennt/nicht konfiguriert | Fühler hängen herab und die Augen schließen sich zu ⌣ ⌣-Lidern; keine Bewegung |
| Feier | Nachricht gesendet (sendCelebrationTick) |
Augen blitzen für ~0.9s als fröhliche ∩ ∩-Bögen auf, zusätzlich erfolgt ein Beinschlag |
| Sprachaktivierung (große Ohren) | Aktivierungswort erkannt | Fühler richten sich gerade und höher auf (earScale=1.9); sinken nach Stille wieder ab |
| Arbeitend | isWorking=true oder ein aktiver IconState |
Schnelleres Beinwackeln (legWiggle bis zu 1.0) sowie ein kleiner horizontaler Versatz; zusätzlich zum Wackeln im inaktiven Zustand |
Ein Badge für Werkzeugaktivität (SF-Symbol-Plakette, z. B. chevron.left.slash.chevron.right für die Ausführung) kann über demselben Tierchensymbol dargestellt werden, wenn eine Sitzung einen aktiven Auftrag oder ein aktives Werkzeug hat. Dieses Badge stammt aus IconState/ActivityKind; das vollständige Zustandsmodell finden Sie unter Menüleiste.
Ohren bei Sprachaktivierung
- Auslöser:
AppStateStore.shared.triggerVoiceEars(ttl: nil), aufgerufen aus der Erfassungspipeline für die Sprachaktivierung (VoiceWakeRuntime) sowie aus den Debug-/Testwerkzeugen für die Sprachaktivierung (VoiceWakeTester,VoiceWakeOverlayController). - Beenden:
stopVoiceEars(), wird aufgerufen, wenn die Erfassung abgeschlossen wird. - Stillefenster vor dem Abschluss: normalerweise
2.0s,5.0s, wenn nur das Aktivierungswort erkannt wurde und keine weitere Sprache folgte (VoiceWakeRuntime.silenceWindow/triggerOnlySilenceWindow). - Während der Verstärkung werden die Timer für Blinzeln/Wackeln/Beine/Ohren im inaktiven Zustand ausgesetzt (
earBoostActivesperrt die Animationsaufgabe inCritterStatusLabel+Behavior).
Formen und Größen
- Zeichenfläche: 18x18pt-Vorlagenbild, gerendert in einen 36x36px-Bitmap-Zwischenspeicher (2x), damit das Symbol auf Retina-Displays scharf bleibt.
- Die Ohrskalierung beträgt standardmäßig
1.0; die Sprachverstärkung setztearScale=1.9, ohne den Gesamtrahmen zu ändern. antennaDroop(0-1) klappt die Fühler für die pausierte und schlafende Pose nach unten.- Das Beinwuseln verwendet
legWigglebis zu1.0mit einem kleinen horizontalen Ruckeln.
Hinweise zum Verhalten
- Es gibt keinen externen CLI-/Broker-Schalter für die Ohren oder den Arbeitszustand; beide werden intern durch App-Signale (
AppState.setWorking,AppState.triggerVoiceEars) gesteuert, um unbeabsichtigtes Flattern zu vermeiden. - Halten Sie jede neue TTL kurz (deutlich unter 10s), damit das Symbol schnell zum Ausgangszustand zurückkehrt, falls ein Auftrag hängen bleibt.
Verwandte Themen
Was this useful?