Skip to content

Add live avatar and modernize - #64

Closed
oniharnantyo wants to merge 3 commits into
dapi-labs:mainfrom
oniharnantyo:add-live-avatar--and-modernize
Closed

oniharnantyo wants to merge 3 commits into
dapi-labs:mainfrom
oniharnantyo:add-live-avatar--and-modernize

Conversation

@oniharnantyo

Copy link
Copy Markdown

No description provided.

Oni Harnantyo added 3 commits October 20, 2026 22:13
Replace the legacy webpack / Jest / ESLint setup with Vite+, which unifies
Vite, Vitest, Rolldown, Oxlint and Oxfmt into a single toolchain.

- build: library build emitting dual ESM + CJS bundles with bundled
  TypeScript declarations and sourcemaps
- test: migrate Jest to Vitest v5 (jsdom, @testing-library/react)
- lint/format: replace ESLint + Prettier with Oxlint + Oxfmt
- demo: rebuild on Vite using the React 18 createRoot API
- ci: replace Travis with GitHub Actions running lint, test and build on
  Node 18/20/22
- release: publish to npm from the `v*` tag workflow with provenance
- add runnable Vite examples (basic, random, expressions)
- point the release changelog URLs at the dapi-labs repository
Turn the static avatar into a character that can be interacted with.

- expressions: 11 named expressions driving eyebrow/eye/mouth styles, with
  feature offsets so the face glides between them instead of snapping
- gestures: one-shot nod, shake, sneeze and squash, playable declaratively
  via the `gesture` prop or imperatively through the ref handle
- gaze tracking: `lookAt` follows the pointer over the avatar (hover) or
  across the whole window (global)
- agent states: persona states (listening, thinking, speaking, focused,
  executing, tool_call, celebrating, confused, error) that change the pose,
  the expression, the breathing tempo and the emote badge
- sentiment: a separate fast-changing emotional channel layered on top of
  the agent state
- emote fx: animated comic / anime overlay badges (idea, zzz, sparkle,
  sweat, anger, question, exclamation, heart, gear)
- secondary motion: spring inertia on the hair and accessories
- talking: the mouth cycles speech-like shapes while the agent speaks
- sleeping: the avatar yawns, droops and falls asleep after a period of
  inactivity, and startles awake on any interaction
- useAvatarController: hook bundling the props, the ref and an imperative
  API for driving the avatar from app code
- new feature sets: eyes (closed, droopy, squint, wide), mouth (frown,
  grimace, open, straight, surprised) and eyebrows (angry, down, flat,
  raised)
- respect prefers-reduced-motion: the keyframes are never injected, so the
  avatar stays still
- list every new prop in the options table with its accepted values
- add tables for expressions, agent states, sentiment and emote fx
- document the useAvatarController and ref handle APIs
- explain the ambient life behaviors, reduced motion and SSR support
- list the runnable examples
- replace the Travis badge with the GitHub Actions CI badge
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant