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.

Palette legend

Three brand pillars colour the persona surfaces

Coach = OWN IT (purple). Athlete = TAKE YOUR SHOT (teal). Parent = MAKE IMPACT (gold). The accent ring on each persona card maps to its pillar so the eye can scan a tab section and immediately read the persona shape.

OWN IT
#6B00DB · Coach
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 on HOME tab

Coach view bypasses club-attached PERFORM mini-card (coach is unattached here, falls back to LOCKER + cross-club feed).

(escape hatch) n/a — escape hatch HOME is the existing cross-club feed, not a perform-redesign surface — no persona spec runs here.
ATHLETE
ATHLETE on HOME tab

Athlete sees PERFORM team-attached: "Perform Dev Sandbox Team · U16 · Football", NEXT UP cards for Small-Sided Games + Set Pieces, RECENT match results.

(escape hatch) n/a — escape hatch HOME is shared CLUBHOUSE — outside the persona suite scope.
PARENT
PARENT on HOME tab

Parent CLUBHOUSE feed (Pulse pre-selected), LOCKER strip, no PERFORM team-card until they attach to a child’s team.

(escape hatch) n/a — escape hatch HOME is shared CLUBHOUSE — outside the persona suite scope.
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
COACH — D1 TRIAGE on PERFORM tab

FEEDBACK OWED RAG queue dominant, NEXT UP + IMPROVER side-by-side, ASSESSMENTS TO REVIEW, CROSS-CLUB ANNOUNCEMENTS, action row Announce / Start Session / Eval.

C-27 🟡 documented skip RAG queue populated path — documented skip, perform-dev seed gap (no overdue feedback rows).
C-28 passed NEXT EVENT card renders against perform-dev fixtures.
C-37 🟡 documented skip RAG row empty-state assertion — same seed gap as C-27.
ATHLETE — D2 STORY FEED
ATHLETE — D2 STORY FEED on PERFORM tab

"Hi, Player One — Your story this week." Chronological narrative cards: TOMORROW event, THIS MONTH streak +9, My Development row → IDP report.

A-6 passed Story feed boots, hero card visible.
A-7 passed Soft-assert: chronological card ordering.
A-8 passed Soft-assert: streak block renders.
A-9 passed Soft-assert: My Development row links to IDP.
A-16 passed First-item-on-screen invariant.
PARENT — D1 CHILD-FOCUSED
PARENT — D1 CHILD-FOCUSED on PERFORM tab

VIEWING <Player> hero card with trend sparkline, RECENT EVALUATIONS list, "View Player’s development" deep-link. Identity-first, single-child focus.

Pa-1 passed Identity-first hero card boots for parent1 → child.
Pa-3 passed Soft-assert: trend sparkline renders (tolerance for empty seed).
Pa-4 passed Soft-assert: recent evaluations list.
Pa-5 passed Soft-assert: deep-link CTA present.
Pa-8 passed ChildIdentityCard visible.
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
COACH on EVENTS tab

WEEK / LIST / MONTH toggle, search bar, UPCOMING events with Feedback (1/5) chip, teal FAB → create event, PAST EVENTS (28) accordion.

C-18 passed Search bar input + filter.
C-19 passed 3-mode toggle (WEEK / LIST / MONTH).
C-38 🟡 documented skip FAB → create-event flow — fixture-flake (modal driver intermittent).
ATHLETE
ATHLETE on EVENTS tab

WEEK / MONTH toggle (no LIST — coaches-only). Invited chips on each event, PAST EVENTS accordion preserves chronology without scroll-fatigue.

A-18 ready, not run 2-mode toggle (WEEK / MONTH, no LIST) — spec ready, not run in C14.
A-19 ready, not run PAST EVENTS accordion expand/collapse — spec ready, not run in C14.
PARENT
PARENT on EVENTS tab

Same WEEK / MONTH toggle as athlete — same surface scoped via parent→child link. No coach FAB, no LIST mode.

Pa-10 ready, not run 2-mode toggle (WEEK / MONTH) — spec ready, not run in C14.
Pa-11 ready, not run PAST EVENTS accordion — spec ready, not run in C14.
Tab

HISTORY

Team / Athlete toggle (coach), AthleteHistoryTimeline (athlete), parent reuses athlete surface. Premium gates wrap framework drilldowns until upgrade.

COACH
COACH on HISTORY tab

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.

C-32 passed Team/Athlete toggle + chip picker — re-run post hook-fix (9eac1ecdd) + selector scope (d5dcfa22f) GREEN on perform-dev, 39.7s. 30th green for persona suite — satisfies goal criterion 2.
ATHLETE
ATHLETE on HISTORY tab

Premium gate: "TEAM TRENDS — Team framework trends — Premium" with Upgrade pill. Once premium, AthleteHistoryTimeline replaces the gate — chronological eval cards.

A-10 passed Timeline boots, eval cards rendered.
A-11 🟡 documented skip Soft-assert: framework drilldown — premium-gated, documented skip.
A-15 passed Premium gate visible for non-premium athlete.
A-17 🟡 documented skip Generate-report CTA — soft-assert, documented skip.
PARENT
PARENT on HISTORY tab

Identical premium gate to athlete — parent inherits child’s history surface. Single source of truth: <AthleteHistoryTimeline>.

Pa-9 ready, not run Parent-trend sparklines — spec ready, not run in C14.
Tab

CLUB

D10 redesign: coach gets merged roster + Admin inline; athlete + parent get a safe roster via get_team_roster_public RPC — no PII embed-blowback.

COACH
COACH on CLUB tab

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.

C-41 ready, not run Roster + Admin merged surface — listed in C14 plan, not run (fixture timeout).
ATHLETE
ATHLETE on CLUB tab

Safe roster only — read-only via get_team_roster_public RPC. No Admin section, no PII embed, no FK-blowback.

A-20 ready, not run Safe-roster-only assertion — spec ready, not run in C14.
PARENT
PARENT on CLUB tab

Same safe roster surface as athlete — scoped to their child’s team. Identical RLS-safe path.

Pa-12 ready, not run Child team safe-roster — spec ready, not run in C14.
EVENTS — deep dive

Every persona × every mode — design-fidelity audit

The C11 Wave-5 commit (1c470c843) shipped the mode toggle + Month calendar grid but did NOT lift the per-mode layouts from the Claude Design source (/tmp/shot-perform-hub-extracted/other_tabs__35348848.js). 7 captures below — gaps annotated.

COACH

WEEK matches design
COACH WEEK

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
COACH LIST

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
COACH MONTH

Month grid renders correctly with weekday header + day cells with dot indicators per event-type. UPCOMING list shows below grid.

ATHLETE

WEEK matches design
ATHLETE WEEK

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
ATHLETE MONTH

Month grid renders. Missing: design's legend card under the grid + 'Upcoming · 3 events' preview section.

PARENT

WEEK 🟡 partial fidelity
PARENT WEEK

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
PARENT MONTH

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.
Trajectory

Persona suite: 15 → 24 → 27 → 29 green

C14 sweep replayed the red-route-b persona suite after each feature wave landed. The green count grew monotonically as each surface stabilised — baseline 15, climbing to 29 at the sweep close.

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
Commits

12 epic commits, atomic, per-concern

Each surface landed as its own commit. None squashed. PR #2676 carries the full diff for review.