teecup/frontend/components
Erol Haagenrud 074e17388b Update Todos
Log in as user in chrome-devtools browser (magic link)

Screenshot scorekort-grid page at mobile viewport

Fix critical sticky-column overlap bug found via real browser test

Verify fix by scrolling grid + re-screenshotting

Assess density and golfscore-language compliance

Update CLAUDE.md/FEATURE_BACKLOG.md with the real bug+fix

Report findings to user
Good thing you asked me to actually look — I found and fixed a real, serious bug.

What was broken: position: sticky on table cells, combined with sticky columns on both the left (player names) and right (Ut/Inn/Sum) at once, rendered completely garbled in Chrome — the sticky right columns got pulled to the visible edge immediately and overlapped/bled into the hole columns underneath (you'd have seen overlapping digits like "436"/"472"). My first fix attempt (border-collapse → border-separate) didn't touch the real cause and the second screenshot still showed the same mess.

Root cause: combining sticky-left and sticky-right in one table wider than the viewport is inherently unstable — at scroll position 0, the sticky-right cells are already pinned to the screen edge, sitting visually on top of whatever hole columns happen to be there in normal document flow, only partially hidden by their translucent background.

Fix: dropped sticky positioning from the Ut/Inn/Sum columns entirely — they now scroll with the rest of the holes, same well-supported pattern as the (correctly-working) sticky name column. Verified for real this time:

Screenshot at scroll-left=0: all numbers clean, correct circle/square/plain-text score marks (bogey/double-bogey/par all visually distinct).
Scrolled the grid all the way right via a script: holes 14-18 plus Ut/Inn/Sum all render cleanly, name column still correctly pinned — Ut 36 / Inn 36 / Sum 72 on the Par row, which is exactly right for an 18-hole par-72 course.
Accessibility tree confirms the golf-term labels ("Bogey", "Dobbel bogey", "Par") are actually present in aria-labels, so §Golfscore-språket's "never color alone" rule holds in practice, not just in code.
No dead space concerns — density looks reasonable against §0.1's tolerance, and green stays reserved for active-state/under-par per §0.2 (no stray "grønt-på-grønt" spotted).

Redeployed twice (once for the failed attempt, once for the real fix); both times /health → 200, teeoff.no unaffected. Docs updated with the full story, since this is the first time this session a real browser was available to verify hand-coded frontend work — worth remembering for anything else built blind this week that you haven't clicked through yet.
2026-07-27 14:34:18 +02:00
..
ui Program-skjermen er bygget og grundig scratch-verifisert. Kort oppsummert: 2026-07-18 12:20:45 +02:00
account-settings.tsx All three changes are implemented and scratch-verified (22/22 checks passed, test_isolation.sql still 12/12, frontend typechecks cleanly). Summary of what's ready to ship: 2026-07-25 06:29:09 +02:00
dashboard.tsx Update Todos 2026-07-26 08:22:41 +02:00
friends.tsx Frontend for fase 1 er bygget: components/friends.tsx + ny rute /my-friends (bevisst ikke V0s eget forslag /friends, siden det nå er API-prefikset). Datalag koblet til de ekte endepunktene, kategori-koder mappet til norske visningsnavn. Dashbordets "Venner"-blokk viser nå ekte data (antall venner, ventende forespørsler) og lenker til den nye siden. Typesjekket produksjonsbuild kompilerte rent. 2026-07-25 08:37:07 +02:00
login-form.tsx Update Todos 2026-07-19 10:36:50 +02:00
new-round.tsx All three changes are implemented and scratch-verified (22/22 checks passed, test_isolation.sql still 12/12, frontend typechecks cleanly). Summary of what's ready to ship: 2026-07-25 06:29:09 +02:00
notifications.tsx Varsler (fra zip 20): in-app varslingssenter er live — bjelle med uleste-tall i dashbord-headeren, /my-notifications-side. Trigges i dag ved venneforespørsel sendt/akseptert; flere hendelser kan kobles på senere. 2026-07-26 06:53:58 +02:00
org-members.tsx Update Todos 2026-07-19 10:36:50 +02:00
own-rounds.tsx Update Todos 2026-07-26 08:22:41 +02:00
public-club.tsx Klubb-landingssiden er live på https://teecup.teeoff.no/clubs/{slug} — dermed er ADR-018 sine to planlagte frontend-skjermer komplette. 2026-07-18 10:48:20 +02:00
public-live.tsx Alt scratch-verifisert (5 automatiserte sjekker inkl. faktisk sanntidsmottak over WebSocket for både score-innsending og walkover), typesjekket build OK. Ingen migrasjon, ingen ny Caddy-rute (gjenbruker /ws/* fra sist). 2026-07-19 23:14:17 +02:00
public-tournament.tsx Update Todos 2026-07-19 22:51:07 +02:00
round-card.tsx Live. Kort oppsummert: 2026-07-26 15:48:07 +02:00
round-detail.tsx Update Todos 2026-07-27 14:34:18 +02:00
round-leaderboard.tsx Live. Kort oppsummert: 2026-07-26 15:48:07 +02:00
round-scorecard.tsx Live. Kort oppsummert: spillere ser nå i sanntid når noen registrerer en score, endrer en medspiller, eller fullfører runden — samme lette WebSocket-mønster som "Følg live" på turneringer. Ingen migrasjon, teeoff.no upåvirket, verifisert med en ekte WebSocket-klient (ikke bare REST) at kringkastingen faktisk fungerer begge veier. 2026-07-26 08:49:37 +02:00
round-stats.tsx Live. Kort oppsummert: spillere ser nå i sanntid når noen registrerer en score, endrer en medspiller, eller fullfører runden — samme lette WebSocket-mønster som "Følg live" på turneringer. Ingen migrasjon, teeoff.no upåvirket, verifisert med en ekte WebSocket-klient (ikke bare REST) at kringkastingen faktisk fungerer begge veier. 2026-07-26 08:49:37 +02:00
session-blind-draw.tsx Update Todos 2026-07-20 08:53:53 +02:00
session-scorecard.tsx Update Todos 2026-07-20 08:53:53 +02:00
sw-register.tsx PWA er bygget og scratch/build-verifisert. Status: 2026-07-19 23:51:08 +02:00
team-chat.tsx Backend, frontend og Caddy-endringen er alle klare og verifisert (Caddy-syntaksen validert OK). Dette er en stor runde — her er full plan for utrulling: 2026-07-19 22:26:45 +02:00
tournament-card.tsx Dashbordet er bygget (zip 18 integrert): kun dashboard.tsx var reelt nytt fra V0, og jeg fant en genuin merge-situasjon i tournament-card.tsx — V0s nye "Arrangør"-merkelapp lagt til ved siden av den eksisterende offentlig/innlogget-lenkelogikken, ikke en revert. "Ny turnering" implementerer nå selve ADR-035-mekanismen (usynlig org-opprettelse ved innsending), "Statistikk"/"Spilte baner" er ren klientside-utledning fra data vi allerede har, og "Venner" viser en ærlig tom-tilstand siden ADR-036 ikke er bygget ennå. Typesjekket produksjonsbuild kompilerte rent. 2026-07-25 07:51:32 +02:00
tournament-detail.tsx Update Todos 2026-07-20 10:01:44 +02:00
tournament-leaderboard.tsx Alt er ferdig og live. Kort oppsummering av hele runden: 2026-07-19 09:33:34 +02:00
tournament-program.tsx Begge fiksene er ferdig og verifisert med ekte produksjonsbuild (ren frontend-endring, ingen migrasjon, ingen backend-endring): 2026-07-21 09:18:07 +02:00
tournament-status-badge.tsx Update Todos 2026-07-19 21:51:05 +02:00
two-factor-flow.tsx Update Todos 2026-07-19 10:36:50 +02:00
verify-email-form.tsx Update Todos 2026-07-22 06:14:31 +02:00
verify-form.tsx Update Todos 2026-07-19 10:36:50 +02:00
wordmark.tsx Bygget: 2026-07-18 06:46:09 +02:00