You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Jonathan Hinkel 3421198537 Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
..
src Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
README.md Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
package.json Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
tsconfig.build.json Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
tsconfig.json Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago
vitest.config.ts Convert to an npm-workspaces monorepo (packages/core, packages/humanoid, apps/template) 1 month ago

README.md

@webavatar/webavatar-humanoid

Renderer-agnostic avatar-state derivation and animation-channel composition for 3D humanoid avatars rigged with ARKit blend shapes. An optional package — infrastructure only some webavatar client projects need (one building a 2D avatar has no reason to depend on this at all). See the monorepo root's docs/HUMANOID.md for the full design writeup.

ESM-only. No CommonJS build; require() is unsupported by design.

Entry points

Entry Contains
@webavatar/webavatar-humanoid AvatarState/AvatarSignal/nextAvatarState (the pure state-transition reducer), AnimationConfig/DEFAULT_ANIMATION_CONFIG/resolveAnimationConfig, ARKitBlendShape/AnimationFrame/AnimationLayer/compositeAnimationFrames.
@webavatar/webavatar-humanoid/client deriveAvatarState — the browser wrapper that folds a live RealtimeClient's ServerEvents through the pure reducer and owns the idleActive→idlePassive timer.
@webavatar/webavatar-humanoid/eye The first animation library built as a consumer of the root contract: the Macro/Micro/Nano gaze system (stepEyeGaze, EyeConfig/DEFAULT_EYE_CONFIG/resolveEyeConfig, gazeOffsetToBlendShapes).
@webavatar/webavatar-humanoid/eye/client createEyeGazeController — the browser wrapper that owns the gaze system's per-frame clock and Math.random.

Future animation libraries (blink, lip-sync, body/gesture) are expected to nest the same way, as ./<name> / ./<name>/client sub-packages, rather than becoming further top-level packages.

What this package is not

No renderer knowledge (Three.js, Babylon, a game engine — none of it), no rig/mesh binding, no Svelte dependency (its hand-rolled stores satisfy the Svelte store contract structurally). Consuming code owns which ARKitBlendShape maps to which morph target on its own mesh.

Core dependency: type-only

This package's only relationship to @webavatar/webavatar-core is a type-only import (import type { ServerEvent }) — its built JavaScript contains no runtime reference to core at all, verified as part of this package's own build (grep -rl "webavatar-core" dist --include="*.js" finds nothing). Core is declared as a peerDependency purely so npm reports a version-compatibility error at install time if a project's core and humanoid versions drift apart — not because this package calls into core at runtime.

Compatibility

Caret-ranged (^0.1.0) during the 0.x window — every humanoid release during this window bumps its peer/dev range on core in the same commit as any core minor it needs to track. See the monorepo root's docs/MONOREPO_MIGRATION_BRIEF.md ("Versions, ranges, and the 0.x window") for the full policy.