macOS companion app

آیکون نوار منو

وضعیت‌های آیکون نوار منو

نویسنده: steipete · به‌روزرسانی‌شده: 2025-12-06 · دامنه: برنامه macOS (apps/macos)

  • بیکار: پویانمایی معمول آیکون (پلک‌زدن، تکان گاه‌به‌گاه).
  • مکث‌شده: آیتم وضعیت از appearsDisabled استفاده می‌کند؛ بدون حرکت.
  • راه‌انداز صوتی (گوش‌های بزرگ): آشکارساز بیدارباش صوتی وقتی واژه بیدارباش شنیده می‌شود AppState.triggerVoiceEars(ttl: nil) را فراخوانی می‌کند و تا زمانی که گفتار ضبط می‌شود earBoostActive=true را نگه می‌دارد. گوش‌ها بزرگ‌تر می‌شوند (1.9x)، برای خوانایی حفره‌های دایره‌ای گوش می‌گیرند، سپس پس از 1 ثانیه سکوت از طریق stopVoiceEars() پایین می‌آیند. فقط از خط لوله صوتی درون‌برنامه‌ای اجرا می‌شود.
  • در حال کار (عامل در حال اجرا): AppState.isWorking=true یک ریزحرکت «جنب‌وجوش دم/پا» را هدایت می‌کند: تکان سریع‌تر پا و جابه‌جایی جزئی هنگام انجام کار. در حال حاضر پیرامون اجرای عامل WebChat تغییر وضعیت داده می‌شود؛ وقتی کارهای طولانی دیگر را متصل می‌کنید، همین تغییر وضعیت را پیرامون آن‌ها نیز اضافه کنید.

نقاط اتصال

  • بیدارباش صوتی: فراخوانی زمان اجرا/آزمایشگر، هنگام راه‌اندازی 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 که در یک پشتوانه Retina با اندازه 36×36 px رندر می‌شود).
  • جنب‌وجوش از تکان پا تا حدود ~1.0 با یک لرزش افقی کوچک استفاده می‌کند؛ این حرکت به هر تکان بیکار موجود افزوده می‌شود.

نکات رفتاری

  • هیچ تغییر وضعیت خارجی CLI/واسطی برای گوش‌ها/در حال کار وجود ندارد؛ آن را داخلی و وابسته به سیگنال‌های خود برنامه نگه دارید تا از نوسان تصادفی جلوگیری شود.
  • TTLها را کوتاه نگه دارید (<10s) تا اگر کاری گیر کرد، آیکون سریع به حالت پایه برگردد.

مرتبط