What is wrong
Every agent animation slot resolves to a clip that means what the slot means, with one exception. The bow slot has no dedicated clip and falls back to sitclap (Sitting Clap), which reads as applause rather than a bow.
This is not a guess. The repo tracks it itself, in public/animations/registry.json under known_issues:
The 'bow' slot has no dedicated clip: it resolves to 'sitclap' (Sitting Clap), which reads as gratitude/applause rather than a bow.
Affected file: src/runtime/animation-slots.js
What to change
The fix is already written down in that known_issues entry, step by step:
- Add Mixamo Bowing (In Place, Without Skin) to
animation-sources/.
- Register it in
scripts/animations.config.json as bow.
- Run
npm run build:animations.
- Point
DEFAULT_ANIMATION_MAP.bow at the new clip in src/runtime/animation-slots.js.
- Move the
bow-slot-approximation entry from known_issues to resolved_issues in public/animations/registry.json.
Check public/animations/LICENSES.md for how clip provenance is recorded and follow the same pattern for the new source.
How to prove it worked
npx vitest run tests/animation-slots.test.js
npm test
tests/animation-slots.test.js already asserts the target exists, so once the clip is baked the swap is close to a one-line change.
Then look at it. Run npm run dev, open an avatar, and play the bow slot. It should read as a bow. Post a screen recording in the PR; this is a change where the test passing and the thing looking right are two different questions.
Why it is worth doing
It is the last approximation in the slot map. Every other slot means what it says.
Comment here to claim it.
What is wrong
Every agent animation slot resolves to a clip that means what the slot means, with one exception. The
bowslot has no dedicated clip and falls back tositclap(Sitting Clap), which reads as applause rather than a bow.This is not a guess. The repo tracks it itself, in
public/animations/registry.jsonunderknown_issues:Affected file:
src/runtime/animation-slots.jsWhat to change
The fix is already written down in that
known_issuesentry, step by step:animation-sources/.scripts/animations.config.jsonasbow.npm run build:animations.DEFAULT_ANIMATION_MAP.bowat the new clip insrc/runtime/animation-slots.js.bow-slot-approximationentry fromknown_issuestoresolved_issuesinpublic/animations/registry.json.Check
public/animations/LICENSES.mdfor how clip provenance is recorded and follow the same pattern for the new source.How to prove it worked
npx vitest run tests/animation-slots.test.js npm testtests/animation-slots.test.jsalready asserts the target exists, so once the clip is baked the swap is close to a one-line change.Then look at it. Run
npm run dev, open an avatar, and play thebowslot. It should read as a bow. Post a screen recording in the PR; this is a change where the test passing and the thing looking right are two different questions.Why it is worth doing
It is the last approximation in the slot map. Every other slot means what it says.
Comment here to claim it.