跳转到主要内容

菜单栏图标状态

范围:macOS 应用(apps/macos)。渲染:CritterIconRenderer.makeIcon(...)。动画/状态接线:CritterStatusLabel + CritterStatusLabel+Behavior.swift

状态

状态触发条件视觉效果
空闲默认正常眨眼/摆动动画
已暂停isPaused=true状态项使用 appearsDisabled;无运动
语音唤醒(大耳朵)听到唤醒词耳朵缩放到 1.9x,并启用 earHoles=true(圆形孔洞以提高可读性);静音后恢复
工作中isWorking=true 或存在活动的 IconState更快的腿部摆动(legWiggle 最高到 1.0),并带有小幅水平偏移;叠加在空闲摆动之上
当会话有活动作业或工具时,工具活动徽标(SF Symbol 圆标,例如用于 exec 的 chevron.left.slash.chevron.right)可以渲染在同一个小动物图标上方。该徽标来自 IconState/ActivityKind;完整状态模型请参见菜单栏

语音唤醒耳朵

  • 触发:AppStateStore.shared.triggerVoiceEars(ttl: nil),由语音唤醒捕获管线(VoiceWakeRuntime)以及语音唤醒调试/测试工具(VoiceWakeTesterVoiceWakeOverlayController)调用。
  • 停止:stopVoiceEars(),在捕获完成时调用。
  • 完成前的静音窗口:通常为 2.0s;如果只听到了触发词且之后没有进一步语音(VoiceWakeRuntime.silenceWindow / triggerOnlySilenceWindow),则为 5.0s
  • 增强期间,空闲眨眼/摆动/腿部/耳朵计时器会暂停(earBoostActive 会在 CritterStatusLabel+Behavior 中门控动画任务)。

形状和尺寸

  • 画布:18x18pt 模板图像,渲染到 36x36px 位图后备存储(2x),因此图标在 Retina 上保持清晰。
  • 耳朵缩放默认值为 1.0;语音增强会设置 earScale=1.9earHoles=true,且不会改变整体框架。
  • 腿部快跑使用最高到 1.0legWiggle,并带有小幅水平抖动。

行为说明

  • 耳朵或工作状态没有外部 CLI/broker 开关;两者都由应用信号(AppState.setWorkingAppState.triggerVoiceEars)在内部驱动,以避免意外抖动。
  • 任何新的 TTL 都应保持较短(远低于 10s),这样如果作业挂起,图标可以快速回到基线状态。

相关