* feat(web): Ingo UX — proactivity signals, Oo face richness, soft audio Priority S: Heute Brief buckets (Needs you ≤3 / Doing / Done), roster doing-verbs and Braucht-dich chips, sidebar badge on Heute, need-you ping on waiting states. Priority A/B: Web Audio cues (app-start shimmer, interact tick, success-resolve, need-you ouh), reaction vocals with cooldown, optional eOo cold-open voice mark. Oo eyes gain iris/specular detail and asymmetric blink; hands reduced to rest except punctuation poses; speaking mouth animates. Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * fix(web): biome format and unused import in HeuteBrief Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * fix(web): a11y and import order for Heute badge Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * docs+motion: Motion God craft — pose stagger, audio bus, ducking Add MOTION-EVOO-CHARACTER.md (Brand Soul brief): eyes lead, mouth ~80%, hands punctuation, 40–80 ms eye→mouth lag, 220–320 ms springs, SFX LUFS and duck-under-TTS/PTT, nod mh/Mhh, reduced-motion rules. Implement motion-tokens, staggered mouthPose in EvooMascot, shared oo-audio-bus with voice-lane ducking, mint→gold success, hm nod vocal. Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * fix(web): align conversation roster with bot-only sidebar groups after rebase Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
150 lines
3.1 KiB
TypeScript
150 lines
3.1 KiB
TypeScript
import type { EvooPose, EvooPoseDefinition } from "./types.js";
|
|
|
|
export const POSE_DEFINITIONS: Record<EvooPose, EvooPoseDefinition> = {
|
|
idle: {
|
|
mouth: "soft-smile",
|
|
handPreset: "rest",
|
|
bodyAnimation: "evoo-breathe-awake",
|
|
},
|
|
listening: {
|
|
mouth: "tiny-o",
|
|
gaze: { x: 0, y: -0.4 },
|
|
accessory: "headset",
|
|
handPreset: "rest",
|
|
bodyAnimation: "evoo-breathe-awake",
|
|
aura: "speak",
|
|
},
|
|
speaking: {
|
|
mouth: "speaking",
|
|
gaze: { x: 0.3, y: 0 },
|
|
handPreset: "rest",
|
|
bodyAnimation: "evoo-conductor-left",
|
|
aura: "speak",
|
|
},
|
|
thinking: {
|
|
mouth: "flat",
|
|
gaze: { x: 1.2, y: -1.1 },
|
|
accessory: "thought",
|
|
handPreset: "rest",
|
|
aura: "think",
|
|
},
|
|
working: {
|
|
mouth: "flat",
|
|
gaze: { x: 0.6, y: 0.8 },
|
|
handPreset: "rest",
|
|
bodyAnimation: "evoo-quantum-flicker",
|
|
},
|
|
reading: {
|
|
mouth: "tiny-o",
|
|
gaze: { x: 1.4, y: 1.2 },
|
|
accessory: "clipboard",
|
|
handPreset: "rest",
|
|
eyeOpen: 0.92,
|
|
},
|
|
analyzing: {
|
|
mouth: "flat",
|
|
gaze: { x: 0.8, y: 0.4 },
|
|
accessory: "magnifier",
|
|
browRaise: "left",
|
|
handPreset: "rest",
|
|
eyeOpen: 0.88,
|
|
},
|
|
skeptical: {
|
|
mouth: "flat",
|
|
browRaise: "right",
|
|
gaze: { x: -0.6, y: -0.2 },
|
|
handPreset: "rest",
|
|
eyeOpen: 0.9,
|
|
},
|
|
curious: {
|
|
mouth: "soft-smile",
|
|
gaze: { x: 1.6, y: -0.8 },
|
|
handPreset: "peek",
|
|
eyeOpen: 1.06,
|
|
},
|
|
delighted: {
|
|
mouth: "delighted",
|
|
accessory: "spark",
|
|
handPreset: "delighted",
|
|
eyeSparkle: true,
|
|
bodyAnimation: "evoo-breathe-awake",
|
|
aura: "success",
|
|
},
|
|
concerned: {
|
|
mouth: "concerned",
|
|
browRaise: "worried",
|
|
gaze: { x: 0, y: 0.6 },
|
|
handPreset: "rest",
|
|
eyeOpen: 0.94,
|
|
},
|
|
waiting: {
|
|
mouth: "tiny-o",
|
|
gaze: { x: -0.5, y: 0 },
|
|
handPreset: "rest",
|
|
eyeOpen: 0.72,
|
|
},
|
|
success: {
|
|
mouth: "grin",
|
|
eyeSparkle: true,
|
|
handPreset: "success",
|
|
bodyAnimation: "evoo-executive-nod",
|
|
aura: "success",
|
|
},
|
|
greeting: {
|
|
mouth: "grin",
|
|
handPreset: "wave",
|
|
bodyAnimation: "evoo-wave-harmonic",
|
|
},
|
|
asleep: {
|
|
mouth: "soft-smile",
|
|
accessory: "zzz",
|
|
handPreset: "rest",
|
|
bodyAnimation: "evoo-breathe-sleep",
|
|
eyeOpen: 0.38,
|
|
},
|
|
error: {
|
|
mouth: "concerned",
|
|
browRaise: "worried",
|
|
accessory: "spark",
|
|
handPreset: "error",
|
|
gaze: { x: 0, y: 0.8 },
|
|
},
|
|
collaborating: {
|
|
mouth: "soft-smile",
|
|
accessory: "tool",
|
|
handPreset: "rest",
|
|
gaze: { x: 0.9, y: -0.3 },
|
|
},
|
|
onboarding: {
|
|
mouth: "tiny-o",
|
|
gaze: { x: 1.4, y: 1.2 },
|
|
accessory: "clipboard",
|
|
handPreset: "reading",
|
|
eyeOpen: 0.92,
|
|
},
|
|
typing: {
|
|
mouth: "flat",
|
|
gaze: { x: 0.6, y: 0.8 },
|
|
handPreset: "rest",
|
|
bodyAnimation: "evoo-quantum-flicker",
|
|
},
|
|
peek: {
|
|
mouth: "soft-smile",
|
|
gaze: { x: 1.6, y: -0.8 },
|
|
handPreset: "peek",
|
|
eyeOpen: 1.06,
|
|
},
|
|
wave: {
|
|
mouth: "grin",
|
|
handPreset: "wave",
|
|
bodyAnimation: "evoo-wave-harmonic",
|
|
},
|
|
profit: {
|
|
mouth: "grin",
|
|
eyeSparkle: true,
|
|
handPreset: "success",
|
|
bodyAnimation: "evoo-executive-nod",
|
|
aura: "success",
|
|
},
|
|
};
|