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) تا اگر کاری گیر کرد، آیکون سریع به حالت پایه برگردد.