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) เพื่อให้ไอคอนกลับสู่ค่าพื้นฐานอย่างรวดเร็วหากงานค้าง

ที่เกี่ยวข้อง