The bottom-of-screen agent avatar (Hemp Henry) can now be grabbed and dragged around. While held it plays a new 'lifted' dangle clip and follows the pointer; on release it drops under gravity, keeps any throw momentum, and bounces off the walls and floor with damping before settling and resuming its wander. A quick press with no drag still counts as a tap (random emote). - AgentAvatar.tsx: pointer-capture drag + a gravity/bounce fall integrator; the wrapper now spans the full content area so it can be lifted, staying pointer-events-none except on the sprite itself. - New 'lifted' Hemp Henry clip (nanobanana + brain bgremove): pose added to gen-avatar-sprites.sh + avatar_pipeline.py (fps 4), strip + manifest entry installed. - install_sheets now merges into the published manifest instead of replacing it, so generating a single clip no longer clobbers the rest. - visibility.ts: new 'Pick up avatar' switch (avatarDrag) so the grab/drop behavior can be turned off. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
101 lines
1.5 KiB
JSON
101 lines
1.5 KiB
JSON
{
|
|
"bash": {
|
|
"cell": 256,
|
|
"fps": 6,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "bash.png"
|
|
},
|
|
"celebrate": {
|
|
"cell": 256,
|
|
"fps": 8,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "celebrate.png"
|
|
},
|
|
"commit": {
|
|
"cell": 256,
|
|
"fps": 6,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "commit.png"
|
|
},
|
|
"deploy": {
|
|
"cell": 256,
|
|
"fps": 6,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "deploy.png"
|
|
},
|
|
"happy": {
|
|
"cell": 256,
|
|
"fps": 6,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "happy.png"
|
|
},
|
|
"idle": {
|
|
"cell": 256,
|
|
"fps": 3,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "idle.png"
|
|
},
|
|
"investigating": {
|
|
"cell": 256,
|
|
"fps": 6,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "investigating.png"
|
|
},
|
|
"lifted": {
|
|
"cell": 256,
|
|
"fps": 4,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "lifted.png"
|
|
},
|
|
"notify": {
|
|
"cell": 256,
|
|
"fps": 6,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "notify.png"
|
|
},
|
|
"oops": {
|
|
"cell": 256,
|
|
"fps": 4,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "oops.png"
|
|
},
|
|
"read": {
|
|
"cell": 256,
|
|
"fps": 6,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "read.png"
|
|
},
|
|
"thinking": {
|
|
"cell": 256,
|
|
"fps": 3,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "thinking.png"
|
|
},
|
|
"walk": {
|
|
"cell": 256,
|
|
"fps": 8,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "walk.png"
|
|
},
|
|
"write": {
|
|
"cell": 256,
|
|
"fps": 6,
|
|
"frames": 4,
|
|
"loop": true,
|
|
"src": "write.png"
|
|
}
|
|
}
|