Estados do Ícone da Barra de Menus
Autor: steipete · Atualizado: 2025-12-06 · Escopo: app macOS (apps/macos)
- Inativo: Animação normal do ícone (piscar, leve balançada ocasional).
- Pausado: O item de status usa
appearsDisabled; sem movimento. - Gatilho de voz (orelhas grandes): O detector de ativação por voz chama
AppState.triggerVoiceEars(ttl: nil)quando a palavra de ativação é ouvida, mantendoearBoostActive=trueenquanto a fala é capturada. As orelhas aumentam de escala (1,9x), ganham furos circulares para legibilidade e então caem viastopVoiceEars()após 1s de silêncio. Disparado apenas a partir do pipeline de voz dentro do app. - Trabalhando (agente em execução):
AppState.isWorking=trueaciona uma microanimação de “corrida de cauda/pernas”: balançada de pernas mais rápida e leve deslocamento enquanto o trabalho está em andamento. Atualmente alternado em torno das execuções do agente WebChat; adicione a mesma alternância em outras tarefas longas quando você as conectar.
- Ativação por voz: o runtime/tester chama
AppState.triggerVoiceEars(ttl: nil)no gatilho estopVoiceEars()após 1s de silêncio para corresponder à janela de captura. - Atividade do agente: defina
AppStateStore.shared.setWorking(true/false)em torno dos períodos de trabalho (já feito na chamada do agente WebChat). Mantenha os períodos curtos e redefina em blocosdeferpara evitar animações presas.
- Ícone base desenhado em
CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:). - A escala das orelhas tem padrão
1.0; o impulso de voz defineearScale=1.9e alternaearHoles=truesem alterar o quadro geral (imagem de template 18×18 pt renderizada em um backing store Retina de 36×36 px). - A corrida usa balançada das pernas até ~1,0 com um pequeno chacoalho horizontal; é aditiva a qualquer balançada inativa existente.
- Não há alternância externa via CLI/broker para orelhas/trabalho; mantenha isso interno aos próprios sinais do app para evitar batidas acidentais.
- Mantenha TTLs curtos (<10s) para que o ícone retorne rapidamente ao estado base se um trabalho travar.