Repository navigation
Animated logo and 1v1 card in Rive, wired into the phone app - #7
Open
EmotiveImpact wants to merge 21 commits into
Open
EmotiveImpact wants to merge 21 commits into
EmotiveImpact wants to merge 21 commits into
Conversation
The open O draws in and the blue out now dot lands in the gap, then the glow breathes on a loop. Authored as RML from build.py with the Rive CLI; the built file is in rive/logo/export. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
The Rive file now has four artboards. Splash lands the O, then slides UTHERE out from behind it (Barlow Condensed Bold subset embedded). Small drops the ping and glow for tiny sizes. Loader runs the stroke round the O while the dot pulses, with the gap held still. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
One file drives every battle through the Versus view model: names, areas, stakes, two photos, win, lose and replay, plus an addPack event from the Add your Fighter Pack pill. Photos sit in layout boxes that cover their side at any size and fade at the edges, so a Fighter Pack shot, a profile photo or a gendered silhouette all fit. The male silhouettes ship as defaults; the app swaps in the female ones. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Owner
Author
|
The red Generated by Claude Code |
Each photo box now fills most of its side. Yours fades out towards the bottom and theirs towards the top, with the fade colours worked out from each side's wash so they melt in with no edge. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
The no-photo fallback is now the grey runner from the Fighter Pack plan, male or female, lightly tinted to each side. tools/shade.py makes the four files from the shared sources; it replaces the drawn outlines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
Edem found the top of the red side faded too much. Their fade now clears in the top fifth of the photo instead of the top half, and the red shadow runners no longer need black padded above the head. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
EmotiveImpact
changed the base branch from
main
to
claude/website-build-dhxeck
October 16, 2026 09:14
…eir runner Edem felt OUTHERE read as one size, so HERE is now set at 78% of OUT. The red side's top fade is back to a light softening of the photo edge. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
Edem wanted the result to feel like a dopamine hit and to use each pack's celebration or defeat shot. On win or lose, VS winds up and bursts, the screen flashes, WINNER slams in in the VS style over shock rings and sparks, the winner's name kicks and +prize OUT pops under it, and LOSER drops in grey on the other side. Each side swaps to a new youResult / themResult image under the flash; a pack without the shot keeps its photo. The winner's glow then breathes in its own loop. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
The female runner was remade to match the male in pose, blur and street, so both now share one shading setting. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
Edem asked for a Street Fighter style K.O. and something extra on the win. With the new ko boolean set (the app's line: the winner has at least double the loser's steps), K.O. slams into the middle with a red flash, a crack and a screen shake, then flies to the loser's corner in place of LOSER before WINNER lands. Every win now ends with confetti popping out of WINNER and raining down the winner's side. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
EmotiveImpact
changed the base branch from
claude/website-build-dhxeck
to
main
October 16, 2026 10:41
Every result now opens with the viewer's own outcome before WINNER and LOSER land. A win gets YOU WIN! over two sets of light rays, rings, sparks and a bloom, with confetti from two corner cannons and a burst from the headline. A loss gets YOU LOSE in heavy grey letters that drop one at a time while the screen dims, and no confetti. The confetti runs on its own state machine layer: about a hundred strips, chips, dots and curls in white, ice blue, cyan, violet and silver foil, each turning so its darker back shows and the foil flashes, with near pieces bigger and faster. A knockout now cracks the loser's side like glass: uneven rays and kinked rings, lit facets, holes, falling shards and a glint, clipped to that side. The VS cuts out as the K. lands. The file sends cue events for the app's sounds and haptics: impact, knockout, shatter, youWin, confetti, youLose, thud, winner, loser and prize. The display font subset gains Y and !. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
Speed lines race along the seam while the two halves scissor in from opposite ends, the seam flares and throws sparks, the screen flashes and VS slams. Strike In replaces Slam In as the entry and replay state, adds strike and slam cue events, and holds the pack pill until the card is up. Each side's wash now reaches past its outer edge so the scissor never opens a gap. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
The card now carries four intros, picked with the intro enum: strike (Seam Strike, the default), tape (Tale of the Tape, which stays on screen until a result), cinematic (film-bar cut-ins on each runner) and letsRun (streaming names behind two runner panels). The tape rows, numbers and bars are bound view model properties. The font is now a Latin subset of Barlow Condensed ExtraBold Italic so names render in every intro. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
…film bars The glows behind the tape bars and the cinematic name lines were rectangles that stopped in a hard edge at each end; they now fade out past both ends. The leading number on each tape row turns its side's colour instead of sitting over a fixed glow that slid off short numbers. The cinematic shots play full screen, matching the card they cut to. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
Edem picked the digit glow for the leading number on each tape row: the number is drawn again behind itself as soft stacked strokes in its side's colour, so the glow sits evenly on a 9 or a 24.6k. The other side's number stays white at half strength. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
The countdown before a 1v1 now plays the VS card, with the intro picked from the battle: Seam Strike for an everyday battle, Tale of the Tape for a rematch, anyone met before or a stake of 100+, the cinematic for a grudge match, derby or top of a leaderboard, and Let's Run for event battles. Once the card has played and the battle is live it opens the battle; while waiting for the other runner it offers a way back. The first time a finished 1v1 from the last week is opened, the result lands on the card (YOU WIN! or YOU LOSE, K.O. when the winner had at least double, then WINNER and LOSER on the result shots) before the result screen. The house logo plays the Rive mark where it can. Rive needs a development build, so Expo Go keeps the old screens. The web build plays the same files with @rive-app/canvas. Adds expo-dev-client and links the Expo project for EAS cloud builds. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
EmotiveImpact
marked this pull request as ready for review
October 16, 2026 22:38
Takes main's package.json and lockfile, then adds the Rive player at 0.5.5, react-native-nitro-modules 0.36.5 and @rive-app/canvas, and the SDK 58 expo-dev-client (~58.0.14). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab
This branch was successfully deployed
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.
Before: the logo and the 1v1 versus screen existed only as static designs and prototype CSS. The countdown before a battle was a split screen, and a finished battle went straight to the result screen.
After: both are Rive files, and the phone app plays them.
rive/logo, 11 KB, four artboards): the full logo (the O draws in and the blue dot lands with a ping and glow), the opening screen, a small version without the glow, and a loader. The app's house logo plays it wherever it animated before, with a light tap in the hand as the dot lands.rive/versus, 704 KB): four intros, picked per battle inversusData.pickIntro:Rive needs a development build, so Expo Go keeps the old screens (detected through
Constants.executionEnvironment). The web build plays the same files through@rive-app/canvas.How: each Rive project is generated from
build.pyinto RML and built with the Rive CLI; the built files are in eachexport/folder and copied toapps/mobile/assets/rive. In the app,src/components/riveholds the players (VersusCard,RiveLogo, each with a.web.jsxtwin), the runtime check, andversusData.js, which turns a battle into the card's view model values (names, places, rule, stake, prize, clock, tape rows, photos with the Fighter Pack, profile photo, then shadow runner fallback) and the result. The card's cue events drive haptics and the Add your Fighter Pack pill opens the pack screen. Adds@rive-app/react-native0.5.5 withreact-native-nitro-modules0.36.5,@rive-app/canvas2.43.1 andexpo-dev-client~58.0.14 (main is now on Expo SDK 58), teaches Metro the.rivextension, shipsrive.wasminpublic/, and links the Expo project id for EAS cloud builds. 14 new tests cover the intro rules, the tape numbers, the bound values and the result. Checked on SDK 58: typecheck, tests, web, Android and iOS bundles, and headless playback of the tape, cinematic, win and loss.🤖 Generated with Claude Code
https://claude.ai/code/session_01KgT8xbybc86Rc11ZV48mab