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 Symbol، مثل chevron.left.slash.chevron.right للتنفيذ) فوق أيقونة المخلوق نفسها عندما تحتوي جلسة على مهمة أو أداة نشطة. تأتي هذه الشارة من 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) لتجنب الرفرفة العرضية. - اجعل أي مدة صلاحية جديدة قصيرة (أقل بكثير من 10s) كي تعود الأيقونة سريعًا إلى حالتها الأساسية إذا علقت مهمة.
ذو صلة
Was this useful?