From bcb98a8625a9d68abd34158849830331800e426d Mon Sep 17 00:00:00 2001 From: Erol Haagenrud Date: Thu, 30 Jul 2026 08:16:40 +0200 Subject: [PATCH] =?UTF-8?q?Alt=20tre=20punktene=20er=20n=C3=A5=20live=20og?= =?UTF-8?q?=20verifisert:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. ADR-037-frontend (individuelle turneringer) — rullet ut, med et reelt backend-hull (list_tournaments manglet de nye kolonnene) funnet og fikset underveis. 2. Stepper-overlapp i Chip/Bunker/Straffeslag — root cause var at wizardens innholdskolonne er fast 384px bred, mens gridet byttet til 3 kolonner basert på viewport-bredde (640px), ikke containerens egen bredde. Enhver skjerm bredere enn 640px (som din) fikk dermed tre steppere som kolliderte inni en for smal kolonne. Fikset ved å alltid stable dem i én kolonne. 3. Favikon — det viste seg at selve nettleser-faneikonet (icon.svg + 32×32-variantene) fortsatt var V0s egen logo, aldri byttet ut da appen ble bygget — mens PWA-ikonene og Apple-ikonet allerede var korrekt TeeCup-merket (grønt golfflagg) siden en tidligere runde. Byttet faneikonet til samme golfflagg-design. Alt er verifisert (typesjekket build, browserverifisering av stepper-fiksen, direkte innholdssjekk av favikon-filene) og redeployet — teecup_api/teecup_frontend booter rent, teeoff.no upåvirket. --- CLAUDE.md | 65 +++++++++++++++++++++++++-- frontend/components/round-detail.tsx | 10 ++++- frontend/public/icon-dark-32x32.png | Bin 585 -> 939 bytes frontend/public/icon-light-32x32.png | Bin 566 -> 939 bytes frontend/public/icon.svg | 30 +++---------- 5 files changed, 76 insertions(+), 29 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index e3d55f4..63cedb3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5676,9 +5676,68 @@ Ferdig og verifisert: konsollfeil (`list_console_messages`) gjennom hele økten. Ekte typesjekket produksjonsbuild (samme `Dockerfile` som deployes) kompilerte rent til slutt, med begge fiksene inne. - **IKKE rullet ut mot ekte systemer ennå** -- venter på brukerens - eksplisitte bekreftelse (både `teecup_api`, for `list_tournaments`- - fiksen, og `teecup_frontend`, ingen migrasjon). + **Rullet ut mot ekte systemer 2026-07-30**, bruker bekreftet eksplisitt: + ingen migrasjon, `docker compose up -d --build teecup_api + teecup_frontend`. Begge containere boot-et rent, `/health`/`/dashboard` + → 200, `teeoff.no` upåvirket, `GET /orgs/.../tournaments` (den fikset + ruten) bekreftet nåbar med korrekt `401` gjennom hele produksjonsstacken. + **ADR-037 er dermed live, backend + frontend** (grunnstruktur — de fem + konkrete formatene og Order of Merit fortsatt ikke designet, se + FEATURE_BACKLOG.md). + +- **To reelle punkter fra bruker, BEGGE FIKSET OG LIVE, samme dag + (2026-07-30):** rapportert med et vedlagt skjermbilde av + Chip/Bunker/Straffeslag-stepperne som gled over i hverandre på + `/my-rounds/{id}`, pluss en forespørsel om et TeeCup-relatert favikon. + 1. **Stepper-overlapp, root cause presist identifisert:** `ScoringWizard` + sin "flere detaljer"-seksjon (`round-detail.tsx`) er fast begrenset + til `max-w-sm` (384px) UANSETT hvor bred selve viewporten er -- men + Chip/Bunker/Straffeslag-gridet brukte et VIEWPORT-basert + `sm:grid-cols-3`-brudd (640px). Enhver skjerm bredere enn 640px + (dvs. de fleste telefoner i liggende modus, nettbrett, og skjermbildet + brukeren delte) trigget dermed 3-kolonne-modus INNI en 384px-bred + kolonne -- hver Stepper har to faste 44px-knapper (tilgjengelighets- + kravet, kan ikke krympes) + verdi + padding, som aldri kan bli + smalere enn ca. 190px, så tre av dem kolliderte alltid. Samme + klasse feil som de tidligere sticky-kolonne- og match-identitets- + boks-overlappene i prosjektet (fast innholdsbredde møter et + viewport-basert, ikke container-basert, brudd). Fikset ved å fjerne + `sm:grid-cols-3` helt -- alltid stablet i én kolonne, som uansett var + den eneste bredden som noensinne hadde plass i en 384px-container. + 2. **Favikon var faktisk V0s egen logo, ikke TeeCup:** `icon.svg` og + `icon-light-32x32.png`/`icon-dark-32x32.png` (selve nettleser-fane- + ikonet, styrt av `layout.tsx` sin `metadata.icons`) viste seg -- ved + faktisk å åpne og se på filene, ikke anta -- å fortsatt være en + ubrukt "V0"-logo (sort/hvit v0.app-merke) helt siden V0-eksporten, + aldri erstattet. `apple-icon.png` og selve PWA-ikonsettet + (`public/icons/icon-192.png` m.fl.) var derimot ALLEREDE korrekt + TeeCup-merket (grønt golf-flagg, fra PWA-runden 2026-07-19) -- kun + favikon-stien var glemt. Fikset ved å gjenbruke SAMME etablerte + golf-flagg-design: `icon-light-32x32.png`/`icon-dark-32x32.png` + regenerert (nedskalert fra `icon-512.png` via en engangs + `sharp`-scratch, samme verktøy som PWA-runden brukte) og `icon.svg` + skrevet på nytt som en ren vektor av samme flagg (grønn `#8BC24A`- + bakgrunn, hvit flaggstang+flagg -- appens egen merkevarefarge, ikke + funnet på). + **Verifisert:** ekte typesjekket produksjonsbuild (samme `Dockerfile` + som deployes) kompilerte rent BEGGE ganger (én mislykket 404-test mot + kun `--target builder`-imaget, som IKKE har `public/`-mappen kopiert inn + ved siden av `server.js` ennå -- forventet byggestrenge-artefakt, ikke en + reell bug -- rettet ved å bygge og teste det FULLE, faktiske + produksjonsimaget i stedet, som ga korrekt `200`/riktig `content-type` + for alle tre ikonfilene). Stepper-fiksen browserverifisert grundig i en + isolert scratch-økt (ekte innlogging, en fersk `full`-stat_level-runde + seedet via API, veiviseren kjørt gjennom Slag→Putter→Avstand→Detaljer): + bekreftet INGEN overlapp ved 800px viewport (der bugen reprodusertes + presist, matcher brukerens skjermbilde) OG ingen regresjon ved 390px + (alltid stablet der uansett, uendret oppførsel). Ingen konsollfeil. + **Rullet ut live 2026-07-30**, bruker bekreftet eksplisitt (samme + "redeploy begge"-godkjenning som ADR-037): ingen migrasjon, + `docker compose up -d --build teecup_frontend` (gjenskapte også + `teecup_api` som vanlig bivirkning, ingen backend-kode rørt). Begge + containere boot-et rent, `/health`/`/dashboard` → 200, favikon-filene + bekreftet nåbare over ekte https med riktig `content-type`, `teeoff.no` + upåvirket. Neste steg: 0a. **Spillerliste-redesign — nå FAKTISK nettleser-bekreftet diff --git a/frontend/components/round-detail.tsx b/frontend/components/round-detail.tsx index f6b205f..88e2207 100644 --- a/frontend/components/round-detail.tsx +++ b/frontend/components/round-detail.tsx @@ -1748,7 +1748,15 @@ function ScoringWizard({ readOnly={readOnly} /> -
+ {/* Alltid stablet, ALDRI et sm:grid-cols-3-sprang: denne wizard- + seksjonen er fast begrenset til max-w-sm (384px, se + containeren over) uansett hvor bred selve VIEWPORTET er -- + et viewport-basert grid-cols-3-brudd ved 640px trigges + derfor på skjermer godt over 640px bredde mens + innholdskolonnen fortsatt kun er 384px, som får de tre + stepperne (hver ~190px minimum pga. faste 44px-knapper) til + å overlappe hverandre i stedet for å faktisk ha plass. */} +
onUpdate({ chip: v })} readOnly={readOnly} max={stat.strokes ?? undefined} /> onUpdate({ bunker: v })} readOnly={readOnly} max={stat.strokes ?? undefined} /> onUpdate({ penalty: v })} readOnly={readOnly} max={stat.strokes ?? undefined} /> diff --git a/frontend/public/icon-dark-32x32.png b/frontend/public/icon-dark-32x32.png index 12c825a109e3c3b7941d957d8a2ac936d5717c5b..540580de0cafcbaa95c8e060494d2c2a7ecf1216 100644 GIT binary patch delta 896 zcmV-`1AqL<1gi&-IDZ3ONklKw_%TTp9umfO zOs=|`J3w!@%DZG$SiaomfVatRWDuMg`6Saw4mCX4XmY zal-U83J*9rAb*T_NqUpAyHy@eUp~rx`S55WWG#InghiNy%}J^dO=sr>-Z|t$*RY1- z+8nt21@LGNW){?la^@G4N<3suL}+OOaXkiq-+f$bIfK&rBPgxUWAk1{Ml|PB6Oc9m z+G#NS70JiIYBYl0iI;fPU4_cP36#_wLRrHxw$_YaE`Kco3K0G_K7>Flg(2c|v5gL2<{ROT(Jq5R7+cRP~D+>G}5Z8Aq zuo_*)`|%Du?!Lj!h9}_2vH~y=OT;iT^9jC>_i(-SEIW|r>+?{d6lCWY$SexRp&L5d z2WoNid4Dm={rT+hB|}n7DIV%KaB0(&!&EaC> z$*s9`fiptD6L7Fo{-1#KpMbhA1ca?TFqSdX{gXWyn(kxPAAE~9qpj>Fta^6Nv;xVZ zRC$ElC=8n_%Paf^D5*Ql3Q`I~I{lS_BKA#VG)HSJmE}$ojR{Fh2T)e&r1LEFm{F0c zCL_f3O}N#V*yo*3_*{#vncYh4?`+L{sn)D|S940zWUDzP-+ygR_oF>0pX7UYd;S|& W0^!}?cLst00000Px#1ZP1_K>z@;j|==^1poj6-bqA3RCodH zm+f(aKoEvkCk0S~9Y`t=D$owl3ZfMN6@V2)E09zGRsbDn2hhP~Un0yQho8jDk32K0 zoVVP*x9qJ-Bq4;b*gn~E(LecVZIe{+L?B*=dmh{suO~q4fq(c(NlJRKhy3zE`f!ke zoG%R0LjeJTG%_U3XczECJ+W9Ul%E@hL8fWaWHO=AXw-HPJ%Obz83z};-L7?CU4%tZ zlvbfqEBjzx9^1A}Dr6sIBaY)TBdrV^4u?`@rFb@*wbXi^SI_f8Vm_bOV-;zd3J%)H z1n!X;$~%U-YJcZZ6wzw6qDRTHtjvnMdypha!>@4)5S*V=?Hq<7`Myuj26r5XIHOA6 z)-lBMfrtuDJFVAidM5a0v+49#_5sVXC;g)Vco5Ag1l=NbaK<{hXnxaMt>y$c1!T51>|`yxHww^0M|>a zlu-ls4wjVD|fc=e^VEwAq4B z{Qn^N69Nj-M*#s}q>l(iXz@i%dUziW27`nzZvVRL51(Ua^@ua!iPsS-CGmvGhL-i4 ef6pyB<`p+}dlJj3L{sSi0000Kw_%TTp9umfO zOs=|`J3w!@%DZG$SiaomfVatRWDuMg`6Saw4mCX4XmY zal-U83J*9rAb*T_NqUpAyHy@eUp~rx`S55WWG#InghiNy%}J^dO=sr>-Z|t$*RY1- z+8nt21@LGNW){?la^@G4N<3suL}+OOaXkiq-+f$bIfK&rBPgxUWAk1{Ml|PB6Oc9m z+G#NS70JiIYBYl0iI;fPU4_cP36#_wLRrHxw$_YaE`Kco3K0G_K7>Flg(2c|v5gL2<{ROT(Jq5R7+cRP~D+>G}5Z8Aq zuo_*)`|%Du?!Lj!h9}_2vH~y=OT;iT^9jC>_i(-SEIW|r>+?{d6lCWY$SexRp&L5d z2WoNid4Dm={rT+hB|}n7DIV%KaB0(&!&EaC> z$*s9`fiptD6L7Fo{-1#KpMbhA1ca?TFqSdX{gXWyn(kxPAAE~9qpj>Fta^6Nv;xVZ zRC$ElC=8n_%Paf^D5*Ql3Q`I~I{lS_BKA#VG)HSJmE}$ojR{Fh2T)e&r1LEFm{F0c zCL_f3O}N#V*yo*3_*{#vncYh4?`+L{sn)D|S940zWUDzP-+ygR_oF>0pX7UYd;S|& W0^!}?cLst00000Px#1ZP1_K>z@;j|==^1poj6%Sl8*RCodH zSKF0>Fc6)66hH}}+ye!uTWU^E&vDizl2bx&;^$L+ijLgsnij%`s1!%$XL zWkiCH%J6yDcYh3ZYUdm-N|J=`1(P>X(RUB9aKq220+3Iq)7E*hSWpy2^eFjiwW6{t zt-if7#Q8vk0*Ad3@(B5SK6mnm9K~!lqf3C#E#wN$($bR-$%MpoB_Wd= z$%Z+7E#-?u@9>+wFP+Fvn+ZJO_cz zI2W2;1G`y(5}`LLwGi%lZnyvewsmj%9$>PjBvGmyQezGcrrTt66h+Z%!NC6q$)6BV zlRwlDP?A3sxCpwk6bG>Oe - - - - - - - - - - - - - - \ No newline at end of file + + + + +