Skip to main content

Estados do ícone da barra de menus

Escopo: aplicativo para macOS (apps/macos). Renderização: CritterIconRenderer.makeIcon(...). Vinculação de animação/estado: CritterStatusLabel + CritterStatusLabel+Behavior.swift.

Estados

Um indicador de atividade de ferramenta (disco com SF Symbol, por exemplo, chevron.left.slash.chevron.right para execução) pode ser renderizado sobre o mesmo ícone da criatura quando uma sessão tem um trabalho ou uma ferramenta ativa. Esse indicador é fornecido por IconState/ActivityKind; consulte Barra de menus para ver o modelo de estados completo.

Orelhas de ativação por voz

  • Acionador: AppStateStore.shared.triggerVoiceEars(ttl: nil), chamado pelo pipeline de captura de ativação por voz (VoiceWakeRuntime) e pelas ferramentas de depuração/teste de ativação por voz (VoiceWakeTester, VoiceWakeOverlayController).
  • Interrupção: stopVoiceEars(), chamado quando a captura é finalizada.
  • Janela de silêncio antes da finalização: normalmente 2.0s; 5.0s se apenas a palavra de ativação tiver sido detectada, sem nenhuma fala posterior (VoiceWakeRuntime.silenceWindow / triggerOnlySilenceWindow).
  • Enquanto o destaque está ativo, os temporizadores de piscar/balançar/pernas/orelhas do estado ocioso ficam suspensos (earBoostActive controla a tarefa de animação em CritterStatusLabel+Behavior).

Formas e tamanhos

  • Tela: imagem de modelo de 18x18pt, renderizada em um armazenamento de bitmap de 36x36px (2x) para que o ícone permaneça nítido em telas Retina.
  • A escala padrão das orelhas é 1.0; o destaque de voz define earScale=1.9 sem alterar o quadro geral.
  • antennaDroop (0-1) dobra as antenas para baixo nas poses pausada e dormindo.
  • O movimento rápido das pernas usa legWiggle até 1.0, com uma pequena oscilação horizontal.

Observações comportamentais

  • Não há alternância externa por CLI/broker para as orelhas nem para o estado de trabalho; ambos são controlados internamente por sinais do aplicativo (AppState.setWorking, AppState.triggerVoiceEars) para evitar oscilações acidentais.
  • Mantenha qualquer novo TTL curto (bem abaixo de 10s) para que o ícone retorne rapidamente ao estado inicial caso um trabalho fique travado.

Relacionados