สถานะไอคอนแถบเมนู¶
ผู้เขียน: 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. ถูกเรียกใช้งานจากไปป์ไลน์เสียงภายในแอปเท่านั้น -
- กำลังทำงาน (agent ทำงานอยู่):
AppState.isWorking=trueขับเคลื่อนไมโครโมชั่นแบบ “หาง/ขากระดิก” คือขยับขาเร็วขึ้นและมีการเยื้องเล็กน้อยขณะงานกำลังดำเนินอยู่ กำลังทำงาน (เอเจนต์กำลังรัน):AppState.isWorking=trueขับไมโครโมชั่นแบบ “หาง/ขาวิ่งวุ่น”: การขยับขาเร็วขึ้นและมีออฟเซ็ตเล็กน้อยขณะงานกำลังดำเนินอยู่ ปัจจุบันสลับเปิดปิดรอบการรันเอเจนต์ WebChat; เมื่อเชื่อมงานยาวอื่นๆ ให้เพิ่มการสลับเดียวกัน
- กำลังทำงาน (agent ทำงานอยู่):
จุดเชื่อมต่อ
- การปลุกด้วยเสียง: 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) เพื่อให้ไอคอนกลับสู่สถานะพื้นฐานได้อย่างรวดเร็วหากงานค้าง