Commit graph

26 commits

Author SHA1 Message Date
387fab3c8b feat(stats): degradation engine + scrollspy sub-nav (Stage A)
Scaffold the post-Cup stats screen (.agents/stats-screen-plan.md) on the
feature/stats-final-screen branch.

- loadData(): fault-tolerant optional data layers (players, player-events,
  awards, keeper-stats, curiosities, all-time-baselines) via loadOptional() —
  an absent/404 file defaults to empty SILENTLY (graceful degradation, keeps
  the console clean), warning only on a present-but-malformed file. The 6 core
  files still throw on failure.
- stats.js SECTIONS registry: a section and its sub-nav chip render only when
  available(model) holds, else they are omitted from the DOM entirely (no
  placeholder / no coming-soon). Overview/Teams live; the 4 future sections
  stay dark until later stages.
- Sticky scrollspy sub-nav: hash-safe anchor chips (preventDefault +
  scrollIntoView, never touch location.hash so the tab router does not bounce
  to Home); position-based scrollspy with an explicit page-bottom -> last
  section rule (robust on short pages). --header-h kept live via a
  ResizeObserver so the nav sticks correctly under the variable-height header.
- flagImg() monogram fallback: a broken flag SVG becomes a 3-letter code span,
  never a broken-image icon.
- i18n stats.nav* keys (EN/PT); stats.css for sub-nav / section / fallback.

No DATA_VERSION bump (no deployed data changed). No index.html change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 19:36:32 -03:00
8afbcac9c5 data: update 16/06/2026 19:00 FRAxSEN 3x1 2026-06-16 19:00:12 -03:00
1f23daf120 perf(app): optimize countdown rendering and hero clock polling 2026-06-16 15:54:33 -03:00
715ecedbcb feat(pwa): add Tier 1 support — installable app with manifest and icons 2026-06-16 15:09:34 -03:00
ae95812269 data: update 16/06/2026 01:00 IRNxNZL 2x2 2026-06-16 00:24:04 -03:00
5b1707a764 feat(app): poll results.json for live updates without reload 2026-06-16 00:12:50 -03:00
c937671fdd data: update 15/06/2026 22:00 KSAxURU 1x1 2026-06-15 22:41:26 -03:00
425c27fa37 data: update 15/06/2026 18:00 BELxEGY 1x1 2026-06-15 18:04:56 -03:00
8886dcf098 data: update match 13 result and stats (ESP 0-0 CPV) 2026-06-15 15:34:48 -03:00
ad6d7ea616 fix(header): two-row layout with scrollable tabs below 1100px 2026-06-15 15:27:10 -03:00
6e33142c96 feat(hero): display simultaneous group-final matches with shared timer
findFeaturedMatch → findFeaturedMatches: returns all matches sharing the
earliest kickoff, enabling the hero to show 2+ simultaneous group-final games
(same phase, shared time/countdown). renderHero splits single-match (unchanged
DOM) vs multi-match (stacked with dividers). heroMatchupHTML extracted for
reusable matchup layout.

CSS: .hero-matchups/match/divider/time for vertical stacking and shared time.
i18n: hero.nextMatches (EN/PT) for multi-match label.
2026-06-15 14:52:10 -03:00
99ea02a604 feat(schedule): add occurrence filter with pending result status 2026-06-15 14:33:33 -03:00
18d6066849 data: update match 12 result and stats (SWE 5-1 TUN)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 02:13:33 -03:00
fd71bd2c48 feat(hero): advance countdown by clock without JSON updates
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 02:07:29 -03:00
3e9a60bb9e data: update matches 10-11 results and stats (NED 2-2 JPN, CIV 1-0 ECU) 2026-06-14 22:08:46 -03:00
d5a9dadc5d feat(stats): add tournament-to-date stats tab 2026-06-14 21:38:01 -03:00
ba81e49eac data: update match 9 results and stats (GER 7-1 CUW) 2026-06-14 16:03:35 -03:00
74fa8603f4 data: update match 8 results and stats (AUS 2-0 TUR)
- Match 8 finished: Australia 2-0 Turkey
- Added statistics: possession 28/72, shots 9/30, cards 0/1
- Verified in preview with correct modal display
- Updated project memory with refresh entry and sources
- Bumped DATA_VERSION to 2026-06-14-rev1 for cache busting
2026-06-14 03:01:04 -03:00
e94aa09ce5 refactor(stadiums): clean up SVG illustrations and fix image aspect ratio
- Remove card chrome (background rect, text duplicates, accent bars) from all 17 stadium SVGs
- Crop viewBox tightly to illustration (~10px padding) and remove fixed width/height attributes
- Update .stadium-img aspect ratio from 16/9 to 4/3 to match cropped SVG ratios and prevent aggressive object-fit clipping
2026-06-14 01:06:14 -03:00
da8a8838c6 feat(cache): add cache-busting version for data files 2026-06-14 00:06:37 -03:00
08c224ec3e feat(modal): display match stats when available 2026-06-13 23:23:18 -03:00
0ebb66120c assets(flags): replace placeholder flags with realistic designs
Replaces 48 placeholder flag SVGs (simple boxes with country codes) with realistic, detailed flag designs.
2026-06-13 11:57:45 -03:00
5c5169d838 chore(assets): sync SVG assets with real 2026 world cup qualifiers
Replace flag SVGs for 10 fictional teams with 10 new qualifiers (BIH, CZE, RSA,
CUW, CPV, HAI, IRQ, NOR, SWE, COD). Remove 14 unused stadium SVGs for venues not
in the 16-stadium tournament roster.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-12 22:38:28 -03:00
c664c5e02e style: adjust grid layout and fix team name text wrapping 2026-06-12 21:13:10 -03:00
39f5881d33 feat: add world cup 2026 hub spa with bracket simulation and i18n 2026-06-12 16:12:14 -03:00
c7088bc31b feat(data): add mock tournament dataset and placeholder artwork 2026-06-12 16:12:02 -03:00