Skip to content

feat(ui): sticker tile hover and playing feedback#177

Merged
thewrz merged 2 commits into
mainfrom
feat/issue-92-hover-animations
Jun 25, 2026
Merged

feat(ui): sticker tile hover and playing feedback#177
thewrz merged 2 commits into
mainfrom
feat/issue-92-hover-animations

Conversation

@thewrz

@thewrz thewrz commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add canvas-local hover animation state for sticker tiles with 150 ms cubic ease-out interpolation.
  • Amplify sticker/tile rotation from the existing idle +/-3 degree range to +/-8 degrees at full hover.
  • Draw hover ink rings, playing Tone-derived accent rings, and playing glow/drop-shadow effects around the sticker disc.
  • Split sticker animation/effect helpers into src/ui/sound_tile/ submodules to keep files under the repo's 400-line cap.

Closes #92

Design decisions

  • Kept animation state inside the canvas::Program instead of adding app-level hover state or new Message variants. Canvas can retarget hover progress from cursor events and request redraws directly, which keeps the change scoped to tile rendering.
  • Used cubic ease-out over 150 ms for hover entry/exit to match the acceptance timing while keeping idle progress at 0.0, so idle tile rendering follows the same paint path as PR1.
  • Used Tone highlight for the playing sticker ring and glow so the playing feedback derives from the tile palette without changing Tone definitions.
  • Added sound_tile/animation.rs and sound_tile/effects.rs only to respect HonkHonk's 400-line file limit; no new dependencies were added.

Verification

  • cargo test after rebasing onto origin/main: 547 lib tests, 5 main tests, 19 decoder tests, 0 pipewire integration tests, 0 stream watcher integration tests, doc-tests all passed.
  • cargo clippy --all-targets --all-features -- -D warnings passed.

@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@thewrz, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 40 minutes and 44 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more credits in the billing tab to continue.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5fc0758a-8bd9-45fb-9a1a-2cd732a5278c

📥 Commits

Reviewing files that changed from the base of the PR and between ea285f6 and 77be6e2.

📒 Files selected for processing (3)
  • src/ui/sound_tile.rs
  • src/ui/sound_tile/animation.rs
  • src/ui/sound_tile/effects.rs
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/issue-92-hover-animations

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@thewrz

thewrz commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator Author

Claude normal adversarial review was used as the backup review path while CodeRabbit was unavailable/rate-limited.

Actionable findings addressed:

  • Referenced the canvas Action type through the canvas module.
  • Gated the retarget helper as test-only.
  • Added redraw-loop/settling unit coverage.
  • Replaced brittle exact float assertions with tolerance checks.

Verification:

  • Local: cargo fmt, cargo test, cargo clippy --all-targets --all-features -- -D warnings.
  • GitHub: release build, lint/fmt, unit tests, deny, LOC check all passing.

No remaining blocking findings from Claude. Residual note: I did not perform a live GUI hover/CPU-idle manual check in this environment. Formal approval could not be submitted from this account because GitHub rejects self-approval.

@thewrz thewrz merged commit 7affe3e into main Jun 25, 2026
7 checks passed
@thewrz thewrz deleted the feat/issue-92-hover-animations branch June 25, 2026 04:56
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.

feat(ui): sticker tile hover + playing animations (PR2 of #13)

1 participant