Skip to main content

メニューバーアイコンの状態

対象範囲: macOS アプリ(apps/macos)。レンダリング: CritterIconRenderer.makeIcon(...)。アニメーション/状態の配線: CritterStatusLabel + CritterStatusLabel+Behavior.swift

状態

セッションにアクティブなジョブまたはツールがある場合、ツールアクティビティバッジ(SF Symbol のパック。例: exec の場合は chevron.left.slash.chevron.right)を同じクリッターアイコンの上に表示できます。このバッジは IconState/ActivityKind から提供されます。完全な状態モデルについては、メニューバーを参照してください。

音声ウェイクの耳

  • トリガー: AppStateStore.shared.triggerVoiceEars(ttl: nil)。音声ウェイクのキャプチャパイプライン(VoiceWakeRuntime)と、音声ウェイクのデバッグ/テストツール(VoiceWakeTesterVoiceWakeOverlayController)から呼び出されます。
  • 停止: stopVoiceEars()。キャプチャの完了時に呼び出されます。
  • 完了までの無音時間: 通常は 2.0s。トリガーワードだけが検出され、その後に発話が続かなかった場合は 5.0sVoiceWakeRuntime.silenceWindow / triggerOnlySilenceWindow)。
  • ブースト中は、アイドル時のまばたき/小刻みな動き/脚/耳のタイマーが一時停止します(earBoostActiveCritterStatusLabel+Behavior のアニメーションタスクを制御します)。

形状とサイズ

  • キャンバス: 18x18pt のテンプレート画像。Retina でアイコンを鮮明に保つため、36x36px のビットマップバッキングストア(2x)にレンダリングされます。
  • 耳のスケールのデフォルトは 1.0。音声ブーストでは、全体のフレームを変更せずに earScale=1.9 を設定します。
  • antennaDroop(0~1)は、一時停止およびスリープの姿勢で触角を下向きに折りたたみます。
  • 脚の素早い動きには legWiggle から最大 1.0 を使用し、水平方向に少し揺れます。

動作上の注意

  • 耳や作業中状態を切り替える外部 CLI/ブローカーのトグルはありません。意図しないばたつきを避けるため、どちらもアプリのシグナル(AppState.setWorkingAppState.triggerVoiceEars)によって内部的に駆動されます。
  • ジョブが停止した場合でもアイコンがすぐに基準状態へ戻るよう、新しい TTL は短く(10秒を十分に下回る値に)保ってください。

関連項目