feat: roulette spinner auto-select on the results page - #12
Merged
Conversation
Adds a 'Spin for me' option over the 3-5 result cards: the highlight travels across the picks with a decelerating 2-4s step sequence (spin-plan.ts), lands on a random book, and offers accept/respin. Accepting reuses the existing selection tracking and confirmation screen. Falls back to an instant reveal under prefers-reduced-motion, and puts the previously unused book-spin pulse to work on the highlighted card. Completes TODO task 12. https://claude.ai/code/session_01T3Bf7bT36EKqybyL4X2uKQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements TODO task 12 (roulette / spinner selection) as an optional "Can't decide? Spin for me 🎲" control on the results page, rather than a separate spinner screen. Manual selection remains the primary path.
spin-plan.ts, ease-in cubic delays), landing on a random pick in ~2–3s — inside the brand kit's 2–4s spinner window — and pulses the active card with the previously unusedbook-spinkeyframe.aria-livepanel announces the chosen book with This is the one! (reuses the existing selection tracking + confirmation flow) and Spin again.prefers-reduced-motionskips the animation entirely and reveals the result instantly.TODO.mdtask 12 moved to Done; the spec's as-built section updated accordingly.Screenshots
Reduced motion — instant reveal (7ms, no roulette animation)
Test plan
spin-plan.spec.ts): lands on target, advances one card at a time, delays never decrease, total duration stays within 2–4s for 2–5 picks — all 21 frontend tests passhttps://claude.ai/code/session_01T3Bf7bT36EKqybyL4X2uKQ