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 برای exec) می‌تواند روی همان آیکون موجود رندر شود. این نشان از 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