From 715ecedbcb5428b4572dc746662debf81b71fd13 Mon Sep 17 00:00:00 2001 From: Lucas Kalil Date: Tue, 16 Jun 2026 15:09:34 -0300 Subject: [PATCH] =?UTF-8?q?feat(pwa):=20add=20Tier=201=20support=20?= =?UTF-8?q?=E2=80=94=20installable=20app=20with=20manifest=20and=20icons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .agents/TODO.md | 4 +++ .agents/issues.md | 35 ++++++++++++++++++++++ .agents/project-map.md | 16 ++++++++-- .agents/project-memory.md | 9 ++++++ assets/icons/apple-touch-icon.png | Bin 0 -> 15138 bytes assets/icons/favicon-16.png | Bin 0 -> 1175 bytes assets/icons/favicon-32.png | Bin 0 -> 2506 bytes assets/icons/favicon.ico | Bin 0 -> 5430 bytes assets/icons/icon-192.png | Bin 0 -> 16149 bytes assets/icons/icon-512.png | Bin 0 -> 11368 bytes assets/icons/icon-maskable-192.png | Bin 0 -> 13260 bytes assets/icons/icon-maskable-512.png | Bin 0 -> 9532 bytes assets/icons/icon-maskable.svg | 18 +++++++++++ assets/icons/icon.svg | 18 +++++++++++ favicon.ico | Bin 0 -> 5430 bytes index.html | 12 ++++++++ manifest.json | 46 +++++++++++++++++++++++++++++ 17 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 assets/icons/apple-touch-icon.png create mode 100644 assets/icons/favicon-16.png create mode 100644 assets/icons/favicon-32.png create mode 100644 assets/icons/favicon.ico create mode 100644 assets/icons/icon-192.png create mode 100644 assets/icons/icon-512.png create mode 100644 assets/icons/icon-maskable-192.png create mode 100644 assets/icons/icon-maskable-512.png create mode 100644 assets/icons/icon-maskable.svg create mode 100644 assets/icons/icon.svg create mode 100644 favicon.ico create mode 100644 manifest.json diff --git a/.agents/TODO.md b/.agents/TODO.md index 51c4749..7cb3b15 100644 --- a/.agents/TODO.md +++ b/.agents/TODO.md @@ -66,6 +66,10 @@ Use checkboxes to track progress. Items marked **🔴 BLOCKER** prevent release; - [ ] Real stadium photos + team flag SVGs in `assets/images/` (10 new-team flags created 2026-06-12 in placeholder style) - [ ] **Pós-Copa: estado final da home.** Quando a Final encerrar, o hero fica vazio (por design atual). Criar um estado pós-torneio (campeão/epílogo) na home — ver entrada "Hero cronômetro inteligente (2026-06-15)" em project-memory; provavelmente converge com a aba Stats (`stats-screen-plan.md`). +### 🟢 OPTIONAL +- [x] ~~PWA Tier 1 — instalável (manifest + ícones + meta tags; 2026-06-16). Atende todos os critérios de aceitação da issue.~~ +- [ ] PWA Tier 2 — service worker + offline (deferido; ver `.agents/issues.md` → "PWA Tier 2". DEVE excluir `data/*.json` do cache p/ não quebrar o live-refresh + `DATA_VERSION`). + --- ## Quick final checklist diff --git a/.agents/issues.md b/.agents/issues.md index f5c1be0..b4401cb 100644 --- a/.agents/issues.md +++ b/.agents/issues.md @@ -60,6 +60,41 @@ Only if: --- +## PWA Tier 2 — Service Worker + Offline (2026-06-16) + +**Status:** Analyzed, deferred (Tier 1 shipped 2026-06-16 — see project-memory "PWA — installable app"). + +### Context +The PWA install issue was delivered as **Tier 1** (manifest + icons + meta tags), which already meets +every acceptance criterion (installable, correct name/icon, standalone launch from the OS shortcut, no +app-pipeline risk). Tier 2 — a service worker for offline launch and the strongest cross-browser +"app feel" — was intentionally left out. It is **not** required for the install prompt in modern +Chrome/Edge. + +### Why deferred (the real risk) +A naïve precaching SW would cache `data/*.json` and **silently defeat the 2026-06-16 live-refresh +system** (the 90s `results.json` poll with `cache:'no-store'` + the `DATA_VERSION` cache-buster) — +open tabs would stop seeing new scores, and `DATA_VERSION` bumps would do nothing. It would also make +the "stale JS module" gotcha (#5) *permanent* (cached assets live until the cache name changes). + +### How to implement (if revisited) — constraints, not optional +1. **Never cache `data/*.json`.** Use network-only, or network-first with the cache only as an + offline fallback (so an offline launch shows the last-seen results). The 90s poll must stay the + owner of freshness. +2. **Version the SW cache** with a constant mirroring/derived from `DATA_VERSION`; clean up old caches + on `activate` — otherwise every code deploy risks serving stale JS forever (gotcha #5). +3. **Register at the subpath** (`worldcup2026/sw.js`) so the SW scope matches the deploy (gotcha #7); + keep `start_url`/`scope` relative as they already are. +4. App-shell strategy: cache-first (versioned) for `index.html` + `assets/css` + `assets/js` + + `assets/icons`; precache on `install`. +5. Verify the poll still updates an open tab **with the SW active** (the easy thing to regress). + +### When to implement +Only if offline launch / a fuller install experience is actually wanted, and only with the data-cache +exclusion + cache-versioning above. Otherwise Tier 1 is sufficient. + +--- + ## Live Data Refresh — Stale Results Until Page Reload (2026-06-15) **Status:** ✅ **Implemented 2026-06-16** (Option A⁺ — "Fixed polling done right"). The analysis below diff --git a/.agents/project-map.md b/.agents/project-map.md index cbd8256..356e102 100644 --- a/.agents/project-map.md +++ b/.agents/project-map.md @@ -24,7 +24,14 @@ worldcup2026/ │ ├── index.html ★ SPA shell — header, nav tabs (Home, Matches, │ Groups, Knockout, Stadiums, Stats), hero, dashboard, -│ modal container; loads app.js as ES module +│ modal container; loads app.js as ES module. +│ has the PWA block (manifest link, theme-color, +│ favicons, apple-mobile-web-app-* meta) +│ +├── manifest.json PWA web app manifest (name/short_name, standalone, +│ theme/background #081421, icons[]) — relative paths +│ (start_url ".", scope "./") for the subpath deploy +│ favicon.ico Root favicon (16+32, from the trophy logo) │ ├── assets/ │ ├── css/ @@ -59,7 +66,11 @@ worldcup2026/ │ │ │ matches only), hero pulse + overview + goals-by-stage. │ │ │ PARTIAL (during-cup) — grows into the post-cup plan. │ │ └── calendar.js .ics export (RFC 5545, CRLF, Blob download) -│ └── images/ Team flag SVGs, stadium placeholders +│ ├── images/ Team flag SVGs, stadium placeholders +│ └── icons/ PWA app icons (from the header trophy logo): icon.svg +│ (master + manifest SVG), icon-192/512.png (purpose any), +│ icon-maskable-192/512.png (safe-zone padded), +│ apple-touch-icon.png (180), favicon-16/32.png, favicon.ico │ ├── data/ All content — REAL WC2026 data since 2026-06-12 │ ├── teams.json 48 real qualifiers: { id, name, flag } (FIFA codes) @@ -149,6 +160,7 @@ matches.json time (UTC) ── formatMatchTime(match, stadium, mode) | Where is simulation state stored/cleared? | `localStorage` key `wc2026_simulation`, via `assets/js/storage.js` | | Where do I change colors/theme? | CSS variables at the top of `assets/css/style.css` | | Where do I add a stadium? | `data/stadiums.json` + image in `assets/images/` | +| Where do I change the app name / install icon / theme color? | `manifest.json` (name/short_name/theme) + `assets/icons/` (regenerate PNGs from `icon.svg`) + PWA `` in `index.html` `` | | How do I replace mock data with real WC2026 data? | `how-update.md` (root) — done 2026-06-12; kept as schema reference | | How do I update scores during the tournament? | `how-refresh-data.md` (root) — daily results.json routine + thirdPlaceAssignment how-to | diff --git a/.agents/project-memory.md b/.agents/project-memory.md index 34edd75..5729ed6 100644 --- a/.agents/project-memory.md +++ b/.agents/project-memory.md @@ -231,6 +231,15 @@ Static web app showing the FIFA World Cup 2026 (Mexico/USA/Canada, 48 teams) — - **Não tratado (aceito, baixo risco — mudanças raras, poucas/dia):** modal aberto não auto-atualiza (relê no próximo open); re-render durante interação (drag do bracket / digitação no filtro) — filtros sobrevivem (state módulo-level), scroll pode pular. - **Verificado (preview, sem tocar no disco — `window.fetch` interceptado pra simular jogo 16 IRN×NZL finished 3–0, `visibilitychange` disparando `pollResults`):** dashboard Encerradas 15→16 / Próximas 89→88; hero trocou IRN×NZL→FRA×SEN (jogo 16 virou `over`); Group G recomputou (Irã `1 1 0 0 3 0 +3 3`); bracket(32)/stats(4 tiles)/matches(104) re-renderizaram; **console limpo**. Restaurado o `fetch` real → poll seguinte **auto-revertou** pra 15/89 (prova a assinatura nos dois sentidos). `DATA_VERSION` **não** bumpado (nenhum dado mudou no disco — só código). +### PWA — installable app (Tier 1, 2026-06-16) +- **O site virou um PWA instalável** (issue "Adicionar suporte a instalação como aplicativo"). Escopo entregue = **Tier 1** (manifest + ícones + meta tags) — atende a TODOS os critérios de aceitação (instalável, nome/ícone corretos, abre standalone pelo atalho do SO). **Service worker / offline ficou de fora de propósito** (Tier 2, registrado em `.agents/issues.md`). +- **Decisão-chave (por quê só Tier 1):** um SW que cacheasse `data/*.json` **quebraria** o poll de 90s + `DATA_VERSION` (live-refresh de 2026-06-16) — abas abertas parariam de ver placares novos. Tier 1 não toca em nada do pipeline de dados/JS → risco zero pro live-refresh. Se Tier 2 entrar, o SW **precisa excluir `data/*.json`** do cache (network-only/network-first) e versionar junto com `DATA_VERSION` (senão piora a gotcha #5 de módulo velho). +- **Arquivos novos:** `manifest.json` (raiz), `favicon.ico` (raiz), `assets/icons/` (icon.svg master + icon-192/512.png `purpose:any` + icon-maskable-192/512.png + apple-touch-icon.png 180 + favicon-16/32.png + favicon.ico). **Nenhum JS mudou.** `index.html` ganhou um bloco PWA no `` (link manifest, ``, favicons, `apple-mobile-web-app-capable/-status-bar-style black-translucent/-title "WC 2026 Hub"`). +- **Ícones derivados do logo do header** (o troféu SVG inline) sobre o gradiente escuro `#10243b→#081421` com o dourado `#d4af37`. Fontes em `assets/icons/icon.svg` (any, troféu a ~60%) e `icon-maskable.svg` (troféu a ~46%, dentro da safe-zone do maskable). **Rasterizados com ImageMagick** (`magick -background none icon.svg -resize NxN ...`); `favicon.ico` = 16+32 combinados. **Para trocar o ícone:** editar o(s) SVG e re-rodar os mesmos comandos `magick` (não há build step; é geração de asset 1x). +- **Manifest:** `name "World Cup 2026 Hub"` / `short_name "WC 2026 Hub"` (nome estático, EN — manifest não faz i18n runtime); `display:standalone`; `background_color`+`theme_color` = `#081421` (`--bg-primary`, evita flash branco no splash); `start_url:"."` + `scope:"./"` **relativos** (gotcha #7 — site mora em `…/worldcup2026/`; absoluto quebraria). Nomeado `manifest.json` (não `.webmanifest`) p/ MIME seguro na Hostinger. +- **Deploy:** os arquivos novos (manifest.json, favicon.ico, assets/icons/) **não** estão no `exclude` do `deploy.yml` → sobem normalmente. HTTPS da Hostinger já satisfaz o requisito de PWA. +- **Verificado (preview localhost:8126, contexto seguro):** manifest 200 e parseado (name/short/start `.`/scope `./`/display standalone/theme `#081421`); todos os ícones 200 `image/png`; `favicon.ico` 200; `` + apple tags presentes; **console limpo**; app intacto (hero FRA×SEN, 4 cards do dashboard, 16 encerradas/88 próximas — sem regressão visual). **Não testável pelo preview:** o prompt de instalação real / "Add to Home Screen" + ícone no SO — confirmar no Chrome/Edge devtools (aba Application) ou num celular após o deploy. + ### How to update real-world data (scores, schedule) Follow `how-refresh-data.md` (project root). In short: 1. Edit `data/results.json` (scores/status) or `data/matches.json` (schedule, rare). diff --git a/assets/icons/apple-touch-icon.png b/assets/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1b33973dc17cf3ff9e07e1d28d531edc3b1a769c GIT binary patch literal 15138 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 K$&^bO2mc=$SSjoP literal 0 HcmV?d00001 diff --git a/assets/icons/favicon-16.png b/assets/icons/favicon-16.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd1b29e37568cdc87f9315c2e77cd48df25b513 GIT binary patch literal 1175 zcmeAS@N?(olHy`uVBq!ia0vp^0w65F1SAhIZYc#)3dtTpz6=aiY77hwEes65fIdhv3Kq1u<*NBpo#FA92CkWnj>%Z~PoZLvDUbW?Cg~4PT17qk$SU;5L+G=B5^xB<2=i>M=HgSfcWDaybJ7 zbCRcvV~EA+ty5}!u9V6gkDtH$_d(g?llxfYxmHdPVPa11mP&KbiJYN%mVMj26I&n7 zF}=O%Y|lfrY~S!;p&VNabu(t^IL)_Vm%>a^cLi)u&_5EJDuzjL?${&M?w3Asf- zr_cXy$N#%--}~>sfB*BkH2=G)*xF}(t<6Tho67E#`862+xm;j6yX19b(^p%4GZrY{YN~(Rc-+szYnp8A7Ee35x1X;UEG+(ho;U3B(LLJCQe5{> zKbvUPqrOeQ_Hx*i50g$S?|ZjtpKa8p{~^DnK9^qe5ZB|836=_3%n>1OGX3B`Ui0R# zTF2yP_TS{!pOc!CzxQip?(=IGY&s`@R&m*Ka}jHg-W%WOoImqwtzvUy|4QfOZLYb- zJS!vgR&l11sG~B+7B!yZ+xldfWTSV*bJl9D{WR4sIA%)rjqtP_zgXA5Q&&m1*-5Dx zFSgZnwtDv7J9Fx?GXLx8&rbGry_@=M`nIn&C(Qo(wchx!WJmEc*)!kVT*`!)cTKZW zTN4|`7e3!AddJ;|I(g@8pZs|ChJEjRpL_kX);52luATmN`o8`3&9`){BWu#uOKy0( zAyy@JUxK=y8i${>MqWnV=Si&FXK?MAb9f5hJ=MaC`rI+wj<4oEU3UD2Ad79y$!PH{ zzuxWpH@!4!{u5p|4ORK$YmarmWA3&IS-(;I>rdvjQ~39o%WU9lkDvJdZ|Bjlt-DJ5 zrylWtqWFgE^^gB{Kk|DXxi4*bD)Do+@qRO}%a_vMPI*#bykBwi!F!c^3pd>O@{04E zuu9{OnPMH;C+F}Rb1$;0<&oF=?xCL<}vOPT^T;nL2PrUV}Q>h`3GnGEKAnUwif%(q#{}tbt8SpN?;CU@O1TaS?83{ F1OTve{5t>u literal 0 HcmV?d00001 diff --git a/assets/icons/favicon-32.png b/assets/icons/favicon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..73dad03be90a63270609c3bcd56086ea9af5761d GIT binary patch literal 2506 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 literal 0 HcmV?d00001 diff --git a/assets/icons/icon-512.png b/assets/icons/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..8953497a3fbecd3d642f40bb013c4d98a32e855b GIT binary patch literal 11368 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 OfUcIIW{J9e#Qy;;An`>2 literal 0 HcmV?d00001 diff --git a/assets/icons/icon-maskable-192.png b/assets/icons/icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf488cd50b4216a2afe7be5fb890ecdb63434d7 GIT binary patch literal 13260 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 literal 0 HcmV?d00001 diff --git a/assets/icons/icon-maskable-512.png b/assets/icons/icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..781d37ab339ff6b71fc326b3518e56713b4a694e GIT binary patch literal 9532 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 + + + + + + + + + + + + + + + + + diff --git a/assets/icons/icon.svg b/assets/icons/icon.svg new file mode 100644 index 0000000..7c5698f --- /dev/null +++ b/assets/icons/icon.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bfb28be239c1f5b7d43fe721b7842ebe1f7fc0a4 GIT binary patch literal 5430 zcmc(j*>6;J6vwZ|U^hyY?hBo^({`qv<<8uVLR27NcmXX!5o!n;O-R#3W56IT!H7#j zDL#nC2qppv#SJk&8DHF1|Li)d_OLR0sl|!K03z7XjhZe!&q0d)WdjB zvy{+HUyF?Qw))UkU#WJow?ztomgD3TMuZq$kQ)QjsYx+UoK$Gj zrxfX@`dg)dK7X8WGm<@XL7}ahTr8+h47AEB{g}76Nz(fdi1q44F%KP8Xs7qjYAgZG zsvfz?!8RY*sgX{}%*~5^?juQ?F-i8`uh6ECF=~>5y!23;q){V1&?4EnqvBk=DfSDm zOS%u=qrce)HhqjyL#^f@*W9vE%puYy_QFfzzW13p?_3e<$T6`FKjj0PKE|k_R&$V> z9R|DtD>W+io?T)e#y!j*7w7c53T^cvMonJNTszYKFB}iGiappYc6>nG_irh*)yG&- zjx*9OC7`A=-YM?0iwbRrzA{>Gbd!_?S}#b5Zf0zggo2zIQbDtAtV8M{zYeVR%5^3J zb^xwN`iF(5c%2#PY?4M&&lyaD9`q@Zy{pK3pD9Y_Km3-YzGTynNJd9P! zEfbr--cvPrMzP5)l9-*7i(JEM=M?N{HEd&Ngcv|_2hBMzVU%Vn?A;3(9}{hj(xi(dQrc7gT(vW z#Cq$pLR)=^)l>^}PjTp(_Ss9~ zUjIeRT{|R++S;qF=0OJ^W7JT~9Mx!z@HtZG@yfz^qdk(v@9KQ`t$1JkF4ps}Ns9go zIn+?g9Okk{#hkEOL+xUrC*<$ye)mTe%~dhi1^@qW2AIgEnH+P|FtN*ar@Zee5}L-~L$KCDg~<%K59}2Fd%WftESUWsNLqm7Rn0@thIH5PpY2 zfb)ShhVK*Y^r5}Y66eLU3hm-JbNpQ7ht-GQ8peBGHPGWbTN6EckKQ+b3*r6Jr?DDq z7MzoUXQnV4^=&gM-Y4IS_ceL|0-L_#GgLLT_58#$R4qg|i+k!#tTT8o0c{7qnrh_c zb8!}{naD World Cup 2026 Hub + + + + + + + + + + + + diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..326f2cc --- /dev/null +++ b/manifest.json @@ -0,0 +1,46 @@ +{ + "name": "World Cup 2026 Hub", + "short_name": "WC 2026 Hub", + "description": "World Cup 2026 Hub — schedule, groups, interactive knockout bracket and stadiums.", + "lang": "en", + "dir": "ltr", + "start_url": ".", + "scope": "./", + "display": "standalone", + "orientation": "any", + "background_color": "#081421", + "theme_color": "#081421", + "categories": ["sports"], + "icons": [ + { + "src": "assets/icons/icon-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any" + }, + { + "src": "assets/icons/icon-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any" + }, + { + "src": "assets/icons/icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "assets/icons/icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "assets/icons/icon.svg", + "sizes": "any", + "type": "image/svg+xml", + "purpose": "any" + } + ] +}