Icono de Barra de Menú
Estados del icono de barra de menú y animaciones para OpenClaw en macOS
Autor: steipete · Actualizado: 2025-12-06 · Alcance: app macOS (''apps/macos'')
Estados del icono
- Inactivo: Animación de icono normal (parpadeo, wiggle ocasional).
- ''Pausado:'' El item de estado usa ''appearsDisabled''; sin movimiento.
- ''Disparador de voz (orejas grandes):'' El detector de activación de voz llama a ''AppState.triggerVoiceEars(ttl: nil)'' cuando se escucha la palabra de activación, manteniendo ''earBoostActive=true'' mientras se captura la utterancia. Las orejas escalan (1.9x), obtienen agujeros de oreja circulares para legibilidad, luego caen vía ''stopVoiceEars()'' después de 1s de silencio. Solo se dispara desde el pipeline de voz interno de la app.
- ''Trabajando (agente ejecutándose):'' ''AppState.isWorking=true'' impulsa un micro-movimiento de "scurry de cola/pata": wiggle de pata más rápido y ligero offset mientras el trabajo está en vuelo. Actualmente alternado alrededor de ejecuciones de agente WebChat; agrega el mismo toggle alrededor de otras tareas largas cuando las conectes.
Puntos de conexión
- Activación de voz: runtime/tester llama ''AppState.triggerVoiceEars(ttl: nil)'' al disparar y ''stopVoiceEars()'' después de 1s de silencio para coincidir con la ventana de captura.
- Actividad del agente: establece ''AppStateStore.shared.setWorking(true/false)'' alrededor de períodos de trabajo (ya hecho en llamada de agente WebChat). Mantén los períodos cortos y resetea en bloques ''defer'' para evitar animaciones atascadas.
Formas y tamaños
- Icono base dibujado en ''CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:)''.
- Escala de oreja predeterminada a ''1.0''; boost de voz establece ''earScale=1.9'' y alterna ''earHoles=true'' sin cambiar el frame general (imagen de plantilla 18×18 pt renderizada en un backing store Retina de 36×36 px).
- Scurry usa wiggle de pata hasta ~1.0 con un pequeño jiggle horizontal; es aditivo a cualquier wiggle inactivo existente.
Notas de comportamiento
- Sin toggle CLI/broker externo para orejas/trabajo; mantenlo interno a las señales de la app para evitar flapping accidental.
- Mantén los TTLs cortos (<10s) para que el icono vuelva a baseline rápidamente si un trabajo se cuelga.