選單列圖示狀態
範圍:macOS 應用程式(apps/macos)。渲染:CritterIconRenderer.makeIcon(...)。動畫/狀態接線:CritterStatusLabel + CritterStatusLabel+Behavior.swift。
狀態
| 狀態 | 觸發條件 | 視覺效果 |
|---|---|---|
| 閒置 | 預設 | 一般眨眼/擺動動畫 |
| 已暫停 | isPaused=true | 狀態項目使用 appearsDisabled;沒有動作 |
| 語音喚醒(大耳朵) | 聽到喚醒詞 | 耳朵縮放至 1.9x,並啟用 earHoles=true(圓形孔洞以提高可讀性);靜音後恢復 |
| 工作中 | isWorking=true 或有效的 IconState | 腿部擺動更快(legWiggle 最高到 1.0),加上小幅水平偏移;會疊加在閒置擺動上 |
chevron.left.slash.chevron.right)可以渲染在同一個小動物圖示上方。該徽章來自 IconState/ActivityKind;完整狀態模型請參閱選單列。
語音喚醒耳朵
- 觸發:
AppStateStore.shared.triggerVoiceEars(ttl: nil),由語音喚醒擷取管線(VoiceWakeRuntime)以及語音喚醒偵錯/測試工具(VoiceWakeTester、VoiceWakeOverlayController)呼叫。 - 停止:
stopVoiceEars(),在擷取完成時呼叫。 - 完成前的靜音視窗:通常為
2.0s;如果只聽到觸發詞且後續沒有語音,則為5.0s(VoiceWakeRuntime.silenceWindow/triggerOnlySilenceWindow)。 - 加強期間,閒置眨眼/擺動/腿部/耳朵計時器會暫停(
earBoostActive會閘控CritterStatusLabel+Behavior中的動畫任務)。
形狀與尺寸
- 畫布:18x18pt 樣板影像,渲染到 36x36px 點陣圖後備儲存區(2x),讓圖示在 Retina 上保持清晰。
- 耳朵縮放預設為
1.0;語音加強會設定earScale=1.9和earHoles=true,且不改變整體框架。 - 腿部小跑使用最高到
1.0的legWiggle,並帶有小幅水平抖動。
行為備註
- 耳朵或工作中狀態沒有外部命令列介面/broker 切換;兩者都由應用程式訊號(
AppState.setWorking、AppState.triggerVoiceEars)在內部驅動,以避免意外反覆切換。 - 任何新的 TTL 都應保持短暫(遠低於 10s),讓圖示在工作卡住時能快速回到基準狀態。