## Title Adopt row-based 7x8 sprite animation semantics with backward-compatible state aliases. ## Severity P2 ## Summary Standardize `sprite.png` packs so each of the 7 rows maps to semantic animation groups, while keeping runtime compatibility with existing state names (`active`, `success`, `error`). Also retune 8-frame animation tempo to a slower profile for readability. ## Scope - `assets/sprite-packs/{default,ferris,demogorgon}/manifest.json` - `crates/sprimo-runtime-core/src/lib.rs` - `crates/sprimo-app/src/main.rs` - docs: - `docs/SPRITE_PACK_SCHEMA.md` - `docs/TAURI_FRONTEND_DESIGN.md` ## Row Mapping Contract - row 1 (`0..7`): `idle` - row 2 (`8..15`): `happy`, `love`, alias `active` - row 3 (`16..23`): `excited`, `celebrate`, alias `success` - row 4 (`24..31`): `sleepy`, `snoring` - row 5 (`32..39`): `working` - row 6 (`40..47`): `angry`, `surprised`, `shy`, alias `error` - row 7 (`48..55`): `dragging` One-shot defaults: - `celebrate` and `success`: one-shot - all others: loop ## Implementation Notes 1. Runtime state mapping updated: - `Dragging` now maps to `"dragging"` instead of `"idle"` in runtime-core and Bevy frontend. 2. All bundled sprite-pack manifests now expose row-based names and compatibility aliases. 3. Added runtime-core unit test to confirm `SetState::Dragging` selects `"dragging"`. 4. Updated schema/design docs to formalize the row convention. 5. Retuned bundled pack fps profile: - loops: `1` fps - one-shot `celebrate` and `success`: `2` fps 6. Tauri renderer-level pacing adjusted: - added global frame interval slowdown factor (`x2`) in Pixi ticker to further reduce perceived speed without changing manifest schema type (`fps` remains integer). 7. Added persisted tauri slowdown factor control: - config key: `frontend.tauri_animation_slowdown_factor` (integer, range `1..20`, default `3`) - new tauri commands/events to read/update factor at runtime - settings window slider added for live tuning and persistence. ## Verification ### Commands Run - [x] `cargo test -p sprimo-runtime-core` - [x] `cargo check -p sprimo-tauri` - [x] `cargo check -p sprimo-app` ### Result - Status: `Fix Implemented` - Notes: packaged runtime visual verification pending.