macOS companion app

أيقونة شريط القوائم

حالات أيقونة شريط القوائم

المؤلف: steipete · تم التحديث: 2025-12-06 · النطاق: تطبيق macOS (apps/macos)

  • خامل: حركة الأيقونة العادية (وميض، اهتزاز عرضي).
  • متوقف مؤقتًا: يستخدم عنصر الحالة appearsDisabled؛ بلا حركة.
  • مشغّل الصوت (آذان كبيرة): يستدعي كاشف التنبيه الصوتي AppState.triggerVoiceEars(ttl: nil) عند سماع كلمة التنبيه، مع إبقاء earBoostActive=true أثناء التقاط العبارة. تكبر الآذان (1.9x)، وتحصل على فتحات أذن دائرية لتحسين الوضوح، ثم تعود عبر stopVoiceEars() بعد ثانية واحدة من الصمت. لا يُفعّل إلا من مسار الصوت داخل التطبيق.
  • قيد العمل (الوكيل يعمل): تقود AppState.isWorking=true حركة دقيقة من نوع "اندفاع الذيل/الساق": اهتزاز أسرع للساق وإزاحة طفيفة أثناء تنفيذ العمل. يُبدّل هذا حاليًا حول تشغيلات وكيل WebChat؛ أضف التبديل نفسه حول المهام الطويلة الأخرى عند توصيلها.

نقاط التوصيل

  • التنبيه الصوتي: يستدعي وقت التشغيل/المختبِر AppState.triggerVoiceEars(ttl: nil) عند التشغيل و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) حتى تعود الأيقونة إلى الحالة الأساسية بسرعة إذا تعطلت مهمة.

ذات صلة