Repository navigation
Fighter Pack: AI pictures of members across the game - #8
Merged
EmotiveImpact merged 9 commits intoOct 16, 2026
Merged
Conversation
Constants for the pack (slots, pose sets, credit rules, runner choice and scan steps), the fighterPhoto helper that picks pack picture, own photo or a runner silhouette, and the bundled silhouettes and sample pictures. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oE2zAkm15foN26zFA3prv
The versus split now matches the approved mock: light edge tints, a red glow on the rival's side, a seam that fades with the photos, a centred VS with its bloom, and names with blue and red bars (VersusName). Every place that fell back to the stock fighter now uses fighterPhoto: pack picture, then own photo, then a silhouette from the runner choice. The live battle and the profile show a Make your pack pill until a pack exists; results show the win or respect pose. Your runner (Man, Woman, Rather not say) is asked in onboarding and in Settings, Your profile. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oE2zAkm15foN26zFA3prv
…ew, poses Built to the approved mock as a bank style ID check: a four step bar, consent with one tick, three simple rules, then a live front camera scan that captures looking ahead, left and right on its own while the ring fills. Verified shows before any credits are spent. The pictures land one by one, the review puts each in its place with a re-roll, and the poses screen shows Black's locked poses. Free members see what the pack is and how to get it; under 18s stop at the door. Settings gets a Fighter Pack row. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oE2zAkm15foN26zFA3prv
Runner choice on profiles, the avatar_credits ledger with join grants on the ring moving up and a monthly top-up (pg_cron), consent and scan records, packs and pictures with refunds for failures, pose picks with the Pro and Black rules, and fighter_of / profiles.fighter / profile_cards.fighter / fighter_cards so player reads get the pictures. RPCs: pack_state, pack_credits, record_pack_consent, start_pack, reroll_pack_slot, set_pack_pose, delete_pack. Types regenerated. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oE2zAkm15foN26zFA3prv
… cleanup Actions selfie-url, verify, generate, webhook, delete and cleanup. Selfies go to the private bucket and are removed within 24 hours; pictures land in the public bucket. The fal webhook is checked by ED25519 signature and an optional token. R2 gains head and put. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oE2zAkm15foN26zFA3prv
makePack runs credits, consent, the scan, making, re-rolls and pose picks on the phone; makeRemotePack does the same over the RPCs and avatar-pack. setRunner, and runner, runnerFigure and fighter on the profile and every player view. usePackState and usePackCredits hooks, and a pack upload helper. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oE2zAkm15foN26zFA3prv
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oE2zAkm15foN26zFA3prv
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
The scan now takes each shot on a timer, so reduced motion still holds every angle. The local pack uses the portrait sample for the profile and swipe pictures, the profile slab frames a pack background lower down, the pack door shows an error with a retry instead of loading forever, and the runner segment fits. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oE2zAkm15foN26zFA3prv
EmotiveImpact
marked this pull request as ready for review
October 16, 2026 10:36
EmotiveImpact
merged commit Oct 16, 2026
746124f
into
claude/mobile-app-build-nhob8r
7 checks passed
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: a member without a photo showed up as the shared stock fighter, so two of them in a 1v1 looked like the same person. There was no way to make your own pictures, and the versus headers used heavy blue and red tints.
After: Pro and Black members can make a Fighter Pack from a live face scan. Their pictures appear on their side of every 1v1, in the countdown, on swipe cards, in results (win pose or respect pose) and on their profile. Anyone without a pack or a photo shows a grey runner silhouette matching their runner choice (Man, Woman or Rather not say), which is asked in onboarding and in Settings. The versus header matches the approved mock: light tints, a red glow on the rival's side, a seam that fades with the photos, the centred VS, and names with blue and red bars.
Mock: https://claude.ai/artifact/V4xNmSEqR7ESv6N6k1Qmdr
How
utils/fighter.js.VersusSplitand its Skia parts are restyled, andVersusNameis added.fighterPhoto.app/pack/holds consent, get ready, a live front camera scan, verified, making, review and poses.data/pack.js, and Supabase hasremotePack.js, both with the same API.usePackStateandusePackCredits.runner,runnerFigureandfighterare on every player view.20261016100000_fighter_pack.sqladds the runner columns, a credits ledger with join grants and a monthly top-up, consents, verifications, packs, images, pose picks, RLS and RPCs, plus pgTAP tests.avatar-pack. It handles selfie upload URLs, scan checks, generation through fal (nano-banana/edit) with a signed webhook, delete, and a cleanup that removes selfies after 24 hours.Defaults picked:
To go live, this needs:
FAL_KEY,R2_AVATAR_BUCKET,R2_PACK_BUCKETandAVATAR_WEBHOOK_SECRET;EXPO_PUBLIC_AVATAR_URLset in the app.Not done yet:
Checks: jest passes (133 tests), tsc is clean, and both web exports (local data and Supabase mode) build. The live battle header was checked against the mock at 390x844.
🤖 Generated with Claude Code
https://claude.ai/code/session_015oE2zAkm15foN26zFA3prv
Generated by Claude Code