macOS companion app
ไอคอนแถบเมนู
สถานะไอคอนแถบเมนู
ผู้เขียน: steipete · อัปเดต: 2025-12-06 · ขอบเขต: แอป macOS (apps/macos)
- ไม่ได้ทำงาน: ภาพเคลื่อนไหวไอคอนปกติ (กะพริบ กระดิกเป็นครั้งคราว)
- หยุดชั่วคราว: รายการสถานะใช้
appearsDisabled; ไม่มีการเคลื่อนไหว - ทริกเกอร์เสียง (หูใหญ่): ตัวตรวจจับคำปลุกด้วยเสียงเรียก
AppState.triggerVoiceEars(ttl: nil)เมื่อได้ยินคำปลุก โดยคงearBoostActive=trueไว้ระหว่างบันทึกถ้อยคำ หูจะขยายขึ้น (1.9x), มีรูหูแบบวงกลมเพื่อให้อ่านง่าย แล้วลดกลับผ่านstopVoiceEars()หลังเงียบไป 1 วินาที เรียกใช้จากไปป์ไลน์เสียงในแอปเท่านั้น - กำลังทำงาน (เอเจนต์กำลังรัน):
AppState.isWorking=trueขับเคลื่อนไมโครโมชันแบบ "หาง/ขาวิ่งลน": ขากระดิกเร็วขึ้นและเหลื่อมเล็กน้อยขณะงานกำลังดำเนินอยู่ ตอนนี้เปิด/ปิดรอบการรันเอเจนต์ WebChat; เพิ่มการเปิด/ปิดแบบเดียวกันรอบงานยาวอื่น ๆ เมื่อคุณเชื่อมต่อมัน
จุดเชื่อมต่อ
- การปลุกด้วยเสียง: runtime/tester เรียก
AppState.triggerVoiceEars(ttl: nil)เมื่อเกิดทริกเกอร์ และstopVoiceEars()หลังเงียบไป 1 วินาที เพื่อให้ตรงกับช่วงเวลาบันทึก - กิจกรรมของเอเจนต์: ตั้งค่า
AppStateStore.shared.setWorking(true/false)รอบช่วงการทำงาน (ทำไว้แล้วในการเรียกเอเจนต์ WebChat) รักษาช่วงให้สั้นและรีเซ็ตในบล็อกdeferเพื่อหลีกเลี่ยงภาพเคลื่อนไหวค้าง
รูปทรงและขนาด
- ไอคอนพื้นฐานวาดใน
CritterIconRenderer.makeIcon(blink:legWiggle:earWiggle:earScale:earHoles:) - สเกลหูมีค่าเริ่มต้นเป็น
1.0; การบูสต์ด้วยเสียงตั้งค่าearScale=1.9และเปิดearHoles=trueโดยไม่เปลี่ยนเฟรมโดยรวม (ภาพเทมเพลต 18×18 pt ที่เรนเดอร์ลงใน backing store Retina ขนาด 36×36 px) - การวิ่งลนใช้การกระดิกขาสูงสุดประมาณ ~1.0 พร้อมการสั่นแนวนอนเล็กน้อย; เป็นการเพิ่มทับจากการกระดิกขณะว่างที่มีอยู่
หมายเหตุเชิงพฤติกรรม
- ไม่มีตัวสลับ CLI/broker ภายนอกสำหรับหู/การทำงาน; ให้คงไว้ภายในสัญญาณของแอปเองเพื่อหลีกเลี่ยงการกระพือโดยไม่ตั้งใจ
- ตั้ง TTL ให้สั้น (<10s) เพื่อให้ไอคอนกลับสู่ค่าพื้นฐานอย่างรวดเร็วหากงานค้าง