Stany ikony paska menu
Autor: steipete · Zaktualizowano: 2025-12-06 · Zakres: aplikacja macOS (apps/macos)
- Bezczynny: Normalna animacja ikony (mruganie, okazjonalne poruszenie).
- Wstrzymany: Element paska stanu używa
appearsDisabled; bez ruchu. - Wyzwalacz głosowy (duże uszy): Detektor wybudzania głosem wywołuje
AppState.triggerVoiceEars(ttl: nil), gdy usłyszy słowo wybudzające, utrzymującearBoostActive=true, gdy wypowiedź jest przechwytywana. Uszy powiększają się (1.9x), dostają okrągłe otwory w uszach dla lepszej czytelności, a następnie wracają do normy przezstopVoiceEars()po 1 s ciszy. Wyzwalane tylko z potoku głosowego w aplikacji. - Praca w toku (uruchomiony agent):
AppState.isWorking=truesteruje mikroruchem „truchtania ogona/nóg”: szybszym poruszaniem nogami i niewielkim przesunięciem, gdy praca jest wykonywana. Obecnie przełączane wokół uruchomień agentów WebChat; dodaj to samo przełączanie wokół innych długotrwałych zadań, gdy będziesz je podpinać.
- Wybudzanie głosem: runtime/tester wywołuje
AppState.triggerVoiceEars(ttl: nil)przy wyzwoleniu orazstopVoiceEars()po 1 s ciszy, aby dopasować do okna przechwytywania. - Aktywność agenta: ustaw
AppStateStore.shared.setWorking(true/false)wokół zakresów pracy (już zrobione w wywołaniu agenta WebChat). Utrzymuj zakresy krótkie i resetuj je w blokachdefer, aby uniknąć zawieszonych animacji.
- Ikona bazowa jest rysowana w
CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:). - Skala uszu domyślnie wynosi
1.0; wzmocnienie głosowe ustawiaearScale=1.9i przełączaearHoles=truebez zmiany całej ramki (obraz szablonu 18×18 pt renderowany do bufora Retina 36×36 px). - Truchtanie używa poruszania nogami do ~1.0 z niewielkim poziomym drganiem; jest addytywne względem istniejącego poruszenia w stanie bezczynnym.
- Brak zewnętrznego przełącznika CLI/brokera dla uszu/pracy w toku; utrzymuj to jako wewnętrzne sygnały samej aplikacji, aby uniknąć przypadkowego migotania.
- Utrzymuj TTL krótkie (<10s), aby ikona szybko wracała do stanu bazowego, jeśli zadanie się zawiesi.