SHOT · perform-redesign-v2 · final tour
Every persona × every tab on the new perform UI
Fifteen full-page captures taken against the perform-dev Supabase branch on
feat/perform-redesign-v2. Coach, athlete, and parent walking through HOME,
PERFORM, EVENTS, HISTORY, and CLUB — the five tabs of the new 5-tab nav.
branch · feat/perform-redesign-v2
head · bdb496c84
supabase · crmlprsypfztkqvueoez (perform-dev)
captured · 2026-05-25
TL;DR
Each persona gets a purpose-built PERFORM variant: coach D1 TRIAGE (feedback owed first),
athlete D2 STORY FEED (chronological narrative), parent D1 CHILD-FOCUSED (identity card
hero). The shared 5-tab nav (HOME / PERFORM / EVENTS / HISTORY / CLUB) replaces the old
3-tab + drawer pattern.
The grid below is taken from a single Playwright spec
(r-screenshots.spec.ts) against the perform-dev Supabase branch —
no fixture seeding, no mocks. Click any screenshot to zoom.
Each persona card carries a small test-meta table mapping the
visible surface to its persona-suite test codes
(C- coach · A- athlete · Pa- parent)
with the C14 sweep verdict:
✅passed
🟡documented skip
⚪ready, not run
❌failed
—n/a — escape hatch.
TAKE YOUR SHOT
#1ABC9C · Athlete
MAKE IMPACT
#F7B613 · Parent
Tab
HOME
The cross-club CLUBHOUSE feed — For You / Events / Pulse / Social tabs, Locker products, and the PERFORM mini-card surfacing next events + recent matches.
COACH
Coach view bypasses club-attached PERFORM mini-card (coach is unattached here, falls back to LOCKER + cross-club feed).
ATHLETE
Athlete sees PERFORM team-attached: "Perform Dev Sandbox Team · U16 · Football", NEXT UP cards for Small-Sided Games + Set Pieces, RECENT match results.
PARENT
Parent CLUBHOUSE feed (Pulse pre-selected), LOCKER strip, no PERFORM team-card until they attach to a child’s team.
Tab
PERFORM
The hero tab — each persona gets a purpose-built D-variant. D1 TRIAGE for coach, D2 STORY FEED for athlete, D1 CHILD-FOCUSED for parent.
COACH — D1 TRIAGE
FEEDBACK OWED RAG queue dominant, NEXT UP + IMPROVER side-by-side, ASSESSMENTS TO REVIEW, CROSS-CLUB ANNOUNCEMENTS, action row Announce / Start Session / Eval.
ATHLETE — D2 STORY FEED
"Hi, Player One — Your story this week." Chronological narrative cards: TOMORROW event, THIS MONTH streak +9, My Development row → IDP report.
PARENT — D1 CHILD-FOCUSED
VIEWING <Player> hero card with trend sparkline, RECENT EVALUATIONS list, "View Player’s development" deep-link. Identity-first, single-child focus.
Tab
EVENTS
3-mode toggle (WEEK / LIST / MONTH for coach, WEEK / MONTH for athlete + parent), search bar, FAB on coach view, PAST EVENTS accordion collapsed by default.
COACH
WEEK / LIST / MONTH toggle, search bar, UPCOMING events with Feedback (1/5) chip, teal FAB → create event, PAST EVENTS (28) accordion.
ATHLETE
WEEK / MONTH toggle (no LIST — coaches-only). Invited chips on each event, PAST EVENTS accordion preserves chronology without scroll-fatigue.
PARENT
Same WEEK / MONTH toggle as athlete — same surface scoped via parent→child link. No coach FAB, no LIST mode.
Tab
HISTORY
Team / Athlete toggle (coach), AthleteHistoryTimeline (athlete), parent reuses athlete surface. Premium gates wrap framework drilldowns until upgrade.
COACH
TEAM / ATHLETE toggle, MATCH RECORD section, FRAMEWORK GAPS (Personal · Technical · Psychological · Physical · Social — all on-track), ATHLETES list with eval counts. Hook-ordering crash fixed by 9eac1ecdd — useMemo hoisted above early returns.
ATHLETE
Premium gate: "TEAM TRENDS — Team framework trends — Premium" with Upgrade pill. Once premium, AthleteHistoryTimeline replaces the gate — chronological eval cards.
PARENT
Identical premium gate to athlete — parent inherits child’s history surface. Single source of truth: <AthleteHistoryTimeline>.
COACH
Team header, Make Announcement CTA, ROSTER (5), Team Development Report, ADMIN section: Team Settings, Athlete Intensity, Manage Clubs. “Athletes and parents do not see this section” guarantee in footer.
ATHLETE
Safe roster only — read-only via get_team_roster_public RPC. No Admin section, no PII embed, no FK-blowback.
PARENT
Same safe roster surface as athlete — scoped to their child’s team. Identical RLS-safe path.
COACH
WEEK
✅
matches design
Default mode. Flat scrolling list of upcoming events with type label, lightning emoji, team name, datetime. Past Events accordion collapsed at bottom.
LIST
❌
design gap
Mode toggle flips the pill, but layout is identical to Week — should be a dense list with 3px coloured left bar + KPI strip (This week / Matches / Fb owed). Toggle is cosmetic only — top open gap vs design spec.
MONTH
✅
matches design
Month grid renders correctly with weekday header + day cells with dot indicators per event-type. UPCOMING list shows below grid.
ATHLETE
WEEK
✅
matches design
Scrolling cards with Training/Match type labels and Confirmed/Invited RSVP badges. Past Events accordion at bottom (28 events). Missing: design's purple RSVP summary card at top ('3 events · all IN · 95%').
MONTH
✅
matches design
Month grid renders. Missing: design's legend card under the grid + 'Upcoming · 3 events' preview section.
PARENT
WEEK
🟡
partial fidelity
PLAYER role chip visible top-right. Single event card. Missing: child avatar card ('Maya · U14 Storm · 3 events · all confirmed IN') + red EVAL DUE TODAY reminder at bottom.
MONTH
🟡
partial fidelity
Month grid renders with dot indicators. Missing: design's child-focused summary card.
Top gap: Coach LIST and WEEK render identically — mode toggle is cosmetic.
Need: dense list rows with 3px coloured left bar + KPI strip (This week / Matches / Fb owed).
Same for athlete RSVP summary card + parent eval-owed reminder card.
See .agents/scratch/events-comparison/ for raw PNGs.
| Sweep stage |
Green |
What landed |
| C14.0 |
15 |
baseline — 5-tab nav + brand tokens land |
| C14.1 |
24 |
Spotlight D1/D2 + Coach PERFORM TRIAGE |
| C14.2 |
27 |
Events 3-mode toggle + Past accordion |
| C14.3 |
29 |
CLUB merge + privilege stamp + fixture hardening |
-
bdb496c84
test(perform-v2): persona suite C14 sweep — privilege stamp + fixture hardening
-
d6365da90
feat(perform-v2): CLUB tab — coach roster+admin merged, athlete+parent safe roster
-
1c470c843
feat(perform-v2): Events 3-mode toggle + past accordion + coach FAB
-
421f3231b
feat(perform-v2): coach PERFORM D1 TRIAGE — feedback RAG queue dominant
-
8dba6178c
feat(perform-v2): parent PERFORM D1 CHILD-FOCUSED — identity card hero
-
10d2d96dc
feat(perform-v2): Coach History Team/Athlete toggle + sticky chip picker
-
844c34513
feat(perform-v2): athlete PERFORM D2 STORY FEED — chronological narrative
-
2e891437c
feat(perform-v2): universal QuickViewSheet + 10 modal kinds
-
541e64355
test(perform-v2): multi-club Playwright fixture for 2-club coach validation
-
2b50662b5
feat(rls): get_team_roster_public RPC for athlete+parent safe roster
-
27d2642f0
feat(perform-v2): 5-tab nav (HOME/PERFORM/EVENTS/HISTORY/CLUB) + tab alias
-
13ad269b2
feat(theme): brand pillar palette tokens for perform-redesign v2