메뉴 바 아이콘 상태

작성자: steipete · 업데이트: 2025-12-06 · 범위: macOS 앱 (apps/macos)

  • 유휴: 기본 아이콘 애니메이션 (깜빡임, 간헐적 흔들림).
  • 일시 중지: 상태 항목이 appearsDisabled 사용; 움직임 없음.
  • 음성 트리거 (큰 귀): Voice Wake 감지기가 트리거 단어를 인식하면 AppState.triggerVoiceEars(ttl: nil)을 호출하여, 발화가 캡처되는 동안 earBoostActive=true를 유지합니다. 귀가 확대(1.9배)되고, 가독성을 위해 원형 귀 구멍이 생긴 후, 1초간 무음 후 stopVoiceEars()로 축소됩니다. 인앱 음성 파이프라인에서만 트리거됩니다.
  • 작업 중 (에이전트 실행 중): AppState.isWorking=true가 “꼬리/다리 바쁨” 마이크로 동작을 구동합니다: 작업 진행 중에 더 빠른 다리 흔들림과 약간의 오프셋. 현재 WebChat 에이전트 실행에 토글됨; 다른 장기 작업에도 동일한 토글을 추가하세요.

연결 포인트

  • Voice Wake: 런타임/테스터가 트리거 시 AppState.triggerVoiceEars(ttl: nil)을, 캡처 창에 맞추어 1초간 무음 후 stopVoiceEars()를 호출합니다.
  • 에이전트 활동: 작업 구간에서 AppStateStore.shared.setWorking(true/false)을 설정합니다 (WebChat 에이전트 호출에 이미 적용됨). 구간을 짧게 유지하고 defer 블록에서 리셋하여 애니메이션이 멈추는 것을 방지하세요.

형태 및 크기

  • 기본 아이콘은 CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:)에서 그려집니다.
  • 귀 스케일 기본값은 1.0; 음성 부스트가 earScale=1.9를 설정하고 전체 프레임 변경 없이 earHoles=true를 토글합니다 (18×18 pt 템플릿 이미지를 36×36 px 레티나 백킹 스토어에 렌더링).
  • 바쁨 동작은 다리 흔들림 최대 ~1.0과 작은 수평 떨림을 사용합니다. 기존 유휴 흔들림에 가산됩니다.

동작 참고 사항

  • 귀/작업 중에 대한 외부 CLI/브로커 토글 없음; 실수로 인한 깜빡임을 피하기 위해 앱 자체 시그널 내부로 유지합니다.
  • TTL을 짧게 유지하세요(<10초). 작업이 멈추면 아이콘이 빠르게 기본 상태로 돌아갑니다.