Estados del icono de la barra de menús
Autor: steipete · Actualizado: 2025-12-06 · Alcance: app de macOS (apps/macos)
- Inactivo: Animación normal del icono (parpadeo, contoneo ocasional).
- Pausado: El elemento de estado usa
appearsDisabled; sin movimiento. - Activación por voz (orejas grandes): El detector de activación por voz llama a
AppState.triggerVoiceEars(ttl: nil)cuando se escucha la palabra de activación, manteniendoearBoostActive=truemientras se captura la emisión. Las orejas se escalan (1.9x), obtienen orificios circulares para mejorar la legibilidad y luego caen mediantestopVoiceEars()tras 1 s de silencio. Solo se activa desde la canalización de voz dentro de la app. - Trabajando (agente en ejecución):
AppState.isWorking=trueimpulsa una microanimación de “carrera de cola/patas”: mayor contoneo de las patas y un ligero desplazamiento mientras el trabajo está en curso. Actualmente se alterna alrededor de ejecuciones del agente WebChat; agregue el mismo alternado alrededor de otras tareas largas cuando las conecte.
- Activación por voz: el runtime/tester llama a
AppState.triggerVoiceEars(ttl: nil)al activarse y astopVoiceEars()después de 1 s de silencio para coincidir con la ventana de captura. - Actividad del agente: establezca
AppStateStore.shared.setWorking(true/false)alrededor de los intervalos de trabajo (ya hecho en la llamada del agente WebChat). Mantenga los intervalos cortos y restablézcalos en bloquesdeferpara evitar animaciones atascadas.
- Icono base dibujado en
CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:). - La escala de orejas tiene como valor predeterminado
1.0; el refuerzo por voz estableceearScale=1.9y alternaearHoles=truesin cambiar el marco general (imagen plantilla de 18×18 pt renderizada en un respaldo Retina de 36×36 px). - Scurry usa peluca de pierna de hasta ~1.0 con un pequeño rompecabezas horizontal; es aditivo a cualquier peluca inactiva.
- No hay alternador externo de CLI/broker para orejas/trabajo; manténgalo interno a las señales propias de la app para evitar aleteos accidentales.
- Mantenga TTLs cortos (<10 s) para que el icono vuelva rápidamente a la línea base si una tarea se queda colgada.