macOS companion app
Значок в строке меню
Автор: steipete · Обновлено: 2025-12-06 · Область: macOS приложение (apps/macos)
- Покой: Обычная анимация значка (моргание, периодическое покачивание).
- Пауза: Элемент статуса использует
appearsDisabled; движения нет. - Голосовой триггер (большие уши): Детектор голосового пробуждения вызывает
AppState.triggerVoiceEars(ttl: nil), когда слышно слово-активатор, сохраняяearBoostActive=true, пока высказывание захватывается. Уши увеличиваются (в 1.9 раза), получают круглые отверстия для лучшей читаемости, затем сбрасываются черезstopVoiceEars()после 1 секунды тишины. Срабатывает только из внутреннего голосового пайплайна приложения. - Работа (агент запущен):
AppState.isWorking=trueзапускает микродвижение «бег хвоста/лап»: более быстрое покачивание лап и небольшое смещение во время выполнения задачи. В настоящее время переключается вокруг запусков агента WebChat; добавьте такой же переключатель для других длительных задач при их подключении.
Точки подключения
- Голосовое пробуждение: во время выполнения/тестирования вызывайте
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 рендерится в Retina-буфер 36×36 px). - «Бег» использует покачивание лап до ~1.0 с небольшим горизонтальным подрагиванием; оно добавляется к любому существующему покачиванию в состоянии покоя.
Поведенческие заметки
- Нет внешнего переключателя CLI/брокера для ушей/работы; оставьте его внутренним для сигналов самого приложения, чтобы избежать случайных срабатываний.
- Сохраняйте TTL короткими (<10с), чтобы значок быстро возвращался к исходному состоянию, если задача зависла.
Проверки состоянияЛогирование в macOS