Commit graph

157 commits

Author SHA1 Message Date
98c84aa5b6 data: update 16/06/2026 23:07 IRQxNOR 1x4 2026-06-16 23:06:14 -03:00
Lucas Kalil
dcb1ea97fa
Update deploy.yml 2026-06-16 20:13:33 -03:00
Lucas Kalil
45ba9c05c7
Update deploy.yml 2026-06-16 20:10:22 -03:00
c10a573cab docs: log stats screen Stage B (verdict hero + goals-by-round)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 19:46:57 -03:00
61e0bb0d0a feat(stats): verdict hero + goals-by-round chart (Stage B)
- Verdict hero: champion (trophy + flag + name) and a 2/3/4 podium
  (runner-up/3rd/4th) above the shared count-up tiles. Gated on the REAL
  final via computeVerdict() — getBracketTree()'s FINAL node must be a real
  finished result (!simulated), so a user's simulated champion never leaks
  into the verdict. Third/fourth from the third-place match, independently.
  Falls back to the existing aggregate 'in progress' hero until the final is
  in, so an early merge stays correct.
- Goals-by-round chart beside goals-by-stage: group stage split into its 3
  matchdays (derived per group; no matchday field exists) plus each knockout
  round. Hidden until >=2 rounds have data so it never duplicates the
  goals-by-stage Group bar early on.
- stats.js imports getBracketTree from bracket.js (4th circular import with
  app.js, render-time only). i18n stats.goalsByRound/matchday/verditTitle/
  runnerUp/thirdPlace/fourthPlace (EN/PT); verdict-hero CSS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 19:46:57 -03:00
f3751f0042 docs: log stats screen Stage A (feature/stats-final-screen)
Append the Stage A entry to project-memory.md, refresh project-map.md
(app.js/stats.js descriptions + optional data layers + branch note), and add
the A-J stage tracker to TODO.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 19:36:39 -03:00
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
79e746e4d4 docs: log daily refresh 16/06/2026 2026-06-16 19:00:12 -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
2ad27084d5 docs: log daily refresh 16/06/2026 2026-06-16 00:24:07 -03:00
ae95812269 data: update 16/06/2026 01:00 IRNxNZL 2x2 2026-06-16 00:24:04 -03:00
e488b7c77f docs: record live data refresh design and implementation 2026-06-16 00:12:59 -03:00
5b1707a764 feat(app): poll results.json for live updates without reload 2026-06-16 00:12:50 -03:00
ddc82bba49 docs: log daily refresh 15/06/2026 2026-06-15 22:41:26 -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
d06a21b5e3 docs: log daily refresh through match 13 (2026-06-15) 2026-06-15 15:34:54 -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
5cbd3e6f3d docs: log daily refresh through match 12 (2026-06-15)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 02:13:41 -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
a0fe50075c docs: log smart hero countdown in project memory
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 02:07:37 -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
d354db3cf2 docs: log daily refresh through match 11 (2026-06-14) 2026-06-14 22:08:46 -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
0f5889d8d6 refactor(logo): redesign world cup logo SVG with improved football icon 2026-06-14 01:56:44 -03:00
51c390d6e5 docs: document stadium SVG cleanup and aspect ratio rationale 2026-06-14 01:06:16 -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
6d835b43b9 feat(data): backfill match statistics for completed group stage matches
- Added possession %, shots, and card counts to matches 1–7
- Sources verified: ESPN, Opta Analyst, Yahoo Sports, Sofascore, VAVEL USA
- Stats render correctly in match modal for both EN and PT languages
- Documented in project memory with sources and verification notes
2026-06-13 23:50:28 -03:00
8233262d1d fix(deploy): correct FTP server-dir path for Hostinger 2026-06-13 23:30:33 -03:00
08c224ec3e feat(modal): display match stats when available 2026-06-13 23:23:18 -03:00
d2bd5f6c65 ci: deploy to public_html/worldcup2026 subfolder
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 23:08:20 -03:00
ffda08229b docs(agents): document GitHub Actions FTP deploy pipeline
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 23:05:01 -03:00
7d6113be85 ci: add GitHub Actions FTP deploy to Hostinger
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 23:04:03 -03:00
80c0efa508 docs(agents): update project memory with daily refresh 2026-06-13 22:57:26 -03:00
07e4e1a3e7 data: update matches 5-7 results 2026-06-13 22:57:25 -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
c068a6bcc1 data: update match 4 result (USA 4–1 PAR)
Marks USA–PAR (match 4) as finished with final score 4–1, moving to next group matches (QAT–SUI, BRA–MAR).
2026-06-13 11:57:35 -03:00
b1d384b2b1 docs(agents): update project memory with daily refresh
Documents match 4 results (USA 4–1 PAR) and updates tournament progress notes through 2026-06-13.
2026-06-13 11:57:33 -03:00
1090c8c439 docs(agents): update project memory for real data migration
Record completion of mock→real tournament data migration (2026-06-12): all 6
data/*.json files now hold verified WC2026 data; stadiums trimmed 30→16;
match ids clarified (1–72 chronological group, 73–104 official knockout numbers);
third-place slot allocations documented. Add daily refresh runbook reference to
project memory workflow section. Mark step 11 complete in TODO.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-12 22:41:22 -03:00
096c671c4e docs(data): add tournament data refresh runbook
Self-contained guide for daily maintenance of tournament data during the World
Cup (Jun 11 – Jul 19). Covers: scoring updates to results.json, one-time bracket
assignment fill, rare schedule changes, and verification checklist. Distinguishes
mutable (results) vs. frozen (teams, groups, stadiums) files.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-12 22:38:33 -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