Skip to content

feat(app): mascot cheers when its bot finishes - #145

Merged
httpsphl merged 2 commits into
mainfrom
feat/mascot-cheer
Oct 4, 2026
Merged

httpsphl merged 2 commits into
mainfrom
feat/mascot-cheer

Conversation

@httpsphl

@httpsphl httpsphl commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

When a bot finishes what it was doing (its mood goes from working to idle), its mascot cheers once, for 1.2 s:

  • it crouches, jumps up stretched, lands squashed and settles (squash and stretch, up eases out, the fall eases in);
  • its eyes bend into two arcs smiling up, then open again from the middle like a blink.

The arcs of the smiling eyes, and of the shut eyes while asleep, now lean with the line through the open eyes (about 14 degrees, rising to the right) instead of lying level.

A mascot that shows up idle does not cheer; nor does one coming back from waiting or tired. The motion is in its own file, mascot-cheer.css (motion.css and mascot.css do not grow). Every keyframe ends at rest, so less motion, which cuts animations to their end, shows nothing. Spec 15.3 describes it.

Tests

  • avatar.test.tsx: cheers on working → idle and stops after CHEER_MS; no cheer on mount or waiting → idle; each cheer animation ends at rest.
  • Checked in the preview by freezing the animation at 0, 150, 360, 550, 800 and 1150 ms.

Manual check with real Claude Code

  1. Send a bot a message in the app.
  2. When it stops working, its mascot in the header, the sidebar and the crew card hops once and smiles.
  3. With "Less motion" on, nothing moves.

When a bot goes from working to idle, its mascot crouches, jumps up
stretched, lands squashed and smiles with its eyes bent into two arcs,
then opens them again with a blink (1.2 s). A mascot that shows up
idle does not cheer. The motion lives in its own file,
mascot-cheer.css, and every frame ends at rest, so less motion shows
nothing.
The open eyes sit on a line that rises to the right (about 14 degrees),
but the arcs of the shut and smiling eyes were drawn level, so they
looked crooked next to it. Both arcs now turn by the angle of that line,
in a group of their own so the smile's CSS transform keeps the turn.
@httpsphl
httpsphl merged commit 44ebf27 into main Oct 4, 2026
4 checks passed
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