macOS companion app

Піктограма в рядку меню

Стани піктограми в рядку меню

Область: застосунок macOS (apps/macos). Відтворення: CritterIconRenderer.makeIcon(...). Зв’язування анімації та стану: CritterStatusLabel + CritterStatusLabel+Behavior.swift.

Стани

Стан Умова активації Вигляд
Бездіяльність Типовий стан Звичайна анімація кліпання/похитування; у відкритих очах зберігається глянцевий відблиск
Призупинено isPaused=true Вусики опущені («не на службі»), очі відкриті; без руху
Сон Gateway від’єднано/не налаштовано Вусики опущені, а очі заплющуються, утворюючи повіки ⌣ ⌣; без руху
Святкування Повідомлення надіслано (sendCelebrationTick) Очі на ~0.9s спалахують радісними дугами ∩ ∩, а лапка робить удар
Голосове пробудження (великі вуха) Почуте слово пробудження Вусики випрямляються й стають вищими (earScale=1.9); опускаються після тиші
Робота isWorking=true або активний IconState Швидше рухаються лапки (від legWiggle до 1.0) із невеликим горизонтальним зміщенням; додається до похитування в стані бездіяльності

Значок активності інструмента (кружок із символом SF, наприклад 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 без зміни загального кадру.
  • antennaDroop (0-1) опускає вусики для поз у станах призупинення та сну.
  • Швидкий рух лапок використовує значення від legWiggle до 1.0 із невеликим горизонтальним посмикуванням.

Примітки щодо поведінки

  • Немає зовнішнього перемикача CLI/брокера для вух або робочого стану; обидва стани керуються внутрішніми сигналами застосунку (AppState.setWorking, AppState.triggerVoiceEars), щоб уникнути випадкового перемикання.
  • Будь-який новий TTL має бути коротким (значно менше ніж 10s), щоб піктограма швидко поверталася до базового стану, якщо завдання зависне.

Пов’язані матеріали

Was this useful?
On this page

On this page