macOS companion app

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

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

Автор: steipete · Оновлено: 2025-12-06 · Область: застосунок macOS (apps/macos)

  • Бездіяльність: Звичайна анімація піктограми (моргання, періодичне погойдування).
  • Призупинено: Елемент стану використовує appearsDisabled; руху немає.
  • Голосовий тригер (великі вуха): Детектор голосового пробудження викликає AppState.triggerVoiceEars(ttl: nil), коли чує слово пробудження, утримуючи earBoostActive=true, поки захоплюється висловлювання. Вуха збільшуються (1.9x), отримують круглі отвори для кращої читабельності, а потім опускаються через stopVoiceEars() після 1 с тиші. Спрацьовує лише з голосового конвеєра всередині застосунку.
  • Робота (агент запущено): AppState.isWorking=true запускає мікрорух "швидке перебирання хвостом/лапами": швидше погойдування лап і невелике зміщення, поки робота триває. Наразі вмикається навколо запусків агента WebChat; додайте таке саме перемикання навколо інших тривалих завдань, коли підʼєднаєте їх.

Точки підʼєднання

  • Голосове пробудження: runtime/tester викликає AppState.triggerVoiceEars(ttl: nil) під час тригера та stopVoiceEars() після 1 с тиші, щоб відповідати вікну захоплення.
  • Активність агента: встановлюйте 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 backing store).
  • Швидке перебирання використовує погойдування лап до ~1.0 з невеликим горизонтальним тремтінням; воно додається до будь-якого наявного погойдування бездіяльності.

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

  • Немає зовнішнього перемикача CLI/брокера для вух/роботи; тримайте це внутрішнім для власних сигналів застосунку, щоб уникнути випадкового мерехтіння.
  • Тримайте TTL короткими (<10s), щоб піктограма швидко поверталася до базового стану, якщо завдання зависне.

Повʼязане