Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
278 commits
Select commit Hold shift + click to select a range
7115aed
Merge remote-tracking branch 'origin/fix/baseball-459-activate-exposu…
njrini99-code Jul 1, 2026
5ed719f
Merge remote-tracking branch 'origin/fix/baseball-490-lineup-swap' in…
njrini99-code Jul 1, 2026
a7057a9
Merge remote-tracking branch 'origin/fix/baseball-500-scout-packet-vi…
njrini99-code Jul 1, 2026
51f9991
Merge remote-tracking branch 'origin/fix/baseball-477-postgame-dispos…
njrini99-code Jul 1, 2026
2c0b20c
Merge remote-tracking branch 'origin/fix/baseball-467-dead-demo-link'…
njrini99-code Jul 1, 2026
318b656
Merge remote-tracking branch 'origin/fix/baseball-511-coach-note-scop…
njrini99-code Jul 1, 2026
892e087
Merge remote-tracking branch 'origin/fix/baseball-436-auto' into batc…
njrini99-code Jul 1, 2026
f330316
Merge remote-tracking branch 'origin/fix/baseball-444-auto' into batc…
njrini99-code Jul 1, 2026
0b01ee5
Merge remote-tracking branch 'origin/fix/baseball-445-auto' into batc…
njrini99-code Jul 1, 2026
35ef654
Merge remote-tracking branch 'origin/fix/baseball-474-auto' into batc…
njrini99-code Jul 1, 2026
2e53f2b
Merge remote-tracking branch 'origin/fix/baseball-478-auto' into batc…
njrini99-code Jul 1, 2026
5258b24
Merge remote-tracking branch 'origin/fix/baseball-491-auto' into batc…
njrini99-code Jul 1, 2026
c555544
Merge remote-tracking branch 'origin/fix/baseball-498-auto' into batc…
njrini99-code Jul 1, 2026
828b357
Merge remote-tracking branch 'origin/fix/baseball-509-auto' into batc…
njrini99-code Jul 1, 2026
7352c75
Merge remote-tracking branch 'origin/fix/baseball-434-auto' into batc…
njrini99-code Jul 1, 2026
80258cf
fix(baseball): per-row ERA/WHIP divide by true innings in PlayerGameL…
njrini99-code Jul 1, 2026
48d739c
fix(baseball): type the calendar events map row (fromUntyped implicit…
njrini99-code Jul 1, 2026
84418b9
fix(baseball): practice coach embeds select full_name (not first/last)
njrini99-code Jul 1, 2026
e10baba
fix(baseball): eliminate duplicate top-bar chrome across dashboard shell
njrini99-code Jul 1, 2026
627d164
fix(baseball): repair nav dead-ends (player Roster, coach Profile, re…
njrini99-code Jul 1, 2026
73db16b
fix(baseball): resolve head-coach recruiting/scout/camp redirects to …
njrini99-code Jul 1, 2026
fcc98b7
fix(baseball): reconcile Player Today lifts, fix coach-notes read, un…
njrini99-code Jul 1, 2026
dc077de
fix(baseball): repair Stats Center saved-views crash + elevate empty …
njrini99-code Jul 1, 2026
826bebc
fix(baseball): render calendar events + de-ambiguate calendar toolbar
njrini99-code Jul 1, 2026
4923bd6
fix(baseball): resolve misc-visual QA cluster (stats W-L, videos copy…
njrini99-code Jul 1, 2026
3a42b03
Merge remote-tracking branch 'origin/fix/qa-stats-charts' into batch/…
njrini99-code Jul 1, 2026
90c1f04
Merge remote-tracking branch 'origin/fix/qa-shell-chrome-dup' into ba…
njrini99-code Jul 1, 2026
78b0f1f
Merge remote-tracking branch 'origin/fix/qa-calendar' into batch/base…
njrini99-code Jul 1, 2026
15ffb84
Merge remote-tracking branch 'origin/fix/qa-capability-redirects' int…
njrini99-code Jul 1, 2026
99f45b3
Merge remote-tracking branch 'origin/fix/qa-player-today' into batch/…
njrini99-code Jul 1, 2026
1ee1c34
Merge remote-tracking branch 'origin/fix/qa-nav-deadends' into batch/…
njrini99-code Jul 1, 2026
c9ce8e5
Merge remote-tracking branch 'origin/fix/qa-misc-visual' into batch/b…
njrini99-code Jul 1, 2026
4dbcc30
fix(calendar): move JSX comment out of conditional expression in page…
njrini99-code Jul 1, 2026
7c5d88c
chore(seed): add env-gated box-score + season-stats seeder for demo team
njrini99-code Jul 1, 2026
7df4eaf
docs(baseball): add 'The Living Annual' design system — north star fo…
njrini99-code Jul 1, 2026
7a86ad3
feat(baseball): Living-Annual design-system foundation kit + tokens +…
njrini99-code Jul 1, 2026
74d1ba8
feat(baseball): complete Living-Annual atom set (17) + wire Space Gro…
njrini99-code Jul 1, 2026
457f564
feat(baseball): harmonize kit to Space Grotesk + deeper cream (founde…
njrini99-code Jul 1, 2026
987cce5
feat(baseball): Living-Annual molecule layer (data + viz) + rate form…
njrini99-code Jul 1, 2026
e7c341a
feat(baseball): migrate Command Center + Stats Center to the Living-A…
njrini99-code Jul 1, 2026
f7ef4dc
docs(baseball): long-tail surface migration execution plan (per-surfa…
njrini99-code Jul 1, 2026
7812a58
fix(baseball): close self-terminating CSS comment in globals.css (P0 …
njrini99-code Jul 1, 2026
2fff8f6
fix(baseball): use active coach id for travel itinerary created_by
njrini99-code Jul 1, 2026
8423a6f
fix(baseball): stop permanent blank page for activated players on col…
njrini99-code Jul 1, 2026
e3efc89
fix(baseball): stop hard-404 on public team profile
njrini99-code Jul 1, 2026
fda310a
fix(baseball): repair Discover peek panel + message routing
njrini99-code Jul 1, 2026
be249e2
fix(baseball): un-hide delete-game button on games list
njrini99-code Jul 1, 2026
79b0d14
fix(baseball): add logos storage bucket + RLS for program logo upload
njrini99-code Jul 1, 2026
7015c84
fix(baseball): persist distinct verdicts on practice-effectiveness re…
njrini99-code Jul 1, 2026
7972450
fix(baseball): source colleges state filter from college states, surf…
njrini99-code Jul 1, 2026
aad7f93
fix(baseball): wire Send Message and Add to Watchlist CTAs on player …
njrini99-code Jul 1, 2026
d871880
fix(baseball): wire stats-upload wizard column-map + player-match edi…
njrini99-code Jul 1, 2026
d590ad6
fix(baseball): wire liftingOrgId/liftingAthleteId into canonical play…
njrini99-code Jul 1, 2026
275c57b
fix(baseball): enforce clip bounds at playback and move clip create s…
njrini99-code Jul 1, 2026
06e925f
fix(baseball): camps write status=published, use audited action layer
njrini99-code Jul 1, 2026
4f98e63
fix(baseball): mount BaseballProgramBrand consumer + wire brand-accen…
njrini99-code Jul 1, 2026
99de969
fix(baseball): validate + own-check player journey status, drop dead …
njrini99-code Jul 1, 2026
0640faa
fix(baseball): atomic CSV box-score save + remove dead PDF tab
njrini99-code Jul 2, 2026
9bc6cce
fix(baseball): wire complete/uncomplete controls into dev plan detail
njrini99-code Jul 2, 2026
cc495ee
fix(baseball): reconcile Lift Lab session/set writes to the reader's …
njrini99-code Jul 2, 2026
a82cafb
fix(baseball): stable goal ids so coach-created dev-plan goals can be…
njrini99-code Jul 2, 2026
944c5e9
feat(baseball): add team edit/delete/leave + invite revoke, harden in…
njrini99-code Jul 2, 2026
8cb8897
fix(baseball): wire team-documents edit/version-history/move-to-folde…
njrini99-code Jul 2, 2026
fd53e23
fix(baseball): reconcile readiness reads to helm_lifting_readiness_ch…
njrini99-code Jul 2, 2026
ab64f33
fix(baseball): never leave delete-game button invisible-but-clickable
Jul 2, 2026
d12e3df
fix(baseball): scope logos bucket INSERT/UPDATE/DELETE to coaches only
Jul 2, 2026
a17d3f7
fix(baseball): correct baseball_coaches columns in team profile staff…
Jul 2, 2026
c169d05
fix(baseball): strip ?player= before pushState to close history trap
Jul 2, 2026
100975e
fix(baseball): gate player-profile coach CTAs on real coach role, not…
Jul 2, 2026
b845e0d
fix(baseball): make 'use server' messages barrel export async wrapper…
Jul 2, 2026
9c39499
fix(baseball): reject off-roster coachMatch playerIds + honest failed…
Jul 2, 2026
50e4c03
fix: remove unsafe (supabase as any) casts and add missing auth check…
Jul 2, 2026
6c22ba9
fix(baseball): stop Edit Details/Move to Folder from clobbering signe…
Jul 2, 2026
73cee76
fix(baseball): wire brand-accent CSS into the legacy shell, not just …
Jul 2, 2026
f1391ec
fix(baseball): persist backfilled goal ids, demo-gate coach read, add…
Jul 2, 2026
0da63d2
fix(baseball): harden delete-team history guard, fix leave-team RLS gap
Jul 2, 2026
71bc996
fix(baseball): bound clip playback on the two surfaces PR #665 missed
Jul 2, 2026
cabc0f9
integrate fix/baseball-p0-globals-css
Jul 2, 2026
3f24a81
integrate fix/baseball-p0-use-server-messages
Jul 2, 2026
3d2fc72
integrate fix/baseball-p1-travel-fk
Jul 2, 2026
fbccfd6
integrate fix/baseball-p1-college-interest
Jul 2, 2026
a296a37
integrate fix/baseball-p1-public-team-profile
Jul 2, 2026
7e689fa
integrate fix/baseball-p1-discover-peek
Jul 2, 2026
6cdc375
integrate fix/baseball-p1-video-clip
Jul 2, 2026
2a5d74c
integrate fix/baseball-p1-camps
Jul 2, 2026
8d88990
integrate fix/baseball-p2-stats-games-list-delete
Jul 2, 2026
5ead67e
integrate fix/baseball-p2-program-logo-upload
Jul 2, 2026
0393b0d
integrate fix/baseball-p2-practice-effectiveness-verdicts
Jul 2, 2026
28ed3a8
integrate fix/baseball-p2-colleges-directory-filter
Jul 2, 2026
7583989
integrate fix/baseball-p2-player-profile-coach-ctas
Jul 2, 2026
6febf9d
integrate fix/baseball-p2-player-detail-performance
Jul 2, 2026
a12d6ad
integrate fix/baseball-p2-stats-upload-wizard
Jul 2, 2026
922f55f
integrate fix/baseball-p2-settings-appearance
Jul 2, 2026
c9620a5
integrate fix/baseball-p2-team-documents-actions
Jul 2, 2026
f38e96b
integrate fix/baseball-p2-stats-game-detail
Jul 2, 2026
5d56fc3
integrate fix/baseball-p1-lift-lab
Jul 2, 2026
001461f
integrate fix/baseball-p1-readiness
Jul 2, 2026
1bc6d7c
integrate fix/baseball-p2-dev-plans-goal-schema
Jul 2, 2026
13343b7
integrate fix/baseball-p2-dev-plan-detail
Jul 2, 2026
d01010a
integrate fix/baseball-p2-journey-vocab
Jul 2, 2026
0f62f50
integrate fix/baseball-p2-teams-manage
Jul 2, 2026
8661582
db(baseball): migration files matching tonight's applied prod state (…
njrini99-code Jul 2, 2026
c4c5a42
feat(baseball): Living-Annual interaction layer — shared motion vocab…
njrini99-code Jul 2, 2026
af4e82f
fix(baseball): P4.1 — EmptyIssue presets for announcements/travel/dis…
njrini99-code Jul 2, 2026
7af9a10
feat(baseball): consolidate coach nav into 8 grouped hubs (registry-d…
njrini99-code Jul 2, 2026
0c8d6f4
fix(baseball): Command Center roster pulse — split unjoinable nested …
njrini99-code Jul 2, 2026
18710c9
fix(baseball): resolve document uploader without the broken users.ful…
njrini99-code Jul 2, 2026
f3de005
fix(baseball): dev-plan player picker always claimed an empty roster …
njrini99-code Jul 2, 2026
e1ef057
fix(baseball): unify calendar upcoming count with type badges, shape …
njrini99-code Jul 2, 2026
3c1108d
fix(baseball): make public team/program profiles truly public for log…
njrini99-code Jul 2, 2026
fd54139
fix(baseball): repair Discover permanent-skeleton + peek-panel-to-Com…
njrini99-code Jul 2, 2026
ebf7bfd
feat(baseball): demo-freshness reseed script for Rini University Base…
njrini99-code Jul 2, 2026
5a7ec8a
fix(baseball): stop legacy sidebar nav list clipping under Settings/S…
njrini99-code Jul 2, 2026
3129f50
fix(baseball): P4.11 — Living-Annual migration for postgame review (#…
njrini99-code Jul 2, 2026
8a7467a
fix(baseball): P4.10 — Living-Annual migration for Practice Effective…
njrini99-code Jul 2, 2026
7a27564
fix(baseball): P4.16 — Program Settings → Living-Annual kit (#691)
njrini99-code Jul 2, 2026
569da17
fix(baseball): P4.27 — Living-Annual recruiting activation GO LIVE ga…
njrini99-code Jul 2, 2026
d6cce0d
fix(baseball): P4.24b — migrate coach Player Passport off PlayerPassp…
njrini99-code Jul 2, 2026
ccc08ed
fix(baseball): P4.26 — Living-Annual migration for the profile editor…
njrini99-code Jul 2, 2026
193806d
fix(baseball): P4.24 — Player Passport → Living-Annual kit (#695)
njrini99-code Jul 2, 2026
9947cf6
fix(baseball): P4.13 — Living-Annual migration for Import Center (#696)
njrini99-code Jul 2, 2026
9353992
fix(baseball): P4.29 — Living-Annual migration for player timeline (#…
njrini99-code Jul 2, 2026
f247be5
fix(baseball): Living-Annual — College Interest surface (P4.30) (#698)
njrini99-code Jul 2, 2026
51dca83
fix(baseball): P4.21.a — pipeline board onto Living-Annual kit (#699)
njrini99-code Jul 2, 2026
af21094
fix(baseball): P4.7 — Living-Annual reskin for messages/[id] thread p…
njrini99-code Jul 2, 2026
f336165
P4.2 — Roster Living-Annual migration (#701)
njrini99-code Jul 2, 2026
ea9f3c0
P4.4: Living-Annual migration — Announcements (#702)
njrini99-code Jul 2, 2026
34756f0
feat(baseball): P4.8 — Living-Annual migration for my-stats surface (…
njrini99-code Jul 2, 2026
2c5c83b
feat(baseball): P4.9 — analytics (player recruiting interest) → Livin…
njrini99-code Jul 2, 2026
04582d1
fix(baseball): P4.5 — Living-Annual migration for Tasks (#705)
njrini99-code Jul 2, 2026
7fabd73
fix(baseball): P4.15 — migrate settings/staff to the Living Annual ki…
njrini99-code Jul 2, 2026
87020b2
fix(baseball): P4.14.a — Performance Command Center onto Living-Annua…
njrini99-code Jul 2, 2026
d60d73e
fix(baseball): P4.18 — Scout Packets hub → Living-Annual kit (#708)
njrini99-code Jul 2, 2026
8b044ac
feat(baseball): Living-Annual migration — practice planner (P4.12.a) …
njrini99-code Jul 2, 2026
91eb5d8
fix(baseball): P4.14.b — PerformanceDashboardClient onto Living-Annua…
njrini99-code Jul 2, 2026
74878ac
fix(baseball): P4.20 — watchlist onto Living-Annual kit (clay, WAR RO…
njrini99-code Jul 2, 2026
9dd1ca1
fix(baseball): P4.23 — Decision Room (Living-Annual) (#712)
njrini99-code Jul 2, 2026
d384d8a
fix(baseball): P4.22 — signals inbox onto the Living-Annual kit (#713)
njrini99-code Jul 2, 2026
bcc4eee
feat(baseball): Lift Lab entry + first-run onboarding
Jul 2, 2026
cf6a247
feat(baseball): redesign coach onboarding as a Living Annual editoria…
Jul 2, 2026
d45b892
feat(baseball): redesign auth suite as the Living-Annual front door
Jul 2, 2026
7e0d98d
feat(landing): First Light photography assets (free-license)
Jul 2, 2026
a78d43d
feat(landing): upgrade hero + golf photography after design review
Jul 2, 2026
13bf6bd
feat(landing): First Light foundation — scaffold, glass grammar, scro…
Jul 2, 2026
749278e
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
ad25e8c
feat(landing): sage & cream palette respec — token repoint + sage fam…
Jul 2, 2026
8119cdf
wip: inherited partial work (pre-sage)
Jul 2, 2026
efe0803
wip: inherited partial work (pre-sage)
Jul 2, 2026
6a1e1f6
wip: inherited partial work (pre-sage)
Jul 2, 2026
3476c36
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
8ffe8f6
wip: inherited partial work (pre-sage)
Jul 2, 2026
723d6c4
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
28338cd
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
5b4fd79
wip: inherited partial work (pre-sage)
Jul 2, 2026
a3ad99c
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
d876af7
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
810ba0f
wip: sage partial work (builder killed mid-build)
Jul 2, 2026
eca2b6b
wip: sage partial work (builder killed mid-build)
Jul 2, 2026
200ea2f
wip: sage partial work (builder killed mid-build)
Jul 2, 2026
95e5ba9
feat(landing): M2/M5/M6/M7 editorial moments — sage & cream
Jul 2, 2026
9ea08d9
wip: inherited sage partial work
Jul 2, 2026
e3142d3
fix(baseball): entry redesign — The Practice Field at First Light (au…
Jul 2, 2026
6674810
wip: sage partial work (builder killed mid-build)
Jul 2, 2026
ed3cf89
Merge remote-tracking branch 'origin/feat/entry-world-scenes' into fe…
Jul 2, 2026
6c5a8ee
Merge remote-tracking branch 'origin/feat/entry-world-scenes' into fe…
Jul 2, 2026
b78e77d
feat(baseball): Lift Lab first-run — plates load the bar on the abstr…
Jul 2, 2026
ff61a63
feat(baseball): onboarding arc — the field gets chalked (stacked on #…
Jul 2, 2026
edeef81
fix(landing): M4 daylight grade + double-bezel portal cards (Fable spec)
Jul 2, 2026
36ec31a
fix(landing): M2 ledger rules draw in (Fable spec)
Jul 2, 2026
89e0be6
fix(baseball): render login shell eagerly — narrow useSearchParams Su…
Jul 2, 2026
f1f3656
feat(landing): IMMACULATE foundation — aurora field, light pools, cta…
Jul 2, 2026
d8a65dc
feat(landing): M3 rebuild — film-strip column, hardware bezel, ledger…
Jul 2, 2026
3060bbe
fix(baseball): guard drift-only migration statements against fresh DBs
Jul 2, 2026
2058ea6
fix(baseball): close real auth gaps, silence rule-blindness on protec…
Jul 2, 2026
0a59653
fix(baseball): re-pin pitching-invariants contract to thirds-notation…
Jul 2, 2026
d9bfef6
fix(baseball): grandfather 2 deprecated-table consumers (#381)
Jul 2, 2026
f36c558
fix(baseball): route announcements load-failure through ReadModelStat…
Jul 2, 2026
ca0647c
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
9f3e434
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
b79e8d1
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
b29e4f6
feat(landing): M1+nav immaculate pass — photo dissolve, corner light,…
Jul 2, 2026
4532046
feat(landing): portals/CTA/footer immaculate pass — photo craft, magn…
Jul 2, 2026
3526855
feat(landing): editorial immaculate pass — aurora field, light pools,…
Jul 2, 2026
11fd8df
feat(landing): §D2 more cream, no white — demote cream-high to lips/t…
Jul 2, 2026
488372d
fix(baseball): auth panel — win the cream-glass specificity battle, i…
Jul 2, 2026
cb164a4
feat(landing): M1+nav §D2 cream sweep (Nick)
Jul 2, 2026
b203b06
fix(baseball): §D2 — auth panel fill is true cream, not near-white (N…
Jul 2, 2026
47cfa4d
fix(baseball): §D2 follow-up — cream ring-offset + no-white autofill …
Jul 2, 2026
68944a3
feat(landing): brand foundation — HelmMark/HelmRosette/SportGlyph lin…
Jul 2, 2026
df2a297
ci(e2e): Node 22 for Playwright jobs — supabase-js throws at createCl…
Jul 2, 2026
58b03fe
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
bbd2cb3
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
5f60213
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
98dc22d
feat(landing): GlassNav brand lockup — HelmMark + sport glyph popover…
Jul 2, 2026
5093865
feat(landing): portals brand weave — sport motifs, card glyphs, foote…
Jul 2, 2026
a581444
feat(landing): editorial architecture — asymmetric splits, bento, gol…
Jul 2, 2026
994ade9
Merge remote-tracking branch 'origin/feat/entry-world-assets' into ba…
Jul 2, 2026
9bda911
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
34a5f41
Merge remote-tracking branch 'origin/feat/entry-world-hero' into batc…
Jul 2, 2026
bee4966
Merge remote-tracking branch 'origin/feat/entry-world-editorial' into…
Jul 2, 2026
80f22c8
Merge remote-tracking branch 'origin/feat/entry-world-cinema' into ba…
Jul 2, 2026
43f519a
Merge remote-tracking branch 'origin/feat/entry-world-portals' into b…
Jul 2, 2026
a226db0
Merge remote-tracking branch 'origin/feat/baseball-front-door-auth' i…
Jul 2, 2026
12ca2fd
Merge remote-tracking branch 'origin/feat/entry-world-scenes' into ba…
Jul 2, 2026
604b8ac
Merge remote-tracking branch 'origin/feat/baseball-front-door-onboard…
Jul 2, 2026
733b031
Merge remote-tracking branch 'origin/feat/entry-world-onboarding' int…
Jul 2, 2026
201fe10
Merge remote-tracking branch 'origin/feat/baseball-lift-lab-onboardin…
Jul 2, 2026
c1a4833
Merge remote-tracking branch 'origin/feat/entry-world-liftlab' into b…
Jul 2, 2026
0d68727
fix(entry-world): rebalance M1 hero grade stack — photo was buried in…
Jul 2, 2026
3789fa6
fix(entry-world): cap M5 band's dark edge, stop it reading as 2nd dar…
Jul 2, 2026
edf17e0
fix(entry-world): remove M3 reflection strip — rendered as a left-hea…
Jul 2, 2026
c249058
feat(landing): sports by viewport 3 — M4 two-fields moves ahead of M3…
Jul 2, 2026
ca34951
feat(landing): footer watermark uses the real Helm logo (Nick A-OVERR…
Jul 2, 2026
8a52013
fix(entry-world): recolor auth-panel helm-wheel mark, kelly -> sage-deep
Jul 2, 2026
76cfd80
fix(entry-world): M3 — drop cream veil, predecessor moment is now M4
Jul 2, 2026
b28e835
test: mock next/font/google in vitest setup
Jul 2, 2026
2e74697
fix(baseball): rename event-ack RLS policies to canonical naming
Jul 2, 2026
a64dc38
ci: pin baseball-smoke actions to full commit SHAs
Jul 2, 2026
c9cd21b
fix(baseball): resolve CodeQL alerts in performance-command, announce…
Jul 2, 2026
c4bb04b
feat(landing): real Helm logo in nav + two-sport hero chips (Nick A-O…
Jul 2, 2026
2d3a0e5
fix(baseball): event-ack SELECT staff branch — canonical is_baseball_…
Jul 2, 2026
423c086
feat(baseball): entry field — render the base-path diamond in-viewpor…
Jul 2, 2026
d643a4e
feat(landing): M3 sport-obvious screen replicas + veil removed for ne…
Jul 2, 2026
ef3bb88
Revert "fix(entry-world): recolor auth-panel helm-wheel mark, kelly -…
Jul 2, 2026
631bc0e
docs(baseball): note why the auth masthead logo stays kelly (A-OVERRIDE)
Jul 2, 2026
d7872d6
feat(landing): M4 section anchor id=fields
Jul 2, 2026
ab5d9b0
Merge remote-tracking branch 'origin/feat/entry-world-foundation' int…
Jul 2, 2026
504367b
Merge remote-tracking branch 'origin/feat/entry-world-editorial' into…
Jul 2, 2026
0b1e247
Merge remote-tracking branch 'origin/feat/entry-world-cinema' into ba…
Jul 2, 2026
263d6d2
Merge remote-tracking branch 'origin/feat/entry-world-scenes' into ba…
Jul 2, 2026
dd759fa
Merge remote-tracking branch 'origin/feat/entry-world-hero' into batc…
Jul 2, 2026
d499eeb
Merge remote-tracking branch 'origin/feat/entry-world-portals' into b…
Jul 2, 2026
ace5c30
fix(baseball): foul lines collinear with base paths — one chalk geome…
Jul 2, 2026
5739d89
feat(landing): real GolfHelm/BaseballHelm logo marks on hero sport ch…
Jul 2, 2026
0b21b70
feat(landing): real product marks in cream coins on M4 field cards (N…
Jul 2, 2026
5b8b876
fix(ci): final-red forensics — stale pgTAP index assert, invite-code …
Jul 2, 2026
23fd455
feat(landing): M3 screens are live interactive replicas of the real a…
Jul 2, 2026
03c6e00
Merge feat/entry-world-scenes into batch/baseball-fixes
Jul 2, 2026
e53e5ea
Merge feat/entry-world-hero into batch/baseball-fixes
Jul 2, 2026
abe1a26
Merge feat/entry-world-portals into batch/baseball-fixes
Jul 2, 2026
fd37197
Merge feat/entry-world-cinema into batch/baseball-fixes
Jul 2, 2026
e7f416b
Merge branch 'main' into batch/baseball-fixes
njrini99-code Jul 2, 2026
a2433ea
fix(landing): M3 desktop screens fill the well — density pass (Nick: …
Jul 2, 2026
66a6b77
fix(security): clear the two swept-in CodeQL alerts — null-proto CSV …
Jul 2, 2026
cbd691c
Merge remote-tracking branch 'origin/feat/entry-world-cinema' into ba…
Jul 2, 2026
ade9c22
fix(landing): Decision Room cards — center content in tall 1fr rows
Jul 3, 2026
97c6524
Merge remote-tracking branch 'origin/feat/entry-world-cinema' into ba…
Jul 3, 2026
5726a1a
fix(security): lift-canvas draft ids via crypto.randomUUID (CodeQL js…
Jul 3, 2026
ce71cd9
Merge branch 'main' into batch/baseball-fixes
njrini99-code Jul 3, 2026
d729630
revert(landing): strip Entry World marketing surface — ship internal …
Jul 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 8 additions & 8 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
node-version: 20
node-version: 22
cache: npm

- name: Install dependencies
Expand All @@ -99,7 +99,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
node-version: 20
node-version: 22
cache: npm

- name: Install dependencies
Expand Down Expand Up @@ -195,7 +195,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
node-version: 20
node-version: 22
cache: npm

- name: Install dependencies
Expand Down Expand Up @@ -282,19 +282,19 @@ jobs:
E2E_BASEBALL_PLAYER_PASSWORD: ${{ secrets.E2E_BASEBALL_PLAYER_PASSWORD }}
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0

- name: Setup Node
uses: actions/setup-node@v6
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
node-version: 20
node-version: 22
cache: npm

- name: Install dependencies
run: npm ci

- name: Cache Playwright browsers
uses: actions/cache@v5
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
Expand All @@ -313,7 +313,7 @@ jobs:

- name: Upload Playwright report (baseball-smoke)
if: always()
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: baseball-smoke-playwright-report
path: playwright-report/
Expand Down
193 changes: 193 additions & 0 deletions docs/CLEANSLATE_JOB_LIST.md

Large diffs are not rendered by default.

74 changes: 74 additions & 0 deletions docs/audits/AUTONOMOUS_RUN_STATUS_2026-07-01.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# BaseballHelm Autonomous Run — Status & Morning Handoff (2026-07-01)

> Owner went to bed with mandate: "keep going all night, autonomous loop, get it all done, I want it all good and fairway in the morning." This doc = live status (updated each loop turn) + the morning merge script. Source of truth for remaining work: `docs/CLEANSLATE_JOB_LIST.md` + `docs/audits/HELMV3_ISSUE_LEDGER_2026-06-30.md`.

---

## ☀️ GOOD MORNING — read this first

**Bottom line:** The night's work shipped as **53 verified PRs** (`#542`→`#619` + docs `#578`), and on the owner's explicit "merge all 53 as admin, and same with supabase" instruction — **all 53 are now MERGED to `main` and all 19 pending baseball migrations are APPLIED to shared prod** (verified live). Every PR was written spec-first, adversarially reviewed by an independent agent, and reworked or escalated when the review found a defect. Steps 1 & 2 below are **DONE**; only the Fairway preview (step 3) + the escalations remain for you.

### Status of the 3 steps
1. ✅ **DONE — all 53 merged** via `gh pr merge --admin --squash --delete-branch`. One PR (`#594` calendar-tz) hit a real conflict with the already-merged `#612`; I rebased it (kept both additive import groups), tsc-verified, re-pushed, and merged. Full tally reconciled: 0 of the 53 left open.
2. ✅ **DONE — all 19 migrations applied to prod via MCP `apply_migration`, in timestamp order, each dependency-checked against live `information_schema` first.** Verified live afterward: the 6 NN-1 `can_*` capability columns, `baseball_player_stats.import_run_id`, `baseball_program_settings` notification cols, `can_manage_documents`, status-guarded `is_baseball_team_coach`/`_v2`, and `baseball_demo_sessions` all now exist. **Security advisor sweep = clean:** the only ERROR/`always_true` findings are pre-existing golf/CRM objects; **0 advisories touch any baseball table I changed** (and `170248` revoked anon EXECUTE from 7 helpers). ⚠️ One migration (`#406` `20260630180000`) was **adapted at apply time** — the authored file referenced legacy `player_scope`/`position_scope` columns that don't exist live, so I applied a version using only `scope_player_ids` + status (the real #406 intent). **PR `#622` fixes the source file to match + regenerates `database.ts`; it is OPEN and needs your merge** (the self-approval guard blocked me from admin-merging a PR outside the authorized 53).
3. ⏳ **Fairway ships dark** — Phase A shell (`#591`, now merged) is behind `isRedesignEnabled()` (flag OFF = current UI byte-for-byte). Flip the flag in `src/lib/redesign/flag.ts` to preview; Phase B page-by-page migration is documented, not built (needs your visual review).
Also: **merge `#622`**, and top up CodeRabbit credits so future PRs get its review again.

### What landed (53 PRs, all adversarially verified)
- **Security/RLS** (`#542 #548 #549 #558 #561 #611`): status-aware `is_baseball_team_staff`/`_coach`, join-policy RLS, legacy permissive-ALL cleanup, clamped capability grants.
- **Auth guards / IDOR** (`#544 #547 #551 #546 #579 #617`): `approveAiOutput` re-check, `withBaseballAction` guards, `uploadStatsCSV` + `addExpense` IDOR closes.
- **Feature remediations** (`#573–#577 #580 #582–#590 #592–#606 #608–#610 #612–#614`): lift-publish no-op, onboarding data-loss, Decision Room read-models, messages/documents/announcements, stats, calendar tz, box-score RPC, schema-drift wrong-column reads.
- **Sweep-2 fixes** (`#615–#619`): Discover pagination (+ a hidden 100%-drop enrichment bug the verifier caught), watchlist demo-guard bypass + honest toasts, travel IDOR, coach-notes & roles-permissions wrong-column reads.
- **Fairway Phase A** (`#591`): flag-gated shell, provider-parity, dark by default.
- **Docs** (`#578`): V1 spec + Greptile pointer.

### ⚠️ Needs YOUR decision (escalated — I did NOT touch these)
- **`baseball_coaches` PII leak** (`baseball_coaches_select_all USING(true)`): a blanket DROP breaks player→coach messaging. Fix = non-PII view/RPC + repoint `NewMessageModal`/`use-messages`, THEN drop. Product decision needed.
- **`baseball_signals` DEFERRABLE constraint**: `uq_baseball_signal_dedupe` is DEFERRABLE so Postgres refuses it as an ON CONFLICT arbiter → every signal upsert fails (55000); table has 0 rows. Fix = `ALTER … NOT DEFERRABLE` (or drop, redundant with the partial idx) + widen disposition CHECK. DB migration.
- **Elite stat-event tables** (`engine-run.ts`, unapplied `20260624000080`) + **`baseball_ai_audit`** wrong-shaped upsert (overlaps `#575`): both need the unapplied migrations reconciled before the app code works.
- **`join_code` invite broken e2e** (`processTeamInvitation` needs a fallback) — overlaps join PRs `#546/#548`; **verify after those merge** (may already be fixed).
- **Close no-code issues:** `gh issue close 372 382 377` (already fixed on main; agents correctly made no changes).

### Deferred (overlap open PRs — reconcile, don't double-fix)
`camps` re-register-after-cancel + capacity (`camps/page.tsx`, overlaps `#564`); `getPlayerTasks` nonexistent `created_at` (`tasks.ts`, overlaps mega-PR `#358`); `#444/#445` events (deploy-before-migrate hazard would blank the calendar); `#373` route-crawler; `#434` box-score-innings.

### 🔴 The systemic finding (most important takeaway)
A whole **class** of baseball features has app code written against columns from migrations marked "WRITTEN, NOT APPLIED" that never landed on shared prod (`program_settings` notification cols, `baseball_seasons` settings cols, `baseball_signals` constraint/CHECK, `baseball_coach_notes` edited_at/deleted_at, `baseball_teams.program_type`, elite stat-event tables). These features are **silently broken in prod** until the migrations apply. Several `#615–#619`/`#609–#614` PRs fix the app side by reading the *real* live columns; the rest need the migrations applied (step 2). **Recommend:** a one-pass audit of `supabase/migrations/*` for "NOT APPLIED" vs live `information_schema`, then apply the safe ones — this is the root cause behind most net-new bugs the two discovery sweeps found.

### 🔒 Settled — do not re-raise
Leaked prod `service_role` key / demo creds: **owner-declined rotation** ("i not rotating them its a waste of my time" / "just leave it"). Accepted risk even though the repo is public. `scripts/*` secret issues `#516/#391` left alone.

_Detailed turn-by-turn status follows below._

---

## ⛔ Hard constraint: I cannot merge
The auto-mode permission classifier blocks `gh pr merge --admin` even under the autonomous mandate ("the user should run the admin-merge themselves"). CI is permanently infra-red (required `all` check aggregates broken suites; CodeRabbit out of prepaid credits) so admin is the only path — but it's owner-only. **So everything below is staged as ready PRs; run the MORNING MERGE SCRIPT (bottom) to land it, then apply migrations to prod.**

## ✅ Shipped as PRs (verified, adversarial-reviewed + remediated)
Security/RLS: #542 #548 #549 #558 #561 · App guards: #544 #547 #551 #546 #579(#394 stats — found real IDOR) · Features: #573(#486/#492) #574(#464) #575(#472/#473) #576(#453) #577(#450/#455/#451) · Decision Room: #580(#493-496) · Group B: #582(#475) #583(#497) #584(#476) · Wave5: #586(#512) #587(#507/#456) #588(#457) #589(#461) #590(#468/#469/#471) · Fairway: Phase A shell in progress (flag-gated, 3 flag-ON gaps under remediation) · Wave6: #591(**Fairway Phase A shell**) #592(#448) #593(#441) #594(#458) #587b:#... #487→#595 · Wave7: #596(#449/#452) #597(#508) #598(#506) · Deferred(rework Wave8): #454/#466(needs settings-cols migration) #444/#445(loading-state+rsvp) · Wave8: #599(#454/#466 +settings-cols migration) #600(#460) #601(#465) · ⚠️DEFERRED to human: #444/#445 events (team-store isLoading race + requires_rsvp SELECT deploy-before-migrate hazard would blank calendar — needs careful deploy-safe rework); #433 re-queued (agent StructuredOutput fail) · Wave9: #602(#433) #603(#439) #604(#499) #605(#438) #606(#463) · Wave10: #608(#435/#437) · ALREADY-FIXED-ON-MAIN (owner: `gh issue close 372 382 377`): #372/#382/#377 need no code · DEFERRED(human): #373 route-crawler (needs CI-artifact wiring + playerHref), #434 box-score-innings (overlaps unmerged #433) · NET-NEW SWEEP found 11 real bugs (Wave11): [CRIT] baseball_coaches_select_all USING(true) PII leak; [HIGH] is_baseball_team_coach_v2 no status check (removed coaches keep access ~15 tables); wrong-column silent-fail reads (command-center/scout-packet/player-today import_run_id); fake-success mutations (team-season-settings/program-settings); calendar tz offset; operational-signals un-ack; stat-visual-views non-idempotent; save_full_box_score RPC now()-year. Fixing in Waves 12-13; [7]program-settings + [0]games.ts-part deferred (overlap #599/#608). · Wave12: #609(command-center cols) #610(scout-packet video) #611(coach RLS status-guard) · ⚠️OWNER-ESCALATED (crit, needs product decision): baseball_coaches_select_all PII leak — blanket DROP breaks player→coach messaging; fix = non-PII view/RPC + repoint NewMessageModal/use-messages, THEN drop · Wave13: #612(calendar tz+rsvp) #613(import_run_id col) #614(box-score RPC season-year) · ⚠️OWNER-ESCALATED net-new (deeper DB/schema work, not shipped): (a) baseball_signals has a DEFERRABLE unique constraint uq_baseball_signal_dedupe that Postgres refuses as ON CONFLICT arbiter → EVERY signal upsert fails w/ SQLSTATE 55000 (why the table has 0 rows); fix = ALTER constraint NOT DEFERRABLE (or drop if redundant w/ partial idx baseball_signals_dedupe_open_uidx) + widen disposition CHECK to 7 values + return success:false on error; (b) team-season-settings.ts writes to baseball_seasons columns that DON'T EXIST in prod (label/is_* etc — unapplied settings migration); (c) stat-visual-views null-player idempotency migration risks a 23505 on existing dup rows. · 🔴 SYSTEMIC FINDING: a CLASS of baseball features have app code written against schema from migrations authored 'WRITTEN NOT APPLIED' and never applied to prod (program_settings notification cols [#599], baseball_seasons settings cols, baseball_signals constraint/CHECK). These features are silently broken in prod until those migrations land. RECOMMEND: audit supabase/migrations for 'NOT APPLIED' migrations + reconcile against live information_schema, then apply the safe ones. · SWEEP-2 found 13 more (fixing 6 in Wave15: discover pagination, watchlist demo-guard-bypass+false-toast, travel addExpense IDOR, coach-notes/tasks/roles-permissions wrong-columns). · ⚠️OWNER-ESCALATED sweep-2 (overlap open PRs or deep schema): [CRIT] elite stat-event tables engine-run.ts cols missing live (unapplied 20260624000080); [HIGH] baseball_ai_audit wrong-shaped upsert vs partial index (engine-run.ts, overlaps #575); [CRIT] join_code invite broken e2e (processTeamInvitation needs fallback — overlaps join PRs #546/#548, verify after merge); camps re-register-after-cancel + capacity-cosmetic (camps/page.tsx, overlaps #564); [HIGH] getPlayerTasks selects nonexistent created_at on baseball_task_assignments (tasks.ts — DEFERRED: overlaps mega-PR #358 'free-production-readiness-stack' which already edits baseball/actions/tasks.ts; owner: reconcile there). · Wave15 SHIPPED: #615(discover pagination + head-coach enrichment; REJECT→reworked: enrichment query used nonexistent first_name/last_name→full_name) #616(watchlist demo-guard-bypass + honest toasts; AWC→reworked: race-safe id resolver) #617(travel addExpense IDOR — CONFIRMED) #618(coach-notes archived_at/updated_at real cols — CONFIRMED live-DB) #619(roles-permissions program_type→team_type — CONFIRMED); all tsc-clean, file-scoped. · Docs: #578(V1 spec)
_(Updated each turn as new PRs land.)_

## 🔁 Plan for the night (alternating, ONE workflow at a time)
- **Fix waves** — remaining CONFIRMED_OPEN issues from the ledger, file-disjoint batches (avoid overlap with open PRs since I can't merge). In flight: **Wave 4** (#475/#476/#497/#512).
- **Fairway migration** — the headline. Building blocks confirmed: flag `src/lib/redesign/flag.ts` (`isRedesignEnabled`/`FAIRWAY_SCOPE`), golf playbook `src/app/golf/(dashboard)/FairwayDashboardShell.tsx` (777 lines), `src/components/fairway/app-shell/*` (AppShell/FairwaySidebar/TopBar/BottomNav), nav manifest `src/lib/baseball/nav-manifest.ts`. No `BaseballFairwayShell` yet.
- **Phase A (next):** build `BaseballFairwayShell` mirroring the golf shell — `AppShell` + manifest-driven nav + provider stack VERBATIM + mobile-drawer bridge, mounted in `src/app/baseball/(dashboard)/layout.tsx` behind `isRedesignEnabled()`. Flag OFF = current shell byte-for-byte. Ships dark, reversible. Presentation only — NEVER touch actions/RLS/migrations.
- **Phase B:** migrate canonical pages to Fairway components (per plan §5), one surface per small PR, ONLY for files not touched by an open fix PR (avoid conflicts).
- Rules: `docs/fairway-baseballhelm-migration-plan.md` §6 (≤15 files/PR, reuse `src/components/fairway/*`, nav from manifest, flag-gated, no logic changes).

## Loop mechanics
Driven by workflow-completion notifications (auto re-invoke) + a long fallback ScheduleWakeup as insurance. On each wake: ship completed branches as PRs, update this doc, launch the next workflow (never 2 heavy workflows at once — rate-limit lesson).

## ☀️ MORNING MERGE SCRIPT (owner runs this)
```bash
# 1) Merge all staged fix/docs PRs (migrations first by timestamp, then app, then features, then docs).
# Re-run safe. Uses --admin to bypass the infra-red CI (all failures confirmed infra/billing, not code).
for n in 542 548 549 558 561 544 547 551 546 579 573 574 575 576 577 580 582 583 584 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 608 609 610 611 612 613 614 615 616 617 618 619 578; do
gh pr merge $n -R njrini99-code/helmv3 --squash --admin --delete-branch && echo "merged #$n"; sleep 1
done
# 2) Then merge any ADDITIONAL PRs created overnight — see the "Shipped as PRs" list above for the full set,
# or: gh pr list -R njrini99-code/helmv3 --state open --search "fix/baseball in:head" --json number --jq '.[].number'
# 3) Apply the migration files to shared prod IN TIMESTAMP ORDER (20260630230000 → latest). NOT auto-applied.
# 4) Fairway ships dark (flag OFF); flip the redesign flag to preview it.
```
Top up CodeRabbit prepaid credits so new PRs get its review again.
Loading
Loading