Stati dell’icona nella barra dei menu
Ambito: app macOS (apps/macos). Rendering: CritterIconRenderer.makeIcon(...). Collegamento di animazioni e stati: CritterStatusLabel + CritterStatusLabel+Behavior.swift.
Stati
Un badge di attività dello strumento (riquadro con simbolo SF, ad esempio
chevron.left.slash.chevron.right per l’esecuzione) può essere visualizzato sopra la stessa icona della creatura quando una sessione ha un processo o uno strumento attivo. Il badge proviene da IconState/ActivityKind; consultare Barra dei menu per il modello completo degli stati.
Orecchie del risveglio vocale
- Attivazione:
AppStateStore.shared.triggerVoiceEars(ttl: nil), richiamato dalla pipeline di acquisizione del risveglio vocale (VoiceWakeRuntime) e dagli strumenti di debug/test del risveglio vocale (VoiceWakeTester,VoiceWakeOverlayController). - Arresto:
stopVoiceEars(), richiamato al termine dell’acquisizione. - Intervallo di silenzio prima della finalizzazione: normalmente
2.0s, oppure5.0sse è stata rilevata solo la parola di attivazione senza ulteriori parole successive (VoiceWakeRuntime.silenceWindow/triggerOnlySilenceWindow). - Durante il potenziamento, i timer per il battito delle palpebre, l’oscillazione, le zampe e le orecchie dello stato inattivo vengono sospesi (
earBoostActivecontrolla l’attività di animazione inCritterStatusLabel+Behavior).
Forme e dimensioni
- Area di disegno: immagine modello da 18x18pt, renderizzata in un buffer bitmap da 36x36px (2x) affinché l’icona rimanga nitida sui display Retina.
- La scala predefinita delle orecchie è
1.0; il potenziamento vocale impostaearScale=1.9senza modificare il riquadro complessivo. antennaDroop(0-1) ripiega le antenne verso il basso per le pose in pausa e in sospensione.- Il movimento rapido delle zampe usa valori da
legWigglefino a1.0, con una leggera oscillazione orizzontale.
Note sul comportamento
- Non è disponibile alcuna opzione esterna della CLI o del broker per attivare/disattivare le orecchie o lo stato di attività; entrambi sono gestiti internamente dai segnali dell’app (
AppState.setWorking,AppState.triggerVoiceEars) per evitare oscillazioni accidentali. - Mantenere breve ogni nuovo TTL (ben al di sotto di 10s), affinché l’icona torni rapidamente allo stato di base se un processo si blocca.