macOS companion app
Menüleistensymbol
Zustände des Menüleistensymbols
Autor: steipete · Aktualisiert: 2025-12-06 · Geltungsbereich: macOS-App (apps/macos)
- Inaktiv: Normale Symbolanimation (Blinken, gelegentliches Wackeln).
- Pausiert: Statuselement verwendet
appearsDisabled; keine Bewegung. - Sprachauslöser (große Ohren): Der Sprachaktivierungsdetektor ruft
AppState.triggerVoiceEars(ttl: nil)auf, wenn das Aktivierungswort erkannt wird, und hältearBoostActive=true, während die Äußerung erfasst wird. Die Ohren werden größer skaliert (1,9x), erhalten zur besseren Lesbarkeit runde Ohrlöcher und werden dann nach 1 s Stille überstopVoiceEars()zurückgesetzt. Wird nur aus der sprachgesteuerten Pipeline in der App ausgelöst. - Arbeitend (Agent läuft):
AppState.isWorking=truesteuert eine Mikroanimation für „Schwanz-/Beinbewegung“: schnelleres Beinwackeln und leichter Versatz, während Arbeit läuft. Derzeit rund um WebChat-Agent-Ausführungen umgeschaltet; fügen Sie dieselbe Umschaltung rund um andere lange Aufgaben hinzu, wenn Sie sie verdrahten.
Verdrahtungspunkte
- Sprachaktivierung: Runtime/Tester rufen bei Auslösung
AppState.triggerVoiceEars(ttl: nil)und nach 1 s StillestopVoiceEars()auf, um dem Erfassungsfenster zu entsprechen. - Agent-Aktivität: Setzen Sie
AppStateStore.shared.setWorking(true/false)rund um Arbeitsspannen (im WebChat-Agent-Aufruf bereits umgesetzt). Halten Sie Spannen kurz und setzen Sie sie indefer-Blöcken zurück, um hängengebliebene Animationen zu vermeiden.
Formen und Größen
- Basissymbol wird in
CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:)gezeichnet. - Ohrskalierung ist standardmäßig
1.0; die Sprachverstärkung setztearScale=1.9und schaltetearHoles=trueum, ohne den Gesamtrahmen zu ändern (18×18 pt-Vorlagenbild, gerendert in einen 36×36 px-Retina-Backing-Store). - Die schnelle Bewegung verwendet Beinwackeln bis zu ~1.0 mit einem kleinen horizontalen Zittern; sie wird additiv zu jedem bestehenden Inaktiv-Wackeln angewendet.
Verhaltenshinweise
- Keine externe CLI-/Broker-Umschaltung für Ohren/Arbeitszustand; behalten Sie dies intern bei den eigenen Signalen der App, um unbeabsichtigtes Hin- und Herschalten zu vermeiden.
- Halten Sie TTLs kurz (<10 s), damit das Symbol schnell zum Ausgangszustand zurückkehrt, falls ein Job hängt.