From 992d2d1c26c3fac4534c6f39adade0711557fa02 Mon Sep 17 00:00:00 2001 From: Lucas Kalil Date: Wed, 17 Jun 2026 11:10:18 -0300 Subject: [PATCH] =?UTF-8?q?docs:=20stage=20J=20round=201=20=E2=80=94=20rel?= =?UTF-8?q?ease=20polish=20audit=20+=20README=20stats=20section?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit a11y/responsive/i18n audit over A-F passed clean (no code fixes); added a Stats section to the README; restructured TODO so G/H/I + a second polish (J round 2) are queued for the future. Co-Authored-By: Claude Opus 4.8 --- .agents/TODO.md | 35 ++++++++++++++++++++--------------- .agents/project-map.md | 2 +- .agents/project-memory.md | 6 ++++++ README.md | 6 ++++++ 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/.agents/TODO.md b/.agents/TODO.md index 8f654aa..8772359 100644 --- a/.agents/TODO.md +++ b/.agents/TODO.md @@ -72,24 +72,29 @@ Use checkboxes to track progress. Items marked **πŸ”΄ BLOCKER** prevent release; --- -## 7. Stats final screen β€” `feature/stats-final-screen` (post-Cup release) +## 7. Stats final screen β€” `feature/stats-final-screen` -Full build of `.agents/stats-screen-plan.md` on a feature branch, merged to `master` at the end of -the Cup. One approval gate before each stage. A–F are buildable from today's data; G/H/I are -data-blocked (graceful-degradation shell lets the UI land dark until JSON arrives). +Build of `.agents/stats-screen-plan.md`, stage by stage with an approval gate each. The **pure-UI +build (A–F, minus skipped E) + a release polish (J round 1)** was **merged to `master` on 2026-06-17** +and is live. The screen renders fully with today's data and auto-lights the post-Cup sections (verdict, +champion path, debuts champion) once the final lands. The **data-layer stages (G/H/I) + a second polish +(J round 2)** remain for when their data arrives near/after the Cup. -### 🟒 OPTIONAL (release feature) +### βœ… Shipped to `master` (2026-06-17) - [x] ~~Stage 0 β€” branch `feature/stats-final-screen` off `master`~~ -- [x] ~~Stage A β€” degradation engine + fault-tolerant `loadData` + sticky scrollspy sub-nav + media fallback~~ (2026-06-16) -- [x] ~~Stage B β€” verdict hero (gated on FINAL finished; aggregate-hero fallback) + goals-by-round chart~~ (2026-06-16) -- [x] ~~Stage C β€” final ranking 1–48 (phase-reached chain), favorite-row highlight, team record cards~~ (2026-06-17) -- [x] ~~Stage D β€” auto record-cards + "format-48 debuts" band~~ (2026-06-17) -- [x] ~~Stage E β€” 104-match results archive (accordion by phase, row β†’ modal)~~ β€” **SKIPPED (2026-06-17, Option B):** kept the "See all matches β†’ Matches" link; the Matches tab already covers browsing. No archive built. -- [x] ~~Stage F β€” team comparator (diverging bars)~~ (2026-06-17; teams only β€” players side deferred to Stage H per graceful degradation) -- [ ] Stage G β€” Layer 2 cheap data (attendance, `cards`β†’{y,r} migration, decidedIn, coords) β€” **SCHEDULE LATE** -- [ ] Stage H β€” Layer 3 players (`players.json` + `player-events.json` + `awards.json`) -- [ ] Stage I β€” Layer 4 editorial (`curiosities.json` + `all-time-baselines.json`) -- [ ] Stage J β€” polish (responsive/a11y audit, perf, Lighthouse, `DATA_VERSION` bump, README/i18n) +- [x] ~~Stage A β€” degradation engine + fault-tolerant `loadData` + sticky scrollspy sub-nav + media fallback~~ +- [x] ~~Stage B β€” verdict hero (gated on FINAL finished; aggregate-hero fallback) + goals-by-round chart~~ +- [x] ~~Stage C β€” final ranking 1–48 (phase-reached chain), favorite-row highlight, team record cards~~ +- [x] ~~Stage D β€” auto record-cards + "format-48 debuts" band~~ +- [x] ~~Stage E β€” in-tab results archive~~ β€” **SKIPPED (Option B):** kept the "See all matches β†’ Matches" link; the Matches tab already covers browsing. +- [x] ~~Stage F β€” team comparator (diverging bars)~~ β€” teams only; the Teams/Players toggle is deferred to Stage H per graceful degradation. +- [x] ~~Stage J (round 1, release polish) β€” a11y/responsive/i18n/README audit on A–F~~ β€” passed clean (no code fixes). **Lighthouse + final `DATA_VERSION` bump still pending an actual deploy.** + +### πŸ”­ Future (data layers + 2nd polish β€” near/after the Cup) +- [ ] **Stage G β€” Layer 2 cheap data.** Extend `results.json` (attendance, **`cards`β†’{y,r} migration** β€” breaking for `modal.js` + `stats.js` `aggregateTeams`, add a backward-compatible reader; `decidedIn`; backfill `stats`), `teams.json` (`ranking`/`wcDebut`/`confederation`), `stadiums.json` (`lat`/`lng`). Light up records: attendance, discipline/fair-play, ranking upsets, confederation performance, distance. **SCHEDULE LATE β€” conflicts with master's daily `results.json` refreshes.** Bump `DATA_VERSION`. +- [ ] **Stage H β€” Layer 3 players.** `players.json` + `player-events.json` + `awards.json` (+ optional `keeper-stats.json`). Top-scorers podium, assists/cards/saves chips, awards block, Squad of the Tournament, **Teams/Players toggle in the comparator** (the deferred half of Stage F), goal-time records. Relative photo paths (gotcha #7). +- [ ] **Stage I β€” Layer 4 editorial.** `curiosities.json` (bilingual EN+PT) + `all-time-baselines.json`; editorial record-cards + "this Cup vs history" panel. +- [ ] **Stage J (round 2) β€” polish over the NEW G/H/I features.** Repeat the audit on the added sections (a11y/responsive/perf, Lighthouse, EN/PT review) + bump `DATA_VERSION` for the new data files + README refresh. --- diff --git a/.agents/project-map.md b/.agents/project-map.md index 94fd253..3a46004 100644 --- a/.agents/project-map.md +++ b/.agents/project-map.md @@ -4,7 +4,7 @@ Navigation map of the codebase. Use this to find which file owns a concern befor > **Status 2026-06-12 (all 12 steps + real-data migration done):** everything works with **real World Cup 2026 data** β€” all views, bracket interactions, simulation, responsive/a11y pass, favorites, time toggle, challenge, share link, `.ics` export. Remaining: keep `results.json` current, fill `thirdPlaceAssignment` after the group stage (~Jun 27), Lighthouse run + GitHub Pages deploy. Spec source of truth: `world-cup-2026-hub-spec-en.md` + `complement-spec-worldcup2026-en.md` (complement **wins on conflict**). > -> **Branch note (2026-06-16):** the full post-Cup Stats screen (`.agents/stats-screen-plan.md`, stages A–J) is being built on **`feature/stats-final-screen`** (merges to `master` at the end of the Cup). **Stages A–D + F done** on that branch (degradation engine + fault-tolerant `loadData` + sticky scrollspy sub-nav + flag monogram fallback; verdict-or-aggregate hero + goals-by-round chart; final ranking 1–48 by stage-reached + favorite-row highlight + team record cards; Records section = match records + format-48 debuts band; team comparator with diverging bars). Stage E skipped. Sub-nav live chips: Overview Β· Teams Β· Records Β· Comparator. **Stage E (in-tab results archive) skipped by decision** β€” the Matches tab stays the single surface for browsing; the "See all matches β†’" link is kept. `master` keeps the partial Stats tab + daily refreshes. Descriptions below reflect the branch. +> **Branch note (2026-06-16):** the full post-Cup Stats screen (`.agents/stats-screen-plan.md`, stages A–J) is being built on **`feature/stats-final-screen`** (merges to `master` at the end of the Cup). **Stages A–D + F + J(round 1 polish) done and MERGED TO MASTER (2026-06-17)** β€” built on that branch (degradation engine + fault-tolerant `loadData` + sticky scrollspy sub-nav + flag monogram fallback; verdict-or-aggregate hero + goals-by-round chart; final ranking 1–48 by stage-reached + favorite-row highlight + team record cards; Records section = match records + format-48 debuts band; team comparator with diverging bars). Stage E skipped. Sub-nav live chips: Overview Β· Teams Β· Records Β· Comparator. **Stage E (in-tab results archive) skipped by decision** β€” the Matches tab stays the single surface for browsing; the "See all matches β†’" link is kept. `master` keeps the partial Stats tab + daily refreshes. Descriptions below reflect the branch. --- diff --git a/.agents/project-memory.md b/.agents/project-memory.md index 4a9d7a3..c563048 100644 --- a/.agents/project-memory.md +++ b/.agents/project-memory.md @@ -296,6 +296,12 @@ Static web app showing the FIFA World Cup 2026 (Mexico/USA/Canada, 48 teams) β€” - **Verified (preview 8126, branch, 19/104 real):** console clean; 4 chips; default GER vs SWE (top-2 ranked); bars scale right (GP 7β†’100% / 5β†’71%); changing Bβ†’USA updates the header ("Germany vs United States") and re-scales (GP 7β†’100% / 4β†’57%); EN↔PT relabels title/metrics and **selection persists** across langchange; mobile 375px selects side-by-side + rows fit (no overflow). Screenshots desktop+mobile. - **Next:** Stage G β€” Layer 2 cheap data (attendance, **`cards`β†’{y,r} migration**, `decidedIn`, team `ranking`/`wcDebut`/`confederation`, stadium coords; backfill `stats`). **SCHEDULE LATE / near end of Cup** β€” the `cards` migration is a breaking change for `modal.js` + `stats.js` (`aggregateTeams` reads `s.cards.home`) and would conflict with master's daily `cards` writes. Awaiting approval (and likely deferral). +### Stats final screen β€” Stage J round 1 (release polish) + merge to master (2026-06-17) +- **Release polish pass over A–F** (E skipped): **i18n audit** β€” no hardcoded user-facing strings in `stats.js` (all via `t()`); **a11y** β€” the 4 sub-nav sections are `aria-label`led + `tabindex=-1`, the table has a caption + 11 `aria-label`led sort buttons + `aria-sort`, comparator selects + record-card buttons are `aria-label`led, sub-nav is a `