Mga Estado ng Icon sa Menu Bar¶
May-akda: steipete · In-update: 2025-12-06 · Saklaw: macOS app (apps/macos)
- Idle: Karaniwang animasyon ng icon (pagkurap, paminsan-minsang wiggle).
- Paused: Gumagamit ang status item ng
appearsDisabled; walang galaw. - Voice trigger (big ears): Tinatawag ng voice wake detector ang
AppState.triggerVoiceEars(ttl: nil)kapag narinig ang wake word, pinananatilingearBoostActive=truehabang kinukuha ang utterance. Lumalaki ang mga tainga (1.9x), nagkakaroon ng mga bilog na butas sa tainga para sa readability, pagkatapos ay bumababa sa pamamagitan ngstopVoiceEars()matapos ang 1s ng katahimikan. Pinapaputok lamang mula sa in-app voice pipeline. - Working (agent running): Ang
AppState.isWorking=trueang nagtutulak ng isang “tail/leg scurry” na micro-motion: mas mabilis na wiggle ng mga paa at bahagyang offset habang may ginagawang trabaho. Kasalukuyang tine-toggle sa paligid ng mga run ng WebChat agent; idagdag ang parehong toggle sa paligid ng iba pang mahahabang gawain kapag ikinabit mo ang mga iyon.
Mga wiring point
- Voice wake: tumawag ang runtime/tester ng
AppState.triggerVoiceEars(ttl: nil)sa trigger atstopVoiceEars()matapos ang 1s ng katahimikan para tumugma sa capture window. - Aktibidad ng agent: itakda ang
AppStateStore.shared.setWorking(true/false)sa paligid ng mga span ng trabaho (nagawa na sa tawag ng WebChat agent). Panatilihing maikli ang mga span at mag-reset sa mgadeferblock upang maiwasan ang na-stuck na mga animation.
Mga hugis at sukat
- Ang base icon ay iginuhit sa
CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:). - Ang default na ear scale ay
1.0; itinatakda ng voice boost angearScale=1.9at tina-toggle angearHoles=truenang hindi binabago ang kabuuang frame (18×18 pt na template image na nirender sa 36×36 px na Retina backing store). - Gumagamit ang scurry ng leg wiggle hanggang ~1.0 na may maliit na pahalang na jiggle; additive ito sa anumang umiiral na idle wiggle.
Mga tala sa gawi
- Walang external na CLI/broker toggle para sa ears/working; panatilihin itong internal sa sariling mga signal ng app upang maiwasan ang aksidenteng flapping.
- Panatilihing maikli ang mga TTL (<10s) upang mabilis na bumalik sa baseline ang icon kung may job na mag-hang.