diff --git a/.agents/TODO.md b/.agents/TODO.md index 6f9a164..8f654aa 100644 --- a/.agents/TODO.md +++ b/.agents/TODO.md @@ -85,7 +85,7 @@ data-blocked (graceful-degradation shell lets the UI land dark until JSON arrive - [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. -- [ ] Stage F — team comparator (diverging bars) +- [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`) diff --git a/.agents/project-map.md b/.agents/project-map.md index 3d1bbb7..94fd253 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 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). Sub-nav live chips: Overview · Teams · Records. **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 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. --- @@ -72,7 +72,8 @@ worldcup2026/ │ │ │ 48-team table ranked 1–48 by stage-reached (sortable, # = canonical rank) + │ │ │ favorite-row highlight + team record cards (win streak, │ │ │ champion path) + Records section (biggest win/high-scoring -│ │ │ match → modal, format-48 debuts band). SECTIONS registry (graceful- +│ │ │ match → modal, format-48 debuts band) + team comparator +│ │ │ (A-vs-B diverging bars). SECTIONS registry (graceful- │ │ │ degradation gate: section + chip render only if available, │ │ │ else removed from DOM) + sticky scrollspy sub-nav (anchor │ │ │ chips, hash-safe) + flagImg fallback; imports getBracketTree/getFavorites/openMatchModal. Grows into diff --git a/.agents/project-memory.md b/.agents/project-memory.md index dfdd927..4a9d7a3 100644 --- a/.agents/project-memory.md +++ b/.agents/project-memory.md @@ -288,6 +288,14 @@ Static web app showing the FIFA World Cup 2026 (Mexico/USA/Canada, 48 teams) — - **State:** the `archive` entry in `SECTIONS` stays `available: () => false` / `body: () => ''` (no chip, no DOM) — leave it as a dormant slot, don't delete the registry line. **No code change** was made for this decision. If ever revisited, the lighter "phase-accordion, results-only" variant (Option C) was the recommended shape. - **Next:** Stage F — team comparator (A-vs-B selector + diverging mirrored bars; players side stays dark until Stage H). Awaiting approval. +### Stats final screen — Stage F: team comparator (2026-06-17) +- **New `comparator` sub-nav section** (`SECTIONS` `comparator` → `available: (m) => m.finishedCount > 0`, `body: comparatorSectionHTML`). Sub-nav now: **Overview · Teams · Records · Comparator** (gated so the chip appears once ≥1 match is played). +- **A-vs-B team comparator with diverging mirrored bars:** two `