The motion effects were appearing with incorrect row offsets because
the text width calculation included ANSI color escape sequences in
the byte length, causing misaligned centering.
Changes:
- Added utils/ansi.rs module with strip_ansi() and visual_width()
- Updated renderer to use visual_width() for offset positioning
- Updated TerminalManager::print_centered() to use visual_width()
- All text positioning now correctly ignores ANSI escape sequences
This fixes the "shifted in the rows" issue where colored text was
not properly centered due to escape sequence byte counts.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Previously, the animation loop would exit before rendering the final
frame at progress=1.0. The loop checked is_complete() before rendering,
so the last visible frame was at (total_frames-1)/total_frames progress
(~96-97%).
Changed the loop to:
1. Render the current frame
2. Check if complete and break
3. Advance to next frame
This ensures the final frame at progress=1.0 is rendered before exiting,
completing the animation properly.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Windows figlet installation was unreliable in CI. Tests will
gracefully skip when figlet is not available.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Chocolatey installation was failing in CI. Winget is built into
Windows and provides a more reliable installation method.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update actions/upload-artifact from v3 to v4
- Update actions/dependency-review-action from v3 to v4
- Fix deprecated action warnings
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement complete animation system with 20+ motion effects
- Add 18+ easing functions (quad, cubic, elastic, back, bounce)
- Implement color system with palette and gradient support
- Add parser for durations, colors, and CSS gradients
- Create comprehensive test suite (14 tests passing)
- Add linting and formatting with clippy/rustfmt
- Support for figlet integration with custom fonts
- Terminal rendering with crossterm
- Fix all clippy warnings and lint issues
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>