Skip to content

選單列圖示

作者:steipete · 更新:2025-12-06 · 範圍:macOS app (apps/macos)

  • 閒置: 正常的圖示動畫(閃爍、偶爾晃動)。
  • 暫停: 狀態項目使用 appearsDisabled;無動作。
  • 語音觸發(大耳朵): 當聽到喚醒詞時,語音喚醒檢測器會呼叫 AppState.triggerVoiceEars(ttl: nil),並在擷取語音時保持 earBoostActive=true。耳朵會放大(1.9 倍),圓形的耳孔會變得清晰易讀,然後在靜音 1 秒後透過 stopVoiceEars() 回復。僅由應用程式內的語音管線觸發。
  • 運作中(代理程式正在執行): AppState.isWorking=true 驅動一種「尾巴/腿部急促動作」的微動態:當工作正在進行時,腿部擺動更快且會有輕微偏移。目前是在 WebChat 代理程式執行時切換;當您連接其他長時間任務時,請加上相同的切換邏輯。

連接點

  • 語音喚醒:在觸發時 runtime/tester 呼叫 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 Retina 後備存儲)。
  • 急促動作使用幅度高達 ~1.0 的腿部擺動,並搭配小幅的水平晃動;這是加在既有閒置擺動之上的。

行為註記

  • 沒有針對耳朵/運作狀態的外部 CLI/broker 切換開關;請將其保持在應用程式自身訊號的內部,以避免意外的頻繁切換。
  • 保持 TTL 短暫(<10 秒),以便如果工作掛起,圖示能快速回到基線。