Community translations by veiseule.ai — Help improve them on Crowdin
Skip to main content

สถานะไอคอนแถบเมนู

ผู้เขียน: steipete · อัปเดต: 2025-12-06 · ขอบเขต: แอปmacOS (apps/macos)

  • ว่าง (Idle): แอนิเมชันไอคอนปกติ (กะพริบ ขยับเล็กน้อยเป็นครั้งคราว)
  • หยุดชั่วคราว (Paused): รายการสถานะใช้ appearsDisabled; ไม่มีการเคลื่อนไหว
  • ทริกเกอร์เสียง (หูใหญ่): ตัวตรวจจับการปลุกด้วยเสียงเรียก AppState.triggerVoiceEars(ttl: nil) เมื่อได้ยินคำปลุก และคง earBoostActive=true ไว้ระหว่างการบันทึกถ้อยคำ หูจะขยาย (1.9x) เพิ่มรูหูทรงกลมเพื่อให้อ่านง่าย จากนั้นจะลดลงผ่าน stopVoiceEars() หลังเงียบ 1 วินาที เรียกใช้เฉพาะจากไปป์ไลน์เสียงภายในแอปเท่านั้น 12. หูจะขยาย (1.9x) มีรูหูกลมเพื่อให้อ่านง่าย จากนั้นจะหดลงผ่าน stopVoiceEars() หลังจากเงียบไป 1 วินาที 13. ถูกเรียกใช้งานจากไปป์ไลน์เสียงภายในแอปเท่านั้น
    1. กำลังทำงาน (agent ทำงานอยู่): AppState.isWorking=true ขับเคลื่อนไมโครโมชั่นแบบ “หาง/ขากระดิก” คือขยับขาเร็วขึ้นและมีการเยื้องเล็กน้อยขณะงานกำลังดำเนินอยู่ กำลังทำงาน (เอเจนต์กำลังรัน): AppState.isWorking=true ขับไมโครโมชั่นแบบ “หาง/ขาวิ่งวุ่น”: การขยับขาเร็วขึ้นและมีออฟเซ็ตเล็กน้อยขณะงานกำลังดำเนินอยู่ ปัจจุบันสลับเปิดปิดรอบการรันเอเจนต์ WebChat; เมื่อเชื่อมงานยาวอื่นๆ ให้เพิ่มการสลับเดียวกัน

จุดเชื่อมต่อ

  • การปลุกด้วยเสียง: runtime/tester เรียก AppState.triggerVoiceEars(ttl: nil) เมื่อทริกเกอร์ และ stopVoiceEars() หลังเงียบ 1 วินาทีเพื่อให้ตรงกับช่วงการบันทึก
  • กิจกรรมของเอเจนต์: ตั้งค่า AppStateStore.shared.setWorking(true/false) ครอบช่วงงาน (ทำแล้วในเอเจนต์ WebChat) ควรรักษาช่วงให้สั้นและรีเซ็ตในบล็อก defer เพื่อหลีกเลี่ยงแอนิเมชันค้าง 15. ควรทำให้ช่วงเวลาสั้นและรีเซ็ตในบล็อก 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/broker สำหรับหู/สถานะทำงาน ควรคงไว้ภายในสัญญาณของแอปเองเพื่อหลีกเลี่ยงการกระพือโดยไม่ตั้งใจ
  • ควรรักษา TTL ให้สั้น (<10s) เพื่อให้ไอคอนกลับสู่สถานะพื้นฐานได้อย่างรวดเร็วหากงานค้าง