macOS companion app
Icona della barra dei menu
Stati dell'icona della barra dei menu
Autore: steipete · Aggiornato: 2025-12-06 · Ambito: app macOS (apps/macos)
- Inattivo: Animazione normale dell'icona (lampeggio, oscillazione occasionale).
- In pausa: L'elemento di stato usa
appearsDisabled; nessun movimento. - Attivatore vocale (orecchie grandi): Il rilevatore di attivazione vocale chiama
AppState.triggerVoiceEars(ttl: nil)quando viene rilevata la parola di attivazione, mantenendoearBoostActive=truementre l'enunciato viene acquisito. Le orecchie si ingrandiscono (1,9x), ricevono fori auricolari circolari per la leggibilità, poi tornano indietro tramitestopVoiceEars()dopo 1 s di silenzio. Attivato solo dalla pipeline vocale in-app. - In esecuzione (agent in esecuzione):
AppState.isWorking=truepilota un micro-movimento di "scatto di coda/zampe": oscillazione delle zampe più rapida e leggero offset mentre il lavoro è in corso. Attualmente viene attivato attorno alle esecuzioni dell'agent WebChat; aggiungi lo stesso toggle attorno ad altri task lunghi quando li colleghi.
Punti di collegamento
- Attivazione vocale: la chiamata runtime/tester chiama
AppState.triggerVoiceEars(ttl: nil)all'attivazione estopVoiceEars()dopo 1 s di silenzio per corrispondere alla finestra di acquisizione. - Attività dell'agent: imposta
AppStateStore.shared.setWorking(true/false)attorno agli intervalli di lavoro (già fatto nella chiamata agent WebChat). Mantieni gli intervalli brevi e reimposta nei blocchideferper evitare animazioni bloccate.
Forme e dimensioni
- Icona di base disegnata in
CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:). - La scala delle orecchie predefinita è
1.0; il potenziamento vocale impostaearScale=1.9e attivaearHoles=truesenza modificare il frame complessivo (immagine template da 18×18 pt renderizzata in un backing store Retina da 36×36 px). - Lo scatto usa un'oscillazione delle zampe fino a ~1.0 con un piccolo tremolio orizzontale; è additivo rispetto a qualsiasi oscillazione inattiva esistente.
Note comportamentali
- Nessun toggle esterno CLI/broker per orecchie/in esecuzione; mantienilo interno ai segnali propri dell'app per evitare oscillazioni accidentali.
- Mantieni i TTL brevi (<10 s) così l'icona torna rapidamente allo stato di base se un job si blocca.