Tags: fiorastudio/buddy
Tags
Release 1.0.6 - Bump version to 1.0.6 - Finalize CHANGELOG with release date and upgrade notes - Document full migration path for existing max_mode/insight_mode users Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: animation liveliness — species-aware profiles, pet-hearts, bubb… …le fade (#73) ## Summary - **Phase 1 — Reliability:** Add `refreshInterval: 2` to installer (`install.sh` + `install.ps1`) with drift detection. Extend `buddy_doctor` to validate statusline refresh cadence with remediation guidance. - **Phase 1.5 — Quick Wins:** Extract `stripAnsi` to shared `src/lib/ansi.ts`. Add pet-hearts overlay to statusline (5s TTL, cycling hearts row above sprite, suppressed during bubble mode). Add bubble fade/dim (ANSI dim in final 3s of reaction TTL). - **Phase 2 — Species-Aware Profiles:** New `src/lib/animation.ts` module with `AnimationState`, `FrameRef`, `AnimationProfile` types. `defaultProfile(frameCount)` factory generates species-aware sequences with per-species `dwellMs` overrides. Replaces inlined `IDLE_SEQUENCE`/`GRUMPY_SEQUENCE`/`HAPPY_SEQUENCE` in wrapper. - **Phase 3 — Ambient Polish:** Replace `Math.random()` ambient text/particles with `seededIndex`-based deterministic dwell windows (15-20s buckets). No more flicker. 88 new tests (439 total). 6 rounds of Codex architectural review — 1 blocker caught and fixed (dynamic blink corrupting sprites for 13 species with `.` eye). Closes #62, #63, #64, #65, #66, #67, #68, #69, #70 ## Test plan - [x] All 439 tests pass (`npm test`) - [x] Width stability verified for all 21 species × 11 animation states - [x] Blink parity confirmed (frame 1 matches dynamic blink for safe eyes, diverges for Snail) - [x] Golden-file snapshots for Snail, Mushroom, Chonk across idle/happy/grumpy - [x] SPECIES_ANIMATIONS legacy fallback tested - [ ] Manual verification: fresh install animates, pet-hearts visible, bubble fades, species feel distinct ## Fast follow (separate PR) - Per-species animation profile overrides (#72) — deferred until factory validated in production 🤖 Generated with [Claude Code](https://claude.com/claude-code)