macOS companion app
Icono de la barra de menús
Estados del icono de la barra de menús
Ámbito: aplicación para macOS (apps/macos). Renderizado: CritterIconRenderer.makeIcon(...). Conexión de la animación y el estado: CritterStatusLabel + CritterStatusLabel+Behavior.swift.
Estados
| Estado | Activador | Apariencia |
|---|---|---|
| Inactivo | Predeterminado | Animación normal de parpadeo/balanceo; los ojos abiertos conservan un destello brillante |
| En pausa | isPaused=true |
Las antenas caen («fuera de servicio») con los ojos abiertos; sin movimiento |
| Durmiendo | Gateway desconectado/sin configurar | Las antenas caen y los ojos se cierran formando párpados ⌣ ⌣; sin movimiento |
| Celebración | Mensaje enviado (sendCelebrationTick) |
Los ojos muestran brevemente arcos alegres ∩ ∩ durante ~0.9s, junto con una patada |
| Activación por voz (orejas grandes) | Se detecta la palabra de activación | Las antenas se ponen rectas y más altas (earScale=1.9); vuelven a bajar después de un período de silencio |
| Trabajando | isWorking=true o un IconState activo |
Movimiento más rápido de las patas (legWiggle hasta 1.0) más un pequeño desplazamiento horizontal; se suma al balanceo inactivo |
Una insignia de actividad de herramientas (indicador con un símbolo SF, por ejemplo, chevron.left.slash.chevron.right para la ejecución) puede mostrarse encima del mismo icono de la criatura cuando una sesión tiene un trabajo o una herramienta activos. Esa insignia procede de IconState/ActivityKind; consulte Barra de menús para ver el modelo de estados completo.
Orejas de activación por voz
- Activador:
AppStateStore.shared.triggerVoiceEars(ttl: nil), llamado desde la canalización de captura de activación por voz (VoiceWakeRuntime) y desde las herramientas de depuración/prueba de activación por voz (VoiceWakeTester,VoiceWakeOverlayController). - Detención:
stopVoiceEars(), llamado cuando finaliza la captura. - Ventana de silencio antes de finalizar: normalmente
2.0s;5.0ssi solo se detectó la palabra de activación y no hubo más voz después (VoiceWakeRuntime.silenceWindow/triggerOnlySilenceWindow). - Mientras están ampliadas, se suspenden los temporizadores de parpadeo, balanceo, patas y orejas del estado inactivo (
earBoostActivecontrola la tarea de animación enCritterStatusLabel+Behavior).
Formas y tamaños
- Lienzo: imagen de plantilla de 18x18pt, renderizada en un búfer de mapa de bits de 36x36px (2x) para que el icono se mantenga nítido en pantallas Retina.
- La escala predeterminada de las orejas es
1.0; la ampliación por voz estableceearScale=1.9sin cambiar el marco general. antennaDroop(0-1) pliega las antenas hacia abajo para las poses de pausa y sueño.- El movimiento rápido de las patas usa
legWigglehasta1.0con una pequeña oscilación horizontal.
Notas de comportamiento
- No hay ningún control externo mediante CLI/intermediario para las orejas ni para el estado de trabajo; ambos se controlan internamente mediante señales de la aplicación (
AppState.setWorking,AppState.triggerVoiceEars) para evitar oscilaciones accidentales. - Mantenga cualquier TTL nuevo breve (muy por debajo de 10s) para que el icono vuelva rápidamente al estado base si un trabajo se bloquea.
Relacionado
Was this useful?